box-ui-elements 24.0.0-beta.3 → 24.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/openwith.js +1 -1
  3. package/dist/picker.js +1 -1
  4. package/dist/preview.js +1 -1
  5. package/dist/sharing.js +1 -1
  6. package/dist/sidebar.js +1 -1
  7. package/dist/uploader.js +1 -1
  8. package/es/elements/common/withBlueprintModernization.js +16 -0
  9. package/es/elements/common/withBlueprintModernization.js.map +1 -0
  10. package/es/elements/content-explorer/ContentExplorer.js +2 -1
  11. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  12. package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js +5 -0
  13. package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js.flow +6 -0
  14. package/es/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js.map +1 -1
  15. package/es/elements/content-picker/ContentPicker.js +4 -1
  16. package/es/elements/content-picker/ContentPicker.js.flow +4 -1
  17. package/es/elements/content-picker/ContentPicker.js.map +1 -1
  18. package/es/elements/content-picker/stories/tests/ContentPicker-visual.stories.js +5 -0
  19. package/es/elements/content-picker/stories/tests/ContentPicker-visual.stories.js.flow +6 -0
  20. package/es/elements/content-picker/stories/tests/ContentPicker-visual.stories.js.map +1 -1
  21. package/es/elements/content-preview/ContentPreview.js +3 -1
  22. package/es/elements/content-preview/ContentPreview.js.flow +3 -0
  23. package/es/elements/content-preview/ContentPreview.js.map +1 -1
  24. package/es/elements/content-preview/stories/tests/ContentPreview-visual.stories.js +5 -0
  25. package/es/elements/content-preview/stories/tests/ContentPreview-visual.stories.js.flow +7 -1
  26. package/es/elements/content-preview/stories/tests/ContentPreview-visual.stories.js.map +1 -1
  27. package/es/elements/content-sharing/ContentSharing.js +4 -1
  28. package/es/elements/content-sharing/ContentSharing.js.flow +4 -1
  29. package/es/elements/content-sharing/ContentSharing.js.map +1 -1
  30. package/es/elements/content-sidebar/ContentSidebar.js +3 -1
  31. package/es/elements/content-sidebar/ContentSidebar.js.flow +3 -0
  32. package/es/elements/content-sidebar/ContentSidebar.js.map +1 -1
  33. package/es/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.js +5 -0
  34. package/es/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.js.map +1 -1
  35. package/es/elements/content-uploader/ContentUploader.js +3 -1
  36. package/es/elements/content-uploader/ContentUploader.js.map +1 -1
  37. package/es/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js +5 -0
  38. package/es/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js.flow +6 -0
  39. package/es/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js.map +1 -1
  40. package/es/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.js +51 -0
  41. package/es/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.js.map +1 -0
  42. package/es/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.scss +29 -0
  43. package/es/features/classification/applied-by-ai-classification-reason/messages.js +13 -0
  44. package/es/features/classification/applied-by-ai-classification-reason/messages.js.map +1 -0
  45. package/es/features/classification/types.js +2 -0
  46. package/es/features/classification/types.js.map +1 -0
  47. package/es/src/elements/common/__tests__/withBlueprintModernization.test.d.ts +1 -0
  48. package/es/src/elements/common/withBlueprintModernization.d.ts +3 -0
  49. package/es/src/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.d.ts +5 -0
  50. package/es/src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.d.ts +6 -0
  51. package/es/src/features/classification/applied-by-ai-classification-reason/__tests__/AppliedByAiClassificationReason.test.d.ts +1 -0
  52. package/es/src/features/classification/applied-by-ai-classification-reason/messages.d.ts +13 -0
  53. package/es/src/features/classification/types.d.ts +6 -0
  54. package/i18n/bn-IN.js +4 -2
  55. package/i18n/bn-IN.properties +2 -2
  56. package/i18n/da-DK.js +4 -2
  57. package/i18n/da-DK.properties +2 -2
  58. package/i18n/de-DE.js +4 -2
  59. package/i18n/de-DE.properties +2 -2
  60. package/i18n/en-AU.js +2 -0
  61. package/i18n/en-CA.js +2 -0
  62. package/i18n/en-GB.js +2 -0
  63. package/i18n/en-US.js +2 -0
  64. package/i18n/en-US.properties +4 -0
  65. package/i18n/en-x-pseudo.js +2 -0
  66. package/i18n/es-419.js +4 -2
  67. package/i18n/es-419.properties +2 -2
  68. package/i18n/es-ES.js +4 -2
  69. package/i18n/es-ES.properties +2 -2
  70. package/i18n/fi-FI.js +4 -2
  71. package/i18n/fi-FI.properties +2 -2
  72. package/i18n/fr-CA.js +4 -2
  73. package/i18n/fr-CA.properties +2 -2
  74. package/i18n/fr-FR.js +4 -2
  75. package/i18n/fr-FR.properties +2 -2
  76. package/i18n/hi-IN.js +4 -2
  77. package/i18n/hi-IN.properties +2 -2
  78. package/i18n/it-IT.js +4 -2
  79. package/i18n/it-IT.properties +2 -2
  80. package/i18n/ja-JP.js +2 -0
  81. package/i18n/ko-KR.js +4 -2
  82. package/i18n/ko-KR.properties +2 -2
  83. package/i18n/nb-NO.js +4 -2
  84. package/i18n/nb-NO.properties +2 -2
  85. package/i18n/nl-NL.js +4 -2
  86. package/i18n/nl-NL.properties +2 -2
  87. package/i18n/pl-PL.js +4 -2
  88. package/i18n/pl-PL.properties +2 -2
  89. package/i18n/pt-BR.js +4 -2
  90. package/i18n/pt-BR.properties +2 -2
  91. package/i18n/ru-RU.js +4 -2
  92. package/i18n/ru-RU.properties +2 -2
  93. package/i18n/sv-SE.js +4 -2
  94. package/i18n/sv-SE.properties +2 -2
  95. package/i18n/tr-TR.js +4 -2
  96. package/i18n/tr-TR.properties +2 -2
  97. package/i18n/zh-CN.js +4 -2
  98. package/i18n/zh-CN.properties +2 -2
  99. package/i18n/zh-TW.js +4 -2
  100. package/i18n/zh-TW.properties +2 -2
  101. package/package.json +1 -1
  102. package/src/elements/common/__tests__/withBlueprintModernization.test.tsx +91 -0
  103. package/src/elements/common/withBlueprintModernization.tsx +24 -0
  104. package/src/elements/content-explorer/ContentExplorer.tsx +4 -1
  105. package/src/elements/content-explorer/stories/tests/ContentExplorer-visual.stories.js +6 -0
  106. package/src/elements/content-picker/ContentPicker.js +4 -1
  107. package/src/elements/content-picker/stories/tests/ContentPicker-visual.stories.js +6 -0
  108. package/src/elements/content-preview/ContentPreview.js +3 -0
  109. package/src/elements/content-preview/stories/tests/ContentPreview-visual.stories.js +7 -1
  110. package/src/elements/content-sharing/ContentSharing.js +4 -1
  111. package/src/elements/content-sidebar/ContentSidebar.js +3 -0
  112. package/src/elements/content-sidebar/stories/tests/ContentSidebar-visual.stories.tsx +6 -0
  113. package/src/elements/content-uploader/ContentUploader.tsx +3 -1
  114. package/src/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js +6 -0
  115. package/src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.scss +29 -0
  116. package/src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.tsx +55 -0
  117. package/src/features/classification/applied-by-ai-classification-reason/__tests__/AppliedByAiClassificationReason.test.tsx +105 -0
  118. package/src/features/classification/applied-by-ai-classification-reason/messages.ts +18 -0
  119. package/src/features/classification/types.ts +7 -0
@@ -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_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":[]}
1
+ {"version":3,"file":"ContentUploader.js","names":["React","Component","classNames","cloneDeep","flow","getProp","noop","uniqueid","TooltipProvider","DroppableContent","Footer","UploadsManager","API","Browser","Internationalize","makeResponsive","withBlueprintModernization","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 flow from 'lodash/flow';\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 { withBlueprintModernization } from '../common/withBlueprintModernization';\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 flow([makeResponsive, withBlueprintModernization])(ContentUploader);\nexport { ContentUploader as ContentUploaderComponent, CHUNKED_UPLOAD_MIN_SIZE_BYTES };\n"],"mappings":"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","ignoreList":[]}
@@ -25,6 +25,11 @@ export const basic = {
25
25
  expect(canvas.getByText('Upload')).toBeInTheDocument();
26
26
  }
27
27
  };
28
+ export const Modernization = {
29
+ args: {
30
+ enableModernizedComponents: true
31
+ }
32
+ };
28
33
  export const singleUpload = {
29
34
  play: async ({
30
35
  canvasElement
@@ -23,6 +23,12 @@ export const basic = {
23
23
  },
24
24
  };
25
25
 
26
+ export const Modernization = {
27
+ args: {
28
+ enableModernizedComponents: true,
29
+ },
30
+ };
31
+
26
32
  export const singleUpload = {
27
33
  play: async ({ canvasElement }) => {
28
34
  const canvas = within(canvasElement);
@@ -1 +1 @@
1
- {"version":3,"file":"ContentUploader-visual.stories.js","names":["expect","userEvent","waitFor","within","http","HttpResponse","ContentUploader","SLEEP_TIMEOUT","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","singleFile","File","type","multipleFiles","basic","play","canvasElement","canvas","getByText","toBeInTheDocument","singleUpload","dropzone","getByTestId","upload","singleUploadCancel","cancelButton","click","queryByText","not","singleUploadCancelFromRow","getByLabelText","successfulSingleUpload","uploadButton","timeout","multipleUpload","multipleUploadCancel","multipleUploadCancelFromRow","cancelButtons","getAllByLabelText","successfulMultipleUpload","title","component","args","features","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","options","json","post"],"sources":["../../../../../src/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js"],"sourcesContent":["import { expect, userEvent, waitFor, within } from 'storybook/test';\nimport { http, HttpResponse } from 'msw';\n\nimport ContentUploader from '../../ContentUploader';\nimport { SLEEP_TIMEOUT } from '../../../../utils/storybook';\nimport { DEFAULT_HOSTNAME_API, DEFAULT_HOSTNAME_UPLOAD } from '../../../../constants';\n\nconst singleFile = new File(['contents'], 'upload_file.txt', { type: 'text/plain' });\nconst multipleFiles = [\n new File(['contents'], 'upload_file_1.txt', { type: 'text/plain' }),\n new File(['contents'], 'upload_file_2.txt', { type: 'text/plain' }),\n new File(['contents'], 'upload_file_3.txt', { type: 'text/plain' }),\n];\n\nexport const basic = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n expect(canvas.getByText('Close')).toBeInTheDocument();\n expect(canvas.getByText('Cancel')).toBeInTheDocument();\n expect(canvas.getByText('Upload')).toBeInTheDocument();\n },\n};\n\nexport const singleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n expect(canvas.getByText('upload_file.txt')).toBeInTheDocument();\n },\n};\n\nexport const singleUploadCancel = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n const cancelButton = canvas.getByText('Cancel');\n await userEvent.click(cancelButton);\n\n expect(canvas.queryByText('upload_file.txt')).not.toBeInTheDocument();\n\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n },\n};\n\nexport const singleUploadCancelFromRow = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n const cancelButton = canvas.getByLabelText('Cancel this upload');\n await userEvent.click(cancelButton);\n\n expect(canvas.queryByText('upload_file.txt')).not.toBeInTheDocument();\n\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n },\n};\n\nexport const successfulSingleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n const uploadButton = canvas.getByText('Upload');\n await userEvent.click(uploadButton);\n\n await waitFor(\n () => {\n expect(canvas.getByText('Success! Your files have been uploaded.')).toBeInTheDocument();\n expect(canvas.getByText('Select More Files')).toBeInTheDocument();\n },\n {\n timeout: SLEEP_TIMEOUT,\n },\n );\n },\n};\n\nexport const multipleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n expect(canvas.getByText('upload_file_1.txt')).toBeInTheDocument();\n expect(canvas.getByText('upload_file_2.txt')).toBeInTheDocument();\n expect(canvas.getByText('upload_file_3.txt')).toBeInTheDocument();\n },\n};\n\nexport const multipleUploadCancel = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n const cancelButton = canvas.getByText('Cancel');\n await userEvent.click(cancelButton);\n\n expect(canvas.queryByText('upload_file_1.txt')).not.toBeInTheDocument();\n expect(canvas.queryByText('upload_file_2.txt')).not.toBeInTheDocument();\n expect(canvas.queryByText('upload_file_3.txt')).not.toBeInTheDocument();\n\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n },\n};\n\nexport const multipleUploadCancelFromRow = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n const cancelButtons = canvas.getAllByLabelText('Cancel this upload');\n await userEvent.click(cancelButtons[1]); // Cancel middle one\n\n expect(canvas.queryByText('upload_file_1.txt')).toBeInTheDocument();\n expect(canvas.queryByText('upload_file_2.txt')).not.toBeInTheDocument();\n expect(canvas.queryByText('upload_file_3.txt')).toBeInTheDocument();\n },\n};\n\nexport const successfulMultipleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n const uploadButton = canvas.getByText('Upload');\n await userEvent.click(uploadButton);\n\n await waitFor(\n () => {\n expect(canvas.getByText('Success! Your files have been uploaded.')).toBeInTheDocument();\n expect(canvas.getByText('Select More Files')).toBeInTheDocument();\n },\n {\n timeout: SLEEP_TIMEOUT,\n },\n );\n },\n};\n\nexport default {\n title: 'Elements/ContentUploader/tests/visual',\n component: ContentUploader,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.options(`${DEFAULT_HOSTNAME_API}/2.0/files/content`, () => {\n return HttpResponse.json({});\n }),\n http.post(`${DEFAULT_HOSTNAME_UPLOAD}/api/2.0/files/content`, () => {\n return HttpResponse.json({});\n }),\n ],\n },\n },\n};\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,gBAAgB;AACnE,SAASC,IAAI,EAAEC,YAAY,QAAQ,KAAK;AAExC,OAAOC,eAAe,MAAM,uBAAuB;AACnD,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,oBAAoB,EAAEC,uBAAuB,QAAQ,uBAAuB;AAErF,MAAMC,UAAU,GAAG,IAAIC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE;EAAEC,IAAI,EAAE;AAAa,CAAC,CAAC;AACpF,MAAMC,aAAa,GAAG,CAClB,IAAIF,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,mBAAmB,EAAE;EAAEC,IAAI,EAAE;AAAa,CAAC,CAAC,EACnE,IAAID,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,mBAAmB,EAAE;EAAEC,IAAI,EAAE;AAAa,CAAC,CAAC,EACnE,IAAID,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,mBAAmB,EAAE;EAAEC,IAAI,EAAE;AAAa,CAAC,CAAC,CACtE;AAED,OAAO,MAAME,KAAK,GAAG;EACjBC,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IACpChB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACnEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAClEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACrDnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACtDnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EAC1D;AACJ,CAAC;AAED,OAAO,MAAMC,YAAY,GAAG;EACxBL,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAEX,UAAU,CAAC;IAE5CV,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACnE;AACJ,CAAC;AAED,OAAO,MAAMK,kBAAkB,GAAG;EAC9BT,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAEX,UAAU,CAAC;IAE5C,MAAMe,YAAY,GAAGR,MAAM,CAACC,SAAS,CAAC,QAAQ,CAAC;IAC/C,MAAMjB,SAAS,CAACyB,KAAK,CAACD,YAAY,CAAC;IAEnCzB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAACC,GAAG,CAACT,iBAAiB,CAAC,CAAC;IAErEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACnEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACtE;AACJ,CAAC;AAED,OAAO,MAAMU,yBAAyB,GAAG;EACrCd,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAEX,UAAU,CAAC;IAE5C,MAAMe,YAAY,GAAGR,MAAM,CAACa,cAAc,CAAC,oBAAoB,CAAC;IAChE,MAAM7B,SAAS,CAACyB,KAAK,CAACD,YAAY,CAAC;IAEnCzB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAACC,GAAG,CAACT,iBAAiB,CAAC,CAAC;IAErEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACnEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACtE;AACJ,CAAC;AAED,OAAO,MAAMY,sBAAsB,GAAG;EAClChB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAEX,UAAU,CAAC;IAE5C,MAAMsB,YAAY,GAAGf,MAAM,CAACC,SAAS,CAAC,QAAQ,CAAC;IAC/C,MAAMjB,SAAS,CAACyB,KAAK,CAACM,YAAY,CAAC;IAEnC,MAAM9B,OAAO,CACT,MAAM;MACFF,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;MACvFnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACrE,CAAC,EACD;MACIc,OAAO,EAAE1B;IACb,CACJ,CAAC;EACL;AACJ,CAAC;AAED,OAAO,MAAM2B,cAAc,GAAG;EAC1BnB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAER,aAAa,CAAC;IAE/Cb,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACjEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACjEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACrE;AACJ,CAAC;AAED,OAAO,MAAMgB,oBAAoB,GAAG;EAChCpB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAER,aAAa,CAAC;IAE/C,MAAMY,YAAY,GAAGR,MAAM,CAACC,SAAS,CAAC,QAAQ,CAAC;IAC/C,MAAMjB,SAAS,CAACyB,KAAK,CAACD,YAAY,CAAC;IAEnCzB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACC,GAAG,CAACT,iBAAiB,CAAC,CAAC;IACvEnB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACC,GAAG,CAACT,iBAAiB,CAAC,CAAC;IACvEnB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACC,GAAG,CAACT,iBAAiB,CAAC,CAAC;IAEvEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACnEnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EACtE;AACJ,CAAC;AAED,OAAO,MAAMiB,2BAA2B,GAAG;EACvCrB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAER,aAAa,CAAC;IAE/C,MAAMwB,aAAa,GAAGpB,MAAM,CAACqB,iBAAiB,CAAC,oBAAoB,CAAC;IACpE,MAAMrC,SAAS,CAACyB,KAAK,CAACW,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;IAEzCrC,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACR,iBAAiB,CAAC,CAAC;IACnEnB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACC,GAAG,CAACT,iBAAiB,CAAC,CAAC;IACvEnB,MAAM,CAACiB,MAAM,CAACU,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACR,iBAAiB,CAAC,CAAC;EACvE;AACJ,CAAC;AAED,OAAO,MAAMoB,wBAAwB,GAAG;EACpCxB,IAAI,EAAE,MAAAA,CAAO;IAAEC;EAAc,CAAC,KAAK;IAC/B,MAAMC,MAAM,GAAGd,MAAM,CAACa,aAAa,CAAC;IAEpC,MAAMK,QAAQ,GAAGJ,MAAM,CAACK,WAAW,CAAC,cAAc,CAAC;IACnD,MAAMrB,SAAS,CAACsB,MAAM,CAACF,QAAQ,EAAER,aAAa,CAAC;IAE/C,MAAMmB,YAAY,GAAGf,MAAM,CAACC,SAAS,CAAC,QAAQ,CAAC;IAC/C,MAAMjB,SAAS,CAACyB,KAAK,CAACM,YAAY,CAAC;IAEnC,MAAM9B,OAAO,CACT,MAAM;MACFF,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;MACvFnB,MAAM,CAACiB,MAAM,CAACC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACrE,CAAC,EACD;MACIc,OAAO,EAAE1B;IACb,CACJ,CAAC;EACL;AACJ,CAAC;AAED,eAAe;EACXiC,KAAK,EAAE,uCAAuC;EAC9CC,SAAS,EAAEnC,eAAe;EAC1BoC,IAAI,EAAE;IACFC,QAAQ,EAAEC,MAAM,CAACC,aAAa;IAC9BC,YAAY,EAAEF,MAAM,CAACG,SAAS;IAC9BC,KAAK,EAAEJ,MAAM,CAACK;EAClB,CAAC;EACDC,UAAU,EAAE;IACRC,GAAG,EAAE;MACDC,QAAQ,EAAE,CACNhD,IAAI,CAACiD,OAAO,CAAC,GAAG7C,oBAAoB,oBAAoB,EAAE,MAAM;QAC5D,OAAOH,YAAY,CAACiD,IAAI,CAAC,CAAC,CAAC,CAAC;MAChC,CAAC,CAAC,EACFlD,IAAI,CAACmD,IAAI,CAAC,GAAG9C,uBAAuB,wBAAwB,EAAE,MAAM;QAChE,OAAOJ,YAAY,CAACiD,IAAI,CAAC,CAAC,CAAC,CAAC;MAChC,CAAC,CAAC;IAEV;EACJ;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ContentUploader-visual.stories.js","names":["expect","userEvent","waitFor","within","http","HttpResponse","ContentUploader","SLEEP_TIMEOUT","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_UPLOAD","singleFile","File","type","multipleFiles","basic","play","canvasElement","canvas","getByText","toBeInTheDocument","Modernization","args","enableModernizedComponents","singleUpload","dropzone","getByTestId","upload","singleUploadCancel","cancelButton","click","queryByText","not","singleUploadCancelFromRow","getByLabelText","successfulSingleUpload","uploadButton","timeout","multipleUpload","multipleUploadCancel","multipleUploadCancelFromRow","cancelButtons","getAllByLabelText","successfulMultipleUpload","title","component","features","global","FEATURE_FLAGS","rootFolderId","FOLDER_ID","token","TOKEN","parameters","msw","handlers","options","json","post"],"sources":["../../../../../src/elements/content-uploader/stories/tests/ContentUploader-visual.stories.js"],"sourcesContent":["import { expect, userEvent, waitFor, within } from 'storybook/test';\nimport { http, HttpResponse } from 'msw';\n\nimport ContentUploader from '../../ContentUploader';\nimport { SLEEP_TIMEOUT } from '../../../../utils/storybook';\nimport { DEFAULT_HOSTNAME_API, DEFAULT_HOSTNAME_UPLOAD } from '../../../../constants';\n\nconst singleFile = new File(['contents'], 'upload_file.txt', { type: 'text/plain' });\nconst multipleFiles = [\n new File(['contents'], 'upload_file_1.txt', { type: 'text/plain' }),\n new File(['contents'], 'upload_file_2.txt', { type: 'text/plain' }),\n new File(['contents'], 'upload_file_3.txt', { type: 'text/plain' }),\n];\n\nexport const basic = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n expect(canvas.getByText('Close')).toBeInTheDocument();\n expect(canvas.getByText('Cancel')).toBeInTheDocument();\n expect(canvas.getByText('Upload')).toBeInTheDocument();\n },\n};\n\nexport const Modernization = {\n args: {\n enableModernizedComponents: true,\n },\n};\n\nexport const singleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n expect(canvas.getByText('upload_file.txt')).toBeInTheDocument();\n },\n};\n\nexport const singleUploadCancel = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n const cancelButton = canvas.getByText('Cancel');\n await userEvent.click(cancelButton);\n\n expect(canvas.queryByText('upload_file.txt')).not.toBeInTheDocument();\n\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n },\n};\n\nexport const singleUploadCancelFromRow = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n const cancelButton = canvas.getByLabelText('Cancel this upload');\n await userEvent.click(cancelButton);\n\n expect(canvas.queryByText('upload_file.txt')).not.toBeInTheDocument();\n\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n },\n};\n\nexport const successfulSingleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, singleFile);\n\n const uploadButton = canvas.getByText('Upload');\n await userEvent.click(uploadButton);\n\n await waitFor(\n () => {\n expect(canvas.getByText('Success! Your files have been uploaded.')).toBeInTheDocument();\n expect(canvas.getByText('Select More Files')).toBeInTheDocument();\n },\n {\n timeout: SLEEP_TIMEOUT,\n },\n );\n },\n};\n\nexport const multipleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n expect(canvas.getByText('upload_file_1.txt')).toBeInTheDocument();\n expect(canvas.getByText('upload_file_2.txt')).toBeInTheDocument();\n expect(canvas.getByText('upload_file_3.txt')).toBeInTheDocument();\n },\n};\n\nexport const multipleUploadCancel = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n const cancelButton = canvas.getByText('Cancel');\n await userEvent.click(cancelButton);\n\n expect(canvas.queryByText('upload_file_1.txt')).not.toBeInTheDocument();\n expect(canvas.queryByText('upload_file_2.txt')).not.toBeInTheDocument();\n expect(canvas.queryByText('upload_file_3.txt')).not.toBeInTheDocument();\n\n expect(canvas.getByText('Drag and drop files')).toBeInTheDocument();\n expect(canvas.getByText('Browse your device')).toBeInTheDocument();\n },\n};\n\nexport const multipleUploadCancelFromRow = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n const cancelButtons = canvas.getAllByLabelText('Cancel this upload');\n await userEvent.click(cancelButtons[1]); // Cancel middle one\n\n expect(canvas.queryByText('upload_file_1.txt')).toBeInTheDocument();\n expect(canvas.queryByText('upload_file_2.txt')).not.toBeInTheDocument();\n expect(canvas.queryByText('upload_file_3.txt')).toBeInTheDocument();\n },\n};\n\nexport const successfulMultipleUpload = {\n play: async ({ canvasElement }) => {\n const canvas = within(canvasElement);\n\n const dropzone = canvas.getByTestId('upload-input');\n await userEvent.upload(dropzone, multipleFiles);\n\n const uploadButton = canvas.getByText('Upload');\n await userEvent.click(uploadButton);\n\n await waitFor(\n () => {\n expect(canvas.getByText('Success! Your files have been uploaded.')).toBeInTheDocument();\n expect(canvas.getByText('Select More Files')).toBeInTheDocument();\n },\n {\n timeout: SLEEP_TIMEOUT,\n },\n );\n },\n};\n\nexport default {\n title: 'Elements/ContentUploader/tests/visual',\n component: ContentUploader,\n args: {\n features: global.FEATURE_FLAGS,\n rootFolderId: global.FOLDER_ID,\n token: global.TOKEN,\n },\n parameters: {\n msw: {\n handlers: [\n http.options(`${DEFAULT_HOSTNAME_API}/2.0/files/content`, () => {\n return HttpResponse.json({});\n }),\n http.post(`${DEFAULT_HOSTNAME_UPLOAD}/api/2.0/files/content`, () => {\n return HttpResponse.json({});\n }),\n ],\n },\n },\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React from 'react';
3
+ import { AnswerContent, References } from '@box/box-ai-content-answers';
4
+ import { Card, Text } from '@box/blueprint-web';
5
+ import BoxAIIconColor from '@box/blueprint-web-assets/icons/Logo/BoxAiLogo';
6
+ import { Size5 } from '@box/blueprint-web-assets/tokens/tokens';
7
+ import { FormattedDate, FormattedMessage } from 'react-intl';
8
+ import { isValidDate } from '../../../utils/datetime';
9
+ import messages from './messages';
10
+ import './AppliedByAiClassificationReason.scss';
11
+ const AppliedByAiClassificationReason = ({
12
+ answer,
13
+ modifiedAt,
14
+ citations
15
+ }) => {
16
+ const modifiedDate = new Date(modifiedAt);
17
+ const isModifiedDateAvailable = Boolean(modifiedAt) && isValidDate(modifiedDate);
18
+ const formattedModifiedAt = isModifiedDateAvailable && /*#__PURE__*/React.createElement(FormattedDate, {
19
+ value: modifiedDate,
20
+ month: "long",
21
+ year: "numeric",
22
+ day: "numeric"
23
+ });
24
+ return /*#__PURE__*/React.createElement(Card, {
25
+ className: "AppliedByAiClassificationReason"
26
+ }, /*#__PURE__*/React.createElement("h3", {
27
+ className: "AppliedByAiClassificationReason-header"
28
+ }, /*#__PURE__*/React.createElement(BoxAIIconColor, {
29
+ "data-testid": "box-ai-icon",
30
+ height: Size5,
31
+ width: Size5
32
+ }), /*#__PURE__*/React.createElement(Text, {
33
+ className: "AppliedByAiClassificationReason-headerText",
34
+ as: "span",
35
+ color: "textOnLightSecondary",
36
+ variant: "bodyDefaultSemibold"
37
+ }, isModifiedDateAvailable ? /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.appliedByBoxAiOnDate, {
38
+ values: {
39
+ modifiedAt: formattedModifiedAt
40
+ }
41
+ })) : /*#__PURE__*/React.createElement(FormattedMessage, messages.appliedByBoxAi))), /*#__PURE__*/React.createElement(AnswerContent, {
42
+ className: "AppliedByAiClassificationReason-answer",
43
+ answer: answer
44
+ }), citations && /*#__PURE__*/React.createElement("div", {
45
+ className: "AppliedByAiClassificationReason-references"
46
+ }, /*#__PURE__*/React.createElement(References, {
47
+ citations: citations
48
+ })));
49
+ };
50
+ export default AppliedByAiClassificationReason;
51
+ //# sourceMappingURL=AppliedByAiClassificationReason.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppliedByAiClassificationReason.js","names":["React","AnswerContent","References","Card","Text","BoxAIIconColor","Size5","FormattedDate","FormattedMessage","isValidDate","messages","AppliedByAiClassificationReason","answer","modifiedAt","citations","modifiedDate","Date","isModifiedDateAvailable","Boolean","formattedModifiedAt","createElement","value","month","year","day","className","height","width","as","color","variant","_extends","appliedByBoxAiOnDate","values","appliedByBoxAi"],"sources":["../../../../src/features/classification/applied-by-ai-classification-reason/AppliedByAiClassificationReason.tsx"],"sourcesContent":["import React from 'react';\nimport { AnswerContent, References } from '@box/box-ai-content-answers';\nimport { Card, Text } from '@box/blueprint-web';\nimport BoxAIIconColor from '@box/blueprint-web-assets/icons/Logo/BoxAiLogo';\nimport { Size5 } from '@box/blueprint-web-assets/tokens/tokens';\nimport { FormattedDate, FormattedMessage } from 'react-intl';\n\nimport { isValidDate } from '../../../utils/datetime';\nimport type { AiClassificationReason } from '../types';\n\nimport messages from './messages';\n\nimport './AppliedByAiClassificationReason.scss';\n\nexport type AppliedByAiClassificationReasonProps = AiClassificationReason;\n\nconst AppliedByAiClassificationReason = ({ answer, modifiedAt, citations }: AppliedByAiClassificationReasonProps) => {\n const modifiedDate = new Date(modifiedAt);\n const isModifiedDateAvailable = Boolean(modifiedAt) && isValidDate(modifiedDate);\n\n const formattedModifiedAt = isModifiedDateAvailable && (\n <FormattedDate value={modifiedDate} month=\"long\" year=\"numeric\" day=\"numeric\" />\n );\n\n return (\n <Card className=\"AppliedByAiClassificationReason\">\n <h3 className=\"AppliedByAiClassificationReason-header\">\n <BoxAIIconColor data-testid=\"box-ai-icon\" height={Size5} width={Size5} />\n <Text\n className=\"AppliedByAiClassificationReason-headerText\"\n as=\"span\"\n color=\"textOnLightSecondary\"\n variant=\"bodyDefaultSemibold\"\n >\n {isModifiedDateAvailable ? (\n <FormattedMessage\n {...messages.appliedByBoxAiOnDate}\n values={{ modifiedAt: formattedModifiedAt }}\n />\n ) : (\n <FormattedMessage {...messages.appliedByBoxAi} />\n )}\n </Text>\n </h3>\n <AnswerContent className=\"AppliedByAiClassificationReason-answer\" answer={answer} />\n {citations && (\n <div className=\"AppliedByAiClassificationReason-references\">\n <References citations={citations} />\n </div>\n )}\n </Card>\n );\n};\n\nexport default AppliedByAiClassificationReason;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,EAAEC,UAAU,QAAQ,6BAA6B;AACvE,SAASC,IAAI,EAAEC,IAAI,QAAQ,oBAAoB;AAC/C,OAAOC,cAAc,MAAM,gDAAgD;AAC3E,SAASC,KAAK,QAAQ,yCAAyC;AAC/D,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,YAAY;AAE5D,SAASC,WAAW,QAAQ,yBAAyB;AAGrD,OAAOC,QAAQ,MAAM,YAAY;AAEjC,OAAO,wCAAwC;AAI/C,MAAMC,+BAA+B,GAAGA,CAAC;EAAEC,MAAM;EAAEC,UAAU;EAAEC;AAAgD,CAAC,KAAK;EACjH,MAAMC,YAAY,GAAG,IAAIC,IAAI,CAACH,UAAU,CAAC;EACzC,MAAMI,uBAAuB,GAAGC,OAAO,CAACL,UAAU,CAAC,IAAIJ,WAAW,CAACM,YAAY,CAAC;EAEhF,MAAMI,mBAAmB,GAAGF,uBAAuB,iBAC/CjB,KAAA,CAAAoB,aAAA,CAACb,aAAa;IAACc,KAAK,EAAEN,YAAa;IAACO,KAAK,EAAC,MAAM;IAACC,IAAI,EAAC,SAAS;IAACC,GAAG,EAAC;EAAS,CAAE,CAClF;EAED,oBACIxB,KAAA,CAAAoB,aAAA,CAACjB,IAAI;IAACsB,SAAS,EAAC;EAAiC,gBAC7CzB,KAAA,CAAAoB,aAAA;IAAIK,SAAS,EAAC;EAAwC,gBAClDzB,KAAA,CAAAoB,aAAA,CAACf,cAAc;IAAC,eAAY,aAAa;IAACqB,MAAM,EAAEpB,KAAM;IAACqB,KAAK,EAAErB;EAAM,CAAE,CAAC,eACzEN,KAAA,CAAAoB,aAAA,CAAChB,IAAI;IACDqB,SAAS,EAAC,4CAA4C;IACtDG,EAAE,EAAC,MAAM;IACTC,KAAK,EAAC,sBAAsB;IAC5BC,OAAO,EAAC;EAAqB,GAE5Bb,uBAAuB,gBACpBjB,KAAA,CAAAoB,aAAA,CAACZ,gBAAgB,EAAAuB,QAAA,KACTrB,QAAQ,CAACsB,oBAAoB;IACjCC,MAAM,EAAE;MAAEpB,UAAU,EAAEM;IAAoB;EAAE,EAC/C,CAAC,gBAEFnB,KAAA,CAAAoB,aAAA,CAACZ,gBAAgB,EAAKE,QAAQ,CAACwB,cAAiB,CAElD,CACN,CAAC,eACLlC,KAAA,CAAAoB,aAAA,CAACnB,aAAa;IAACwB,SAAS,EAAC,wCAAwC;IAACb,MAAM,EAAEA;EAAO,CAAE,CAAC,EACnFE,SAAS,iBACNd,KAAA,CAAAoB,aAAA;IAAKK,SAAS,EAAC;EAA4C,gBACvDzB,KAAA,CAAAoB,aAAA,CAAClB,UAAU;IAACY,SAAS,EAAEA;EAAU,CAAE,CAClC,CAEP,CAAC;AAEf,CAAC;AAED,eAAeH,+BAA+B","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ $reason-font-size: 13px; // Overriding Blueprint to match current sidebar styles
2
+
3
+ .AppliedByAiClassificationReason {
4
+ .AppliedByAiClassificationReason-headerText {
5
+ font-size: $reason-font-size;
6
+ }
7
+
8
+ .AppliedByAiClassificationReason-answer {
9
+ font-size: $reason-font-size;
10
+ line-height: var(--body-default-line-height);
11
+ }
12
+
13
+ .AppliedByAiClassificationReason-references {
14
+ > * > * {
15
+ font-size: $reason-font-size;
16
+ }
17
+ }
18
+ }
19
+
20
+ .AppliedByAiClassificationReason-header {
21
+ display: flex;
22
+ align-items: center;
23
+ gap: var(--space-2);
24
+ margin: 0 0 var(--space-2);
25
+ }
26
+
27
+ .AppliedByAiClassificationReason-references {
28
+ margin-top: var(--space-2);
29
+ }
@@ -0,0 +1,13 @@
1
+ import { defineMessages } from 'react-intl';
2
+ const messages = defineMessages({
3
+ appliedByBoxAi: {
4
+ "id": "boxui.classification.appliedByBoxAi",
5
+ "defaultMessage": "Box AI"
6
+ },
7
+ appliedByBoxAiOnDate: {
8
+ "id": "boxui.classification.appliedByBoxAiOnDate",
9
+ "defaultMessage": "Box AI on {modifiedAt}"
10
+ }
11
+ });
12
+ export default messages;
13
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","names":["defineMessages","messages","appliedByBoxAi","appliedByBoxAiOnDate"],"sources":["../../../../src/features/classification/applied-by-ai-classification-reason/messages.ts"],"sourcesContent":["import { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n appliedByBoxAi: {\n defaultMessage: 'Box AI',\n description:\n 'Title of the card that shows the reason why the AI classification was applied when no date is available.',\n id: 'boxui.classification.appliedByBoxAi',\n },\n appliedByBoxAiOnDate: {\n defaultMessage: 'Box AI on {modifiedAt}',\n description:\n 'Title of the card that shows the reason why the AI classification was applied on a specific date.',\n id: 'boxui.classification.appliedByBoxAiOnDate',\n },\n});\n\nexport default messages;\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,YAAY;AAE3C,MAAMC,QAAQ,GAAGD,cAAc,CAAC;EAC5BE,cAAc;IAAA;IAAA;EAAA,CAKb;EACDC,oBAAoB;IAAA;IAAA;EAAA;AAMxB,CAAC,CAAC;AAEF,eAAeF,QAAQ","ignoreList":[]}