box-ui-elements 23.5.0-beta.1 → 23.5.0-beta.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ContentExplorer.js","names":["React","Component","classNames","cloneDeep","debounce","flow","getProp","noop","throttle","uniqueid","TooltipProvider","CreateFolderDialog","UploadDialog","Header","Pagination","SubHeader","makeResponsive","openUrlInsideIframe","Internationalize","ThemingStyles","API","MetadataQueryAPIHelperV2","MetadataQueryAPIHelper","Footer","PreviewDialog","ShareDialog","RenameDialog","DeleteConfirmationDialog","Content","isThumbnailAvailable","isFocusableElement","isInputElement","focus","FILE_SHARED_LINK_FIELDS_TO_FETCH","CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH","LocalStore","withFeatureConsumer","withFeatureProvider","isFeatureEnabled","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_SEARCH_DEBOUNCE","SORT_ASC","FIELD_NAME","FIELD_PERMISSIONS_CAN_SHARE","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","constructor","props","_defineProperty","metadataQueryCollection","metadataTemplate","nextMarker","currentCollection","currentPageNumber","markers","state","cloneMarkers","setState","_objectSpread","percentLoaded","error","view","console","id","searchQuery","fetchFolder","showRecents","search","showMetadataQueryResults","Error","triggerNavigationEvent","rootFolderId","currentId","currentOffset","currentPageSize","limit","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","updatedRepresentation","getFileAPI","generateRepresentation","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","throttledCreateFolderCallback","isCreateFolderModalOpen","canCreateNewFolder","onCreate","create","createFolderCallback","trailing","shareCallback","getFolderFields","handleSharedLinkSuccess","getFile","getWebLinkAPI","getWeblink","sharedItem","isShareModalOpen","canShare","can_share","fetchSharedLinkInfo","event","target","key","toLowerCase","preventDefault","getViewMode","document","activeElement","closest","globalModifier","upload","createFolder","newOffset","store","getItem","isSmall","isMedium","isLarge","maxWidthColumns","metadataViewProps","tableProps","onSelectionChange","selectedItemIds","selectedKeys","ids","viewMode","setItem","forceUpdate","sliderValue","gridColumnCount","field","oldValue","newValue","metadataQueryAPIHelper","updateMetadata","updateMetadataSuccessCallback","updatedItems","collectionItem","clonedItem","forEach","itemField","split","pop","value","Set","rootName","apiHost","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","clientName","clearCache","destroy","componentWillUnmount","componentDidMount","currentFolderId","defaultView","metadataQuery","getElementById","appElement","firstElementChild","fetchFolderName","ancestor_folder_id","componentDidUpdate","prevFolderId","prevState","features","metadataQueryClone","marker","order_by","field_key","direction","fetchMetadataQueryResults","showMetadataQueryResultsSuccessCallback","_extends","finishNavigation","autoFocus","onNavigate","boxItem","recentsSuccessCallback","getRecentsAPI","recents","fileAPI","selectedId","newSelectedItem","itemThumbnails","Promise","all","getThumbnailUrl","index","isSelected","currentItem","thumbnailUrl","attemptThumbnailGeneration","render","appHost","className","contentPreviewProps","contentUploaderProps","itemActions","logoUrl","measureRef","messages","fieldsToShow","onPreview","onUpload","staticHost","staticPath","previewLibraryVersion","theme","title","totalCount","styleClassName","allowUpload","allowCreate","isDefaultViewMetadata","isErrorView","maxGridColumnCount","getMaxNumberOfGridViewColumnsForWidth","hasNextMarker","hasPreviousMarker","getMetadataViewProps","createElement","container","ref","selector","onKeyDown","tabIndex","onSearch","rootId","gridMaxColumns","gridMinColumns","maxGridColumnCountForWidth","onClearSelectedItemIds","clearSelectedItemIds","onGridViewSliderChange","onItemClick","onSortChange","sort","onViewModeChange","changeViewMode","portalElement","Math","min","onItemDelete","delete","onItemDownload","download","onItemPreview","onItemRename","onItemSelect","onItemShare","onMetadataUpdate","hasPrevMarker","onOffsetChange","paginate","pageSize","onMarkerBasedPageChange","markerBasedPaginate","isOpen","onClose","uploadSuccessHandler","parentElement","onCancel","onShareAccessChange","changeShareAccess","cache","getCache","contentSidebarProps","ContentExplorerComponent"],"sources":["../../../src/elements/content-explorer/ContentExplorer.tsx"],"sourcesContent":["import '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 throttle from 'lodash/throttle';\nimport uniqueid from 'lodash/uniqueId';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport type { Selection } from 'react-aria-components';\n\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport UploadDialog from '../common/upload-dialog';\nimport Header from '../common/header';\nimport Pagination from '../common/pagination';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport makeResponsive from '../common/makeResponsive';\nimport openUrlInsideIframe from '../../utils/iframe';\nimport Internationalize from '../common/Internationalize';\nimport ThemingStyles from '../common/theming';\nimport API from '../../api';\nimport MetadataQueryAPIHelperV2 from './MetadataQueryAPIHelper';\nimport MetadataQueryAPIHelper from '../../features/metadata-based-view/MetadataQueryAPIHelper';\nimport Footer from './Footer';\nimport PreviewDialog from '../common/preview-dialog/PreviewDialog';\nimport ShareDialog from './ShareDialog';\nimport RenameDialog from './RenameDialog';\nimport DeleteConfirmationDialog from './DeleteConfirmationDialog';\nimport Content from './Content';\nimport { isThumbnailAvailable } from '../common/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 {\n withFeatureConsumer,\n withFeatureProvider,\n isFeatureEnabled,\n type FeatureConfig,\n} 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_PERMISSIONS_CAN_SHARE,\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 { ItemAction } from '../common/item';\nimport type { Theme } from '../common/theming';\nimport type { MetadataQuery, FieldsToShow } from '../../common/types/metadataQueries';\nimport type { MetadataFieldValue, MetadataTemplate } 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';\nimport type { ContentPreviewProps } from '../content-preview';\nimport type { ContentUploaderProps } from '../content-uploader';\nimport type { MetadataViewContainerProps } from './MetadataViewContainer';\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\nexport interface ContentExplorerProps {\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 itemActions?: ItemAction[];\n language?: string;\n logoUrl?: string;\n measureRef?: (ref: Element | null) => void;\n messages?: StringMap;\n metadataQuery?: MetadataQuery;\n metadataViewProps?: Omit<MetadataViewContainerProps, 'hasError' | 'currentCollection'>;\n onCreate?: (item: BoxItem) => void;\n onDelete?: (item: BoxItem) => void;\n onDownload?: (item: BoxItem) => void;\n onNavigate?: (item: BoxItem) => void;\n onPreview?: (data: unknown) => void;\n onRename?: (item: BoxItem) => void;\n onSelect?: (item: BoxItem) => void;\n onUpload?: (item: BoxItem) => void;\n previewLibraryVersion?: string;\n requestInterceptor?: (response: AxiosResponse) => void;\n responseInterceptor?: (config: AxiosRequestConfig) => void;\n rootFolderId?: string;\n sharedLink?: string;\n sharedLinkPassword?: string;\n sortBy?: SortBy;\n sortDirection?: SortDirection;\n staticHost?: string;\n staticPath?: string;\n theme?: Theme;\n title?: 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 | null | undefined>;\n metadataTemplate: MetadataTemplate;\n rootName: string;\n searchQuery: string;\n selected?: BoxItem;\n selectedItemIds: Selection;\n sortBy: SortBy | string;\n sortDirection: SortDirection;\n view: View;\n};\n\nconst localStoreViewMode = 'bce.defaultViewMode';\n\nclass ContentExplorer extends Component<ContentExplorerProps, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: ContentExplorerProps;\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 metadataViewProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentExplorer}\n */\n constructor(props: ContentExplorerProps) {\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 }: ContentExplorerProps = 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 metadataTemplate: {},\n rootName: '',\n selectedItemIds: new Set(),\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, metadataQuery }: ContentExplorerProps = this.props;\n this.rootElement = document.getElementById(this.id) as HTMLElement;\n this.appElement = this.rootElement.firstElementChild as HTMLElement;\n\n switch (defaultView) {\n case DEFAULT_VIEW_RECENTS:\n this.showRecents();\n break;\n case DEFAULT_VIEW_METADATA:\n this.showMetadataQueryResults();\n this.fetchFolderName(metadataQuery?.ancestor_folder_id);\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 }: ContentExplorerProps, prevState: State): void {\n const { currentFolderId }: ContentExplorerProps = 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 = (\n metadataQueryCollection: Collection,\n metadataTemplate: MetadataTemplate,\n ): 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 metadataTemplate,\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 { features, metadataQuery = {} }: ContentExplorerProps = this.props;\n const { currentPageNumber, markers, sortBy, sortDirection }: 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\n metadataQueryClone.order_by = [\n {\n field_key: sortBy,\n direction: sortDirection,\n },\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\n if (isFeatureEnabled(features, 'contentExplorer.metadataViewV2')) {\n this.metadataQueryAPIHelper = new MetadataQueryAPIHelperV2(this.api);\n } else {\n this.metadataQueryAPIHelper = new MetadataQueryAPIHelper(this.api);\n }\n\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: unknown) => {\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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 view,\n }: State = this.state;\n\n if (id || view === VIEW_METADATA) {\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(\n collection: Collection,\n selectedItem?: BoxItem | null,\n callback: () => void = noop,\n ): Promise<void> {\n const newCollection: Collection = cloneDeep(collection);\n const { items = [] } = newCollection;\n\n const fileAPI = this.api.getFileAPI(false);\n const selectedId = selectedItem ? selectedItem.id : null;\n let newSelectedItem: BoxItem | null | undefined;\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 } as const;\n\n if (item.type === TYPE_FILE && thumbnailUrl && !isThumbnailAvailable(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 } as const;\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: (item: BoxItem) => void = noop): void => {\n const { selected, currentCollection }: State = this.state;\n const { items = [] } = currentCollection;\n const { onSelect }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 = (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 }: ContentExplorerProps = 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(\n selected,\n () => {\n onDelete(cloneDeep([selected]));\n this.refreshCollection();\n },\n () => {\n this.refreshCollection();\n },\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 }: ContentExplorerProps = this.props;\n\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\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.throttledCreateFolderCallback();\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 }: ContentExplorerProps = 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 * Throttled version of createFolderCallback to prevent errors from rapid clicking.\n *\n * @private\n * @param {string} [name] - folder name\n * @return {void}\n */\n throttledCreateFolderCallback = throttle(this.createFolderCallback, 500, { trailing: false });\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 = async (item: BoxItem) => {\n const { currentCollection } = this.state;\n let updatedItem = item;\n\n // if there is no shared link, create one with enterprise default access\n if (!item[FIELD_SHARED_LINK] && getProp(item, FIELD_PERMISSIONS_CAN_SHARE, false)) {\n await this.api.getAPI(item.type).share(item, undefined, (sharedItem: BoxItem) => {\n updatedItem = sharedItem;\n });\n }\n\n this.updateCollection(currentCollection, updatedItem, () => this.setState({ isShareModalOpen: true }));\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 }: ContentExplorerProps = this.props;\n\n if (!selected || !canShare) {\n return;\n }\n\n const { permissions, type } = selected;\n if (!permissions || !type) {\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 * 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 * Keyboard events\n *\n * @private\n * @return {void}\n */\n onKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: ContentExplorerProps = 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 (document.activeElement && !document.activeElement.closest('.be-ItemGrid')) {\n focus(this.rootElement, '.be-ItemGrid-item', false);\n event.preventDefault();\n }\n } else if (document.activeElement && !document.activeElement.closest('.be-ItemList')) {\n focus(this.rootElement, '.be-ItemList-item', 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 getMetadataViewProps = (): ContentExplorerProps['metadataViewProps'] => {\n const { metadataViewProps } = this.props;\n const { tableProps } = metadataViewProps ?? {};\n const { onSelectionChange } = tableProps ?? {};\n const { selectedItemIds } = this.state;\n\n return {\n ...metadataViewProps,\n tableProps: {\n ...tableProps,\n selectedKeys: selectedItemIds,\n onSelectionChange: (ids: Selection) => {\n onSelectionChange?.(ids);\n this.setState({ selectedItemIds: ids });\n },\n },\n };\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 | null,\n newValue?: MetadataFieldValue | null,\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 | null): 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 clearSelectedItemIds = () => {\n this.setState({ selectedItemIds: new Set() });\n };\n\n /**\n * Fetches the folder name and stores it in state rootName if successful\n *\n * @private\n * @return {void}\n */\n fetchFolderName = (folderId?: string) => {\n if (!folderId) {\n return;\n }\n\n this.api.getFolderAPI(false).getFolderFields(\n folderId,\n ({ name }) => {\n this.setState({ rootName: name });\n },\n this.errorCallback,\n { fields: [FIELD_NAME] },\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 features,\n isMedium,\n isSmall,\n isTouch,\n itemActions,\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 theme,\n title,\n token,\n uploadHost,\n }: ContentExplorerProps = this.props;\n\n const {\n currentCollection,\n currentPageNumber,\n currentPageSize,\n errorCode,\n gridColumnCount,\n isCreateFolderModalOpen,\n isDeleteModalOpen,\n isLoading,\n isPreviewModalOpen,\n isRenameModalOpen,\n isShareModalOpen,\n isUploadModalOpen,\n markers,\n metadataTemplate,\n rootName,\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 const metadataViewProps = this.getMetadataViewProps();\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 <TooltipProvider container={this.rootElement}>\n <div id={this.id} className={styleClassName} ref={measureRef} data-testid=\"content-explorer\">\n <ThemingStyles selector={`#${this.id}`} theme={theme} />\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n {!isDefaultViewMetadata && <Header view={view} logoUrl={logoUrl} 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 onClearSelectedItemIds={this.clearSelectedItemIds}\n onCreate={this.createFolder}\n onGridViewSliderChange={this.onGridViewSliderChange}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n onViewModeChange={this.changeViewMode}\n portalElement={this.rootElement}\n selectedItemIds={this.state.selectedItemIds}\n title={title}\n />\n\n <Content\n canDelete={canDelete}\n canDownload={canDownload}\n canPreview={canPreview}\n canRename={canRename}\n canShare={canShare}\n currentCollection={currentCollection}\n features={features}\n gridColumnCount={Math.min(gridColumnCount, maxGridColumnCount)}\n isMedium={isMedium}\n isSmall={isSmall}\n isTouch={isTouch}\n itemActions={itemActions}\n fieldsToShow={fieldsToShow}\n metadataTemplate={metadataTemplate}\n metadataViewProps={metadataViewProps}\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 portalElement={this.rootElement}\n view={view}\n viewMode={viewMode}\n />\n {!isErrorView && (\n <Footer>\n <Pagination\n hasNextMarker={hasNextMarker}\n hasPrevMarker={hasPreviousMarker}\n isSmall={isSmall}\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.throttledCreateFolderCallback}\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 </TooltipProvider>\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContentExplorer.js","names":["React","Component","classNames","cloneDeep","debounce","flow","getProp","noop","throttle","uniqueid","TooltipProvider","CreateFolderDialog","UploadDialog","Header","Pagination","SubHeader","makeResponsive","openUrlInsideIframe","Internationalize","ThemingStyles","API","MetadataQueryAPIHelperV2","MetadataQueryAPIHelper","Footer","PreviewDialog","ShareDialog","RenameDialog","DeleteConfirmationDialog","Content","isThumbnailAvailable","isFocusableElement","isInputElement","focus","FILE_SHARED_LINK_FIELDS_TO_FETCH","CONTENT_EXPLORER_FOLDER_FIELDS_TO_FETCH","LocalStore","withFeatureConsumer","withFeatureProvider","isFeatureEnabled","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_SEARCH_DEBOUNCE","SORT_ASC","FIELD_NAME","FIELD_PERMISSIONS_CAN_SHARE","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","constructor","props","_defineProperty","metadataQueryCollection","metadataTemplate","nextMarker","metadataQuery","features","currentCollection","currentPageNumber","markers","state","cloneMarkers","nextState","_objectSpread","percentLoaded","ancestor_folder_id","api","getFolderAPI","getFolderFields","name","setState","rootName","errorCallback","fields","error","view","console","id","searchQuery","fetchFolder","showRecents","search","showMetadataQueryResults","Error","triggerNavigationEvent","rootFolderId","currentId","currentOffset","currentPageSize","limit","sortBy","sortDirection","folderId","hasFolderChanged","hasSearchQuery","trim","length","offset","firstLoad","rootElement","currentUnloadedCollection","getFolder","collection","fetchFolderSuccessCallback","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","updatedRepresentation","getFileAPI","generateRepresentation","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","rename","code","throttledCreateFolderCallback","isCreateFolderModalOpen","canCreateNewFolder","onCreate","create","createFolderCallback","trailing","shareCallback","handleSharedLinkSuccess","getFile","getWebLinkAPI","getWeblink","sharedItem","isShareModalOpen","canShare","can_share","fetchSharedLinkInfo","event","target","key","toLowerCase","preventDefault","getViewMode","document","activeElement","closest","globalModifier","upload","createFolder","newOffset","store","getItem","isSmall","isMedium","isLarge","maxWidthColumns","metadataViewProps","tableProps","onSelectionChange","selectedItemIds","selectedKeys","ids","viewMode","setItem","forceUpdate","sliderValue","gridColumnCount","field","oldValue","newValue","metadataQueryAPIHelper","updateMetadata","updateMetadataSuccessCallback","updatedItems","collectionItem","clonedItem","forEach","itemField","split","pop","value","Set","apiHost","initialPage","initialPageSize","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","clientName","clearCache","destroy","componentWillUnmount","componentDidMount","currentFolderId","defaultView","getElementById","appElement","firstElementChild","componentDidUpdate","prevFolderId","prevState","metadataQueryClone","marker","order_by","field_key","direction","fetchMetadataQueryResults","showMetadataQueryResultsSuccessCallback","_extends","finishNavigation","autoFocus","onNavigate","boxItem","recentsSuccessCallback","getRecentsAPI","recents","fileAPI","selectedId","newSelectedItem","itemThumbnails","Promise","all","getThumbnailUrl","index","isSelected","currentItem","thumbnailUrl","attemptThumbnailGeneration","render","appHost","className","contentPreviewProps","contentUploaderProps","itemActions","logoUrl","measureRef","messages","fieldsToShow","onPreview","onUpload","staticHost","staticPath","previewLibraryVersion","theme","title","totalCount","styleClassName","allowUpload","allowCreate","isDefaultViewMetadata","isErrorView","maxGridColumnCount","getMaxNumberOfGridViewColumnsForWidth","hasNextMarker","hasPreviousMarker","getMetadataViewProps","createElement","container","ref","selector","onKeyDown","tabIndex","onSearch","rootId","gridMaxColumns","gridMinColumns","maxGridColumnCountForWidth","onClearSelectedItemIds","clearSelectedItemIds","onGridViewSliderChange","onItemClick","onSortChange","sort","onViewModeChange","changeViewMode","portalElement","Math","min","onItemDelete","delete","onItemDownload","download","onItemPreview","onItemRename","onItemSelect","onItemShare","onMetadataUpdate","hasPrevMarker","onOffsetChange","paginate","pageSize","onMarkerBasedPageChange","markerBasedPaginate","isOpen","onClose","uploadSuccessHandler","parentElement","onCancel","onShareAccessChange","changeShareAccess","cache","getCache","contentSidebarProps","ContentExplorerComponent"],"sources":["../../../src/elements/content-explorer/ContentExplorer.tsx"],"sourcesContent":["import '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 throttle from 'lodash/throttle';\nimport uniqueid from 'lodash/uniqueId';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport type { Selection } from 'react-aria-components';\n\nimport CreateFolderDialog from '../common/create-folder-dialog';\nimport UploadDialog from '../common/upload-dialog';\nimport Header from '../common/header';\nimport Pagination from '../common/pagination';\nimport SubHeader from '../common/sub-header/SubHeader';\nimport makeResponsive from '../common/makeResponsive';\nimport openUrlInsideIframe from '../../utils/iframe';\nimport Internationalize from '../common/Internationalize';\nimport ThemingStyles from '../common/theming';\nimport API from '../../api';\nimport MetadataQueryAPIHelperV2 from './MetadataQueryAPIHelper';\nimport MetadataQueryAPIHelper from '../../features/metadata-based-view/MetadataQueryAPIHelper';\nimport Footer from './Footer';\nimport PreviewDialog from '../common/preview-dialog/PreviewDialog';\nimport ShareDialog from './ShareDialog';\nimport RenameDialog from './RenameDialog';\nimport DeleteConfirmationDialog from './DeleteConfirmationDialog';\nimport Content from './Content';\nimport { isThumbnailAvailable } from '../common/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 {\n withFeatureConsumer,\n withFeatureProvider,\n isFeatureEnabled,\n type FeatureConfig,\n} 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_PERMISSIONS_CAN_SHARE,\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 { ItemAction } from '../common/item';\nimport type { Theme } from '../common/theming';\nimport type { MetadataQuery, FieldsToShow } from '../../common/types/metadataQueries';\nimport type { MetadataFieldValue, MetadataTemplate } 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';\nimport type { ContentPreviewProps } from '../content-preview';\nimport type { ContentUploaderProps } from '../content-uploader';\nimport type { MetadataViewContainerProps } from './MetadataViewContainer';\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\nexport interface ContentExplorerProps {\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 itemActions?: ItemAction[];\n language?: string;\n logoUrl?: string;\n measureRef?: (ref: Element | null) => void;\n messages?: StringMap;\n metadataQuery?: MetadataQuery;\n metadataViewProps?: Omit<MetadataViewContainerProps, 'hasError' | 'currentCollection'>;\n onCreate?: (item: BoxItem) => void;\n onDelete?: (item: BoxItem) => void;\n onDownload?: (item: BoxItem) => void;\n onNavigate?: (item: BoxItem) => void;\n onPreview?: (data: unknown) => void;\n onRename?: (item: BoxItem) => void;\n onSelect?: (item: BoxItem) => void;\n onUpload?: (item: BoxItem) => void;\n previewLibraryVersion?: string;\n requestInterceptor?: (response: AxiosResponse) => void;\n responseInterceptor?: (config: AxiosRequestConfig) => void;\n rootFolderId?: string;\n sharedLink?: string;\n sharedLinkPassword?: string;\n sortBy?: SortBy;\n sortDirection?: SortDirection;\n staticHost?: string;\n staticPath?: string;\n theme?: Theme;\n title?: 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 | null | undefined>;\n metadataTemplate: MetadataTemplate;\n rootName: string;\n searchQuery: string;\n selected?: BoxItem;\n selectedItemIds: Selection;\n sortBy: SortBy | string;\n sortDirection: SortDirection;\n view: View;\n};\n\nconst localStoreViewMode = 'bce.defaultViewMode';\n\nclass ContentExplorer extends Component<ContentExplorerProps, State> {\n id: string;\n\n api: API;\n\n state: State;\n\n props: ContentExplorerProps;\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 metadataViewProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentExplorer}\n */\n constructor(props: ContentExplorerProps) {\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 }: ContentExplorerProps = 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 metadataTemplate: {},\n rootName: '',\n selectedItemIds: new Set(),\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 }: ContentExplorerProps = this.props;\n this.rootElement = document.getElementById(this.id) as HTMLElement;\n this.appElement = this.rootElement.firstElementChild as 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 }: ContentExplorerProps, prevState: State): void {\n const { currentFolderId }: ContentExplorerProps = 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 = (\n metadataQueryCollection: Collection,\n metadataTemplate: MetadataTemplate,\n ): void => {\n const { nextMarker } = metadataQueryCollection;\n const { metadataQuery, features } = this.props;\n const { currentCollection, currentPageNumber, markers }: State = this.state;\n const cloneMarkers = [...markers];\n if (nextMarker) {\n cloneMarkers[currentPageNumber + 1] = nextMarker;\n }\n\n const nextState = {\n currentCollection: {\n ...currentCollection,\n ...metadataQueryCollection,\n percentLoaded: 100,\n },\n markers: cloneMarkers,\n metadataTemplate,\n };\n\n // if v2, fetch folder name and add to state\n if (metadataQuery?.ancestor_folder_id && isFeatureEnabled(features, 'contentExplorer.metadataViewV2')) {\n this.api.getFolderAPI().getFolderFields(\n metadataQuery.ancestor_folder_id,\n ({ name }) => {\n this.setState({\n ...nextState,\n rootName: name || '',\n });\n },\n this.errorCallback,\n { fields: [FIELD_NAME] },\n );\n } else {\n // No folder name to fetch, update state immediately with just metadata\n this.setState(nextState);\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 { features, metadataQuery = {} }: ContentExplorerProps = this.props;\n const { currentPageNumber, markers, sortBy, sortDirection }: 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\n metadataQueryClone.order_by = [\n {\n field_key: sortBy,\n direction: sortDirection,\n },\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\n if (isFeatureEnabled(features, 'contentExplorer.metadataViewV2')) {\n this.metadataQueryAPIHelper = new MetadataQueryAPIHelperV2(this.api);\n } else {\n this.metadataQueryAPIHelper = new MetadataQueryAPIHelper(this.api);\n }\n\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: unknown) => {\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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 view,\n }: State = this.state;\n\n if (id || view === VIEW_METADATA) {\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(\n collection: Collection,\n selectedItem?: BoxItem | null,\n callback: () => void = noop,\n ): Promise<void> {\n const newCollection: Collection = cloneDeep(collection);\n const { items = [] } = newCollection;\n\n const fileAPI = this.api.getFileAPI(false);\n const selectedId = selectedItem ? selectedItem.id : null;\n let newSelectedItem: BoxItem | null | undefined;\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 } as const;\n\n if (item.type === TYPE_FILE && thumbnailUrl && !isThumbnailAvailable(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 } as const;\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: (item: BoxItem) => void = noop): void => {\n const { selected, currentCollection }: State = this.state;\n const { items = [] } = currentCollection;\n const { onSelect }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 }: ContentExplorerProps = 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 = (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 }: ContentExplorerProps = 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(\n selected,\n () => {\n onDelete(cloneDeep([selected]));\n this.refreshCollection();\n },\n () => {\n this.refreshCollection();\n },\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 }: ContentExplorerProps = this.props;\n\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\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.throttledCreateFolderCallback();\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 }: ContentExplorerProps = 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 * Throttled version of createFolderCallback to prevent errors from rapid clicking.\n *\n * @private\n * @param {string} [name] - folder name\n * @return {void}\n */\n throttledCreateFolderCallback = throttle(this.createFolderCallback, 500, { trailing: false });\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 = async (item: BoxItem) => {\n const { currentCollection } = this.state;\n let updatedItem = item;\n\n // if there is no shared link, create one with enterprise default access\n if (!item[FIELD_SHARED_LINK] && getProp(item, FIELD_PERMISSIONS_CAN_SHARE, false)) {\n await this.api.getAPI(item.type).share(item, undefined, (sharedItem: BoxItem) => {\n updatedItem = sharedItem;\n });\n }\n\n this.updateCollection(currentCollection, updatedItem, () => this.setState({ isShareModalOpen: true }));\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 }: ContentExplorerProps = this.props;\n\n if (!selected || !canShare) {\n return;\n }\n\n const { permissions, type } = selected;\n if (!permissions || !type) {\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 * 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 * Keyboard events\n *\n * @private\n * @return {void}\n */\n onKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isInputElement(event.target)) {\n return;\n }\n\n const { rootFolderId }: ContentExplorerProps = 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 (document.activeElement && !document.activeElement.closest('.be-ItemGrid')) {\n focus(this.rootElement, '.be-ItemGrid-item', false);\n event.preventDefault();\n }\n } else if (document.activeElement && !document.activeElement.closest('.be-ItemList')) {\n focus(this.rootElement, '.be-ItemList-item', 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 getMetadataViewProps = (): ContentExplorerProps['metadataViewProps'] => {\n const { metadataViewProps } = this.props;\n const { tableProps } = metadataViewProps ?? {};\n const { onSelectionChange } = tableProps ?? {};\n const { selectedItemIds } = this.state;\n\n return {\n ...metadataViewProps,\n tableProps: {\n ...tableProps,\n selectedKeys: selectedItemIds,\n onSelectionChange: (ids: Selection) => {\n onSelectionChange?.(ids);\n this.setState({ selectedItemIds: ids });\n },\n },\n };\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 | null,\n newValue?: MetadataFieldValue | null,\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 | null): 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 clearSelectedItemIds = () => {\n this.setState({ selectedItemIds: new Set() });\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 features,\n isMedium,\n isSmall,\n isTouch,\n itemActions,\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 theme,\n title,\n token,\n uploadHost,\n }: ContentExplorerProps = this.props;\n\n const {\n currentCollection,\n currentPageNumber,\n currentPageSize,\n errorCode,\n gridColumnCount,\n isCreateFolderModalOpen,\n isDeleteModalOpen,\n isLoading,\n isPreviewModalOpen,\n isRenameModalOpen,\n isShareModalOpen,\n isUploadModalOpen,\n markers,\n metadataTemplate,\n rootName,\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 const metadataViewProps = this.getMetadataViewProps();\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 <TooltipProvider container={this.rootElement}>\n <div id={this.id} className={styleClassName} ref={measureRef} data-testid=\"content-explorer\">\n <ThemingStyles selector={`#${this.id}`} theme={theme} />\n <div className=\"be-app-element\" onKeyDown={this.onKeyDown} tabIndex={0}>\n {!isDefaultViewMetadata && <Header view={view} logoUrl={logoUrl} 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 onClearSelectedItemIds={this.clearSelectedItemIds}\n onCreate={this.createFolder}\n onGridViewSliderChange={this.onGridViewSliderChange}\n onItemClick={this.fetchFolder}\n onSortChange={this.sort}\n onViewModeChange={this.changeViewMode}\n portalElement={this.rootElement}\n selectedItemIds={this.state.selectedItemIds}\n title={title}\n />\n\n <Content\n canDelete={canDelete}\n canDownload={canDownload}\n canPreview={canPreview}\n canRename={canRename}\n canShare={canShare}\n currentCollection={currentCollection}\n features={features}\n gridColumnCount={Math.min(gridColumnCount, maxGridColumnCount)}\n isMedium={isMedium}\n isSmall={isSmall}\n isTouch={isTouch}\n itemActions={itemActions}\n fieldsToShow={fieldsToShow}\n metadataTemplate={metadataTemplate}\n metadataViewProps={metadataViewProps}\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 portalElement={this.rootElement}\n view={view}\n viewMode={viewMode}\n />\n {!isErrorView && (\n <Footer>\n <Pagination\n hasNextMarker={hasNextMarker}\n hasPrevMarker={hasPreviousMarker}\n isSmall={isSmall}\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.throttledCreateFolderCallback}\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 </TooltipProvider>\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"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,7 @@ import { http, HttpResponse } from 'msw';
4
4
  import ContentExplorer from '../ContentExplorer';
5
5
  import { DEFAULT_HOSTNAME_API } from '../../../constants';
6
6
  import { mockMetadata, mockSchema } from '../../common/__mocks__/mockMetadata';
7
+ import { mockRootFolder } from '../../common/__mocks__/mockRootFolder';
7
8
  const EID = '0';
8
9
  const templateName = 'templateName';
9
10
  const metadataSource = `enterprise_${EID}.${templateName}`;
@@ -109,6 +110,8 @@ const meta = {
109
110
  return HttpResponse.json(mockMetadata);
110
111
  }), http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {
111
112
  return HttpResponse.json(mockSchema);
113
+ }), http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/:id`, () => {
114
+ return HttpResponse.json(mockRootFolder);
112
115
  })]
113
116
  }
114
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MetadataView.stories.js","names":["React","get","http","HttpResponse","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","EID","templateName","metadataSource","metadataSourceFieldName","metadataQuery","from","ancestor_folder_id","fields","fieldsToShow","key","canEdit","columns","map","field","textValue","displayName","id","type","allowsSorting","minWidth","maxWidth","isRowHeader","cellRenderer","item","column","dateValue","Date","toLocaleDateString","defaultView","metadataView","args","metadataViewProps","tableProps","isSelectAllEnabled","features","contentExplorer","metadataViewV2","render","createElement","style","padding","border","height","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json"],"sources":["../../../../src/elements/content-explorer/stories/MetadataView.stories.tsx"],"sourcesContent":["import React from 'react';\nimport get from 'lodash/get';\nimport { http, HttpResponse } from 'msw';\nimport type { Meta, StoryObj } from '@storybook/react';\nimport ContentExplorer from '../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../constants';\nimport { mockMetadata, mockSchema } from '../../common/__mocks__/mockMetadata';\n\nconst EID = '0';\nconst templateName = 'templateName';\nconst metadataSource = `enterprise_${EID}.${templateName}`;\nconst metadataSourceFieldName = `metadata.${metadataSource}`;\n\nconst metadataQuery = {\n from: metadataSource,\n\n // // Filter items in the folder by existing metadata key\n // query: 'key = :arg1',\n //\n // // Display items with value\n // query_params: { arg1: 'value' },\n\n ancestor_folder_id: '0',\n fields: [\n `name`,\n `${metadataSourceFieldName}.industry`,\n `${metadataSourceFieldName}.last_contacted_at`,\n `${metadataSourceFieldName}.role`,\n ],\n};\n\nconst fieldsToShow = [\n { key: `name` },\n { key: `${metadataSourceFieldName}.industry`, canEdit: true },\n { key: `${metadataSourceFieldName}.last_contacted_at`, canEdit: true },\n { key: `${metadataSourceFieldName}.role`, canEdit: true },\n];\n\nconst columns = mockSchema.fields.map(field => {\n if (field.key === 'name') {\n return {\n textValue: field.displayName,\n id: 'name',\n type: 'string',\n allowsSorting: true,\n minWidth: 250,\n maxWidth: 250,\n isRowHeader: true,\n };\n }\n\n if (field.type === 'date') {\n return {\n textValue: field.displayName,\n id: `${metadataSourceFieldName}.${field.key}`,\n type: field.type,\n allowsSorting: true,\n minWidth: 200,\n maxWidth: 200,\n cellRenderer: (item, column) => {\n const dateValue = get(item, column.id);\n return dateValue ? new Date(dateValue).toLocaleDateString() : '';\n },\n };\n }\n\n return {\n textValue: field.displayName,\n id: `${metadataSourceFieldName}.${field.key}`,\n type: field.type,\n allowsSorting: true,\n minWidth: 200,\n maxWidth: 200,\n };\n});\nconst defaultView = 'metadata'; // Required prop to paint the metadata view. If not provided, you'll get regular folder view.\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataViewProps: {\n columns,\n tableProps: {\n isSelectAllEnabled: true,\n },\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n },\n render: args => {\n return (\n <div style={{ padding: '50px', border: '1px solid #ccc', height: '500px' }}>\n <ContentExplorer {...args} />\n </div>\n );\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/MetadataView',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MetadataView.stories.js","names":["React","get","http","HttpResponse","ContentExplorer","DEFAULT_HOSTNAME_API","mockMetadata","mockSchema","mockRootFolder","EID","templateName","metadataSource","metadataSourceFieldName","metadataQuery","from","ancestor_folder_id","fields","fieldsToShow","key","canEdit","columns","map","field","textValue","displayName","id","type","allowsSorting","minWidth","maxWidth","isRowHeader","cellRenderer","item","column","dateValue","Date","toLocaleDateString","defaultView","metadataView","args","metadataViewProps","tableProps","isSelectAllEnabled","features","contentExplorer","metadataViewV2","render","createElement","style","padding","border","height","meta","title","component","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","post","json"],"sources":["../../../../src/elements/content-explorer/stories/MetadataView.stories.tsx"],"sourcesContent":["import React from 'react';\nimport get from 'lodash/get';\nimport { http, HttpResponse } from 'msw';\nimport type { Meta, StoryObj } from '@storybook/react';\nimport ContentExplorer from '../ContentExplorer';\nimport { DEFAULT_HOSTNAME_API } from '../../../constants';\nimport { mockMetadata, mockSchema } from '../../common/__mocks__/mockMetadata';\nimport { mockRootFolder } from '../../common/__mocks__/mockRootFolder';\n\nconst EID = '0';\nconst templateName = 'templateName';\nconst metadataSource = `enterprise_${EID}.${templateName}`;\nconst metadataSourceFieldName = `metadata.${metadataSource}`;\n\nconst metadataQuery = {\n from: metadataSource,\n\n // // Filter items in the folder by existing metadata key\n // query: 'key = :arg1',\n //\n // // Display items with value\n // query_params: { arg1: 'value' },\n\n ancestor_folder_id: '0',\n fields: [\n `name`,\n `${metadataSourceFieldName}.industry`,\n `${metadataSourceFieldName}.last_contacted_at`,\n `${metadataSourceFieldName}.role`,\n ],\n};\n\nconst fieldsToShow = [\n { key: `name` },\n { key: `${metadataSourceFieldName}.industry`, canEdit: true },\n { key: `${metadataSourceFieldName}.last_contacted_at`, canEdit: true },\n { key: `${metadataSourceFieldName}.role`, canEdit: true },\n];\n\nconst columns = mockSchema.fields.map(field => {\n if (field.key === 'name') {\n return {\n textValue: field.displayName,\n id: 'name',\n type: 'string',\n allowsSorting: true,\n minWidth: 250,\n maxWidth: 250,\n isRowHeader: true,\n };\n }\n\n if (field.type === 'date') {\n return {\n textValue: field.displayName,\n id: `${metadataSourceFieldName}.${field.key}`,\n type: field.type,\n allowsSorting: true,\n minWidth: 200,\n maxWidth: 200,\n cellRenderer: (item, column) => {\n const dateValue = get(item, column.id);\n return dateValue ? new Date(dateValue).toLocaleDateString() : '';\n },\n };\n }\n\n return {\n textValue: field.displayName,\n id: `${metadataSourceFieldName}.${field.key}`,\n type: field.type,\n allowsSorting: true,\n minWidth: 200,\n maxWidth: 200,\n };\n});\nconst defaultView = 'metadata'; // Required prop to paint the metadata view. If not provided, you'll get regular folder view.\n\ntype Story = StoryObj<typeof ContentExplorer>;\n\nexport const metadataView: Story = {\n args: {\n metadataViewProps: {\n columns,\n tableProps: {\n isSelectAllEnabled: true,\n },\n },\n metadataQuery,\n fieldsToShow,\n defaultView,\n features: {\n contentExplorer: {\n metadataViewV2: true,\n },\n },\n },\n render: args => {\n return (\n <div style={{ padding: '50px', border: '1px solid #ccc', height: '500px' }}>\n <ContentExplorer {...args} />\n </div>\n );\n },\n};\n\nconst meta: Meta<typeof ContentExplorer> = {\n title: 'Elements/ContentExplorer/MetadataView',\n component: ContentExplorer,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.post(`${DEFAULT_HOSTNAME_API}/2.0/metadata_queries/execute_read`, () => {\n return HttpResponse.json(mockMetadata);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/metadata_templates/enterprise/templateName/schema`, () => {\n return HttpResponse.json(mockSchema);\n }),\n http.get(`${DEFAULT_HOSTNAME_API}/2.0/folders/:id`, () => {\n return HttpResponse.json(mockRootFolder);\n }),\n ],\n },\n },\n};\n\nexport default meta;\n"],"mappings":"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","ignoreList":[]}