box-ui-elements 24.0.0-beta.8 → 24.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/explorer.js +1 -1
- package/dist/openwith.js +1 -1
- package/dist/picker.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sharing.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/uploader.js +1 -1
- package/es/constants.js +3 -1
- package/es/constants.js.flow +5 -0
- package/es/constants.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.js +3 -2
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/elements/content-open-with/ContentOpenWith.js +3 -2
- package/es/elements/content-open-with/ContentOpenWith.js.flow +2 -0
- package/es/elements/content-open-with/ContentOpenWith.js.map +1 -1
- package/es/elements/content-picker/ContentPicker.js +3 -2
- package/es/elements/content-picker/ContentPicker.js.flow +2 -0
- package/es/elements/content-picker/ContentPicker.js.map +1 -1
- package/es/elements/content-preview/ContentPreview.js +3 -2
- package/es/elements/content-preview/ContentPreview.js.flow +2 -0
- package/es/elements/content-preview/ContentPreview.js.map +1 -1
- package/es/elements/content-sharing/ContentSharing.js +3 -2
- package/es/elements/content-sharing/ContentSharing.js.flow +2 -1
- package/es/elements/content-sharing/ContentSharing.js.map +1 -1
- package/es/elements/content-sidebar/ContentSidebar.js +3 -2
- package/es/elements/content-sidebar/ContentSidebar.js.flow +7 -1
- package/es/elements/content-sidebar/ContentSidebar.js.map +1 -1
- package/es/elements/content-uploader/ContentUploader.js +3 -2
- package/es/elements/content-uploader/ContentUploader.js.map +1 -1
- package/es/elements/wrappers/ES6Wrapper.js +0 -1
- package/es/elements/wrappers/ES6Wrapper.js.flow +0 -3
- package/es/elements/wrappers/ES6Wrapper.js.map +1 -1
- package/i18n/bn-IN.js +4 -4
- package/i18n/bn-IN.properties +4 -4
- package/i18n/da-DK.js +4 -4
- package/i18n/da-DK.properties +4 -4
- package/i18n/de-DE.js +4 -4
- package/i18n/de-DE.properties +4 -4
- package/i18n/en-AU.js +1 -1
- package/i18n/en-AU.properties +1 -1
- package/i18n/en-GB.js +1 -1
- package/i18n/en-GB.properties +1 -1
- package/i18n/es-419.js +4 -4
- package/i18n/es-419.properties +4 -4
- package/i18n/es-ES.js +4 -4
- package/i18n/es-ES.properties +4 -4
- package/i18n/fi-FI.js +4 -4
- package/i18n/fi-FI.properties +4 -4
- package/i18n/fr-CA.js +4 -4
- package/i18n/fr-CA.properties +4 -4
- package/i18n/fr-FR.js +4 -4
- package/i18n/fr-FR.properties +4 -4
- package/i18n/hi-IN.js +4 -4
- package/i18n/hi-IN.properties +4 -4
- package/i18n/it-IT.js +4 -4
- package/i18n/it-IT.properties +4 -4
- package/i18n/ko-KR.js +4 -4
- package/i18n/ko-KR.properties +4 -4
- package/i18n/nb-NO.js +4 -4
- package/i18n/nb-NO.properties +4 -4
- package/i18n/nl-NL.js +4 -4
- package/i18n/nl-NL.properties +4 -4
- package/i18n/pl-PL.js +4 -4
- package/i18n/pl-PL.properties +4 -4
- package/i18n/pt-BR.js +4 -4
- package/i18n/pt-BR.properties +4 -4
- package/i18n/ru-RU.js +4 -4
- package/i18n/ru-RU.properties +4 -4
- package/i18n/sv-SE.js +4 -4
- package/i18n/sv-SE.properties +4 -4
- package/i18n/tr-TR.js +4 -4
- package/i18n/tr-TR.properties +4 -4
- package/i18n/zh-CN.js +4 -4
- package/i18n/zh-CN.properties +4 -4
- package/i18n/zh-TW.js +4 -4
- package/i18n/zh-TW.properties +4 -4
- package/package.json +3 -3
- package/src/constants.js +5 -0
- package/src/elements/content-explorer/ContentExplorer.tsx +2 -0
- package/src/elements/content-open-with/ContentOpenWith.js +2 -0
- package/src/elements/content-picker/ContentPicker.js +2 -0
- package/src/elements/content-preview/ContentPreview.js +2 -0
- package/src/elements/content-sharing/ContentSharing.js +2 -1
- package/src/elements/content-sidebar/ContentSidebar.js +7 -1
- package/src/elements/content-uploader/ContentUploader.tsx +2 -0
- package/src/elements/wrappers/ES6Wrapper.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentSidebar.js","names":["React","noop","flow","TooltipProvider","API","APIContext","Internationalize","Sidebar","NavRouter","SidebarUtils","DEFAULT_HOSTNAME_API","CLIENT_NAME_CONTENT_SIDEBAR","ORIGIN_CONTENT_SIDEBAR","EVENT_JS_READY","mark","SIDEBAR_FIELDS_TO_FETCH","SIDEBAR_FIELDS_TO_FETCH_ARCHIVE","withErrorBoundary","withBlueprintModernization","isFeatureEnabled","isFeatureEnabledInContext","withFeatureConsumer","withFeatureProvider","withLogger","MARK_NAME_JS_READY","ContentSidebar","Component","constructor","props","_defineProperty","isLoading","error","code","console","onError","editors","setState","metadataEditors","file","onFetchFileSuccess","fetchMetadata","apiHost","cache","clientName","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","api","logger","onReadyMetric","endMarkName","clearCache","destroy","componentWillUnmount","componentDidMount","fetchFile","componentDidUpdate","prevProps","fileId","prevFileId","state","metadataSidebarProps","canHaveMetadataSidebar","getMetadataAPI","getMetadata","fetchMetadataSuccessCallback","fetchOptions","features","archiveEnabled","fields","canHaveSidebar","getFileAPI","getFile","fetchFileSuccessCallback","errorCallback","_objectSpread","refresh","sidebarRef","render","activitySidebarProps","additionalTabs","boxAISidebarProps","className","currentUser","defaultView","detailsSidebarProps","docGenSidebarProps","getPreview","getViewer","hasAdditionalTabs","hasActivityFeed","hasMetadata","hasNav","hasSkills","hasVersions","history","isDefaultOpen","messages","onAnnotationSelect","onOpenChange","onPanelChange","onVersionChange","onVersionHistoryClick","signSidebarProps","theme","versionsSidebarProps","initialPath","charAt","shouldRenderSidebar","createElement","Provider","value","initialEntries","wrappedComponentRef","ref","enabled","ContentSidebarComponent"],"sources":["../../../src/elements/content-sidebar/ContentSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Content Sidebar Container\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport flow from 'lodash/flow';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport type { RouterHistory } from 'react-router-dom';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport Internationalize from '../common/Internationalize';\nimport Sidebar from './Sidebar';\nimport NavRouter from '../common/nav-router';\nimport SidebarUtils from './SidebarUtils';\nimport { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';\nimport { withErrorBoundary } from '../common/error-boundary';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport {\n isFeatureEnabled as isFeatureEnabledInContext,\n withFeatureConsumer,\n withFeatureProvider,\n} from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\n\nimport type { ActivitySidebarProps } from './ActivitySidebar';\nimport type { BoxAISidebarProps } from './BoxAISidebar';\nimport type { DetailsSidebarProps } from './DetailsSidebar';\nimport type { DocGenSidebarProps } from './DocGenSidebar/DocGenSidebar';\nimport type { MetadataSidebarProps } from './MetadataSidebar';\nimport type { VersionsSidebarProps } from './versions';\nimport type { SignSidebarProps } from './SidebarNavSign';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { ElementsXhrError, RequestOptions, ErrorContextProps } from '../../common/types/api';\nimport type { MetadataEditor } from '../../common/types/metadata';\nimport type { StringMap, Token, User, BoxItem } from '../../common/types/core';\nimport type { AdditionalSidebarTab } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\n// $FlowFixMe TypeScript file\nimport type { Theme } from '../common/theming';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentSidebar.scss';\n\ntype Props = {\n activitySidebarProps: ActivitySidebarProps,\n additionalTabs?: Array<AdditionalSidebarTab>,\n apiHost: string,\n boxAISidebarProps: BoxAISidebarProps,\n cache?: APICache,\n className: string,\n clientName: string,\n currentUser?: User,\n defaultView: string,\n detailsSidebarProps: DetailsSidebarProps,\n docGenSidebarProps?: DocGenSidebarProps,\n features: FeatureConfig,\n fileId?: string,\n getPreview: Function,\n getViewer: Function,\n hasActivityFeed: boolean,\n hasAdditionalTabs: boolean,\n hasMetadata: boolean,\n hasNav: boolean,\n hasSkills: boolean,\n hasVersions: boolean,\n history?: RouterHistory,\n isDefaultOpen?: boolean,\n language?: string,\n messages?: StringMap,\n metadataSidebarProps: MetadataSidebarProps,\n onAnnotationSelect?: Function,\n onFetchFileSuccess?: () => void,\n onOpenChange?: (isOpen: boolean, isInitialState: boolean) => void,\n onPanelChange?: (name: string, isInitialState: boolean) => void,\n onVersionChange?: Function,\n onVersionHistoryClick?: Function,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n theme?: Theme,\n signSidebarProps: SignSidebarProps,\n token: Token,\n versionsSidebarProps: VersionsSidebarProps,\n} & ErrorContextProps &\n WithLoggerProps;\n\ntype State = {\n file?: BoxItem,\n isLoading: boolean,\n metadataEditors?: Array<MetadataEditor>,\n};\n\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ContentSidebar extends React.Component<Props, State> {\n props: Props;\n\n state: State = { isLoading: true };\n\n api: API;\n\n sidebarRef: Sidebar;\n\n static defaultProps = {\n activitySidebarProps: {},\n apiHost: DEFAULT_HOSTNAME_API,\n boxAISidebarProps: {},\n className: '',\n clientName: CLIENT_NAME_CONTENT_SIDEBAR,\n defaultView: '',\n detailsSidebarProps: {},\n docGenSidebarProps: { enabled: false },\n getPreview: noop,\n getViewer: noop,\n hasActivityFeed: false,\n hasAdditionalTabs: false,\n hasMetadata: false,\n hasNav: true,\n hasSkills: false,\n isDefaultOpen: true,\n metadataSidebarProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentSidebar}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.api = new API({\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n\n /* eslint-disable react/prop-types */\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n /* eslint-enable react/prop-types */\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n }\n\n /**\n * Fetches the file data on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.fetchFile();\n }\n\n /**\n * Fetches new file data on update\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate(prevProps: Props): void {\n const { fileId }: Props = this.props;\n const { fileId: prevFileId }: Props = prevProps;\n\n if (fileId !== prevFileId) {\n this.fetchFile();\n }\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {string} code - error code\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n /* eslint-disable react/prop-types */\n this.props.onError(error, code, {\n error,\n });\n /* eslint-enable react/prop-types */\n };\n\n /**\n * File fetch success callback that sets the file and view\n * Only set file if there is data to show in the sidebar.\n * Skills sidebar doesn't show when there is no data.\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchMetadataSuccessCallback = ({ editors }: { editors: Array<MetadataEditor> }): void => {\n this.setState({ metadataEditors: editors });\n };\n\n /**\n * Fetches file metadata editors if required\n *\n * @private\n * @return {void}\n */\n fetchMetadata(): void {\n const { file }: State = this.state;\n const { metadataSidebarProps }: Props = this.props;\n const { isFeatureEnabled = true }: MetadataSidebarProps = metadataSidebarProps;\n\n // Only fetch metadata if we think that the file may have metadata on it\n // but currently the metadata feature is turned off. Use case of this would be a free\n // user who doesn't have the metadata feature but is collabed on a file from a user\n // who added metadata on the file. If the feature is enabled we always end up showing\n // the metadata sidebar irrespective of there being any existing metadata or not.\n const canHaveMetadataSidebar = !isFeatureEnabled && SidebarUtils.canHaveMetadataSidebar(this.props);\n\n if (canHaveMetadataSidebar) {\n this.api\n .getMetadataAPI(false)\n .getMetadata(((file: any): BoxItem), this.fetchMetadataSuccessCallback, noop, isFeatureEnabled);\n }\n }\n\n /**\n * File fetch success callback that sets the file and sidebar visibility.\n * Also makes an optional request to fetch metadata editors\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n const { onFetchFileSuccess }: Props = this.props;\n !!onFetchFileSuccess && onFetchFileSuccess();\n this.setState(\n {\n file,\n isLoading: false,\n },\n this.fetchMetadata,\n );\n };\n\n /**\n * Fetches a file\n *\n * @private\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(fetchOptions: RequestOptions = {}): void {\n const { fileId, features }: Props = this.props;\n const archiveEnabled = isFeatureEnabledInContext(features, 'contentSidebar.archive.enabled');\n const fields = archiveEnabled ? SIDEBAR_FIELDS_TO_FETCH_ARCHIVE : SIDEBAR_FIELDS_TO_FETCH;\n\n this.setState({ isLoading: true });\n\n if (fileId && SidebarUtils.canHaveSidebar(this.props)) {\n this.api.getFileAPI().getFile(fileId, this.fetchFileSuccessCallback, this.errorCallback, {\n ...fetchOptions,\n fields,\n });\n }\n }\n\n /**\n * Refreshes the sidebar panel\n * @returns {void}\n */\n refresh(): void {\n if (this.sidebarRef) {\n this.sidebarRef.refresh();\n }\n }\n\n /**\n * Renders the sidebar\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n activitySidebarProps,\n additionalTabs,\n boxAISidebarProps,\n className,\n currentUser,\n defaultView,\n detailsSidebarProps,\n docGenSidebarProps,\n features,\n fileId,\n getPreview,\n getViewer,\n hasAdditionalTabs,\n hasActivityFeed,\n hasMetadata,\n hasNav,\n hasSkills,\n hasVersions,\n history,\n isDefaultOpen,\n language,\n messages,\n metadataSidebarProps,\n onAnnotationSelect,\n onOpenChange,\n onPanelChange,\n onVersionChange,\n onVersionHistoryClick,\n signSidebarProps,\n theme,\n versionsSidebarProps,\n }: Props = this.props;\n const { file, isLoading, metadataEditors }: State = this.state;\n const initialPath = defaultView.charAt(0) === '/' ? defaultView : `/${defaultView}`;\n\n if (!file || !fileId || !SidebarUtils.shouldRenderSidebar(this.props, file, metadataEditors)) {\n return null;\n }\n\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: any)}>\n <NavRouter history={history} initialEntries={[initialPath]} features={features}>\n <TooltipProvider>\n <Sidebar\n activitySidebarProps={activitySidebarProps}\n additionalTabs={additionalTabs}\n boxAISidebarProps={boxAISidebarProps}\n className={className}\n currentUser={currentUser}\n detailsSidebarProps={detailsSidebarProps}\n docGenSidebarProps={docGenSidebarProps}\n file={file}\n fileId={fileId}\n getPreview={getPreview}\n getViewer={getViewer}\n hasActivityFeed={hasActivityFeed}\n hasAdditionalTabs={hasAdditionalTabs}\n hasNav={hasNav}\n hasMetadata={hasMetadata}\n hasSkills={hasSkills}\n hasVersions={hasVersions}\n isDefaultOpen={isDefaultOpen}\n isLoading={isLoading}\n metadataEditors={metadataEditors}\n metadataSidebarProps={metadataSidebarProps}\n onAnnotationSelect={onAnnotationSelect}\n onOpenChange={onOpenChange}\n onPanelChange={onPanelChange}\n onVersionChange={onVersionChange}\n onVersionHistoryClick={onVersionHistoryClick}\n signSidebarProps={signSidebarProps}\n theme={theme}\n versionsSidebarProps={versionsSidebarProps}\n wrappedComponentRef={ref => {\n this.sidebarRef = ref;\n }}\n />\n </TooltipProvider>\n </NavRouter>\n </APIContext.Provider>\n </Internationalize>\n );\n }\n}\n\nexport type ContentSidebarProps = Props;\nexport { ContentSidebar as ContentSidebarComponent };\nexport default flow([\n withFeatureConsumer,\n withFeatureProvider,\n withBlueprintModernization,\n withLogger(ORIGIN_CONTENT_SIDEBAR),\n withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),\n])(ContentSidebar);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContentSidebar.js","names":["React","noop","flow","TooltipProvider","API","APIContext","Internationalize","Sidebar","NavRouter","SidebarUtils","CLIENT_NAME_CONTENT_SIDEBAR","CLIENT_VERSION","DEFAULT_HOSTNAME_API","ORIGIN_CONTENT_SIDEBAR","EVENT_JS_READY","mark","SIDEBAR_FIELDS_TO_FETCH","SIDEBAR_FIELDS_TO_FETCH_ARCHIVE","withErrorBoundary","withBlueprintModernization","isFeatureEnabled","isFeatureEnabledInContext","withFeatureConsumer","withFeatureProvider","withLogger","MARK_NAME_JS_READY","ContentSidebar","Component","constructor","props","_defineProperty","isLoading","error","code","console","onError","editors","setState","metadataEditors","file","onFetchFileSuccess","fetchMetadata","apiHost","cache","clientName","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","token","api","version","logger","onReadyMetric","endMarkName","clearCache","destroy","componentWillUnmount","componentDidMount","fetchFile","componentDidUpdate","prevProps","fileId","prevFileId","state","metadataSidebarProps","canHaveMetadataSidebar","getMetadataAPI","getMetadata","fetchMetadataSuccessCallback","fetchOptions","features","archiveEnabled","fields","canHaveSidebar","getFileAPI","getFile","fetchFileSuccessCallback","errorCallback","_objectSpread","refresh","sidebarRef","render","activitySidebarProps","additionalTabs","boxAISidebarProps","className","currentUser","defaultView","detailsSidebarProps","docGenSidebarProps","getPreview","getViewer","hasAdditionalTabs","hasActivityFeed","hasMetadata","hasNav","hasSkills","hasVersions","history","isDefaultOpen","messages","onAnnotationSelect","onOpenChange","onPanelChange","onVersionChange","onVersionHistoryClick","signSidebarProps","theme","versionsSidebarProps","initialPath","charAt","shouldRenderSidebar","createElement","Provider","value","initialEntries","wrappedComponentRef","ref","enabled","ContentSidebarComponent"],"sources":["../../../src/elements/content-sidebar/ContentSidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Content Sidebar Container\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport flow from 'lodash/flow';\nimport { TooltipProvider } from '@box/blueprint-web';\nimport type { RouterHistory } from 'react-router-dom';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport Internationalize from '../common/Internationalize';\nimport Sidebar from './Sidebar';\nimport NavRouter from '../common/nav-router';\nimport SidebarUtils from './SidebarUtils';\nimport {\n CLIENT_NAME_CONTENT_SIDEBAR,\n CLIENT_VERSION,\n DEFAULT_HOSTNAME_API,\n ORIGIN_CONTENT_SIDEBAR,\n} from '../../constants';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport { mark } from '../../utils/performance';\nimport { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';\nimport { withErrorBoundary } from '../common/error-boundary';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport {\n isFeatureEnabled as isFeatureEnabledInContext,\n withFeatureConsumer,\n withFeatureProvider,\n} from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\n\nimport type { ActivitySidebarProps } from './ActivitySidebar';\nimport type { BoxAISidebarProps } from './BoxAISidebar';\nimport type { DetailsSidebarProps } from './DetailsSidebar';\nimport type { DocGenSidebarProps } from './DocGenSidebar/DocGenSidebar';\nimport type { MetadataSidebarProps } from './MetadataSidebar';\nimport type { VersionsSidebarProps } from './versions';\nimport type { SignSidebarProps } from './SidebarNavSign';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { ElementsXhrError, RequestOptions, ErrorContextProps } from '../../common/types/api';\nimport type { MetadataEditor } from '../../common/types/metadata';\nimport type { StringMap, Token, User, BoxItem } from '../../common/types/core';\nimport type { AdditionalSidebarTab } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\n// $FlowFixMe TypeScript file\nimport type { Theme } from '../common/theming';\nimport type APICache from '../../utils/Cache';\n\nimport '../common/fonts.scss';\nimport '../common/base.scss';\nimport '../common/modal.scss';\nimport './ContentSidebar.scss';\n\ntype Props = {\n activitySidebarProps: ActivitySidebarProps,\n additionalTabs?: Array<AdditionalSidebarTab>,\n apiHost: string,\n boxAISidebarProps: BoxAISidebarProps,\n cache?: APICache,\n className: string,\n clientName: string,\n currentUser?: User,\n defaultView: string,\n detailsSidebarProps: DetailsSidebarProps,\n docGenSidebarProps?: DocGenSidebarProps,\n features: FeatureConfig,\n fileId?: string,\n getPreview: Function,\n getViewer: Function,\n hasActivityFeed: boolean,\n hasAdditionalTabs: boolean,\n hasMetadata: boolean,\n hasNav: boolean,\n hasSkills: boolean,\n hasVersions: boolean,\n history?: RouterHistory,\n isDefaultOpen?: boolean,\n language?: string,\n messages?: StringMap,\n metadataSidebarProps: MetadataSidebarProps,\n onAnnotationSelect?: Function,\n onFetchFileSuccess?: () => void,\n onOpenChange?: (isOpen: boolean, isInitialState: boolean) => void,\n onPanelChange?: (name: string, isInitialState: boolean) => void,\n onVersionChange?: Function,\n onVersionHistoryClick?: Function,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n theme?: Theme,\n signSidebarProps: SignSidebarProps,\n token: Token,\n versionsSidebarProps: VersionsSidebarProps,\n} & ErrorContextProps &\n WithLoggerProps;\n\ntype State = {\n file?: BoxItem,\n isLoading: boolean,\n metadataEditors?: Array<MetadataEditor>,\n};\n\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ContentSidebar extends React.Component<Props, State> {\n props: Props;\n\n state: State = { isLoading: true };\n\n api: API;\n\n sidebarRef: Sidebar;\n\n static defaultProps = {\n activitySidebarProps: {},\n apiHost: DEFAULT_HOSTNAME_API,\n boxAISidebarProps: {},\n className: '',\n clientName: CLIENT_NAME_CONTENT_SIDEBAR,\n defaultView: '',\n detailsSidebarProps: {},\n docGenSidebarProps: { enabled: false },\n getPreview: noop,\n getViewer: noop,\n hasActivityFeed: false,\n hasAdditionalTabs: false,\n hasMetadata: false,\n hasNav: true,\n hasSkills: false,\n isDefaultOpen: true,\n metadataSidebarProps: {},\n };\n\n /**\n * [constructor]\n *\n * @private\n * @return {ContentSidebar}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.api = new API({\n apiHost,\n cache,\n clientName,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n version: CLIENT_VERSION,\n });\n\n /* eslint-disable react/prop-types */\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n /* eslint-enable react/prop-types */\n }\n\n /**\n * Destroys api instances with caches\n *\n * @private\n * @return {void}\n */\n clearCache(): void {\n this.api.destroy(true);\n }\n\n /**\n * Cleanup\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n }\n\n /**\n * Fetches the file data on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.fetchFile();\n }\n\n /**\n * Fetches new file data on update\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidUpdate(prevProps: Props): void {\n const { fileId }: Props = this.props;\n const { fileId: prevFileId }: Props = prevProps;\n\n if (fileId !== prevFileId) {\n this.fetchFile();\n }\n }\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {string} code - error code\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n /* eslint-disable react/prop-types */\n this.props.onError(error, code, {\n error,\n });\n /* eslint-enable react/prop-types */\n };\n\n /**\n * File fetch success callback that sets the file and view\n * Only set file if there is data to show in the sidebar.\n * Skills sidebar doesn't show when there is no data.\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchMetadataSuccessCallback = ({ editors }: { editors: Array<MetadataEditor> }): void => {\n this.setState({ metadataEditors: editors });\n };\n\n /**\n * Fetches file metadata editors if required\n *\n * @private\n * @return {void}\n */\n fetchMetadata(): void {\n const { file }: State = this.state;\n const { metadataSidebarProps }: Props = this.props;\n const { isFeatureEnabled = true }: MetadataSidebarProps = metadataSidebarProps;\n\n // Only fetch metadata if we think that the file may have metadata on it\n // but currently the metadata feature is turned off. Use case of this would be a free\n // user who doesn't have the metadata feature but is collabed on a file from a user\n // who added metadata on the file. If the feature is enabled we always end up showing\n // the metadata sidebar irrespective of there being any existing metadata or not.\n const canHaveMetadataSidebar = !isFeatureEnabled && SidebarUtils.canHaveMetadataSidebar(this.props);\n\n if (canHaveMetadataSidebar) {\n this.api\n .getMetadataAPI(false)\n .getMetadata(((file: any): BoxItem), this.fetchMetadataSuccessCallback, noop, isFeatureEnabled);\n }\n }\n\n /**\n * File fetch success callback that sets the file and sidebar visibility.\n * Also makes an optional request to fetch metadata editors\n *\n * @private\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n const { onFetchFileSuccess }: Props = this.props;\n !!onFetchFileSuccess && onFetchFileSuccess();\n this.setState(\n {\n file,\n isLoading: false,\n },\n this.fetchMetadata,\n );\n };\n\n /**\n * Fetches a file\n *\n * @private\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(fetchOptions: RequestOptions = {}): void {\n const { fileId, features }: Props = this.props;\n const archiveEnabled = isFeatureEnabledInContext(features, 'contentSidebar.archive.enabled');\n const fields = archiveEnabled ? SIDEBAR_FIELDS_TO_FETCH_ARCHIVE : SIDEBAR_FIELDS_TO_FETCH;\n\n this.setState({ isLoading: true });\n\n if (fileId && SidebarUtils.canHaveSidebar(this.props)) {\n this.api.getFileAPI().getFile(fileId, this.fetchFileSuccessCallback, this.errorCallback, {\n ...fetchOptions,\n fields,\n });\n }\n }\n\n /**\n * Refreshes the sidebar panel\n * @returns {void}\n */\n refresh(): void {\n if (this.sidebarRef) {\n this.sidebarRef.refresh();\n }\n }\n\n /**\n * Renders the sidebar\n *\n * @private\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n activitySidebarProps,\n additionalTabs,\n boxAISidebarProps,\n className,\n currentUser,\n defaultView,\n detailsSidebarProps,\n docGenSidebarProps,\n features,\n fileId,\n getPreview,\n getViewer,\n hasAdditionalTabs,\n hasActivityFeed,\n hasMetadata,\n hasNav,\n hasSkills,\n hasVersions,\n history,\n isDefaultOpen,\n language,\n messages,\n metadataSidebarProps,\n onAnnotationSelect,\n onOpenChange,\n onPanelChange,\n onVersionChange,\n onVersionHistoryClick,\n signSidebarProps,\n theme,\n versionsSidebarProps,\n }: Props = this.props;\n const { file, isLoading, metadataEditors }: State = this.state;\n const initialPath = defaultView.charAt(0) === '/' ? defaultView : `/${defaultView}`;\n\n if (!file || !fileId || !SidebarUtils.shouldRenderSidebar(this.props, file, metadataEditors)) {\n return null;\n }\n\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: any)}>\n <NavRouter history={history} initialEntries={[initialPath]} features={features}>\n <TooltipProvider>\n <Sidebar\n activitySidebarProps={activitySidebarProps}\n additionalTabs={additionalTabs}\n boxAISidebarProps={boxAISidebarProps}\n className={className}\n currentUser={currentUser}\n detailsSidebarProps={detailsSidebarProps}\n docGenSidebarProps={docGenSidebarProps}\n file={file}\n fileId={fileId}\n getPreview={getPreview}\n getViewer={getViewer}\n hasActivityFeed={hasActivityFeed}\n hasAdditionalTabs={hasAdditionalTabs}\n hasNav={hasNav}\n hasMetadata={hasMetadata}\n hasSkills={hasSkills}\n hasVersions={hasVersions}\n isDefaultOpen={isDefaultOpen}\n isLoading={isLoading}\n metadataEditors={metadataEditors}\n metadataSidebarProps={metadataSidebarProps}\n onAnnotationSelect={onAnnotationSelect}\n onOpenChange={onOpenChange}\n onPanelChange={onPanelChange}\n onVersionChange={onVersionChange}\n onVersionHistoryClick={onVersionHistoryClick}\n signSidebarProps={signSidebarProps}\n theme={theme}\n versionsSidebarProps={versionsSidebarProps}\n wrappedComponentRef={ref => {\n this.sidebarRef = ref;\n }}\n />\n </TooltipProvider>\n </NavRouter>\n </APIContext.Provider>\n </Internationalize>\n );\n }\n}\n\nexport type ContentSidebarProps = Props;\nexport { ContentSidebar as ContentSidebarComponent };\nexport default flow([\n withFeatureConsumer,\n withFeatureProvider,\n withBlueprintModernization,\n withLogger(ORIGIN_CONTENT_SIDEBAR),\n withErrorBoundary(ORIGIN_CONTENT_SIDEBAR),\n])(ContentSidebar);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,7 +24,7 @@ import ThemingStyles from '../common/theming';
|
|
|
24
24
|
import FolderUpload from '../../api/uploads/FolderUpload';
|
|
25
25
|
import { getTypedFileId, getTypedFolderId } from '../../utils/file';
|
|
26
26
|
import { getDataTransferItemId, getFile, getFileAPIOptions, getFileFromDataTransferItem, getFileId, getDataTransferItemAPIOptions, getPackageFileFromDataTransferItem, isDataTransferItemAFolder, isDataTransferItemAPackage, isMultiputSupported } from '../../utils/uploads';
|
|
27
|
-
import { DEFAULT_ROOT, CLIENT_NAME_CONTENT_UPLOADER, DEFAULT_HOSTNAME_API, DEFAULT_HOSTNAME_UPLOAD, ERROR_CODE_ITEM_NAME_IN_USE, ERROR_CODE_UPLOAD_FILE_LIMIT, STATUS_COMPLETE, STATUS_ERROR, STATUS_IN_PROGRESS, STATUS_PENDING, STATUS_STAGED, VIEW_ERROR, VIEW_UPLOAD_EMPTY, VIEW_UPLOAD_IN_PROGRESS, VIEW_UPLOAD_SUCCESS } from '../../constants';
|
|
27
|
+
import { DEFAULT_ROOT, CLIENT_NAME_CONTENT_UPLOADER, CLIENT_VERSION, DEFAULT_HOSTNAME_API, DEFAULT_HOSTNAME_UPLOAD, ERROR_CODE_ITEM_NAME_IN_USE, ERROR_CODE_UPLOAD_FILE_LIMIT, STATUS_COMPLETE, STATUS_ERROR, STATUS_IN_PROGRESS, STATUS_PENDING, STATUS_STAGED, VIEW_ERROR, VIEW_UPLOAD_EMPTY, VIEW_UPLOAD_IN_PROGRESS, VIEW_UPLOAD_SUCCESS } from '../../constants';
|
|
28
28
|
import '../common/fonts.scss';
|
|
29
29
|
import '../common/base.scss';
|
|
30
30
|
const CHUNKED_UPLOAD_MIN_SIZE_BYTES = 104857600; // 100MB
|
|
@@ -66,7 +66,8 @@ class ContentUploader extends Component {
|
|
|
66
66
|
sharedLink,
|
|
67
67
|
sharedLinkPassword,
|
|
68
68
|
token,
|
|
69
|
-
uploadHost
|
|
69
|
+
uploadHost,
|
|
70
|
+
version: CLIENT_VERSION
|
|
70
71
|
};
|
|
71
72
|
});
|
|
72
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
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":[]}
|
|
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","CLIENT_VERSION","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","version","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 CLIENT_VERSION,\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 version: CLIENT_VERSION,\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":[]}
|
|
@@ -72,7 +72,6 @@ class ES6Wrapper extends EventEmitter {
|
|
|
72
72
|
this.id = id;
|
|
73
73
|
this.token = token;
|
|
74
74
|
this.options = options;
|
|
75
|
-
this.options.version = __VERSION__;
|
|
76
75
|
this.emit = this.emit.bind(this);
|
|
77
76
|
const container = options.container || DEFAULT_CONTAINER;
|
|
78
77
|
this.container = container instanceof HTMLElement ? container : document.querySelector(container);
|
|
@@ -10,8 +10,6 @@ import i18n from '../common/i18n';
|
|
|
10
10
|
import { DEFAULT_CONTAINER } from '../../constants';
|
|
11
11
|
import type { Token, StringMap } from '../../common/types/core';
|
|
12
12
|
|
|
13
|
-
declare var __VERSION__: string;
|
|
14
|
-
|
|
15
13
|
class ES6Wrapper extends EventEmitter {
|
|
16
14
|
/**
|
|
17
15
|
* @property {Function}
|
|
@@ -66,7 +64,6 @@ class ES6Wrapper extends EventEmitter {
|
|
|
66
64
|
this.id = id;
|
|
67
65
|
this.token = token;
|
|
68
66
|
this.options = options;
|
|
69
|
-
this.options.version = __VERSION__;
|
|
70
67
|
this.emit = this.emit.bind(this);
|
|
71
68
|
const container = options.container || DEFAULT_CONTAINER;
|
|
72
69
|
this.container =
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ES6Wrapper.js","names":["EventEmitter","ReactDOM","i18n","DEFAULT_CONTAINER","ES6Wrapper","constructor","args","_defineProperty","language","messages","component","data","emit","show","id","token","options","
|
|
1
|
+
{"version":3,"file":"ES6Wrapper.js","names":["EventEmitter","ReactDOM","i18n","DEFAULT_CONTAINER","ES6Wrapper","constructor","args","_defineProperty","language","messages","component","data","emit","show","id","token","options","bind","container","HTMLElement","document","querySelector","render","hide","removeAllListeners","unmountComponentAtNode","innerHTML","Error","getComponent","clearCache","eventName","e"],"sources":["../../../src/elements/wrappers/ES6Wrapper.js"],"sourcesContent":["/**\n * @flow\n * @file Base class for the Box UI Elements ES6 wrapper\n * @author Box\n */\n\nimport EventEmitter from 'events';\nimport ReactDOM from 'react-dom';\nimport i18n from '../common/i18n';\nimport { DEFAULT_CONTAINER } from '../../constants';\nimport type { Token, StringMap } from '../../common/types/core';\n\nclass ES6Wrapper extends EventEmitter {\n /**\n * @property {Function}\n */\n emit: Function;\n\n /**\n * @property {HTMLElement}\n */\n container: HTMLElement;\n\n /**\n * @property {string}\n */\n id: string;\n\n /**\n * @property {string}\n */\n token: Token;\n\n /**\n * @property {string}\n */\n options: { [key: string]: any };\n\n /**\n * @property {string}\n */\n language: string = i18n.language;\n\n /**\n * @property {Object}\n */\n messages: StringMap = i18n.messages;\n\n /**\n * @property {Element}\n */\n component: any;\n\n /**\n * Shows the content picker.\n *\n * @public\n * @param {string} id - The folder or file id.\n * @param {string} token - The API access token.\n * @param {Object|void} [options] Optional options.\n * @return {void}\n */\n show(id: string, token: Token, options: { [key: string]: any } = {}): void {\n this.id = id;\n this.token = token;\n this.options = options;\n this.emit = this.emit.bind(this);\n const container = options.container || DEFAULT_CONTAINER;\n this.container =\n container instanceof HTMLElement ? container : ((document.querySelector(container): any): HTMLElement);\n this.render();\n }\n\n /**\n * Hides the content picker.\n * Removes all event listeners.\n * Clears out the DOM inside container.\n *\n * @public\n * @return {void}\n */\n hide(): void {\n this.removeAllListeners();\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.unmountComponentAtNode(this.container);\n if (this.container) {\n this.container.innerHTML = '';\n }\n }\n\n /**\n * Renders the component.\n * Should be overriden.\n *\n * @protected\n * @return {void}\n */\n render() {\n throw new Error('Unimplemented!');\n }\n\n /**\n * Sets reference to the inner component\n *\n * @protected\n * @return {void}\n */\n setComponent = (component: any) => {\n this.component = component;\n };\n\n /**\n * Gets reference to the inner component\n *\n * @public\n * @return {Element}\n */\n getComponent(): any {\n return this.component;\n }\n\n /**\n * Clears out the cache used by the component\n *\n * @public\n * @return {Element}\n */\n clearCache(): void {\n const component = this.getComponent();\n if (component && typeof component.clearCache === 'function') {\n component.clearCache();\n }\n }\n\n /**\n * Callback for interaction events\n *\n * @return {void}\n */\n onInteraction = (data: any): void => {\n this.emit('interaction', data);\n };\n\n /**\n * Wrapper for emit to prevent JS exceptions\n * in the listeners own code.\n *\n * @public\n * @param {string} eventName - name of the event\n * @param {Object} data - event data\n * @return {boolean} true if the event had listeners, false otherwise.\n */\n // eslint-disable-next-line no-dupe-class-members\n emit(eventName: string, data: any): boolean {\n try {\n return super.emit(eventName, data);\n } catch (e) {\n // do nothing\n }\n\n return false;\n }\n}\n\nexport default ES6Wrapper;\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,YAAY,MAAM,QAAQ;AACjC,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAOC,IAAI,MAAM,gBAAgB;AACjC,SAASC,iBAAiB,QAAQ,iBAAiB;AAGnD,MAAMC,UAAU,SAASJ,YAAY,CAAC;EAAAK,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAClC;AACJ;AACA;IAGI;AACJ;AACA;IAGI;AACJ;AACA;IAGI;AACJ;AACA;IAGI;AACJ;AACA;IAGI;AACJ;AACA;IAFIC,eAAA,mBAGmBL,IAAI,CAACM,QAAQ;IAEhC;AACJ;AACA;IAFID,eAAA,mBAGsBL,IAAI,CAACO,QAAQ;IAuDnC;AACJ;AACA;AACA;AACA;AACA;IALIF,eAAA,uBAMgBG,SAAc,IAAK;MAC/B,IAAI,CAACA,SAAS,GAAGA,SAAS;IAC9B,CAAC;IAyBD;AACJ;AACA;AACA;AACA;IAJIH,eAAA,wBAKiBI,IAAS,IAAW;MACjC,IAAI,CAACC,IAAI,CAAC,aAAa,EAAED,IAAI,CAAC;IAClC,CAAC;EAAA;EA7FD;AACJ;AACA;;EAGI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACIE,IAAIA,CAACC,EAAU,EAAEC,KAAY,EAAEC,OAA+B,GAAG,CAAC,CAAC,EAAQ;IACvE,IAAI,CAACF,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACJ,IAAI,GAAG,IAAI,CAACA,IAAI,CAACK,IAAI,CAAC,IAAI,CAAC;IAChC,MAAMC,SAAS,GAAGF,OAAO,CAACE,SAAS,IAAIf,iBAAiB;IACxD,IAAI,CAACe,SAAS,GACVA,SAAS,YAAYC,WAAW,GAAGD,SAAS,GAAKE,QAAQ,CAACC,aAAa,CAACH,SAAS,CAAqB;IAC1G,IAAI,CAACI,MAAM,CAAC,CAAC;EACjB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACIC,IAAIA,CAAA,EAAS;IACT,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB;IACAvB,QAAQ,CAACwB,sBAAsB,CAAC,IAAI,CAACP,SAAS,CAAC;IAC/C,IAAI,IAAI,CAACA,SAAS,EAAE;MAChB,IAAI,CAACA,SAAS,CAACQ,SAAS,GAAG,EAAE;IACjC;EACJ;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACIJ,MAAMA,CAAA,EAAG;IACL,MAAM,IAAIK,KAAK,CAAC,gBAAgB,CAAC;EACrC;EAYA;AACJ;AACA;AACA;AACA;AACA;EACIC,YAAYA,CAAA,EAAQ;IAChB,OAAO,IAAI,CAAClB,SAAS;EACzB;;EAEA;AACJ;AACA;AACA;AACA;AACA;EACImB,UAAUA,CAAA,EAAS;IACf,MAAMnB,SAAS,GAAG,IAAI,CAACkB,YAAY,CAAC,CAAC;IACrC,IAAIlB,SAAS,IAAI,OAAOA,SAAS,CAACmB,UAAU,KAAK,UAAU,EAAE;MACzDnB,SAAS,CAACmB,UAAU,CAAC,CAAC;IAC1B;EACJ;EAWA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI;EACAjB,IAAIA,CAACkB,SAAiB,EAAEnB,IAAS,EAAW;IACxC,IAAI;MACA,OAAO,KAAK,CAACC,IAAI,CAACkB,SAAS,EAAEnB,IAAI,CAAC;IACtC,CAAC,CAAC,OAAOoB,CAAC,EAAE;MACR;IAAA;IAGJ,OAAO,KAAK;EAChB;AACJ;AAEA,eAAe3B,UAAU","ignoreList":[]}
|