box-ui-elements 23.4.0-beta.23 → 23.4.0-beta.24

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.
@@ -116,7 +116,7 @@ class PlainUpload extends BaseUpload {
116
116
  * @param {Function} [options.errorCallback] - Function to call with errors
117
117
  * @param {Function} [options.progressCallback] - Function to call with progress
118
118
  * @param {Function} [options.conflictCallback] - Function to call on conflicting file names
119
- * @param {boolean} [overwrite] - Should upload overwrite file with same name
119
+ * @param {boolean|'error'} [overwrite] - Should upload overwrite file with same name, throw error, or call conflictCallback to rename
120
120
  * @return {void}
121
121
  */
122
122
  upload({
@@ -128,6 +128,7 @@ class PlainUpload extends BaseUpload {
128
128
  errorCallback = noop,
129
129
  progressCallback = noop,
130
130
  conflictCallback,
131
+ // $FlowFixMe
131
132
  overwrite = true,
132
133
  }: {
133
134
  conflictCallback?: Function,
@@ -136,7 +137,7 @@ class PlainUpload extends BaseUpload {
136
137
  fileDescription: ?string,
137
138
  fileId: ?string,
138
139
  folderId: string,
139
- overwrite: boolean,
140
+ overwrite: boolean | 'error',
140
141
  progressCallback: Function,
141
142
  successCallback: Function,
142
143
  }): void {
@@ -1 +1 @@
1
- {"version":3,"file":"PlainUpload.js","names":["noop","digest","getFileLastModifiedAsISONoMSIfPossible","BaseUpload","CONTENT_MD5_HEADER","PlainUpload","constructor","args","_defineProperty","data","entries","isDestroyed","successCallback","event","progressCallback","uploadUrl","upload_url","getBaseUploadUrl","fileId","replace","attributes","JSON","stringify","name","fileName","parent","id","folderId","description","fileDescription","content_modified_at","file","options","url","headers","successHandler","uploadSuccessHandler","errorHandler","preflightErrorHandler","progressHandler","uploadProgressHandler","sha1","computeSHA1","xhr","uploadFile","upload","errorCallback","conflictCallback","overwrite","makePreflightRequest","cancel","clearTimeout","retryTimeout","destroy","reader","window","FileReader","buffer","readFile","hashBuffer","hashArray","Array","from","Uint8Array","map","b","toString","slice","join","e"],"sources":["../../../src/api/uploads/PlainUpload.js"],"sourcesContent":["/**\n * @flow\n * @file Helper for the plain Box Upload API\n * @author Box\n */\n\nimport noop from 'lodash/noop';\nimport { digest } from '../../utils/webcrypto';\nimport { getFileLastModifiedAsISONoMSIfPossible } from '../../utils/uploads';\nimport BaseUpload from './BaseUpload';\nimport type { BoxItem } from '../../common/types/core';\n\nconst CONTENT_MD5_HEADER = 'Content-MD5';\n\nclass PlainUpload extends BaseUpload {\n successCallback: Function;\n\n progressCallback: Function;\n\n /**\n * Handles an upload success response\n *\n * @param {Object} data - Upload success data\n * @return {void}\n */\n uploadSuccessHandler = ({ data }: Object): void => {\n const { entries }: { entries: BoxItem[] } = data;\n if (this.isDestroyed()) {\n return;\n }\n\n if (typeof this.successCallback === 'function') {\n // Response entries are the successfully created Box File objects\n this.successCallback(entries);\n }\n };\n\n /**\n * Handles an upload progress event\n *\n * @param {Object} event - Progress event\n * @return {void}\n */\n uploadProgressHandler = (event: ProgressEvent): void => {\n if (this.isDestroyed()) {\n return;\n }\n\n if (typeof this.progressCallback === 'function') {\n this.progressCallback(event);\n }\n };\n\n /**\n * Uploads a file. If a file ID is supplied, use the Upload File\n * Version API to replace the file.\n *\n * @param {Object} - Request options\n * @param {boolean} [options.url] - Upload URL to use\n * @return {Promise} Async function promise\n */\n preflightSuccessHandler = async ({ data }: { data: { upload_url?: string } }): Promise<any> => {\n if (this.isDestroyed()) {\n return;\n }\n\n // Use provided upload URL if passed in, otherwise construct\n let uploadUrl = data.upload_url;\n if (!uploadUrl) {\n uploadUrl = `${this.getBaseUploadUrl()}/files/content`;\n\n if (this.fileId) {\n uploadUrl = uploadUrl.replace('content', `${this.fileId}/content`);\n }\n }\n\n const attributes = JSON.stringify({\n name: this.fileName,\n parent: { id: this.folderId },\n description: this.fileDescription,\n content_modified_at: getFileLastModifiedAsISONoMSIfPossible(this.file),\n });\n\n const options = {\n url: uploadUrl,\n data: {\n attributes,\n file: this.file,\n },\n headers: {},\n successHandler: this.uploadSuccessHandler,\n errorHandler: this.preflightErrorHandler,\n progressHandler: this.uploadProgressHandler,\n };\n\n // Calculate SHA1 for file consistency check\n const sha1 = await this.computeSHA1(this.file);\n if (sha1) {\n options.headers = {\n [CONTENT_MD5_HEADER]: sha1,\n };\n }\n\n this.xhr.uploadFile(options);\n };\n\n /**\n * Uploads a file. If there is a conflict and overwrite is true, replace the file.\n * Otherwise, re-upload with a different name.\n *\n * @param {Object} options - Upload options\n * @param {string} options.folderId - untyped folder id\n * @param {string} [options.fileId] - Untyped file id (e.g. no \"file_\" prefix)\n * @param {File} options.file - File blob object\n * @param {Function} [options.successCallback] - Function to call with response\n * @param {Function} [options.errorCallback] - Function to call with errors\n * @param {Function} [options.progressCallback] - Function to call with progress\n * @param {Function} [options.conflictCallback] - Function to call on conflicting file names\n * @param {boolean} [overwrite] - Should upload overwrite file with same name\n * @return {void}\n */\n upload({\n folderId,\n fileId,\n file,\n fileDescription,\n successCallback = noop,\n errorCallback = noop,\n progressCallback = noop,\n conflictCallback,\n overwrite = true,\n }: {\n conflictCallback?: Function,\n errorCallback: Function,\n file: File,\n fileDescription: ?string,\n fileId: ?string,\n folderId: string,\n overwrite: boolean,\n progressCallback: Function,\n successCallback: Function,\n }): void {\n if (this.isDestroyed()) {\n return;\n }\n\n // Save references\n this.folderId = folderId;\n this.fileId = fileId;\n this.file = file;\n this.fileDescription = fileDescription;\n this.fileName = this.file.name;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n this.progressCallback = progressCallback;\n this.overwrite = overwrite;\n this.conflictCallback = conflictCallback;\n\n this.makePreflightRequest();\n }\n\n /**\n * Cancels upload of a file.\n *\n * @return {void}\n */\n cancel() {\n if (this.isDestroyed()) {\n return;\n }\n\n clearTimeout(this.retryTimeout);\n this.destroy();\n }\n\n /**\n * Calculates SHA1 of a file\n *\n * @param {File} file\n * @return {Promise} Promise that resolves with SHA1 digest\n */\n async computeSHA1(file: File): Promise<any> {\n let sha1 = '';\n\n try {\n // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest\n const reader = new window.FileReader();\n const { buffer } = await this.readFile(reader, file);\n const hashBuffer: ArrayBuffer = await digest('SHA-1', buffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n sha1 = hashArray.map(b => `00${b.toString(16)}`.slice(-2)).join('');\n } catch (e) {\n // Return empty sha1 if hashing fails\n }\n\n return sha1;\n }\n}\n\nexport default PlainUpload;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PlainUpload.js","names":["noop","digest","getFileLastModifiedAsISONoMSIfPossible","BaseUpload","CONTENT_MD5_HEADER","PlainUpload","constructor","args","_defineProperty","data","entries","isDestroyed","successCallback","event","progressCallback","uploadUrl","upload_url","getBaseUploadUrl","fileId","replace","attributes","JSON","stringify","name","fileName","parent","id","folderId","description","fileDescription","content_modified_at","file","options","url","headers","successHandler","uploadSuccessHandler","errorHandler","preflightErrorHandler","progressHandler","uploadProgressHandler","sha1","computeSHA1","xhr","uploadFile","upload","errorCallback","conflictCallback","overwrite","makePreflightRequest","cancel","clearTimeout","retryTimeout","destroy","reader","window","FileReader","buffer","readFile","hashBuffer","hashArray","Array","from","Uint8Array","map","b","toString","slice","join","e"],"sources":["../../../src/api/uploads/PlainUpload.js"],"sourcesContent":["/**\n * @flow\n * @file Helper for the plain Box Upload API\n * @author Box\n */\n\nimport noop from 'lodash/noop';\nimport { digest } from '../../utils/webcrypto';\nimport { getFileLastModifiedAsISONoMSIfPossible } from '../../utils/uploads';\nimport BaseUpload from './BaseUpload';\nimport type { BoxItem } from '../../common/types/core';\n\nconst CONTENT_MD5_HEADER = 'Content-MD5';\n\nclass PlainUpload extends BaseUpload {\n successCallback: Function;\n\n progressCallback: Function;\n\n /**\n * Handles an upload success response\n *\n * @param {Object} data - Upload success data\n * @return {void}\n */\n uploadSuccessHandler = ({ data }: Object): void => {\n const { entries }: { entries: BoxItem[] } = data;\n if (this.isDestroyed()) {\n return;\n }\n\n if (typeof this.successCallback === 'function') {\n // Response entries are the successfully created Box File objects\n this.successCallback(entries);\n }\n };\n\n /**\n * Handles an upload progress event\n *\n * @param {Object} event - Progress event\n * @return {void}\n */\n uploadProgressHandler = (event: ProgressEvent): void => {\n if (this.isDestroyed()) {\n return;\n }\n\n if (typeof this.progressCallback === 'function') {\n this.progressCallback(event);\n }\n };\n\n /**\n * Uploads a file. If a file ID is supplied, use the Upload File\n * Version API to replace the file.\n *\n * @param {Object} - Request options\n * @param {boolean} [options.url] - Upload URL to use\n * @return {Promise} Async function promise\n */\n preflightSuccessHandler = async ({ data }: { data: { upload_url?: string } }): Promise<any> => {\n if (this.isDestroyed()) {\n return;\n }\n\n // Use provided upload URL if passed in, otherwise construct\n let uploadUrl = data.upload_url;\n if (!uploadUrl) {\n uploadUrl = `${this.getBaseUploadUrl()}/files/content`;\n\n if (this.fileId) {\n uploadUrl = uploadUrl.replace('content', `${this.fileId}/content`);\n }\n }\n\n const attributes = JSON.stringify({\n name: this.fileName,\n parent: { id: this.folderId },\n description: this.fileDescription,\n content_modified_at: getFileLastModifiedAsISONoMSIfPossible(this.file),\n });\n\n const options = {\n url: uploadUrl,\n data: {\n attributes,\n file: this.file,\n },\n headers: {},\n successHandler: this.uploadSuccessHandler,\n errorHandler: this.preflightErrorHandler,\n progressHandler: this.uploadProgressHandler,\n };\n\n // Calculate SHA1 for file consistency check\n const sha1 = await this.computeSHA1(this.file);\n if (sha1) {\n options.headers = {\n [CONTENT_MD5_HEADER]: sha1,\n };\n }\n\n this.xhr.uploadFile(options);\n };\n\n /**\n * Uploads a file. If there is a conflict and overwrite is true, replace the file.\n * Otherwise, re-upload with a different name.\n *\n * @param {Object} options - Upload options\n * @param {string} options.folderId - untyped folder id\n * @param {string} [options.fileId] - Untyped file id (e.g. no \"file_\" prefix)\n * @param {File} options.file - File blob object\n * @param {Function} [options.successCallback] - Function to call with response\n * @param {Function} [options.errorCallback] - Function to call with errors\n * @param {Function} [options.progressCallback] - Function to call with progress\n * @param {Function} [options.conflictCallback] - Function to call on conflicting file names\n * @param {boolean|'error'} [overwrite] - Should upload overwrite file with same name, throw error, or call conflictCallback to rename\n * @return {void}\n */\n upload({\n folderId,\n fileId,\n file,\n fileDescription,\n successCallback = noop,\n errorCallback = noop,\n progressCallback = noop,\n conflictCallback,\n // $FlowFixMe\n overwrite = true,\n }: {\n conflictCallback?: Function,\n errorCallback: Function,\n file: File,\n fileDescription: ?string,\n fileId: ?string,\n folderId: string,\n overwrite: boolean | 'error',\n progressCallback: Function,\n successCallback: Function,\n }): void {\n if (this.isDestroyed()) {\n return;\n }\n\n // Save references\n this.folderId = folderId;\n this.fileId = fileId;\n this.file = file;\n this.fileDescription = fileDescription;\n this.fileName = this.file.name;\n this.successCallback = successCallback;\n this.errorCallback = errorCallback;\n this.progressCallback = progressCallback;\n this.overwrite = overwrite;\n this.conflictCallback = conflictCallback;\n\n this.makePreflightRequest();\n }\n\n /**\n * Cancels upload of a file.\n *\n * @return {void}\n */\n cancel() {\n if (this.isDestroyed()) {\n return;\n }\n\n clearTimeout(this.retryTimeout);\n this.destroy();\n }\n\n /**\n * Calculates SHA1 of a file\n *\n * @param {File} file\n * @return {Promise} Promise that resolves with SHA1 digest\n */\n async computeSHA1(file: File): Promise<any> {\n let sha1 = '';\n\n try {\n // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest\n const reader = new window.FileReader();\n const { buffer } = await this.readFile(reader, file);\n const hashBuffer: ArrayBuffer = await digest('SHA-1', buffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n sha1 = hashArray.map(b => `00${b.toString(16)}`.slice(-2)).join('');\n } catch (e) {\n // Return empty sha1 if hashing fails\n }\n\n return sha1;\n }\n}\n\nexport default PlainUpload;\n"],"mappings":"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","ignoreList":[]}
@@ -22,7 +22,7 @@ import ThemingStyles from '../common/theming';
22
22
  import FolderUpload from '../../api/uploads/FolderUpload';
23
23
  import { getTypedFileId, getTypedFolderId } from '../../utils/file';
24
24
  import { getDataTransferItemId, getFile, getFileAPIOptions, getFileFromDataTransferItem, getFileId, getDataTransferItemAPIOptions, getPackageFileFromDataTransferItem, isDataTransferItemAFolder, isDataTransferItemAPackage, isMultiputSupported } from '../../utils/uploads';
25
- import { DEFAULT_ROOT, CLIENT_NAME_CONTENT_UPLOADER, DEFAULT_HOSTNAME_API, DEFAULT_HOSTNAME_UPLOAD, ERROR_CODE_UPLOAD_FILE_LIMIT, STATUS_COMPLETE, STATUS_ERROR, STATUS_IN_PROGRESS, STATUS_PENDING, STATUS_STAGED, VIEW_ERROR, VIEW_UPLOAD_EMPTY, VIEW_UPLOAD_IN_PROGRESS, VIEW_UPLOAD_SUCCESS } from '../../constants';
25
+ import { DEFAULT_ROOT, CLIENT_NAME_CONTENT_UPLOADER, DEFAULT_HOSTNAME_API, DEFAULT_HOSTNAME_UPLOAD, ERROR_CODE_ITEM_NAME_IN_USE, ERROR_CODE_UPLOAD_FILE_LIMIT, STATUS_COMPLETE, STATUS_ERROR, STATUS_IN_PROGRESS, STATUS_PENDING, STATUS_STAGED, VIEW_ERROR, VIEW_UPLOAD_EMPTY, VIEW_UPLOAD_IN_PROGRESS, VIEW_UPLOAD_SUCCESS } from '../../constants';
26
26
  import '../common/fonts.scss';
27
27
  import '../common/base.scss';
28
28
  const CHUNKED_UPLOAD_MIN_SIZE_BYTES = 104857600; // 100MB
@@ -581,7 +581,8 @@ class ContentUploader extends Component {
581
581
  } = this.props;
582
582
  const {
583
583
  file,
584
- status
584
+ status,
585
+ error
585
586
  } = item;
586
587
  const isChunkedUpload = chunked && !item.isFolder && file.size > CHUNKED_UPLOAD_MIN_SIZE_BYTES && isMultiputSupported();
587
588
  const isResumable = isResumableUploadsEnabled && isChunkedUpload && item.api.sessionId;
@@ -594,7 +595,10 @@ class ContentUploader extends Component {
594
595
  onClickCancel(item);
595
596
  break;
596
597
  case STATUS_ERROR:
597
- if (isResumable) {
598
+ if (error?.code === ERROR_CODE_ITEM_NAME_IN_USE) {
599
+ this.removeFileFromUploadQueue(item);
600
+ onClickCancel(item);
601
+ } else if (isResumable) {
598
602
  item.bytesUploadedOnLastResume = item.api.totalUploadedBytes;
599
603
  this.resumeFile(item);
600
604
  onClickResume(item);
@@ -1 +1 @@
1
- {"version":3,"file":"ContentUploader.js","names":["React","Component","classNames","cloneDeep","getProp","noop","uniqueid","TooltipProvider","DroppableContent","Footer","UploadsManager","API","Browser","Internationalize","makeResponsive","ThemingStyles","FolderUpload","getTypedFileId","getTypedFolderId","getDataTransferItemId","getFile","getFileAPIOptions","getFileFromDataTransferItem","getFileId","getDataTransferItemAPIOptions","getPackageFileFromDataTransferItem","isDataTransferItemAFolder","isDataTransferItemAPackage","isMultiputSupported","DEFAULT_ROOT","CLIENT_NAME_CONTENT_UPLOADER","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","ERROR_CODE_UPLOAD_FILE_LIMIT","STATUS_COMPLETE","STATUS_ERROR","STATUS_IN_PROGRESS","STATUS_PENDING","STATUS_STAGED","VIEW_ERROR","VIEW_UPLOAD_EMPTY","VIEW_UPLOAD_IN_PROGRESS","VIEW_UPLOAD_SUCCESS","CHUNKED_UPLOAD_MIN_SIZE_BYTES","FILE_LIMIT_DEFAULT","HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT","EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD","UPLOAD_CONCURRENCY","ContentUploader","constructor","props","_defineProperty","apiHost","clientName","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","files","rootFolderId","Array","from","filter","file","itemIdsRef","current","items","item","itemUpdateCallback","isRelativePathIgnored","isPrepopulateFilesEnabled","onBeforeUpload","length","newFiles","getNewFiles","newItemIds","forEach","clearTimeout","resetItemsTimeout","firstFile","newItemIdsState","_objectSpread","setState","itemIds","webkitRelativePath","addFilesWithRelativePathToQueue","addFilesWithoutRelativePathToQueue","upload","droppedItems","addDataTransferItemsToUploadQueue","addFilesToUploadQueue","dataTransferItems","isFolderUploadEnabled","folderItems","fileItems","packageItems","isDirectory","isSafari","push","addFileDataTransferItemsToUploadQueue","addPackageDataTransferItemsToUploadQueue","addFolderDataTransferItemsToUploadQueue","Promise","all","map","packageFiles","packageFile","newItems","getNewDataTransferItems","fileAPIOptions","folderId","folderUploads","folderUpload","getFolderUploadAPI","buildFolderTreeFromDataTransferItem","api","extension","isFolder","name","folder","options","progress","size","status","addToQueue","uploadBaseAPIOptions","getBaseAPIOptions","apiOptions","uploadFile","uploadAPIOptions","substr","lastIndexOf","getUploadAPI","uploadItem","fileLimit","useUploadsManager","isUploadsManagerExpanded","state","updatedItems","prevItemsNum","itemsRef","totalNumOfItems","concat","slice","errorCode","isAutoExpanded","expandUploadsManager","updateViewAndCollection","view","onCancel","cancel","itemIndex","indexOf","minimizeUploadsManager","entries","onUpload","error","boxFile","checkClearUploadItems","onError","index","findIndex","singleItem","errorData","event","total","Math","min","round","loaded","onProgress","chunked","isResumableUploadsEnabled","onClickCancel","onClickResume","onClickRetry","isChunkedUpload","isResumable","sessionId","removeFileFromUploadQueue","bytesUploadedOnLastResume","totalUploadedBytes","resumeFile","resetFile","onClick","onMinimize","resetUploadManagerExpandState","setTimeout","resetUploadsManagerItemsWhenUploadsComplete","id","createRef","componentDidMount","rootElement","document","getElementById","appElement","componentWillUnmount","componentDidUpdate","hasFiles","isArray","hasItems","hasUploads","addFilesWithOptionsToUploadQueueAndStartUpload","createAPIFactory","fileId","itemFolderId","itemFileId","buildFolderTreeFromWebkitRelativePath","addFolderToUploadQueue","isUploadFallbackLogicEnabled","factory","chunkedUploadAPI","getChunkedUploadAPI","console","warn","plainUploadAPI","getPlainUploadAPI","overwrite","numItemsUploading","item_t","uploadOptions","errorCallback","handleUploadError","progressCallback","handleUploadProgress","successCallback","handleUploadSuccess","onResume","resumeOptions","resume","callback","isPartialUploadEnabled","onComplete","someUploadIsInProgress","some","someUploadHasFailed","allItemsArePending","noFileIsPendingOrInProgress","every","areAllItemsFinished","uploadItemsStatus","filesToBeUploaded","render","className","isDraggingItemsToUploadsManager","isTouch","language","measureRef","messages","onClose","onUpgradeCTAClick","theme","isEmpty","isVisible","isLoading","isDone","styleClassName","be","createElement","ref","selector","isDragging","isExpanded","onItemActionClick","onRemoveActionClick","onUploadsManagerActionClick","clickAllWithStatus","toggleUploadsManager","addDroppedItemsToUploadQueue","addFiles","allowedTypes","ContentUploaderComponent"],"sources":["../../../src/elements/content-uploader/ContentUploader.tsx"],"sourcesContent":["import 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueid from 'lodash/uniqueId';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport DroppableContent from './DroppableContent';\nimport Footer from './Footer';\nimport UploadsManager from './UploadsManager';\nimport API from '../../api';\nimport Browser from '../../utils/Browser';\nimport Internationalize from '../common/Internationalize';\nimport makeResponsive from '../common/makeResponsive';\nimport ThemingStyles, { Theme } from '../common/theming';\nimport FolderUpload from '../../api/uploads/FolderUpload';\nimport { getTypedFileId, getTypedFolderId } from '../../utils/file';\nimport {\n getDataTransferItemId,\n getFile,\n getFileAPIOptions,\n getFileFromDataTransferItem,\n getFileId,\n getDataTransferItemAPIOptions,\n getPackageFileFromDataTransferItem,\n isDataTransferItemAFolder,\n isDataTransferItemAPackage,\n isMultiputSupported,\n} from '../../utils/uploads';\nimport {\n DEFAULT_ROOT,\n CLIENT_NAME_CONTENT_UPLOADER,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_UPLOAD,\n ERROR_CODE_UPLOAD_FILE_LIMIT,\n STATUS_COMPLETE,\n STATUS_ERROR,\n STATUS_IN_PROGRESS,\n STATUS_PENDING,\n STATUS_STAGED,\n VIEW_ERROR,\n VIEW_UPLOAD_EMPTY,\n VIEW_UPLOAD_IN_PROGRESS,\n VIEW_UPLOAD_SUCCESS,\n} from '../../constants';\nimport type { BoxItem, StringMap, Token, View } from '../../common/types/core';\nimport type {\n UploadDataTransferItemWithAPIOptions,\n UploadFile,\n UploadFileWithAPIOptions,\n UploadItem,\n UploadItemAPIOptions,\n UploadStatus,\n} from '../../common/types/upload';\nimport '../common/fonts.scss';\nimport '../common/base.scss';\n\nexport interface ContentUploaderProps {\n apiHost: string;\n chunked: boolean;\n className: string;\n clientName: string;\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>;\n fileLimit: number;\n files?: Array<UploadFileWithAPIOptions | File>;\n isDraggingItemsToUploadsManager?: boolean;\n isFolderUploadEnabled: boolean;\n isLarge: boolean;\n isPartialUploadEnabled: boolean;\n isPrepopulateFilesEnabled?: boolean;\n isResumableUploadsEnabled: boolean;\n isSmall: boolean;\n isTouch: boolean;\n isUploadFallbackLogicEnabled: boolean;\n language?: string;\n measureRef: (ref: Element | null) => void;\n messages?: StringMap;\n onBeforeUpload: (file: Array<UploadFileWithAPIOptions | File>) => void;\n onCancel: (items?: UploadItem[]) => void;\n onClickCancel: (item: UploadItem) => void;\n onClickResume: (item: UploadItem) => void;\n onClickRetry: (item: UploadItem) => void;\n onClose: () => void;\n onComplete: (items: UploadItem[]) => void;\n onError: Function;\n onMinimize?: () => void;\n onProgress: (item: UploadItem) => void;\n onResume: (item: UploadItem) => void;\n onUpgradeCTAClick?: () => void;\n onUpload: (item?: UploadItem | BoxItem) => void;\n overwrite: boolean;\n requestInterceptor?: (response: AxiosResponse) => void;\n responseInterceptor?: (config: AxiosRequestConfig) => void;\n rootFolderId: string;\n sharedLink?: string;\n sharedLinkPassword?: string;\n theme?: Theme;\n token?: Token;\n uploadHost: string;\n useUploadsManager?: boolean;\n}\n\ntype State = {\n errorCode?: string;\n isUploadsManagerExpanded: boolean;\n itemIds: Object;\n items: UploadItem[];\n view: View;\n};\n\nconst CHUNKED_UPLOAD_MIN_SIZE_BYTES = 104857600; // 100MB\nconst FILE_LIMIT_DEFAULT = 100; // Upload at most 100 files at once by default\nconst HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT = 8000;\nconst EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD = 5;\nconst UPLOAD_CONCURRENCY = 6;\n\nclass ContentUploader extends Component<ContentUploaderProps, State> {\n id: string;\n\n props: ContentUploaderProps;\n\n state: State;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n resetItemsTimeout: ReturnType<typeof setTimeout>;\n\n isAutoExpanded: boolean = false;\n\n itemsRef: React.MutableRefObject<UploadItem[]>;\n\n itemIdsRef: React.MutableRefObject<Object>;\n\n static defaultProps = {\n apiHost: DEFAULT_HOSTNAME_API,\n chunked: true,\n className: '',\n clientName: CLIENT_NAME_CONTENT_UPLOADER,\n dataTransferItems: [],\n files: [],\n fileLimit: FILE_LIMIT_DEFAULT,\n isDraggingItemsToUploadsManager: false,\n isFolderUploadEnabled: false,\n isPartialUploadEnabled: false,\n isPrepopulateFilesEnabled: false,\n isResumableUploadsEnabled: false,\n isUploadFallbackLogicEnabled: false,\n onBeforeUpload: noop,\n onCancel: noop,\n onClickCancel: noop,\n onClickResume: noop,\n onClickRetry: noop,\n onClose: noop,\n onComplete: noop,\n onError: noop,\n onMinimize: noop,\n onProgress: noop,\n onResume: noop,\n onUpload: noop,\n overwrite: true,\n rootFolderId: DEFAULT_ROOT,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n useUploadsManager: false,\n };\n\n /**\n * [constructor]\n *\n * @return {ContentUploader}\n */\n constructor(props: ContentUploaderProps) {\n super(props);\n\n const { rootFolderId, token, useUploadsManager } = props;\n this.state = {\n view: (rootFolderId && token) || useUploadsManager ? VIEW_UPLOAD_EMPTY : VIEW_ERROR,\n items: [],\n errorCode: '',\n itemIds: {},\n isUploadsManagerExpanded: false,\n };\n this.id = uniqueid('bcu_');\n\n this.itemsRef = React.createRef();\n this.itemsRef.current = [];\n\n this.itemIdsRef = React.createRef();\n this.itemIdsRef.current = {};\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.rootElement = document.getElementById(this.id);\n this.appElement = this.rootElement;\n const { files, isPrepopulateFilesEnabled } = this.props;\n // isPrepopulateFilesEnabled is a prop used to pre-populate files without clicking upload button.\n if (isPrepopulateFilesEnabled && files && files.length > 0) {\n this.addFilesToUploadQueue(files, this.upload);\n }\n }\n\n /**\n * Cancels pending uploads\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.cancel();\n }\n\n /**\n * Adds new items to the queue when files prop gets updated in window view\n *\n * @return {void}\n */\n componentDidUpdate() {\n const { files, dataTransferItems, useUploadsManager } = this.props;\n\n const hasFiles = Array.isArray(files) && files.length > 0;\n const hasItems = Array.isArray(dataTransferItems) && dataTransferItems.length > 0;\n const hasUploads = hasFiles || hasItems;\n\n if (!useUploadsManager || !hasUploads) {\n return;\n }\n\n // TODO: this gets called unnecessarily (upon each render regardless of the queue not changing)\n this.addFilesWithOptionsToUploadQueueAndStartUpload(files, dataTransferItems);\n }\n\n /**\n * Create and return new instance of API creator\n *\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {API}\n */\n createAPIFactory(uploadAPIOptions?: UploadItemAPIOptions): API {\n const { rootFolderId } = this.props;\n const folderId = getProp(uploadAPIOptions, 'folderId') || rootFolderId;\n const fileId = getProp(uploadAPIOptions, 'fileId');\n const itemFolderId = getTypedFolderId(folderId);\n const itemFileId = fileId ? getTypedFileId(fileId) : null;\n\n return new API({\n ...this.getBaseAPIOptions(),\n id: itemFileId || itemFolderId,\n ...uploadAPIOptions,\n });\n }\n\n /**\n * Return base API options from props\n *\n * @private\n * @returns {Object}\n */\n getBaseAPIOptions = (): Object => {\n const {\n apiHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n } = this.props;\n\n return {\n apiHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n };\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewFiles = (files: Array<UploadFileWithAPIOptions | File>): Array<UploadFileWithAPIOptions | File> => {\n const { rootFolderId } = this.props;\n\n return Array.from(files).filter(file => !this.itemIdsRef.current[getFileId(file, rootFolderId)]);\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewDataTransferItems = (\n items: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): Array<DataTransferItem | UploadDataTransferItemWithAPIOptions> => {\n const { rootFolderId } = this.props;\n\n return Array.from(items).filter(item => !this.itemIdsRef.current[getDataTransferItemId(item, rootFolderId)]);\n };\n\n /**\n * Converts File API to upload items and adds to upload queue.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | UploadFile>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @param {boolean} [isRelativePathIgnored] - if true webkitRelativePath property is ignored\n * @return {void}\n */\n addFilesToUploadQueue = (\n files: Array<UploadFileWithAPIOptions | UploadFile>,\n itemUpdateCallback?: Function,\n isRelativePathIgnored: boolean = false,\n ) => {\n const { isPrepopulateFilesEnabled, onBeforeUpload, rootFolderId } = this.props;\n\n if (!files || files.length === 0) {\n return;\n }\n\n const newFiles = this.getNewFiles(files);\n if (newFiles.length === 0) {\n return;\n }\n\n const newItemIds = {};\n newFiles.forEach(file => {\n newItemIds[getFileId(file, rootFolderId)] = true;\n });\n\n clearTimeout(this.resetItemsTimeout);\n\n const firstFile = getFile(newFiles[0]);\n\n const newItemIdsState = { ...this.itemIdsRef.current, ...newItemIds };\n\n this.itemIdsRef.current = newItemIdsState;\n\n this.setState({ itemIds: newItemIdsState }, () => {\n onBeforeUpload(newFiles);\n if (firstFile.webkitRelativePath && !isRelativePathIgnored) {\n // webkitRelativePath should be ignored when the upload destination folder is known\n this.addFilesWithRelativePathToQueue(newFiles, itemUpdateCallback);\n } else {\n this.addFilesWithoutRelativePathToQueue(\n newFiles,\n isPrepopulateFilesEnabled ? this.upload : itemUpdateCallback,\n );\n }\n });\n };\n\n /**\n * Add dropped items to the upload queue\n *\n * @private\n * @param {DataTransfer} droppedItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addDroppedItemsToUploadQueue = (droppedItems: DataTransfer, itemUpdateCallback: Function): void => {\n if (droppedItems.items) {\n this.addDataTransferItemsToUploadQueue(droppedItems.items, itemUpdateCallback);\n } else {\n this.addFilesToUploadQueue(Array.from(droppedItems.files), itemUpdateCallback);\n }\n };\n\n /**\n * Add dataTransferItems to the upload queue\n *\n * @private\n * @param {DataTransferItemList} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addDataTransferItemsToUploadQueue = (\n dataTransferItems: DataTransferItemList | Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const { isFolderUploadEnabled } = this.props;\n\n if (!dataTransferItems || dataTransferItems.length === 0) {\n return;\n }\n\n const folderItems = [];\n const fileItems = [];\n const packageItems = [];\n\n Array.from(dataTransferItems).forEach(item => {\n const isDirectory = isDataTransferItemAFolder(item);\n if (Browser.isSafari() && isDataTransferItemAPackage(item)) {\n packageItems.push(item);\n } else if (isDirectory && isFolderUploadEnabled) {\n folderItems.push(item);\n } else if (!isDirectory) {\n fileItems.push(item);\n }\n });\n\n this.addFileDataTransferItemsToUploadQueue(fileItems, itemUpdateCallback);\n this.addPackageDataTransferItemsToUploadQueue(packageItems, itemUpdateCallback);\n this.addFolderDataTransferItemsToUploadQueue(folderItems, itemUpdateCallback);\n };\n\n /**\n * Add dataTransferItem of file type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<void>}\n */\n addFileDataTransferItemsToUploadQueue = async (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): Promise<void> => {\n const files = await Promise.all(dataTransferItems.map(item => getFileFromDataTransferItem(item)));\n this.addFilesToUploadQueue(\n files.filter(file => file),\n itemUpdateCallback,\n );\n };\n\n /**\n * Add dataTransferItem of package type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addPackageDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const packageFiles = dataTransferItems.map(item => getPackageFileFromDataTransferItem(item));\n this.addFilesToUploadQueue(\n packageFiles.filter(packageFile => packageFile),\n itemUpdateCallback,\n );\n };\n\n /**\n * Add dataTransferItem of folder type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addFolderDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const { rootFolderId } = this.props;\n\n if (dataTransferItems.length === 0) {\n return;\n }\n\n const newItems = this.getNewDataTransferItems(dataTransferItems);\n newItems.forEach(item => {\n this.itemIdsRef.current[getDataTransferItemId(item, rootFolderId)] = true;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n const fileAPIOptions = getDataTransferItemAPIOptions(newItems[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n const folderUploads = newItems.map(item => {\n const folderUpload = this.getFolderUploadAPI(folderId);\n folderUpload.buildFolderTreeFromDataTransferItem(item);\n return {\n api: folderUpload,\n extension: '',\n isFolder: true,\n name: folderUpload.folder.name,\n options: fileAPIOptions,\n progress: 0,\n size: 1,\n status: STATUS_PENDING,\n };\n });\n\n this.addToQueue(folderUploads, itemUpdateCallback);\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithRelativePathToQueue(files: Array<UploadFileWithAPIOptions | File>, itemUpdateCallback: Function) {\n if (files.length === 0) {\n return;\n }\n\n const { rootFolderId } = this.props;\n const fileAPIOptions = getFileAPIOptions(files[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n const folderUpload = this.getFolderUploadAPI(folderId);\n\n // Only 1 folder tree can be built with files having webkitRelativePath properties\n folderUpload.buildFolderTreeFromWebkitRelativePath(files);\n\n this.addFolderToUploadQueue(folderUpload, itemUpdateCallback, fileAPIOptions);\n }\n\n /**\n * Get folder upload API instance\n *\n * @private\n * @param {string} folderId\n * @return {FolderUpload}\n */\n getFolderUploadAPI = (folderId: string): FolderUpload => {\n const uploadBaseAPIOptions = this.getBaseAPIOptions();\n\n return new FolderUpload(this.addFilesToUploadQueue, folderId, this.addToQueue, uploadBaseAPIOptions);\n };\n\n /**\n * Add folder to upload queue\n *\n * @private\n * @param {FolderUpload} folderUpload\n * @param {Function} itemUpdateCallback\n * @param {Object} apiOptions\n * @return {void}\n */\n addFolderToUploadQueue = (folderUpload: FolderUpload, itemUpdateCallback: Function, apiOptions: Object): void => {\n this.addToQueue(\n [\n // $FlowFixMe no file property\n {\n api: folderUpload,\n extension: '',\n isFolder: true,\n name: folderUpload.folder.name,\n options: apiOptions,\n progress: 0,\n size: 1,\n status: STATUS_PENDING,\n },\n ],\n itemUpdateCallback,\n );\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath missing or ignored.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithoutRelativePathToQueue = (\n files: Array<UploadFileWithAPIOptions | File>,\n itemUpdateCallback: Function,\n ) => {\n const { rootFolderId } = this.props;\n\n // Convert files from the file API to upload items\n const newItems = files.map(file => {\n const uploadFile = getFile(file);\n const uploadAPIOptions = getFileAPIOptions(file);\n const { name, size } = uploadFile;\n\n // Extract extension or use empty string if file has no extension\n let extension = name.substr(name.lastIndexOf('.') + 1);\n if (extension.length === name.length) {\n extension = '';\n }\n\n const api = this.getUploadAPI(uploadFile, uploadAPIOptions);\n const uploadItem: UploadItem = {\n api,\n extension,\n file: uploadFile,\n name,\n progress: 0,\n size,\n status: STATUS_PENDING,\n };\n\n if (uploadAPIOptions) {\n uploadItem.options = uploadAPIOptions;\n }\n\n this.itemIdsRef.current[getFileId(uploadItem, rootFolderId)] = true;\n\n return uploadItem;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n this.setState({\n itemIds: this.itemIdsRef.current,\n });\n this.addToQueue(newItems, itemUpdateCallback);\n };\n\n /**\n * Add new items to the upload queue\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} newItems - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addToQueue = (newItems: UploadItem[], itemUpdateCallback: Function) => {\n const { fileLimit, useUploadsManager } = this.props;\n const { isUploadsManagerExpanded } = this.state;\n\n let updatedItems = [];\n const prevItemsNum = this.itemsRef.current.length;\n const totalNumOfItems = prevItemsNum + newItems.length;\n\n // Don't add more than fileLimit # of items\n if (totalNumOfItems > fileLimit) {\n updatedItems = this.itemsRef.current.concat(newItems.slice(0, fileLimit - prevItemsNum));\n this.setState({\n errorCode: ERROR_CODE_UPLOAD_FILE_LIMIT,\n });\n } else {\n updatedItems = this.itemsRef.current.concat(newItems);\n this.setState({ errorCode: '' });\n\n // If the number of items being uploaded passes the threshold, expand the upload manager\n if (\n prevItemsNum < EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n totalNumOfItems >= EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n useUploadsManager &&\n !isUploadsManagerExpanded\n ) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n }\n\n this.updateViewAndCollection(updatedItems, () => {\n if (itemUpdateCallback) {\n itemUpdateCallback();\n }\n\n const { view } = this.state;\n // Automatically start upload if other files are being uploaded\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Returns a new API instance for the given file.\n *\n * @private\n * @param {File} file - File to get a new API instance for\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {UploadAPI} - Instance of Upload API\n */\n getUploadAPI(file: File, uploadAPIOptions?: UploadItemAPIOptions) {\n const { chunked, isResumableUploadsEnabled, isUploadFallbackLogicEnabled } = this.props;\n const { size } = file;\n const factory = this.createAPIFactory(uploadAPIOptions);\n\n if (chunked && size > CHUNKED_UPLOAD_MIN_SIZE_BYTES) {\n if (isMultiputSupported()) {\n const chunkedUploadAPI = factory.getChunkedUploadAPI();\n if (isResumableUploadsEnabled) {\n chunkedUploadAPI.isResumableUploadsEnabled = true;\n }\n if (isUploadFallbackLogicEnabled) {\n chunkedUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n return chunkedUploadAPI;\n }\n\n /* eslint-disable no-console */\n console.warn(\n 'Chunked uploading is enabled, but not supported by your browser. You may need to enable HTTPS.',\n );\n /* eslint-enable no-console */\n }\n\n const plainUploadAPI = factory.getPlainUploadAPI();\n if (isUploadFallbackLogicEnabled) {\n plainUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n\n return plainUploadAPI;\n }\n\n /**\n * Removes an item from the upload queue. Cancels upload if in progress.\n *\n * @param {UploadItem} item - Item to remove\n * @return {void}\n */\n removeFileFromUploadQueue = (item: UploadItem) => {\n const { onCancel, useUploadsManager } = this.props;\n // Clear any error errorCode in footer\n this.setState({ errorCode: '' });\n\n const { api } = item;\n api.cancel();\n\n const itemIndex = this.itemsRef.current.indexOf(item);\n const updatedItems = this.itemsRef.current\n .slice(0, itemIndex)\n .concat(this.itemsRef.current.slice(itemIndex + 1));\n\n onCancel([item]);\n this.updateViewAndCollection(updatedItems, () => {\n // Minimize uploads manager if there are no more items\n if (useUploadsManager && !updatedItems.length) {\n this.minimizeUploadsManager();\n }\n\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Aborts uploads in progress and clears upload list.\n *\n * @private\n * @return {void}\n */\n cancel = () => {\n this.itemsRef.current.forEach(uploadItem => {\n const { api, status } = uploadItem;\n if (status === STATUS_IN_PROGRESS) {\n api.cancel();\n }\n });\n\n // Reset upload collection\n this.updateViewAndCollection([]);\n };\n\n /**\n * Uploads all items in the upload collection.\n *\n * @private\n * @return {void}\n */\n upload = () => {\n this.itemsRef.current.forEach(uploadItem => {\n if (uploadItem.status === STATUS_PENDING) {\n this.uploadFile(uploadItem);\n }\n });\n };\n\n /**\n * Helper to upload a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n uploadFile(item: UploadItem) {\n const { overwrite, rootFolderId } = this.props;\n const { api, file, options } = item;\n\n const numItemsUploading = this.itemsRef.current.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const uploadOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n api.upload(uploadOptions);\n\n this.updateViewAndCollection(updatedItems);\n }\n\n /**\n * Helper to resume uploading a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n resumeFile(item: UploadItem) {\n const { onResume, overwrite, rootFolderId } = this.props;\n const { api, file, options } = item;\n\n const numItemsUploading = this.itemsRef.current.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const resumeOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n sessionId: api && api.sessionId ? api.sessionId : null,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n delete item.error;\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n onResume(item);\n api.resume(resumeOptions);\n\n this.updateViewAndCollection(updatedItems);\n }\n\n /**\n * Helper to reset a file. Cancels any current upload and resets progress.\n *\n * @param {UploadItem} item - Upload item to reset\n * @return {void}\n */\n resetFile(item: UploadItem) {\n const { api, file, options } = item;\n if (api && typeof api.cancel === 'function') {\n api.cancel();\n }\n\n // Reset API, progress & status\n item.api = this.getUploadAPI(file, options);\n item.progress = 0;\n item.status = STATUS_PENDING;\n delete item.error;\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n this.updateViewAndCollection(updatedItems);\n }\n\n /**\n * Handles a successful upload.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to success event\n * @param {BoxItem[]} entries - Successfully uploaded Box File objects\n * @return {void}\n */\n handleUploadSuccess = (item: UploadItem, entries?: BoxItem[]) => {\n const { onUpload, useUploadsManager } = this.props;\n\n item.progress = 100;\n if (!item.error) {\n item.status = STATUS_COMPLETE;\n }\n\n // Cache Box File object of successfully uploaded item\n if (entries && entries.length === 1) {\n const [boxFile] = entries;\n item.boxFile = boxFile;\n }\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n // Broadcast that a file has been uploaded\n if (useUploadsManager) {\n onUpload(item);\n this.checkClearUploadItems();\n } else {\n onUpload(item.boxFile);\n }\n\n this.updateViewAndCollection(updatedItems, () => {\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n resetUploadManagerExpandState = () => {\n this.isAutoExpanded = false;\n this.setState({\n isUploadsManagerExpanded: false,\n });\n };\n\n /**\n * Updates view and internal upload collection with provided items.\n *\n * @private\n * @param {UploadItem[]} item - Items to update collection with\n * @param {Function} callback\n * @return {void}\n */\n updateViewAndCollection(items: UploadItem[], callback?: () => void) {\n const {\n isPartialUploadEnabled,\n isResumableUploadsEnabled,\n onComplete,\n useUploadsManager,\n }: ContentUploaderProps = this.props;\n const someUploadIsInProgress = items.some(uploadItem => uploadItem.status !== STATUS_COMPLETE);\n const someUploadHasFailed = items.some(uploadItem => uploadItem.status === STATUS_ERROR);\n const allItemsArePending = !items.some(uploadItem => uploadItem.status !== STATUS_PENDING);\n const noFileIsPendingOrInProgress = items.every(\n uploadItem => uploadItem.status !== STATUS_PENDING && uploadItem.status !== STATUS_IN_PROGRESS,\n );\n const areAllItemsFinished = items.every(\n uploadItem => uploadItem.status === STATUS_COMPLETE || uploadItem.status === STATUS_ERROR,\n );\n const uploadItemsStatus = isResumableUploadsEnabled ? areAllItemsFinished : noFileIsPendingOrInProgress;\n\n let view = '';\n if ((items && items.length === 0) || allItemsArePending) {\n view = VIEW_UPLOAD_EMPTY;\n } else if (isPartialUploadEnabled && areAllItemsFinished) {\n const filesToBeUploaded = items.filter(item => item.status === STATUS_COMPLETE);\n view = VIEW_UPLOAD_SUCCESS;\n\n if (!useUploadsManager) {\n onComplete(cloneDeep(filesToBeUploaded.map(item => item.boxFile)));\n // Reset item collection after successful upload\n items = [];\n }\n } else if (someUploadHasFailed && useUploadsManager) {\n view = VIEW_ERROR;\n } else if (someUploadIsInProgress) {\n view = VIEW_UPLOAD_IN_PROGRESS;\n } else {\n view = VIEW_UPLOAD_SUCCESS;\n\n if (!useUploadsManager) {\n onComplete(cloneDeep(items.map(item => item.boxFile)));\n // Reset item collection after successful upload\n items = [];\n }\n }\n\n if (uploadItemsStatus && useUploadsManager) {\n if (this.isAutoExpanded) {\n this.resetUploadManagerExpandState();\n } // Else manually expanded so don't close\n onComplete(items);\n }\n\n const state: Partial<State> = {\n items,\n view,\n };\n\n if (items.length === 0) {\n this.itemIdsRef.current = {};\n state.itemIds = {};\n state.errorCode = '';\n }\n\n this.itemsRef.current = items;\n\n this.setState(state as Pick<State, keyof State>, callback);\n }\n\n /**\n * Handles an upload error.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to error\n * @param {Error} error - Upload error\n * @return {void}\n */\n handleUploadError = (item: UploadItem, error: Error) => {\n const { onError, useUploadsManager } = this.props;\n const { file } = item;\n\n item.status = STATUS_ERROR;\n item.error = error;\n\n const newItems = [...this.itemsRef.current];\n const index = newItems.findIndex(singleItem => singleItem === item);\n if (index !== -1) {\n newItems[index] = item;\n }\n\n // Broadcast that there was an error uploading a file\n const errorData = useUploadsManager\n ? {\n item,\n error,\n }\n : {\n file,\n error,\n };\n\n onError(errorData);\n\n this.updateViewAndCollection(newItems, () => {\n if (useUploadsManager) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Handles an upload progress event.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to progress event\n * @param {ProgressEvent} event - Progress event\n * @return {void}\n */\n handleUploadProgress = (item: UploadItem, event: ProgressEvent) => {\n if (!event.total || item.status === STATUS_COMPLETE || item.status === STATUS_STAGED) {\n return;\n }\n\n item.progress = Math.min(Math.round((event.loaded / event.total) * 100), 100);\n item.status = item.progress === 100 ? STATUS_STAGED : STATUS_IN_PROGRESS;\n\n const { onProgress } = this.props;\n onProgress(item);\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n this.updateViewAndCollection(updatedItems);\n };\n\n /**\n * Updates item based on its status.\n *\n * @private\n * @param {UploadItem} item - The upload item to update\n * @return {void}\n */\n onClick = (item: UploadItem) => {\n const { chunked, isResumableUploadsEnabled, onClickCancel, onClickResume, onClickRetry } = this.props;\n const { file, status } = item;\n const isChunkedUpload =\n chunked && !item.isFolder && file.size > CHUNKED_UPLOAD_MIN_SIZE_BYTES && isMultiputSupported();\n const isResumable = isResumableUploadsEnabled && isChunkedUpload && item.api.sessionId;\n\n switch (status) {\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n case STATUS_COMPLETE:\n case STATUS_PENDING:\n this.removeFileFromUploadQueue(item);\n onClickCancel(item);\n break;\n case STATUS_ERROR:\n if (isResumable) {\n item.bytesUploadedOnLastResume = item.api.totalUploadedBytes;\n this.resumeFile(item);\n onClickResume(item);\n } else {\n this.resetFile(item);\n this.uploadFile(item);\n onClickRetry(item);\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Click action button for all uploads in the Uploads Manager with the given status.\n *\n * @private\n * @param {UploadStatus} - the status that items should have for their action button to be clicked\n * @return {void}\n */\n clickAllWithStatus = (status?: UploadStatus) => {\n this.itemsRef.current.forEach(item => {\n if (!status || item.status === status) {\n this.onClick(item);\n }\n });\n };\n\n /**\n * Expands the upload manager\n *\n * @return {void}\n */\n expandUploadsManager = (): void => {\n const { useUploadsManager } = this.props;\n\n if (!useUploadsManager) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n this.setState({ isUploadsManagerExpanded: true });\n };\n\n /**\n * Minimizes the upload manager\n *\n * @return {void}\n */\n minimizeUploadsManager = (): void => {\n const { onMinimize, useUploadsManager } = this.props;\n\n if (!useUploadsManager || !onMinimize) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n onMinimize();\n this.resetUploadManagerExpandState();\n this.checkClearUploadItems();\n };\n\n /**\n * Checks if the upload items should be cleared after a timeout\n *\n * @return {void}\n */\n checkClearUploadItems = () => {\n this.resetItemsTimeout = setTimeout(\n this.resetUploadsManagerItemsWhenUploadsComplete,\n HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT,\n );\n };\n\n /**\n * Toggles the upload manager\n *\n * @return {void}\n */\n toggleUploadsManager = (): void => {\n const { isUploadsManagerExpanded } = this.state;\n\n if (isUploadsManagerExpanded) {\n this.minimizeUploadsManager();\n } else {\n this.expandUploadsManager();\n }\n };\n\n /**\n * Empties the items queue\n *\n * @return {void}\n */\n resetUploadsManagerItemsWhenUploadsComplete = (): void => {\n const { onCancel, useUploadsManager } = this.props;\n const { isUploadsManagerExpanded, view } = this.state;\n\n // Do not reset items when upload manger is expanded or there're uploads in progress\n if (\n (isUploadsManagerExpanded && useUploadsManager && !!this.itemsRef.current.length) ||\n view === VIEW_UPLOAD_IN_PROGRESS\n ) {\n return;\n }\n\n onCancel(this.itemsRef.current);\n\n this.itemsRef.current = [];\n this.itemIdsRef.current = {};\n\n this.setState({\n items: [],\n itemIds: {},\n });\n };\n\n /**\n * Adds file to the upload queue and starts upload immediately\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @return {void}\n */\n addFilesWithOptionsToUploadQueueAndStartUpload = (\n files?: Array<UploadFileWithAPIOptions | File>,\n dataTransferItems?: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): void => {\n this.addFilesToUploadQueue(files, this.upload);\n this.addDataTransferItemsToUploadQueue(dataTransferItems, this.upload);\n };\n\n /**\n * Renders the content uploader\n *\n * @inheritdoc\n * @return {Component}\n */\n render() {\n const {\n className,\n fileLimit,\n isDraggingItemsToUploadsManager = false,\n isFolderUploadEnabled,\n isResumableUploadsEnabled,\n isTouch,\n language,\n measureRef,\n messages,\n onClose,\n onUpgradeCTAClick,\n theme,\n useUploadsManager,\n }: ContentUploaderProps = this.props;\n const { view, items, errorCode, isUploadsManagerExpanded }: State = this.state;\n const isEmpty = items.length === 0;\n const isVisible = !isEmpty || !!isDraggingItemsToUploadsManager;\n\n const hasFiles = items.length !== 0;\n const isLoading = items.some(item => item.status === STATUS_IN_PROGRESS);\n const isDone = items.every(item => item.status === STATUS_COMPLETE || item.status === STATUS_STAGED);\n\n const styleClassName = classNames('bcu', className, {\n 'be-app-element': !useUploadsManager,\n be: !useUploadsManager,\n });\n\n return (\n <Internationalize language={language} messages={messages}>\n <TooltipProvider>\n {useUploadsManager ? (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <ThemingStyles selector={`#${this.id}`} theme={theme} />\n <UploadsManager\n isDragging={isDraggingItemsToUploadsManager}\n isExpanded={isUploadsManagerExpanded}\n isResumableUploadsEnabled={isResumableUploadsEnabled}\n isVisible={isVisible}\n items={items}\n onItemActionClick={this.onClick}\n onRemoveActionClick={this.removeFileFromUploadQueue}\n onUpgradeCTAClick={onUpgradeCTAClick}\n onUploadsManagerActionClick={this.clickAllWithStatus}\n toggleUploadsManager={this.toggleUploadsManager}\n view={view}\n />\n </div>\n ) : (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <ThemingStyles selector={`#${this.id}`} theme={theme} />\n <DroppableContent\n addDataTransferItemsToUploadQueue={this.addDroppedItemsToUploadQueue}\n addFiles={this.addFilesToUploadQueue}\n allowedTypes={['Files']}\n isFolderUploadEnabled={isFolderUploadEnabled}\n isTouch={isTouch}\n items={items}\n onClick={this.onClick}\n view={view}\n />\n <Footer\n errorCode={errorCode}\n fileLimit={fileLimit}\n hasFiles={hasFiles}\n isLoading={isLoading}\n onCancel={this.cancel}\n onClose={onClose}\n onUpload={this.upload}\n isDone={isDone}\n />\n </div>\n )}\n </TooltipProvider>\n </Internationalize>\n );\n }\n}\n\nexport default makeResponsive(ContentUploader);\nexport { ContentUploader as ContentUploaderComponent, CHUNKED_UPLOAD_MIN_SIZE_BYTES };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContentUploader.js","names":["React","Component","classNames","cloneDeep","getProp","noop","uniqueid","TooltipProvider","DroppableContent","Footer","UploadsManager","API","Browser","Internationalize","makeResponsive","ThemingStyles","FolderUpload","getTypedFileId","getTypedFolderId","getDataTransferItemId","getFile","getFileAPIOptions","getFileFromDataTransferItem","getFileId","getDataTransferItemAPIOptions","getPackageFileFromDataTransferItem","isDataTransferItemAFolder","isDataTransferItemAPackage","isMultiputSupported","DEFAULT_ROOT","CLIENT_NAME_CONTENT_UPLOADER","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","ERROR_CODE_ITEM_NAME_IN_USE","ERROR_CODE_UPLOAD_FILE_LIMIT","STATUS_COMPLETE","STATUS_ERROR","STATUS_IN_PROGRESS","STATUS_PENDING","STATUS_STAGED","VIEW_ERROR","VIEW_UPLOAD_EMPTY","VIEW_UPLOAD_IN_PROGRESS","VIEW_UPLOAD_SUCCESS","CHUNKED_UPLOAD_MIN_SIZE_BYTES","FILE_LIMIT_DEFAULT","HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT","EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD","UPLOAD_CONCURRENCY","ContentUploader","constructor","props","_defineProperty","apiHost","clientName","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","uploadHost","files","rootFolderId","Array","from","filter","file","itemIdsRef","current","items","item","itemUpdateCallback","isRelativePathIgnored","isPrepopulateFilesEnabled","onBeforeUpload","length","newFiles","getNewFiles","newItemIds","forEach","clearTimeout","resetItemsTimeout","firstFile","newItemIdsState","_objectSpread","setState","itemIds","webkitRelativePath","addFilesWithRelativePathToQueue","addFilesWithoutRelativePathToQueue","upload","droppedItems","addDataTransferItemsToUploadQueue","addFilesToUploadQueue","dataTransferItems","isFolderUploadEnabled","folderItems","fileItems","packageItems","isDirectory","isSafari","push","addFileDataTransferItemsToUploadQueue","addPackageDataTransferItemsToUploadQueue","addFolderDataTransferItemsToUploadQueue","Promise","all","map","packageFiles","packageFile","newItems","getNewDataTransferItems","fileAPIOptions","folderId","folderUploads","folderUpload","getFolderUploadAPI","buildFolderTreeFromDataTransferItem","api","extension","isFolder","name","folder","options","progress","size","status","addToQueue","uploadBaseAPIOptions","getBaseAPIOptions","apiOptions","uploadFile","uploadAPIOptions","substr","lastIndexOf","getUploadAPI","uploadItem","fileLimit","useUploadsManager","isUploadsManagerExpanded","state","updatedItems","prevItemsNum","itemsRef","totalNumOfItems","concat","slice","errorCode","isAutoExpanded","expandUploadsManager","updateViewAndCollection","view","onCancel","cancel","itemIndex","indexOf","minimizeUploadsManager","entries","onUpload","error","boxFile","checkClearUploadItems","onError","index","findIndex","singleItem","errorData","event","total","Math","min","round","loaded","onProgress","chunked","isResumableUploadsEnabled","onClickCancel","onClickResume","onClickRetry","isChunkedUpload","isResumable","sessionId","removeFileFromUploadQueue","code","bytesUploadedOnLastResume","totalUploadedBytes","resumeFile","resetFile","onClick","onMinimize","resetUploadManagerExpandState","setTimeout","resetUploadsManagerItemsWhenUploadsComplete","id","createRef","componentDidMount","rootElement","document","getElementById","appElement","componentWillUnmount","componentDidUpdate","hasFiles","isArray","hasItems","hasUploads","addFilesWithOptionsToUploadQueueAndStartUpload","createAPIFactory","fileId","itemFolderId","itemFileId","buildFolderTreeFromWebkitRelativePath","addFolderToUploadQueue","isUploadFallbackLogicEnabled","factory","chunkedUploadAPI","getChunkedUploadAPI","console","warn","plainUploadAPI","getPlainUploadAPI","overwrite","numItemsUploading","item_t","uploadOptions","errorCallback","handleUploadError","progressCallback","handleUploadProgress","successCallback","handleUploadSuccess","onResume","resumeOptions","resume","callback","isPartialUploadEnabled","onComplete","someUploadIsInProgress","some","someUploadHasFailed","allItemsArePending","noFileIsPendingOrInProgress","every","areAllItemsFinished","uploadItemsStatus","filesToBeUploaded","render","className","isDraggingItemsToUploadsManager","isTouch","language","measureRef","messages","onClose","onUpgradeCTAClick","theme","isEmpty","isVisible","isLoading","isDone","styleClassName","be","createElement","ref","selector","isDragging","isExpanded","onItemActionClick","onRemoveActionClick","onUploadsManagerActionClick","clickAllWithStatus","toggleUploadsManager","addDroppedItemsToUploadQueue","addFiles","allowedTypes","ContentUploaderComponent"],"sources":["../../../src/elements/content-uploader/ContentUploader.tsx"],"sourcesContent":["import 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueid from 'lodash/uniqueId';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport DroppableContent from './DroppableContent';\nimport Footer from './Footer';\nimport UploadsManager from './UploadsManager';\nimport API from '../../api';\nimport Browser from '../../utils/Browser';\nimport Internationalize from '../common/Internationalize';\nimport makeResponsive from '../common/makeResponsive';\nimport ThemingStyles, { Theme } from '../common/theming';\nimport FolderUpload from '../../api/uploads/FolderUpload';\nimport { getTypedFileId, getTypedFolderId } from '../../utils/file';\nimport {\n getDataTransferItemId,\n getFile,\n getFileAPIOptions,\n getFileFromDataTransferItem,\n getFileId,\n getDataTransferItemAPIOptions,\n getPackageFileFromDataTransferItem,\n isDataTransferItemAFolder,\n isDataTransferItemAPackage,\n isMultiputSupported,\n} from '../../utils/uploads';\nimport {\n DEFAULT_ROOT,\n CLIENT_NAME_CONTENT_UPLOADER,\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_UPLOAD,\n ERROR_CODE_ITEM_NAME_IN_USE,\n ERROR_CODE_UPLOAD_FILE_LIMIT,\n STATUS_COMPLETE,\n STATUS_ERROR,\n STATUS_IN_PROGRESS,\n STATUS_PENDING,\n STATUS_STAGED,\n VIEW_ERROR,\n VIEW_UPLOAD_EMPTY,\n VIEW_UPLOAD_IN_PROGRESS,\n VIEW_UPLOAD_SUCCESS,\n} from '../../constants';\nimport type { BoxItem, StringMap, Token, View } from '../../common/types/core';\nimport type {\n UploadDataTransferItemWithAPIOptions,\n UploadFile,\n UploadFileWithAPIOptions,\n UploadItem,\n UploadItemAPIOptions,\n UploadStatus,\n} from '../../common/types/upload';\nimport '../common/fonts.scss';\nimport '../common/base.scss';\n\nexport interface ContentUploaderProps {\n apiHost: string;\n chunked: boolean;\n className: string;\n clientName: string;\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>;\n fileLimit: number;\n files?: Array<UploadFileWithAPIOptions | File>;\n isDraggingItemsToUploadsManager?: boolean;\n isFolderUploadEnabled: boolean;\n isLarge: boolean;\n isPartialUploadEnabled: boolean;\n isPrepopulateFilesEnabled?: boolean;\n isResumableUploadsEnabled: boolean;\n isSmall: boolean;\n isTouch: boolean;\n isUploadFallbackLogicEnabled: boolean;\n language?: string;\n measureRef: (ref: Element | null) => void;\n messages?: StringMap;\n onBeforeUpload: (file: Array<UploadFileWithAPIOptions | File>) => void;\n onCancel: (items?: UploadItem[]) => void;\n onClickCancel: (item: UploadItem) => void;\n onClickResume: (item: UploadItem) => void;\n onClickRetry: (item: UploadItem) => void;\n onClose: () => void;\n onComplete: (items: UploadItem[]) => void;\n onError: Function;\n onMinimize?: () => void;\n onProgress: (item: UploadItem) => void;\n onResume: (item: UploadItem) => void;\n onUpgradeCTAClick?: () => void;\n onUpload: (item?: UploadItem | BoxItem) => void;\n overwrite: boolean | 'error';\n requestInterceptor?: (response: AxiosResponse) => void;\n responseInterceptor?: (config: AxiosRequestConfig) => void;\n rootFolderId: string;\n sharedLink?: string;\n sharedLinkPassword?: string;\n theme?: Theme;\n token?: Token;\n uploadHost: string;\n useUploadsManager?: boolean;\n}\n\ntype State = {\n errorCode?: string;\n isUploadsManagerExpanded: boolean;\n itemIds: Object;\n items: UploadItem[];\n view: View;\n};\n\nconst CHUNKED_UPLOAD_MIN_SIZE_BYTES = 104857600; // 100MB\nconst FILE_LIMIT_DEFAULT = 100; // Upload at most 100 files at once by default\nconst HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT = 8000;\nconst EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD = 5;\nconst UPLOAD_CONCURRENCY = 6;\n\nclass ContentUploader extends Component<ContentUploaderProps, State> {\n id: string;\n\n props: ContentUploaderProps;\n\n state: State;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n resetItemsTimeout: ReturnType<typeof setTimeout>;\n\n isAutoExpanded: boolean = false;\n\n itemsRef: React.MutableRefObject<UploadItem[]>;\n\n itemIdsRef: React.MutableRefObject<Object>;\n\n static defaultProps = {\n apiHost: DEFAULT_HOSTNAME_API,\n chunked: true,\n className: '',\n clientName: CLIENT_NAME_CONTENT_UPLOADER,\n dataTransferItems: [],\n files: [],\n fileLimit: FILE_LIMIT_DEFAULT,\n isDraggingItemsToUploadsManager: false,\n isFolderUploadEnabled: false,\n isPartialUploadEnabled: false,\n isPrepopulateFilesEnabled: false,\n isResumableUploadsEnabled: false,\n isUploadFallbackLogicEnabled: false,\n onBeforeUpload: noop,\n onCancel: noop,\n onClickCancel: noop,\n onClickResume: noop,\n onClickRetry: noop,\n onClose: noop,\n onComplete: noop,\n onError: noop,\n onMinimize: noop,\n onProgress: noop,\n onResume: noop,\n onUpload: noop,\n overwrite: true,\n rootFolderId: DEFAULT_ROOT,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n useUploadsManager: false,\n };\n\n /**\n * [constructor]\n *\n * @return {ContentUploader}\n */\n constructor(props: ContentUploaderProps) {\n super(props);\n\n const { rootFolderId, token, useUploadsManager } = props;\n this.state = {\n view: (rootFolderId && token) || useUploadsManager ? VIEW_UPLOAD_EMPTY : VIEW_ERROR,\n items: [],\n errorCode: '',\n itemIds: {},\n isUploadsManagerExpanded: false,\n };\n this.id = uniqueid('bcu_');\n\n this.itemsRef = React.createRef();\n this.itemsRef.current = [];\n\n this.itemIdsRef = React.createRef();\n this.itemIdsRef.current = {};\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.rootElement = document.getElementById(this.id);\n this.appElement = this.rootElement;\n const { files, isPrepopulateFilesEnabled } = this.props;\n // isPrepopulateFilesEnabled is a prop used to pre-populate files without clicking upload button.\n if (isPrepopulateFilesEnabled && files && files.length > 0) {\n this.addFilesToUploadQueue(files, this.upload);\n }\n }\n\n /**\n * Cancels pending uploads\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.cancel();\n }\n\n /**\n * Adds new items to the queue when files prop gets updated in window view\n *\n * @return {void}\n */\n componentDidUpdate() {\n const { files, dataTransferItems, useUploadsManager } = this.props;\n\n const hasFiles = Array.isArray(files) && files.length > 0;\n const hasItems = Array.isArray(dataTransferItems) && dataTransferItems.length > 0;\n const hasUploads = hasFiles || hasItems;\n\n if (!useUploadsManager || !hasUploads) {\n return;\n }\n\n // TODO: this gets called unnecessarily (upon each render regardless of the queue not changing)\n this.addFilesWithOptionsToUploadQueueAndStartUpload(files, dataTransferItems);\n }\n\n /**\n * Create and return new instance of API creator\n *\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {API}\n */\n createAPIFactory(uploadAPIOptions?: UploadItemAPIOptions): API {\n const { rootFolderId } = this.props;\n const folderId = getProp(uploadAPIOptions, 'folderId') || rootFolderId;\n const fileId = getProp(uploadAPIOptions, 'fileId');\n const itemFolderId = getTypedFolderId(folderId);\n const itemFileId = fileId ? getTypedFileId(fileId) : null;\n\n return new API({\n ...this.getBaseAPIOptions(),\n id: itemFileId || itemFolderId,\n ...uploadAPIOptions,\n });\n }\n\n /**\n * Return base API options from props\n *\n * @private\n * @returns {Object}\n */\n getBaseAPIOptions = (): Object => {\n const {\n apiHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n } = this.props;\n\n return {\n apiHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n uploadHost,\n };\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewFiles = (files: Array<UploadFileWithAPIOptions | File>): Array<UploadFileWithAPIOptions | File> => {\n const { rootFolderId } = this.props;\n\n return Array.from(files).filter(file => !this.itemIdsRef.current[getFileId(file, rootFolderId)]);\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewDataTransferItems = (\n items: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): Array<DataTransferItem | UploadDataTransferItemWithAPIOptions> => {\n const { rootFolderId } = this.props;\n\n return Array.from(items).filter(item => !this.itemIdsRef.current[getDataTransferItemId(item, rootFolderId)]);\n };\n\n /**\n * Converts File API to upload items and adds to upload queue.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | UploadFile>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @param {boolean} [isRelativePathIgnored] - if true webkitRelativePath property is ignored\n * @return {void}\n */\n addFilesToUploadQueue = (\n files: Array<UploadFileWithAPIOptions | UploadFile>,\n itemUpdateCallback?: Function,\n isRelativePathIgnored: boolean = false,\n ) => {\n const { isPrepopulateFilesEnabled, onBeforeUpload, rootFolderId } = this.props;\n\n if (!files || files.length === 0) {\n return;\n }\n\n const newFiles = this.getNewFiles(files);\n if (newFiles.length === 0) {\n return;\n }\n\n const newItemIds = {};\n newFiles.forEach(file => {\n newItemIds[getFileId(file, rootFolderId)] = true;\n });\n\n clearTimeout(this.resetItemsTimeout);\n\n const firstFile = getFile(newFiles[0]);\n\n const newItemIdsState = { ...this.itemIdsRef.current, ...newItemIds };\n\n this.itemIdsRef.current = newItemIdsState;\n\n this.setState({ itemIds: newItemIdsState }, () => {\n onBeforeUpload(newFiles);\n if (firstFile.webkitRelativePath && !isRelativePathIgnored) {\n // webkitRelativePath should be ignored when the upload destination folder is known\n this.addFilesWithRelativePathToQueue(newFiles, itemUpdateCallback);\n } else {\n this.addFilesWithoutRelativePathToQueue(\n newFiles,\n isPrepopulateFilesEnabled ? this.upload : itemUpdateCallback,\n );\n }\n });\n };\n\n /**\n * Add dropped items to the upload queue\n *\n * @private\n * @param {DataTransfer} droppedItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addDroppedItemsToUploadQueue = (droppedItems: DataTransfer, itemUpdateCallback: Function): void => {\n if (droppedItems.items) {\n this.addDataTransferItemsToUploadQueue(droppedItems.items, itemUpdateCallback);\n } else {\n this.addFilesToUploadQueue(Array.from(droppedItems.files), itemUpdateCallback);\n }\n };\n\n /**\n * Add dataTransferItems to the upload queue\n *\n * @private\n * @param {DataTransferItemList} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addDataTransferItemsToUploadQueue = (\n dataTransferItems: DataTransferItemList | Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const { isFolderUploadEnabled } = this.props;\n\n if (!dataTransferItems || dataTransferItems.length === 0) {\n return;\n }\n\n const folderItems = [];\n const fileItems = [];\n const packageItems = [];\n\n Array.from(dataTransferItems).forEach(item => {\n const isDirectory = isDataTransferItemAFolder(item);\n if (Browser.isSafari() && isDataTransferItemAPackage(item)) {\n packageItems.push(item);\n } else if (isDirectory && isFolderUploadEnabled) {\n folderItems.push(item);\n } else if (!isDirectory) {\n fileItems.push(item);\n }\n });\n\n this.addFileDataTransferItemsToUploadQueue(fileItems, itemUpdateCallback);\n this.addPackageDataTransferItemsToUploadQueue(packageItems, itemUpdateCallback);\n this.addFolderDataTransferItemsToUploadQueue(folderItems, itemUpdateCallback);\n };\n\n /**\n * Add dataTransferItem of file type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<void>}\n */\n addFileDataTransferItemsToUploadQueue = async (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): Promise<void> => {\n const files = await Promise.all(dataTransferItems.map(item => getFileFromDataTransferItem(item)));\n this.addFilesToUploadQueue(\n files.filter(file => file),\n itemUpdateCallback,\n );\n };\n\n /**\n * Add dataTransferItem of package type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addPackageDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const packageFiles = dataTransferItems.map(item => getPackageFileFromDataTransferItem(item));\n this.addFilesToUploadQueue(\n packageFiles.filter(packageFile => packageFile),\n itemUpdateCallback,\n );\n };\n\n /**\n * Add dataTransferItem of folder type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addFolderDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const { rootFolderId } = this.props;\n\n if (dataTransferItems.length === 0) {\n return;\n }\n\n const newItems = this.getNewDataTransferItems(dataTransferItems);\n newItems.forEach(item => {\n this.itemIdsRef.current[getDataTransferItemId(item, rootFolderId)] = true;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n const fileAPIOptions = getDataTransferItemAPIOptions(newItems[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n const folderUploads = newItems.map(item => {\n const folderUpload = this.getFolderUploadAPI(folderId);\n folderUpload.buildFolderTreeFromDataTransferItem(item);\n return {\n api: folderUpload,\n extension: '',\n isFolder: true,\n name: folderUpload.folder.name,\n options: fileAPIOptions,\n progress: 0,\n size: 1,\n status: STATUS_PENDING,\n };\n });\n\n this.addToQueue(folderUploads, itemUpdateCallback);\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithRelativePathToQueue(files: Array<UploadFileWithAPIOptions | File>, itemUpdateCallback: Function) {\n if (files.length === 0) {\n return;\n }\n\n const { rootFolderId } = this.props;\n const fileAPIOptions = getFileAPIOptions(files[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n const folderUpload = this.getFolderUploadAPI(folderId);\n\n // Only 1 folder tree can be built with files having webkitRelativePath properties\n folderUpload.buildFolderTreeFromWebkitRelativePath(files);\n\n this.addFolderToUploadQueue(folderUpload, itemUpdateCallback, fileAPIOptions);\n }\n\n /**\n * Get folder upload API instance\n *\n * @private\n * @param {string} folderId\n * @return {FolderUpload}\n */\n getFolderUploadAPI = (folderId: string): FolderUpload => {\n const uploadBaseAPIOptions = this.getBaseAPIOptions();\n\n return new FolderUpload(this.addFilesToUploadQueue, folderId, this.addToQueue, uploadBaseAPIOptions);\n };\n\n /**\n * Add folder to upload queue\n *\n * @private\n * @param {FolderUpload} folderUpload\n * @param {Function} itemUpdateCallback\n * @param {Object} apiOptions\n * @return {void}\n */\n addFolderToUploadQueue = (folderUpload: FolderUpload, itemUpdateCallback: Function, apiOptions: Object): void => {\n this.addToQueue(\n [\n // $FlowFixMe no file property\n {\n api: folderUpload,\n extension: '',\n isFolder: true,\n name: folderUpload.folder.name,\n options: apiOptions,\n progress: 0,\n size: 1,\n status: STATUS_PENDING,\n },\n ],\n itemUpdateCallback,\n );\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath missing or ignored.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithoutRelativePathToQueue = (\n files: Array<UploadFileWithAPIOptions | File>,\n itemUpdateCallback: Function,\n ) => {\n const { rootFolderId } = this.props;\n\n // Convert files from the file API to upload items\n const newItems = files.map(file => {\n const uploadFile = getFile(file);\n const uploadAPIOptions = getFileAPIOptions(file);\n const { name, size } = uploadFile;\n\n // Extract extension or use empty string if file has no extension\n let extension = name.substr(name.lastIndexOf('.') + 1);\n if (extension.length === name.length) {\n extension = '';\n }\n\n const api = this.getUploadAPI(uploadFile, uploadAPIOptions);\n const uploadItem: UploadItem = {\n api,\n extension,\n file: uploadFile,\n name,\n progress: 0,\n size,\n status: STATUS_PENDING,\n };\n\n if (uploadAPIOptions) {\n uploadItem.options = uploadAPIOptions;\n }\n\n this.itemIdsRef.current[getFileId(uploadItem, rootFolderId)] = true;\n\n return uploadItem;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n this.setState({\n itemIds: this.itemIdsRef.current,\n });\n this.addToQueue(newItems, itemUpdateCallback);\n };\n\n /**\n * Add new items to the upload queue\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} newItems - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addToQueue = (newItems: UploadItem[], itemUpdateCallback: Function) => {\n const { fileLimit, useUploadsManager } = this.props;\n const { isUploadsManagerExpanded } = this.state;\n\n let updatedItems = [];\n const prevItemsNum = this.itemsRef.current.length;\n const totalNumOfItems = prevItemsNum + newItems.length;\n\n // Don't add more than fileLimit # of items\n if (totalNumOfItems > fileLimit) {\n updatedItems = this.itemsRef.current.concat(newItems.slice(0, fileLimit - prevItemsNum));\n this.setState({\n errorCode: ERROR_CODE_UPLOAD_FILE_LIMIT,\n });\n } else {\n updatedItems = this.itemsRef.current.concat(newItems);\n this.setState({ errorCode: '' });\n\n // If the number of items being uploaded passes the threshold, expand the upload manager\n if (\n prevItemsNum < EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n totalNumOfItems >= EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n useUploadsManager &&\n !isUploadsManagerExpanded\n ) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n }\n\n this.updateViewAndCollection(updatedItems, () => {\n if (itemUpdateCallback) {\n itemUpdateCallback();\n }\n\n const { view } = this.state;\n // Automatically start upload if other files are being uploaded\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Returns a new API instance for the given file.\n *\n * @private\n * @param {File} file - File to get a new API instance for\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {UploadAPI} - Instance of Upload API\n */\n getUploadAPI(file: File, uploadAPIOptions?: UploadItemAPIOptions) {\n const { chunked, isResumableUploadsEnabled, isUploadFallbackLogicEnabled } = this.props;\n const { size } = file;\n const factory = this.createAPIFactory(uploadAPIOptions);\n\n if (chunked && size > CHUNKED_UPLOAD_MIN_SIZE_BYTES) {\n if (isMultiputSupported()) {\n const chunkedUploadAPI = factory.getChunkedUploadAPI();\n if (isResumableUploadsEnabled) {\n chunkedUploadAPI.isResumableUploadsEnabled = true;\n }\n if (isUploadFallbackLogicEnabled) {\n chunkedUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n return chunkedUploadAPI;\n }\n\n /* eslint-disable no-console */\n console.warn(\n 'Chunked uploading is enabled, but not supported by your browser. You may need to enable HTTPS.',\n );\n /* eslint-enable no-console */\n }\n\n const plainUploadAPI = factory.getPlainUploadAPI();\n if (isUploadFallbackLogicEnabled) {\n plainUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n\n return plainUploadAPI;\n }\n\n /**\n * Removes an item from the upload queue. Cancels upload if in progress.\n *\n * @param {UploadItem} item - Item to remove\n * @return {void}\n */\n removeFileFromUploadQueue = (item: UploadItem) => {\n const { onCancel, useUploadsManager } = this.props;\n // Clear any error errorCode in footer\n this.setState({ errorCode: '' });\n\n const { api } = item;\n api.cancel();\n\n const itemIndex = this.itemsRef.current.indexOf(item);\n const updatedItems = this.itemsRef.current\n .slice(0, itemIndex)\n .concat(this.itemsRef.current.slice(itemIndex + 1));\n\n onCancel([item]);\n this.updateViewAndCollection(updatedItems, () => {\n // Minimize uploads manager if there are no more items\n if (useUploadsManager && !updatedItems.length) {\n this.minimizeUploadsManager();\n }\n\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Aborts uploads in progress and clears upload list.\n *\n * @private\n * @return {void}\n */\n cancel = () => {\n this.itemsRef.current.forEach(uploadItem => {\n const { api, status } = uploadItem;\n if (status === STATUS_IN_PROGRESS) {\n api.cancel();\n }\n });\n\n // Reset upload collection\n this.updateViewAndCollection([]);\n };\n\n /**\n * Uploads all items in the upload collection.\n *\n * @private\n * @return {void}\n */\n upload = () => {\n this.itemsRef.current.forEach(uploadItem => {\n if (uploadItem.status === STATUS_PENDING) {\n this.uploadFile(uploadItem);\n }\n });\n };\n\n /**\n * Helper to upload a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n uploadFile(item: UploadItem) {\n const { overwrite, rootFolderId } = this.props;\n const { api, file, options } = item;\n\n const numItemsUploading = this.itemsRef.current.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const uploadOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n api.upload(uploadOptions);\n\n this.updateViewAndCollection(updatedItems);\n }\n\n /**\n * Helper to resume uploading a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n resumeFile(item: UploadItem) {\n const { onResume, overwrite, rootFolderId } = this.props;\n const { api, file, options } = item;\n\n const numItemsUploading = this.itemsRef.current.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const resumeOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n sessionId: api && api.sessionId ? api.sessionId : null,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n delete item.error;\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n onResume(item);\n api.resume(resumeOptions);\n\n this.updateViewAndCollection(updatedItems);\n }\n\n /**\n * Helper to reset a file. Cancels any current upload and resets progress.\n *\n * @param {UploadItem} item - Upload item to reset\n * @return {void}\n */\n resetFile(item: UploadItem) {\n const { api, file, options } = item;\n if (api && typeof api.cancel === 'function') {\n api.cancel();\n }\n\n // Reset API, progress & status\n item.api = this.getUploadAPI(file, options);\n item.progress = 0;\n item.status = STATUS_PENDING;\n delete item.error;\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n this.updateViewAndCollection(updatedItems);\n }\n\n /**\n * Handles a successful upload.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to success event\n * @param {BoxItem[]} entries - Successfully uploaded Box File objects\n * @return {void}\n */\n handleUploadSuccess = (item: UploadItem, entries?: BoxItem[]) => {\n const { onUpload, useUploadsManager } = this.props;\n\n item.progress = 100;\n if (!item.error) {\n item.status = STATUS_COMPLETE;\n }\n\n // Cache Box File object of successfully uploaded item\n if (entries && entries.length === 1) {\n const [boxFile] = entries;\n item.boxFile = boxFile;\n }\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n // Broadcast that a file has been uploaded\n if (useUploadsManager) {\n onUpload(item);\n this.checkClearUploadItems();\n } else {\n onUpload(item.boxFile);\n }\n\n this.updateViewAndCollection(updatedItems, () => {\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n resetUploadManagerExpandState = () => {\n this.isAutoExpanded = false;\n this.setState({\n isUploadsManagerExpanded: false,\n });\n };\n\n /**\n * Updates view and internal upload collection with provided items.\n *\n * @private\n * @param {UploadItem[]} item - Items to update collection with\n * @param {Function} callback\n * @return {void}\n */\n updateViewAndCollection(items: UploadItem[], callback?: () => void) {\n const {\n isPartialUploadEnabled,\n isResumableUploadsEnabled,\n onComplete,\n useUploadsManager,\n }: ContentUploaderProps = this.props;\n const someUploadIsInProgress = items.some(uploadItem => uploadItem.status !== STATUS_COMPLETE);\n const someUploadHasFailed = items.some(uploadItem => uploadItem.status === STATUS_ERROR);\n const allItemsArePending = !items.some(uploadItem => uploadItem.status !== STATUS_PENDING);\n const noFileIsPendingOrInProgress = items.every(\n uploadItem => uploadItem.status !== STATUS_PENDING && uploadItem.status !== STATUS_IN_PROGRESS,\n );\n const areAllItemsFinished = items.every(\n uploadItem => uploadItem.status === STATUS_COMPLETE || uploadItem.status === STATUS_ERROR,\n );\n const uploadItemsStatus = isResumableUploadsEnabled ? areAllItemsFinished : noFileIsPendingOrInProgress;\n\n let view = '';\n if ((items && items.length === 0) || allItemsArePending) {\n view = VIEW_UPLOAD_EMPTY;\n } else if (isPartialUploadEnabled && areAllItemsFinished) {\n const filesToBeUploaded = items.filter(item => item.status === STATUS_COMPLETE);\n view = VIEW_UPLOAD_SUCCESS;\n\n if (!useUploadsManager) {\n onComplete(cloneDeep(filesToBeUploaded.map(item => item.boxFile)));\n // Reset item collection after successful upload\n items = [];\n }\n } else if (someUploadHasFailed && useUploadsManager) {\n view = VIEW_ERROR;\n } else if (someUploadIsInProgress) {\n view = VIEW_UPLOAD_IN_PROGRESS;\n } else {\n view = VIEW_UPLOAD_SUCCESS;\n\n if (!useUploadsManager) {\n onComplete(cloneDeep(items.map(item => item.boxFile)));\n // Reset item collection after successful upload\n items = [];\n }\n }\n\n if (uploadItemsStatus && useUploadsManager) {\n if (this.isAutoExpanded) {\n this.resetUploadManagerExpandState();\n } // Else manually expanded so don't close\n onComplete(items);\n }\n\n const state: Partial<State> = {\n items,\n view,\n };\n\n if (items.length === 0) {\n this.itemIdsRef.current = {};\n state.itemIds = {};\n state.errorCode = '';\n }\n\n this.itemsRef.current = items;\n\n this.setState(state as Pick<State, keyof State>, callback);\n }\n\n /**\n * Handles an upload error.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to error\n * @param {Error} error - Upload error\n * @return {void}\n */\n handleUploadError = (item: UploadItem, error: Error) => {\n const { onError, useUploadsManager } = this.props;\n const { file } = item;\n\n item.status = STATUS_ERROR;\n item.error = error;\n\n const newItems = [...this.itemsRef.current];\n const index = newItems.findIndex(singleItem => singleItem === item);\n if (index !== -1) {\n newItems[index] = item;\n }\n\n // Broadcast that there was an error uploading a file\n const errorData = useUploadsManager\n ? {\n item,\n error,\n }\n : {\n file,\n error,\n };\n\n onError(errorData);\n\n this.updateViewAndCollection(newItems, () => {\n if (useUploadsManager) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Handles an upload progress event.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to progress event\n * @param {ProgressEvent} event - Progress event\n * @return {void}\n */\n handleUploadProgress = (item: UploadItem, event: ProgressEvent) => {\n if (!event.total || item.status === STATUS_COMPLETE || item.status === STATUS_STAGED) {\n return;\n }\n\n item.progress = Math.min(Math.round((event.loaded / event.total) * 100), 100);\n item.status = item.progress === 100 ? STATUS_STAGED : STATUS_IN_PROGRESS;\n\n const { onProgress } = this.props;\n onProgress(item);\n\n const updatedItems = [...this.itemsRef.current];\n updatedItems[this.itemsRef.current.indexOf(item)] = item;\n\n this.updateViewAndCollection(updatedItems);\n };\n\n /**\n * Updates item based on its status.\n *\n * @private\n * @param {UploadItem} item - The upload item to update\n * @return {void}\n */\n onClick = (item: UploadItem) => {\n const { chunked, isResumableUploadsEnabled, onClickCancel, onClickResume, onClickRetry } = this.props;\n const { file, status, error } = item;\n const isChunkedUpload =\n chunked && !item.isFolder && file.size > CHUNKED_UPLOAD_MIN_SIZE_BYTES && isMultiputSupported();\n const isResumable = isResumableUploadsEnabled && isChunkedUpload && item.api.sessionId;\n\n switch (status) {\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n case STATUS_COMPLETE:\n case STATUS_PENDING:\n this.removeFileFromUploadQueue(item);\n onClickCancel(item);\n break;\n case STATUS_ERROR:\n if (error?.code === ERROR_CODE_ITEM_NAME_IN_USE) {\n this.removeFileFromUploadQueue(item);\n onClickCancel(item);\n } else if (isResumable) {\n item.bytesUploadedOnLastResume = item.api.totalUploadedBytes;\n this.resumeFile(item);\n onClickResume(item);\n } else {\n this.resetFile(item);\n this.uploadFile(item);\n onClickRetry(item);\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Click action button for all uploads in the Uploads Manager with the given status.\n *\n * @private\n * @param {UploadStatus} - the status that items should have for their action button to be clicked\n * @return {void}\n */\n clickAllWithStatus = (status?: UploadStatus) => {\n this.itemsRef.current.forEach(item => {\n if (!status || item.status === status) {\n this.onClick(item);\n }\n });\n };\n\n /**\n * Expands the upload manager\n *\n * @return {void}\n */\n expandUploadsManager = (): void => {\n const { useUploadsManager } = this.props;\n\n if (!useUploadsManager) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n this.setState({ isUploadsManagerExpanded: true });\n };\n\n /**\n * Minimizes the upload manager\n *\n * @return {void}\n */\n minimizeUploadsManager = (): void => {\n const { onMinimize, useUploadsManager } = this.props;\n\n if (!useUploadsManager || !onMinimize) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n onMinimize();\n this.resetUploadManagerExpandState();\n this.checkClearUploadItems();\n };\n\n /**\n * Checks if the upload items should be cleared after a timeout\n *\n * @return {void}\n */\n checkClearUploadItems = () => {\n this.resetItemsTimeout = setTimeout(\n this.resetUploadsManagerItemsWhenUploadsComplete,\n HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT,\n );\n };\n\n /**\n * Toggles the upload manager\n *\n * @return {void}\n */\n toggleUploadsManager = (): void => {\n const { isUploadsManagerExpanded } = this.state;\n\n if (isUploadsManagerExpanded) {\n this.minimizeUploadsManager();\n } else {\n this.expandUploadsManager();\n }\n };\n\n /**\n * Empties the items queue\n *\n * @return {void}\n */\n resetUploadsManagerItemsWhenUploadsComplete = (): void => {\n const { onCancel, useUploadsManager } = this.props;\n const { isUploadsManagerExpanded, view } = this.state;\n\n // Do not reset items when upload manger is expanded or there're uploads in progress\n if (\n (isUploadsManagerExpanded && useUploadsManager && !!this.itemsRef.current.length) ||\n view === VIEW_UPLOAD_IN_PROGRESS\n ) {\n return;\n }\n\n onCancel(this.itemsRef.current);\n\n this.itemsRef.current = [];\n this.itemIdsRef.current = {};\n\n this.setState({\n items: [],\n itemIds: {},\n });\n };\n\n /**\n * Adds file to the upload queue and starts upload immediately\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @return {void}\n */\n addFilesWithOptionsToUploadQueueAndStartUpload = (\n files?: Array<UploadFileWithAPIOptions | File>,\n dataTransferItems?: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): void => {\n this.addFilesToUploadQueue(files, this.upload);\n this.addDataTransferItemsToUploadQueue(dataTransferItems, this.upload);\n };\n\n /**\n * Renders the content uploader\n *\n * @inheritdoc\n * @return {Component}\n */\n render() {\n const {\n className,\n fileLimit,\n isDraggingItemsToUploadsManager = false,\n isFolderUploadEnabled,\n isResumableUploadsEnabled,\n isTouch,\n language,\n measureRef,\n messages,\n onClose,\n onUpgradeCTAClick,\n theme,\n useUploadsManager,\n }: ContentUploaderProps = this.props;\n const { view, items, errorCode, isUploadsManagerExpanded }: State = this.state;\n const isEmpty = items.length === 0;\n const isVisible = !isEmpty || !!isDraggingItemsToUploadsManager;\n\n const hasFiles = items.length !== 0;\n const isLoading = items.some(item => item.status === STATUS_IN_PROGRESS);\n const isDone = items.every(item => item.status === STATUS_COMPLETE || item.status === STATUS_STAGED);\n\n const styleClassName = classNames('bcu', className, {\n 'be-app-element': !useUploadsManager,\n be: !useUploadsManager,\n });\n\n return (\n <Internationalize language={language} messages={messages}>\n <TooltipProvider>\n {useUploadsManager ? (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <ThemingStyles selector={`#${this.id}`} theme={theme} />\n <UploadsManager\n isDragging={isDraggingItemsToUploadsManager}\n isExpanded={isUploadsManagerExpanded}\n isResumableUploadsEnabled={isResumableUploadsEnabled}\n isVisible={isVisible}\n items={items}\n onItemActionClick={this.onClick}\n onRemoveActionClick={this.removeFileFromUploadQueue}\n onUpgradeCTAClick={onUpgradeCTAClick}\n onUploadsManagerActionClick={this.clickAllWithStatus}\n toggleUploadsManager={this.toggleUploadsManager}\n view={view}\n />\n </div>\n ) : (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <ThemingStyles selector={`#${this.id}`} theme={theme} />\n <DroppableContent\n addDataTransferItemsToUploadQueue={this.addDroppedItemsToUploadQueue}\n addFiles={this.addFilesToUploadQueue}\n allowedTypes={['Files']}\n isFolderUploadEnabled={isFolderUploadEnabled}\n isTouch={isTouch}\n items={items}\n onClick={this.onClick}\n view={view}\n />\n <Footer\n errorCode={errorCode}\n fileLimit={fileLimit}\n hasFiles={hasFiles}\n isLoading={isLoading}\n onCancel={this.cancel}\n onClose={onClose}\n onUpload={this.upload}\n isDone={isDone}\n />\n </div>\n )}\n </TooltipProvider>\n </Internationalize>\n );\n }\n}\n\nexport default makeResponsive(ContentUploader);\nexport { ContentUploader as ContentUploaderComponent, CHUNKED_UPLOAD_MIN_SIZE_BYTES };\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ import { Button, IconButton, LoadingIndicator, Tooltip } from '@box/blueprint-we
4
4
  import { ArrowCurveForward, Checkmark, XMark } from '@box/blueprint-web-assets/icons/Fill';
5
5
  import { Size5, SurfaceStatusSurfaceSuccess } from '@box/blueprint-web-assets/tokens/tokens';
6
6
  import IconInProgress from './IconInProgress';
7
- import { ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED, STATUS_COMPLETE, STATUS_ERROR, STATUS_IN_PROGRESS, STATUS_PENDING, STATUS_STAGED } from '../../constants';
7
+ import { ERROR_CODE_ITEM_NAME_IN_USE, ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED, STATUS_COMPLETE, STATUS_ERROR, STATUS_IN_PROGRESS, STATUS_PENDING, STATUS_STAGED } from '../../constants';
8
8
  import messages from '../common/messages';
9
9
  import './ItemAction.scss';
10
10
  const ItemAction = ({
@@ -43,8 +43,13 @@ const ItemAction = ({
43
43
  }
44
44
  break;
45
45
  case STATUS_ERROR:
46
- Icon = ArrowCurveForward;
47
- tooltip = isResumableUploadsEnabled ? messages.resume : messages.retry;
46
+ if (code === ERROR_CODE_ITEM_NAME_IN_USE) {
47
+ Icon = XMark;
48
+ tooltip = messages.uploadsCancelButtonTooltip;
49
+ } else {
50
+ Icon = ArrowCurveForward;
51
+ tooltip = isResumableUploadsEnabled ? messages.resume : messages.retry;
52
+ }
48
53
  break;
49
54
  case STATUS_IN_PROGRESS:
50
55
  case STATUS_STAGED:
@@ -1 +1 @@
1
- {"version":3,"file":"ItemAction.js","names":["React","useIntl","Button","IconButton","LoadingIndicator","Tooltip","ArrowCurveForward","Checkmark","XMark","Size5","SurfaceStatusSurfaceSuccess","IconInProgress","ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED","STATUS_COMPLETE","STATUS_ERROR","STATUS_IN_PROGRESS","STATUS_PENDING","STATUS_STAGED","messages","ItemAction","error","isFolder","isResumableUploadsEnabled","onClick","onUpgradeCTAClick","status","formatMessage","code","LoadingIndicatorIcon","forwardRef","createElement","loading","className","Icon","tooltip","complete","color","height","width","remove","resume","retry","uploadsCancelButtonTooltip","variant","uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta","isDisabled","tooltipText","content","disabled","icon"],"sources":["../../../src/elements/content-uploader/ItemAction.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefExoticComponent, RefAttributes, SVGProps } from 'react';\nimport { useIntl } from 'react-intl';\nimport { AxiosError } from 'axios';\nimport { Button, IconButton, LoadingIndicator, Tooltip } from '@box/blueprint-web';\nimport { ArrowCurveForward, Checkmark, XMark } from '@box/blueprint-web-assets/icons/Fill';\nimport { Size5, SurfaceStatusSurfaceSuccess } from '@box/blueprint-web-assets/tokens/tokens';\nimport IconInProgress from './IconInProgress';\n\nimport {\n ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED,\n STATUS_COMPLETE,\n STATUS_ERROR,\n STATUS_IN_PROGRESS,\n STATUS_PENDING,\n STATUS_STAGED,\n} from '../../constants';\n\nimport messages from '../common/messages';\n\nimport type { UploadStatus } from '../../common/types/upload';\n\nimport './ItemAction.scss';\n\nexport interface ItemActionProps {\n error?: Partial<AxiosError>;\n isFolder?: boolean;\n isResumableUploadsEnabled: boolean;\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n onUpgradeCTAClick?: () => void;\n status: UploadStatus;\n}\n\ntype IconComponent = ForwardRefExoticComponent<SVGProps<SVGSVGElement> & RefAttributes<SVGSVGElement>>;\n\nconst ItemAction = ({\n error,\n isFolder = false,\n isResumableUploadsEnabled,\n onClick,\n onUpgradeCTAClick,\n status,\n}: ItemActionProps) => {\n const { formatMessage } = useIntl();\n const { code } = error || {};\n\n const LoadingIndicatorIcon = React.forwardRef<SVGSVGElement>(() => (\n <LoadingIndicator aria-label={formatMessage(messages.loading)} className=\"bcu-ItemAction-loading\" />\n ));\n\n let Icon: IconComponent = XMark;\n let tooltip;\n\n if (isFolder && status !== STATUS_PENDING) {\n return null;\n }\n\n switch (status) {\n case STATUS_COMPLETE:\n Icon = React.forwardRef<SVGSVGElement>(() => (\n <Checkmark\n aria-label={formatMessage(messages.complete)}\n color={SurfaceStatusSurfaceSuccess}\n height={Size5}\n width={Size5}\n />\n ));\n if (!isResumableUploadsEnabled) {\n tooltip = messages.remove;\n }\n break;\n case STATUS_ERROR:\n Icon = ArrowCurveForward;\n tooltip = isResumableUploadsEnabled ? messages.resume : messages.retry;\n break;\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n if (isResumableUploadsEnabled) {\n Icon = LoadingIndicatorIcon;\n } else {\n Icon = IconInProgress as IconComponent;\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n case STATUS_PENDING:\n default:\n if (isResumableUploadsEnabled) {\n Icon = LoadingIndicatorIcon;\n } else {\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n }\n\n if (status === STATUS_ERROR && code === ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED && !!onUpgradeCTAClick) {\n return (\n <Button\n onClick={onUpgradeCTAClick}\n data-resin-target=\"large_version_error_inline_upgrade_cta\"\n variant=\"primary\"\n >\n {formatMessage(messages.uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta)}\n </Button>\n );\n }\n\n const isDisabled = status === STATUS_STAGED;\n const tooltipText = tooltip && formatMessage(tooltip);\n\n return (\n <div className=\"bcu-item-action\">\n {tooltip ? (\n <Tooltip content={tooltipText}>\n <IconButton aria-label={tooltipText} disabled={isDisabled} icon={Icon} onClick={onClick} />\n </Tooltip>\n ) : (\n <Icon />\n )}\n </div>\n );\n};\n\nexport default ItemAction;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ItemAction.js","names":["React","useIntl","Button","IconButton","LoadingIndicator","Tooltip","ArrowCurveForward","Checkmark","XMark","Size5","SurfaceStatusSurfaceSuccess","IconInProgress","ERROR_CODE_ITEM_NAME_IN_USE","ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED","STATUS_COMPLETE","STATUS_ERROR","STATUS_IN_PROGRESS","STATUS_PENDING","STATUS_STAGED","messages","ItemAction","error","isFolder","isResumableUploadsEnabled","onClick","onUpgradeCTAClick","status","formatMessage","code","LoadingIndicatorIcon","forwardRef","createElement","loading","className","Icon","tooltip","complete","color","height","width","remove","uploadsCancelButtonTooltip","resume","retry","variant","uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta","isDisabled","tooltipText","content","disabled","icon"],"sources":["../../../src/elements/content-uploader/ItemAction.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefExoticComponent, RefAttributes, SVGProps } from 'react';\nimport { useIntl } from 'react-intl';\nimport { AxiosError } from 'axios';\nimport { Button, IconButton, LoadingIndicator, Tooltip } from '@box/blueprint-web';\nimport { ArrowCurveForward, Checkmark, XMark } from '@box/blueprint-web-assets/icons/Fill';\nimport { Size5, SurfaceStatusSurfaceSuccess } from '@box/blueprint-web-assets/tokens/tokens';\nimport IconInProgress from './IconInProgress';\n\nimport {\n ERROR_CODE_ITEM_NAME_IN_USE,\n ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED,\n STATUS_COMPLETE,\n STATUS_ERROR,\n STATUS_IN_PROGRESS,\n STATUS_PENDING,\n STATUS_STAGED,\n} from '../../constants';\n\nimport messages from '../common/messages';\n\nimport type { UploadStatus } from '../../common/types/upload';\n\nimport './ItemAction.scss';\n\nexport interface ItemActionProps {\n error?: Partial<AxiosError>;\n isFolder?: boolean;\n isResumableUploadsEnabled: boolean;\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n onUpgradeCTAClick?: () => void;\n status: UploadStatus;\n}\n\ntype IconComponent = ForwardRefExoticComponent<SVGProps<SVGSVGElement> & RefAttributes<SVGSVGElement>>;\n\nconst ItemAction = ({\n error,\n isFolder = false,\n isResumableUploadsEnabled,\n onClick,\n onUpgradeCTAClick,\n status,\n}: ItemActionProps) => {\n const { formatMessage } = useIntl();\n const { code } = error || {};\n\n const LoadingIndicatorIcon = React.forwardRef<SVGSVGElement>(() => (\n <LoadingIndicator aria-label={formatMessage(messages.loading)} className=\"bcu-ItemAction-loading\" />\n ));\n\n let Icon: IconComponent = XMark;\n let tooltip;\n\n if (isFolder && status !== STATUS_PENDING) {\n return null;\n }\n\n switch (status) {\n case STATUS_COMPLETE:\n Icon = React.forwardRef<SVGSVGElement>(() => (\n <Checkmark\n aria-label={formatMessage(messages.complete)}\n color={SurfaceStatusSurfaceSuccess}\n height={Size5}\n width={Size5}\n />\n ));\n if (!isResumableUploadsEnabled) {\n tooltip = messages.remove;\n }\n break;\n case STATUS_ERROR:\n if (code === ERROR_CODE_ITEM_NAME_IN_USE) {\n Icon = XMark;\n tooltip = messages.uploadsCancelButtonTooltip;\n } else {\n Icon = ArrowCurveForward;\n tooltip = isResumableUploadsEnabled ? messages.resume : messages.retry;\n }\n break;\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n if (isResumableUploadsEnabled) {\n Icon = LoadingIndicatorIcon;\n } else {\n Icon = IconInProgress as IconComponent;\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n case STATUS_PENDING:\n default:\n if (isResumableUploadsEnabled) {\n Icon = LoadingIndicatorIcon;\n } else {\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n }\n\n if (status === STATUS_ERROR && code === ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED && !!onUpgradeCTAClick) {\n return (\n <Button\n onClick={onUpgradeCTAClick}\n data-resin-target=\"large_version_error_inline_upgrade_cta\"\n variant=\"primary\"\n >\n {formatMessage(messages.uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta)}\n </Button>\n );\n }\n\n const isDisabled = status === STATUS_STAGED;\n const tooltipText = tooltip && formatMessage(tooltip);\n\n return (\n <div className=\"bcu-item-action\">\n {tooltip ? (\n <Tooltip content={tooltipText}>\n <IconButton aria-label={tooltipText} disabled={isDisabled} icon={Icon} onClick={onClick} />\n </Tooltip>\n ) : (\n <Icon />\n )}\n </div>\n );\n};\n\nexport default ItemAction;\n"],"mappings":"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","ignoreList":[]}
@@ -40,7 +40,7 @@ export interface ContentUploaderProps {
40
40
  onResume: (item: UploadItem) => void;
41
41
  onUpgradeCTAClick?: () => void;
42
42
  onUpload: (item?: UploadItem | BoxItem) => void;
43
- overwrite: boolean;
43
+ overwrite: boolean | 'error';
44
44
  requestInterceptor?: (response: AxiosResponse) => void;
45
45
  responseInterceptor?: (config: AxiosRequestConfig) => void;
46
46
  rootFolderId: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-ui-elements",
3
- "version": "23.4.0-beta.23",
3
+ "version": "23.4.0-beta.24",
4
4
  "description": "Box UI Elements",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",