box-ui-elements 24.0.0-beta.7 → 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.
Files changed (102) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/openwith.js +1 -1
  3. package/dist/picker.js +1 -1
  4. package/dist/preview.js +1 -1
  5. package/dist/sharing.js +1 -1
  6. package/dist/sidebar.js +1 -1
  7. package/dist/uploader.js +1 -1
  8. package/es/constants.js +3 -1
  9. package/es/constants.js.flow +5 -0
  10. package/es/constants.js.map +1 -1
  11. package/es/elements/content-explorer/ContentExplorer.js +3 -2
  12. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  13. package/es/elements/content-explorer/MetadataQueryAPIHelper.js +3 -11
  14. package/es/elements/content-explorer/MetadataQueryAPIHelper.js.map +1 -1
  15. package/es/elements/content-explorer/MetadataQueryBuilder.js +13 -23
  16. package/es/elements/content-explorer/MetadataQueryBuilder.js.map +1 -1
  17. package/es/elements/content-explorer/constants.js +0 -1
  18. package/es/elements/content-explorer/constants.js.map +1 -1
  19. package/es/elements/content-explorer/utils.js +5 -10
  20. package/es/elements/content-explorer/utils.js.map +1 -1
  21. package/es/elements/content-open-with/ContentOpenWith.js +3 -2
  22. package/es/elements/content-open-with/ContentOpenWith.js.flow +2 -0
  23. package/es/elements/content-open-with/ContentOpenWith.js.map +1 -1
  24. package/es/elements/content-picker/ContentPicker.js +3 -2
  25. package/es/elements/content-picker/ContentPicker.js.flow +2 -0
  26. package/es/elements/content-picker/ContentPicker.js.map +1 -1
  27. package/es/elements/content-preview/ContentPreview.js +3 -2
  28. package/es/elements/content-preview/ContentPreview.js.flow +2 -0
  29. package/es/elements/content-preview/ContentPreview.js.map +1 -1
  30. package/es/elements/content-sharing/ContentSharing.js +3 -2
  31. package/es/elements/content-sharing/ContentSharing.js.flow +2 -1
  32. package/es/elements/content-sharing/ContentSharing.js.map +1 -1
  33. package/es/elements/content-sidebar/ContentSidebar.js +3 -2
  34. package/es/elements/content-sidebar/ContentSidebar.js.flow +7 -1
  35. package/es/elements/content-sidebar/ContentSidebar.js.map +1 -1
  36. package/es/elements/content-uploader/ContentUploader.js +3 -2
  37. package/es/elements/content-uploader/ContentUploader.js.map +1 -1
  38. package/es/elements/wrappers/ES6Wrapper.js +0 -1
  39. package/es/elements/wrappers/ES6Wrapper.js.flow +0 -3
  40. package/es/elements/wrappers/ES6Wrapper.js.map +1 -1
  41. package/es/src/elements/content-explorer/constants.d.ts +0 -1
  42. package/es/src/elements/content-explorer/utils.d.ts +1 -2
  43. package/i18n/bn-IN.js +5 -5
  44. package/i18n/bn-IN.properties +5 -5
  45. package/i18n/da-DK.js +5 -5
  46. package/i18n/da-DK.properties +5 -5
  47. package/i18n/de-DE.js +6 -6
  48. package/i18n/de-DE.properties +6 -6
  49. package/i18n/en-AU.js +1 -1
  50. package/i18n/en-AU.properties +1 -1
  51. package/i18n/en-GB.js +1 -1
  52. package/i18n/en-GB.properties +1 -1
  53. package/i18n/es-419.js +6 -6
  54. package/i18n/es-419.properties +6 -6
  55. package/i18n/es-ES.js +6 -6
  56. package/i18n/es-ES.properties +6 -6
  57. package/i18n/fi-FI.js +5 -5
  58. package/i18n/fi-FI.properties +5 -5
  59. package/i18n/fr-CA.js +5 -5
  60. package/i18n/fr-CA.properties +5 -5
  61. package/i18n/fr-FR.js +5 -5
  62. package/i18n/fr-FR.properties +5 -5
  63. package/i18n/hi-IN.js +5 -5
  64. package/i18n/hi-IN.properties +5 -5
  65. package/i18n/it-IT.js +5 -5
  66. package/i18n/it-IT.properties +5 -5
  67. package/i18n/ko-KR.js +5 -5
  68. package/i18n/ko-KR.properties +5 -5
  69. package/i18n/nb-NO.js +5 -5
  70. package/i18n/nb-NO.properties +5 -5
  71. package/i18n/nl-NL.js +5 -5
  72. package/i18n/nl-NL.properties +5 -5
  73. package/i18n/pl-PL.js +5 -5
  74. package/i18n/pl-PL.properties +5 -5
  75. package/i18n/pt-BR.js +5 -5
  76. package/i18n/pt-BR.properties +5 -5
  77. package/i18n/ru-RU.js +6 -6
  78. package/i18n/ru-RU.properties +6 -6
  79. package/i18n/sv-SE.js +5 -5
  80. package/i18n/sv-SE.properties +5 -5
  81. package/i18n/tr-TR.js +6 -6
  82. package/i18n/tr-TR.properties +6 -6
  83. package/i18n/zh-CN.js +5 -5
  84. package/i18n/zh-CN.properties +5 -5
  85. package/i18n/zh-TW.js +5 -5
  86. package/i18n/zh-TW.properties +5 -5
  87. package/package.json +3 -3
  88. package/src/constants.js +5 -0
  89. package/src/elements/content-explorer/ContentExplorer.tsx +2 -0
  90. package/src/elements/content-explorer/MetadataQueryAPIHelper.ts +3 -9
  91. package/src/elements/content-explorer/MetadataQueryBuilder.ts +14 -26
  92. package/src/elements/content-explorer/__tests__/MetadataQueryAPIHelper.test.ts +41 -14
  93. package/src/elements/content-explorer/__tests__/MetadataQueryBuilder.test.ts +13 -0
  94. package/src/elements/content-explorer/constants.ts +0 -2
  95. package/src/elements/content-explorer/utils.ts +5 -14
  96. package/src/elements/content-open-with/ContentOpenWith.js +2 -0
  97. package/src/elements/content-picker/ContentPicker.js +2 -0
  98. package/src/elements/content-preview/ContentPreview.js +2 -0
  99. package/src/elements/content-sharing/ContentSharing.js +2 -1
  100. package/src/elements/content-sidebar/ContentSidebar.js +7 -1
  101. package/src/elements/content-uploader/ContentUploader.tsx +2 -0
  102. package/src/elements/wrappers/ES6Wrapper.js +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ContentPreview.js","names":["React","classNames","cloneDeep","flow","getProp","isEqual","noop","omit","setProp","throttle","uniqueid","Measure","withRouter","decode","makeResponsive","withNavRouter","Internationalize","AsyncLoad","ThemingStyles","TokenService","isInputElement","focus","getTypedFileId","withAnnotations","withAnnotatorContext","withErrorBoundary","withLogger","PREVIEW_FIELDS_TO_FETCH","mark","withFeatureConsumer","withFeatureProvider","withBlueprintModernization","EVENT_JS_READY","ReloadNotification","API","APIContext","PreviewHeader","PreviewMask","PreviewNavigation","Providers","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_PREVIEW_VERSION","DEFAULT_LOCALE","DEFAULT_PATH_STATIC_PREVIEW","CLIENT_NAME_CONTENT_PREVIEW","ORIGIN_PREVIEW","ORIGIN_CONTENT_PREVIEW","ERROR_CODE_UNKNOWN","startAtTypes","page","InvalidIdError","Error","PREVIEW_LOAD_METRIC_EVENT","MARK_NAME_JS_READY","LoadableSidebar","loader","ContentPreview","PureComponent","constructor","props","_defineProperty","createRef","canPrint","error","undefined","isLoading","isReloadNotificationVisible","isThumbnailSidebarOpen","_ref","rest","_objectWithoutProperties","_excluded","code","onError","setState","_objectSpread","previewMetrics","logger","event_name","metrics","totalFetchFileTime","getTotalFileFetchTime","totalTime","value","file_info_time","onPreviewMetric","data","onLoad","collection","currentIndex","getFileIndex","filesToPrefetch","slice","previewTimeMetrics","loadData","totalPreviewMetrics","addFetchFileTimeToPreviewMetrics","time","focusPreview","preview","length","prefetch","handleCanPrint","_this$props","advancedContentInsights","annotatorState","activeAnnotationId","enableThumbnailsSidebar","features","fileOptions","onAnnotatorEvent","onAnnotator","onContentInsightsEventReport","previewExperiences","showAnnotationsControls","token","tokenOrTokenFunction","_excluded2","file","selectedVersion","startAt","state","isPreviewLibraryLoaded","fileId","getFileId","currentFileId","fileOpts","typedId","getReadTokens","id","previewOptions","container","header","headerElement","experiences","showAnnotations","canViewAnnotations","showDownload","canDownload","showLoading","showProgress","skipServerUpdate","useHotkeys","Preview","global","Box","addListener","onPreviewLoad","onPreviewError","updateFileCache","show","Object","keys","stagedFile","initialState","getCurrentViewer","resize","fetchFileEndTime","performance","now","currentFile","isExistingFile","isWatermarked","file_version","sha1","fileError","errorCode","message","getPreview","viewer","isLoaded","isDestroyed","newIndex","navigateToIndex","onDownload","download","print","getViewer","isPreviewing","CLASS_NAVIGATION_VISIBILITY","clearTimeout","mouseMoveTimeoutID","previewContainer","classList","remove","allowNavigationArrows","add","setTimeout","event","consumed","key","target","onKeydown","nativeEvent","navigateLeft","navigateRight","preventDefault","stopPropagation","version","additionalVersionInfo","onVersionChange","updateVersionToCurrent","location","annotationFileVersionId","currentFileVersionId","currentPreviewFileVersionId","unit","type","emit","pageNumber","getThumbnail","apiHost","cache","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","api","clientName","prevFileIdProp","onReadyMetric","endMarkName","componentWillUnmount","destroy","destroyPreview","shouldReset","onPreviewDestroy","removeAllListeners","clearCache","componentDidMount","loadStylesheet","loadScript","fetchFile","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","prevFeatures","prevPreviewExperiences","prevToken","hasFileIdChanged","hasTokenChanged","haveAdvancedContentInsightsChanged","haveExperiencesChanged","shouldLoadPreview","loadPreview","updatePreviewToken","updateExperiences","updateContentInsightsOptions","shouldReload","updateToken","prevFile","prevSelectedVersion","prevSelectedVersionId","selectedVersionId","prevFileVersionId","fileVersionId","isPreviousCurrent","isSelectedCurrent","getBasePath","asset","staticHost","staticPath","previewLibraryVersion","path","suffix","endsWith","head","document","url","querySelector","link","createElement","rel","href","appendChild","previewScript","script","src","addEventListener","autoFocus","getInnerRef","activeElement","updatePreviewCacheAndPrefetch","files","typedIds","map","cacheTokens","forEach","refreshCache","fetchFileStartTime","Math","round","rendering","conversion","preload","totalConversion","totalRendering","totalPreload","total","isFileDownloadable","canAnnotate","isFileAnnotatable","hasViewAllPermissions","hasViewSelfPermissions","successCallback","errorCallback","fetchOptions","getFileAPI","getFile","fetchFileSuccessCallback","fetchFileErrorCallback","fields","findIndex","item","index","onNavigate","fileOrId","refreshSidebar","current","contentSidebar","refresh","render","messages","className","contentAnswersProps","contentOpenWithProps","contentSidebarProps","hasHeader","hasProviders","history","isLarge","isVeryLarge","logoUrl","onClose","measureRef","theme","styleClassName","currentExtension","currentVersionId","onHeaderClose","Provider","ref","onKeyDown","tabIndex","onPrint","onMouseMove","containerRef","bounds","onResize","previewRef","extension","onNavigateLeft","onNavigateRight","_extends","getCache","isDefaultOpen","onAnnotationSelect","handleAnnotationSelect","closeReloadNotification","onClick","loadFileFromStage","appHost","ContentPreviewComponent"],"sources":["../../../src/elements/content-preview/ContentPreview.js"],"sourcesContent":["/**\n * @flow\n * @file Content Preview Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport noop from 'lodash/noop';\nimport omit from 'lodash/omit';\nimport setProp from 'lodash/set';\nimport throttle from 'lodash/throttle';\nimport uniqueid from 'lodash/uniqueId';\nimport Measure from 'react-measure';\nimport { withRouter } from 'react-router-dom';\nimport type { ContextRouter } from 'react-router-dom';\nimport { decode } from '../../utils/keys';\nimport makeResponsive from '../common/makeResponsive';\nimport { withNavRouter } from '../common/nav-router';\nimport Internationalize from '../common/Internationalize';\nimport AsyncLoad from '../common/async-load';\n// $FlowFixMe TypeScript file\nimport ThemingStyles from '../common/theming';\nimport TokenService from '../../utils/TokenService';\nimport { isInputElement, focus } from '../../utils/dom';\nimport { getTypedFileId } from '../../utils/file';\nimport { withAnnotations, withAnnotatorContext } from '../common/annotator-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withLogger } from '../common/logger';\nimport { PREVIEW_FIELDS_TO_FETCH } from '../../utils/fields';\nimport { mark } from '../../utils/performance';\nimport { withFeatureConsumer, withFeatureProvider } from '../common/feature-checking';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport ReloadNotification from './ReloadNotification';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport PreviewHeader from './preview-header';\nimport PreviewMask from './PreviewMask';\nimport PreviewNavigation from './PreviewNavigation';\nimport Providers from '../common/Providers';\nimport {\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_APP,\n DEFAULT_HOSTNAME_STATIC,\n DEFAULT_PREVIEW_VERSION,\n DEFAULT_LOCALE,\n DEFAULT_PATH_STATIC_PREVIEW,\n CLIENT_NAME_CONTENT_PREVIEW,\n ORIGIN_PREVIEW,\n ORIGIN_CONTENT_PREVIEW,\n ERROR_CODE_UNKNOWN,\n} from '../../constants';\nimport type { Annotation } from '../../common/types/feed';\nimport type { TargetingApi } from '../../features/targeting/types';\nimport type { ErrorType, AdditionalVersionInfo } from '../common/flowTypes';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { RequestOptions, ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { StringMap, Token, BoxItem, BoxItemVersion } from '../../common/types/core';\nimport type { VersionChangeCallback } from '../content-sidebar/versions';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport type { WithAnnotationsProps, WithAnnotatorContextProps } from '../common/annotator-context';\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 './ContentPreview.scss';\n\ntype StartAt = {\n unit: 'pages' | 'seconds',\n value: number,\n};\n\ntype Props = {\n advancedContentInsights: {\n isActive: boolean,\n ownerEId: number,\n userId: number,\n },\n apiHost: string,\n appHost: string,\n autoFocus: boolean,\n boxAnnotations?: Object,\n cache?: APICache,\n canDownload?: boolean,\n className: string,\n collection: Array<string | BoxItem>,\n contentAnswersProps: ContentAnswersProps,\n contentOpenWithProps: ContentOpenWithProps,\n contentSidebarProps: ContentSidebarProps,\n enableThumbnailsSidebar: boolean,\n features?: FeatureConfig,\n fileId?: string,\n fileOptions?: Object,\n getInnerRef: () => ?HTMLElement,\n hasHeader?: boolean,\n hasProviders?: boolean,\n isLarge: boolean,\n isVeryLarge?: boolean,\n language: string,\n logoUrl?: string,\n measureRef: Function,\n messages?: StringMap,\n onAnnotator: Function,\n onAnnotatorEvent: Function,\n onClose?: Function,\n onContentInsightsEventReport: Function,\n onDownload: Function,\n onLoad: Function,\n onNavigate: Function,\n onVersionChange: VersionChangeCallback,\n previewExperiences?: {\n [name: string]: TargetingApi,\n },\n previewLibraryVersion: string,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showAnnotations?: boolean,\n showAnnotationsControls?: boolean,\n staticHost: string,\n staticPath: string,\n theme?: Theme,\n token: Token,\n useHotkeys: boolean,\n} & ErrorContextProps &\n WithLoggerProps &\n WithAnnotationsProps &\n WithAnnotatorContextProps &\n ContextRouter;\n\ntype State = {\n canPrint?: boolean,\n currentFileId?: string,\n error?: ErrorType,\n file?: BoxItem,\n isLoading: boolean,\n isReloadNotificationVisible: boolean,\n isThumbnailSidebarOpen: boolean,\n prevFileIdProp?: string, // the previous value of the \"fileId\" prop. Needed to implement getDerivedStateFromProps\n selectedVersion?: BoxItemVersion,\n startAt?: StartAt,\n};\n\n// Emitted by preview's 'load' event\ntype PreviewTimeMetrics = {\n conversion: number,\n preload?: number,\n rendering: number,\n total: number,\n};\n\n// Emitted by preview's 'preview_metric' event\ntype PreviewMetrics = {\n browser_name: string,\n client_version: string,\n content_type: string, // Sum of all available load times.\n convert_time: number,\n download_response_time: number,\n error?: Object,\n event_name?: string,\n extension: string,\n file_id: string,\n file_info_time: number,\n file_version_id: string,\n full_document_load_time: number,\n locale: string,\n logger_session_id: string,\n rep_type: string,\n timestamp: string,\n value: number,\n};\n\ntype PreviewLibraryError = {\n error: ErrorType,\n};\n\nconst startAtTypes = {\n page: 'pages',\n};\nconst InvalidIdError = new Error('Invalid id for Preview!');\nconst PREVIEW_LOAD_METRIC_EVENT = 'load';\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_PREVIEW}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nconst LoadableSidebar = AsyncLoad({\n loader: () => import(/* webpackMode: \"lazy\", webpackChunkName: \"content-sidebar\" */ '../content-sidebar'),\n});\n\nclass ContentPreview extends React.PureComponent<Props, State> {\n id: string;\n\n props: Props;\n\n state: State;\n\n preview: any;\n\n api: API;\n\n // Defines a generic type for ContentSidebar, since an import would interfere with code splitting\n contentSidebar: { current: null | { refresh: Function } } = React.createRef();\n\n previewContainer: ?HTMLDivElement;\n\n mouseMoveTimeoutID: TimeoutID;\n\n rootElement: HTMLElement;\n\n stagedFile: ?BoxItem;\n\n updateVersionToCurrent: ?() => void;\n\n initialState: State = {\n canPrint: false,\n error: undefined,\n isLoading: true,\n isReloadNotificationVisible: false,\n isThumbnailSidebarOpen: false,\n };\n\n static defaultProps = {\n apiHost: DEFAULT_HOSTNAME_API,\n appHost: DEFAULT_HOSTNAME_APP,\n autoFocus: false,\n canDownload: true,\n className: '',\n collection: [],\n contentAnswersProps: {},\n contentOpenWithProps: {},\n contentSidebarProps: {},\n enableThumbnailsSidebar: false,\n hasHeader: false,\n language: DEFAULT_LOCALE,\n onAnnotator: noop,\n onAnnotatorEvent: noop,\n onContentInsightsEventReport: noop,\n onDownload: noop,\n onError: noop,\n onLoad: noop,\n onNavigate: noop,\n onPreviewDestroy: noop,\n onVersionChange: noop,\n previewLibraryVersion: DEFAULT_PREVIEW_VERSION,\n showAnnotations: false,\n staticHost: DEFAULT_HOSTNAME_STATIC,\n staticPath: DEFAULT_PATH_STATIC_PREVIEW,\n useHotkeys: true,\n };\n\n /**\n * @property {number}\n */\n fetchFileEndTime: ?number;\n\n /**\n * @property {number}\n */\n fetchFileStartTime: ?number;\n\n /**\n * [constructor]\n *\n * @return {ContentPreview}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n fileId,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.id = uniqueid('bcpr_');\n this.api = new API({\n apiHost,\n cache,\n clientName: CLIENT_NAME_CONTENT_PREVIEW,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n });\n this.state = {\n ...this.initialState,\n currentFileId: fileId,\n // eslint-disable-next-line react/no-unused-state\n prevFileIdProp: fileId,\n };\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n }\n\n /**\n * Cleanup\n *\n * @return {void}\n */\n componentWillUnmount(): void {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n this.destroyPreview();\n }\n\n /**\n * Cleans up the preview instance\n */\n destroyPreview(shouldReset: boolean = true) {\n const { onPreviewDestroy } = this.props;\n if (this.preview) {\n this.preview.destroy();\n this.preview.removeAllListeners();\n this.preview = undefined;\n\n onPreviewDestroy(shouldReset);\n }\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 * Once the component mounts, load Preview assets and fetch file info.\n *\n * @return {void}\n */\n componentDidMount(): void {\n this.loadStylesheet();\n this.loadScript();\n\n this.fetchFile(this.state.currentFileId);\n this.focusPreview();\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n const { fileId } = props;\n\n if (fileId !== state.prevFileIdProp) {\n return {\n currentFileId: fileId,\n prevFileIdProp: fileId,\n };\n }\n\n return null;\n }\n\n /**\n * After component updates, load Preview if appropriate.\n *\n * @return {void}\n */\n componentDidUpdate(prevProps: Props, prevState: State): void {\n const { features, previewExperiences, token } = this.props;\n const { features: prevFeatures, previewExperiences: prevPreviewExperiences, token: prevToken } = prevProps;\n const { currentFileId } = this.state;\n const hasFileIdChanged = prevState.currentFileId !== currentFileId;\n const hasTokenChanged = prevToken !== token;\n const haveAdvancedContentInsightsChanged = !isEqual(\n prevFeatures?.advancedContentInsights,\n features?.advancedContentInsights,\n );\n const haveExperiencesChanged = prevPreviewExperiences !== previewExperiences;\n\n if (hasFileIdChanged) {\n this.destroyPreview();\n this.setState({ isLoading: true, selectedVersion: undefined });\n this.fetchFile(currentFileId);\n } else if (this.shouldLoadPreview(prevState)) {\n this.destroyPreview(false);\n this.setState({ isLoading: true });\n this.loadPreview();\n } else if (hasTokenChanged) {\n this.updatePreviewToken();\n }\n\n if (haveExperiencesChanged && this.preview && this.preview.updateExperiences) {\n this.preview.updateExperiences(previewExperiences);\n }\n\n if (\n this.preview?.updateContentInsightsOptions &&\n features?.advancedContentInsights &&\n haveAdvancedContentInsightsChanged\n ) {\n this.preview.updateContentInsightsOptions(features?.advancedContentInsights);\n }\n }\n\n /**\n * Updates the access token used by preview library\n *\n * @param {boolean} shouldReload - true if preview should be reloaded\n */\n updatePreviewToken(shouldReload: boolean = false) {\n if (this.preview) {\n this.preview.updateToken(this.props.token, shouldReload);\n }\n }\n\n /**\n * Returns whether or not preview should be loaded.\n *\n * @param {State} prevState - Previous state\n * @return {boolean}\n */\n shouldLoadPreview(prevState: State): boolean {\n const { file, selectedVersion }: State = this.state;\n const { file: prevFile, selectedVersion: prevSelectedVersion }: State = prevState;\n const prevSelectedVersionId = getProp(prevSelectedVersion, 'id');\n const selectedVersionId = getProp(selectedVersion, 'id');\n const prevFileVersionId = getProp(prevFile, 'file_version.id');\n const fileVersionId = getProp(file, 'file_version.id');\n let loadPreview = false;\n\n if (selectedVersionId !== prevSelectedVersionId) {\n const isPreviousCurrent = fileVersionId === prevSelectedVersionId || !prevSelectedVersionId;\n const isSelectedCurrent = fileVersionId === selectedVersionId || !selectedVersionId;\n\n // Load preview if the user has selected a non-current version of the file\n loadPreview = !isPreviousCurrent || !isSelectedCurrent;\n } else if (fileVersionId && prevFileVersionId) {\n // Load preview if the file's current version ID has changed\n loadPreview = fileVersionId !== prevFileVersionId;\n } else {\n // Load preview if file object has newly been populated in state\n loadPreview = !prevFile && !!file;\n }\n\n return loadPreview;\n }\n\n /**\n * Returns preview asset urls\n *\n * @return {string} base url\n */\n getBasePath(asset: string): string {\n const { staticHost, staticPath, language, previewLibraryVersion }: Props = this.props;\n const path: string = `${staticPath}/${previewLibraryVersion}/${language}/${asset}`;\n const suffix: string = staticHost.endsWith('/') ? path : `/${path}`;\n return `${staticHost}${suffix}`;\n }\n\n /**\n * Determines if preview assets are loaded\n *\n * @return {boolean} true if preview is loaded\n */\n isPreviewLibraryLoaded(): boolean {\n return !!global.Box && !!global.Box.Preview;\n }\n\n /**\n * Loads external css by appending a <link> element\n *\n * @return {void}\n */\n loadStylesheet(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.css');\n\n if (!head || head.querySelector(`link[rel=\"stylesheet\"][href=\"${url}\"]`)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = url;\n head.appendChild(link);\n }\n\n /**\n * Loads external script by appending a <script> element\n *\n * @return {void}\n */\n loadScript(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.js');\n\n if (!head || this.isPreviewLibraryLoaded()) {\n return;\n }\n\n const previewScript = head.querySelector(`script[src=\"${url}\"]`);\n if (previewScript) {\n return;\n }\n\n const script = document.createElement('script');\n script.src = url;\n script.addEventListener('load', this.loadPreview);\n head.appendChild(script);\n }\n\n /**\n * Focuses the preview on load.\n *\n * @return {void}\n */\n focusPreview() {\n const { autoFocus, getInnerRef }: Props = this.props;\n if (autoFocus && !isInputElement(document.activeElement)) {\n focus(getInnerRef());\n }\n }\n\n /**\n * Updates preview cache and prefetches a file\n *\n * @param {BoxItem} file - file to prefetch\n * @return {void}\n */\n updatePreviewCacheAndPrefetch(file: BoxItem, token: Token): void {\n if (!this.preview || !file || !file.id) {\n return;\n }\n\n this.preview.updateFileCache([file]);\n this.preview.prefetch({ fileId: file.id, token });\n }\n\n /**\n * Gets the file id\n *\n * @param {string|BoxItem} file - box file or file id\n * @return {string} file id\n */\n getFileId(file?: string | BoxItem): string {\n if (typeof file === 'string') {\n return file;\n }\n\n if (typeof file === 'object' && !!file.id) {\n return file.id;\n }\n\n throw InvalidIdError;\n }\n\n /**\n * Prefetches the next few preview files if any\n *\n * @param {Array<string|BoxItem>} files - files to prefetch\n * @return {void}\n */\n async prefetch(files: Array<string | BoxItem>): Promise<void> {\n const { token }: Props = this.props;\n const typedIds: string[] = files.map(file => getTypedFileId(this.getFileId(file)));\n await TokenService.cacheTokens(typedIds, token);\n files.forEach(file => {\n const fileId = this.getFileId(file);\n this.fetchFile(fileId, noop, noop, {\n refreshCache: false,\n });\n });\n }\n\n /**\n * Calculates the total file fetch time\n *\n * @return {number} the total fetch time\n */\n getTotalFileFetchTime(): number {\n if (!this.fetchFileStartTime || !this.fetchFileEndTime) {\n return 0;\n }\n\n return Math.round(this.fetchFileEndTime - this.fetchFileStartTime);\n }\n\n /**\n * Handler for 'preview_error' preview event\n *\n * @param {PreviewLibraryError} previewError - the error data emitted from preview\n * @return {void}\n */\n onPreviewError = ({ error, ...rest }: PreviewLibraryError): void => {\n const { code = ERROR_CODE_UNKNOWN } = error;\n const { onError } = this.props;\n\n // In case of error, there should be no thumbnail sidebar to account for\n this.setState({ isLoading: false, isThumbnailSidebarOpen: false });\n\n onError(\n error,\n code,\n {\n ...rest,\n error,\n },\n ORIGIN_PREVIEW,\n );\n };\n\n /**\n * Event handler 'preview_metric' which also adds in the file fetch time if it's a load event\n *\n * @param {Object} previewMetrics - the object emitted by 'preview_metric'\n * @return {void}\n */\n onPreviewMetric = (previewMetrics: PreviewMetrics): void => {\n const { logger } = this.props;\n const { event_name } = previewMetrics;\n let metrics = {\n ...previewMetrics,\n };\n\n // We need to add in the total file fetch time to the file_info_time and value (total)\n // as preview does not do the files call\n if (event_name === PREVIEW_LOAD_METRIC_EVENT) {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const totalTime = (previewMetrics.value || 0) + totalFetchFileTime;\n\n // If an unnatural load time occurs or is invalid, don't log a load event\n if (!totalTime) {\n return;\n }\n\n metrics = {\n ...previewMetrics,\n file_info_time: totalFetchFileTime,\n value: totalTime,\n };\n }\n\n logger.onPreviewMetric(metrics);\n };\n\n /**\n * Adds in the file fetch time to the preview metrics\n *\n * @param {Object} previewTimeMetrics - the preview time metrics\n * @return {Object} the preview time metrics merged with the files call time\n */\n addFetchFileTimeToPreviewMetrics(previewTimeMetrics: PreviewTimeMetrics): PreviewTimeMetrics {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const { rendering, conversion, preload } = previewTimeMetrics;\n\n // We need to add in the total file fetch time to the rendering and total as preview\n // does not do the files call. In the case the file is in the process of\n // being converted, we need to add to conversion instead of the render\n let totalConversion = conversion;\n let totalRendering = rendering;\n let totalPreload = preload;\n if (conversion) {\n totalConversion += totalFetchFileTime;\n } else {\n totalRendering += totalFetchFileTime;\n }\n\n if (totalPreload) {\n // Preload is optional, depending on file type\n totalPreload += totalFetchFileTime;\n }\n\n const previewMetrics = {\n conversion: totalConversion,\n rendering: totalRendering,\n total: totalRendering + totalConversion,\n preload: totalPreload,\n };\n\n return previewMetrics;\n }\n\n /**\n * onLoad function for preview\n *\n * @return {void}\n */\n onPreviewLoad = (data: Object): void => {\n const { onLoad, collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const filesToPrefetch = collection.slice(currentIndex + 1, currentIndex + 5);\n const previewTimeMetrics = getProp(data, 'metrics.time');\n let loadData = data;\n\n if (previewTimeMetrics) {\n const totalPreviewMetrics = this.addFetchFileTimeToPreviewMetrics(previewTimeMetrics);\n loadData = {\n ...loadData,\n metrics: {\n ...loadData.metrics,\n time: totalPreviewMetrics,\n },\n };\n }\n\n onLoad(loadData);\n\n this.setState({ isLoading: false });\n this.focusPreview();\n\n if (this.preview && filesToPrefetch.length) {\n this.prefetch(filesToPrefetch);\n }\n\n this.handleCanPrint();\n };\n\n /**\n * Returns whether file can be downloaded based on file properties, permissions, and user-defined options.\n *\n * @return {boolean}\n */\n canDownload(): boolean {\n const { canDownload }: Props = this.props;\n const { file }: State = this.state;\n const isFileDownloadable =\n getProp(file, 'permissions.can_download', false) && getProp(file, 'is_download_available', false);\n return isFileDownloadable && !!canDownload;\n }\n\n /**\n * Returns whether file can be annotated based on permissions\n *\n * @return {boolean}\n */\n canAnnotate(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const isFileAnnotatable = getProp(file, 'permissions.can_annotate', false);\n return !!showAnnotations && isFileAnnotatable;\n }\n\n /**\n * Returns whether a preview should render annotations based on permissions\n *\n * @return {boolean}\n */\n canViewAnnotations(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const hasViewAllPermissions = getProp(file, 'permissions.can_view_annotations_all', false);\n const hasViewSelfPermissions = getProp(file, 'permissions.can_view_annotations_self', false);\n return !!showAnnotations && (this.canAnnotate() || hasViewAllPermissions || hasViewSelfPermissions);\n }\n\n handleCanPrint() {\n const preview = this.getPreview();\n this.setState({ canPrint: !!preview && (!preview.canPrint || preview.canPrint()) });\n }\n\n /**\n * Loads preview in the component using the preview library.\n *\n * @return {void}\n */\n loadPreview = async (): Promise<void> => {\n const {\n advancedContentInsights, // will be removed once preview package will be updated to utilize feature flip for ACI\n annotatorState: { activeAnnotationId } = {},\n enableThumbnailsSidebar,\n features,\n fileOptions,\n onAnnotatorEvent,\n onAnnotator,\n onContentInsightsEventReport,\n previewExperiences,\n showAnnotationsControls,\n token: tokenOrTokenFunction,\n ...rest\n }: Props = this.props;\n const { file, selectedVersion, startAt }: State = this.state;\n\n if (!this.isPreviewLibraryLoaded() || !file || !tokenOrTokenFunction) {\n return;\n }\n\n const fileId = this.getFileId(file);\n\n if (fileId !== this.state.currentFileId) {\n return;\n }\n\n const fileOpts = { ...fileOptions };\n const token = typedId => TokenService.getReadTokens(typedId, tokenOrTokenFunction);\n\n if (selectedVersion) {\n setProp(fileOpts, [fileId, 'fileVersionId'], selectedVersion.id);\n setProp(fileOpts, [fileId, 'currentFileVersionId'], getProp(file, 'file_version.id'));\n }\n\n if (activeAnnotationId) {\n setProp(fileOpts, [fileId, 'annotations', 'activeId'], activeAnnotationId);\n }\n\n if (startAt) {\n setProp(fileOpts, [fileId, 'startAt'], startAt);\n }\n\n const previewOptions = {\n advancedContentInsights, // will be removed once preview package will be updated to utilize feature flip for ACI\n container: `#${this.id} .bcpr-content`,\n enableThumbnailsSidebar,\n features,\n fileOptions: fileOpts,\n header: 'none',\n headerElement: `#${this.id} .bcpr-PreviewHeader`,\n experiences: previewExperiences,\n showAnnotations: this.canViewAnnotations(),\n showAnnotationsControls,\n showDownload: this.canDownload(),\n showLoading: false,\n showProgress: false,\n skipServerUpdate: true,\n useHotkeys: false,\n };\n const { Preview } = global.Box;\n this.preview = new Preview();\n this.preview.addListener('load', this.onPreviewLoad);\n this.preview.addListener('preview_error', this.onPreviewError);\n this.preview.addListener('preview_metric', this.onPreviewMetric);\n this.preview.addListener('thumbnailsOpen', () => this.setState({ isThumbnailSidebarOpen: true }));\n this.preview.addListener('thumbnailsClose', () => this.setState({ isThumbnailSidebarOpen: false }));\n\n if (showAnnotationsControls) {\n this.preview.addListener('annotator_create', onAnnotator);\n }\n\n this.preview.updateFileCache([file]);\n this.preview.show(file.id, token, {\n ...previewOptions,\n ...omit(rest, Object.keys(previewOptions)),\n });\n if (advancedContentInsights) {\n this.preview.addListener('advanced_insights_report', onContentInsightsEventReport);\n }\n };\n\n /**\n * Updates preview file from temporary staged file.\n *\n * @return {void}\n */\n loadFileFromStage = () => {\n if (this.stagedFile) {\n this.setState({ ...this.initialState, file: this.stagedFile }, () => {\n this.stagedFile = undefined;\n });\n }\n };\n\n /**\n * Removes the reload notification\n *\n * @return {void}\n */\n closeReloadNotification = () => {\n this.setState({ isReloadNotificationVisible: false });\n };\n\n /**\n * Tells the preview to resize\n *\n * @return {void}\n */\n onResize = (): void => {\n if (this.preview && this.preview.getCurrentViewer()) {\n this.preview.resize();\n }\n };\n\n /**\n * File fetch success callback\n *\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n this.fetchFileEndTime = performance.now();\n\n const { file: currentFile }: State = this.state;\n const isExistingFile = currentFile ? currentFile.id === file.id : false;\n const isWatermarked = getProp(file, 'watermark_info.is_watermarked', false);\n\n // If the file is watermarked or if its a new file, then update the state\n // In this case preview should reload without prompting the user\n if (isWatermarked || !isExistingFile) {\n this.setState({ ...this.initialState, file });\n // $FlowFixMe file version and sha1 should exist at this point\n } else if (currentFile.file_version.sha1 !== file.file_version.sha1) {\n // If we are already prevewing the file that got updated then show the\n // user a notification to reload the file only if its sha1 changed\n this.stagedFile = file;\n this.setState({\n ...this.initialState,\n isReloadNotificationVisible: true,\n });\n }\n };\n\n /**\n * File fetch error callback\n *\n * @return {void}\n */\n fetchFileErrorCallback = (fileError: ElementsXhrError, code: string): void => {\n const { onError } = this.props;\n const errorCode = fileError.code || code;\n const error = {\n code: errorCode,\n message: fileError.message,\n };\n this.setState({ error, file: undefined, isLoading: false });\n onError(fileError, errorCode, {\n error: fileError,\n });\n };\n\n /**\n * Fetches a file\n *\n * @param {string} id file id\n * @param {Function|void} [successCallback] - Callback after file is fetched\n * @param {Function|void} [errorCallback] - Callback after error\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(\n id: ?string,\n successCallback?: Function,\n errorCallback?: Function,\n fetchOptions: RequestOptions = {},\n ): void {\n if (!id) {\n return;\n }\n\n this.fetchFileStartTime = performance.now();\n this.fetchFileEndTime = null;\n\n this.api\n .getFileAPI()\n .getFile(\n id,\n successCallback || this.fetchFileSuccessCallback,\n errorCallback || this.fetchFileErrorCallback,\n {\n ...fetchOptions,\n fields: PREVIEW_FIELDS_TO_FETCH,\n },\n );\n }\n\n /**\n * Returns the preview instance\n *\n * @return {Preview} current instance of preview\n */\n getPreview = (): any => {\n const { file }: State = this.state;\n if (!this.preview || !file) {\n return null;\n }\n\n return this.preview;\n };\n\n /**\n * Returns the viewer instance being used by preview.\n * This will let child components access the viewers.\n *\n * @return {Viewer} current instance of the preview viewer\n */\n getViewer = (): any => {\n const preview = this.getPreview();\n const viewer = preview ? preview.getCurrentViewer() : null;\n return viewer && viewer.isLoaded() && !viewer.isDestroyed() ? viewer : null;\n };\n\n /**\n * Finds the index of current file inside the collection\n *\n * @return {number} -1 if not indexed\n */\n getFileIndex() {\n const { currentFileId }: State = this.state;\n const { collection }: Props = this.props;\n if (!currentFileId || collection.length < 2) {\n return -1;\n }\n\n return collection.findIndex(item => {\n if (typeof item === 'string') {\n return item === currentFileId;\n }\n\n return item.id === currentFileId;\n });\n }\n\n /**\n * Shows a preview of a file at the specified index in the current collection.\n *\n * @public\n * @param {number} index - Index of file to preview\n * @return {void}\n */\n navigateToIndex(index: number) {\n const { collection, onNavigate }: Props = this.props;\n const { length } = collection;\n if (length < 2 || index < 0 || index > length - 1) {\n return;\n }\n\n const fileOrId = collection[index];\n const fileId = typeof fileOrId === 'object' ? fileOrId.id || '' : fileOrId;\n\n this.setState(\n {\n currentFileId: fileId,\n },\n () => {\n // Execute navigation callback\n onNavigate(fileId);\n },\n );\n }\n\n /**\n * Shows a preview of the previous file.\n *\n * @public\n * @return {void}\n */\n navigateLeft = () => {\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === 0 ? 0 : currentIndex - 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Shows a preview of the next file.\n *\n * @public\n * @return {void}\n */\n navigateRight = () => {\n const { collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === collection.length - 1 ? collection.length - 1 : currentIndex + 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Downloads file.\n *\n * @public\n * @return {void}\n */\n download = () => {\n const { onDownload }: Props = this.props;\n const { file }: State = this.state;\n if (this.preview) {\n this.preview.download();\n onDownload(cloneDeep(file));\n }\n };\n\n /**\n * Prints file.\n *\n * @public\n * @return {void}\n */\n print = () => {\n if (this.preview) {\n this.preview.print();\n }\n };\n\n /**\n * Mouse move handler that is throttled and show\n * the navigation arrows if applicable.\n *\n * @return {void}\n */\n onMouseMove = throttle(() => {\n const viewer = this.getViewer();\n const isPreviewing = !!viewer;\n const CLASS_NAVIGATION_VISIBILITY = 'bcpr-nav-is-visible';\n\n clearTimeout(this.mouseMoveTimeoutID);\n\n if (!this.previewContainer) {\n return;\n }\n\n // Always assume that navigation arrows will be hidden\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n\n // Only show it if either we aren't previewing or if we are then the viewer\n // is not blocking the show. If we are previewing then the viewer may choose\n // to not allow navigation arrows. This is mostly useful for videos since the\n // navigation arrows may interfere with the settings menu inside video player.\n if (this.previewContainer && (!isPreviewing || viewer.allowNavigationArrows())) {\n this.previewContainer.classList.add(CLASS_NAVIGATION_VISIBILITY);\n }\n\n this.mouseMoveTimeoutID = setTimeout(() => {\n if (this.previewContainer) {\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n }\n }, 1500);\n }, 1000);\n\n /**\n * Keyboard events\n *\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n const { useHotkeys }: Props = this.props;\n if (!useHotkeys) {\n return;\n }\n\n let consumed = false;\n const key = decode(event);\n const viewer = this.getViewer();\n\n // If focus was on an input or if the viewer doesn't exist\n // then don't bother doing anything further\n if (!key || !viewer || isInputElement(event.target)) {\n return;\n }\n\n if (typeof viewer.onKeydown === 'function') {\n consumed = !!viewer.onKeydown(key, event.nativeEvent);\n }\n\n if (!consumed) {\n switch (key) {\n case 'ArrowLeft':\n this.navigateLeft();\n consumed = true;\n break;\n case 'ArrowRight':\n this.navigateRight();\n consumed = true;\n break;\n default:\n // no-op\n }\n }\n\n if (consumed) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n /**\n * Handles version change events\n *\n * @param {string} [version] - The version that is now previewed\n * @param {object} [additionalVersionInfo] - extra info about the version\n */\n onVersionChange = (version?: BoxItemVersion, additionalVersionInfo: AdditionalVersionInfo = {}): void => {\n const { onVersionChange }: Props = this.props;\n this.updateVersionToCurrent = additionalVersionInfo.updateVersionToCurrent;\n\n onVersionChange(version, additionalVersionInfo);\n this.setState({\n selectedVersion: version,\n });\n };\n\n handleAnnotationSelect = ({ file_version, id, target }: Annotation) => {\n const { location = {} } = target;\n const { file, selectedVersion } = this.state;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const currentPreviewFileVersionId = getProp(selectedVersion, 'id', currentFileVersionId);\n const unit = startAtTypes[location.type];\n const viewer = this.getViewer();\n\n if (unit && annotationFileVersionId && annotationFileVersionId !== currentPreviewFileVersionId) {\n this.setState({\n startAt: {\n unit,\n value: location.value,\n },\n });\n }\n\n if (viewer) {\n viewer.emit('scrolltoannotation', { id, target });\n }\n };\n\n /**\n * Holds the reference the preview container\n *\n * @return {void}\n */\n containerRef = (container: ?HTMLDivElement) => {\n this.previewContainer = container;\n };\n\n /**\n * Refreshes the content sidebar panel\n *\n * @return {void}\n */\n refreshSidebar(): void {\n const { current: contentSidebar } = this.contentSidebar;\n\n if (contentSidebar) {\n contentSidebar.refresh();\n }\n }\n\n /**\n * Fetches a thumbnail for the page given\n *\n * @return {Promise|null} - promise resolves with the image HTMLElement or null if generation is in progress\n */\n getThumbnail = (pageNumber: ?number): Promise<HTMLElement> | null => {\n const preview = this.getPreview();\n if (preview && preview.viewer) {\n return preview.viewer.getThumbnail(pageNumber);\n }\n\n return null;\n };\n\n /**\n * Renders the file preview\n *\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n apiHost,\n collection,\n token,\n language,\n messages,\n className,\n contentAnswersProps,\n contentOpenWithProps,\n contentSidebarProps,\n hasHeader,\n hasProviders,\n history,\n isLarge,\n isVeryLarge,\n logoUrl,\n onClose,\n measureRef,\n sharedLink,\n sharedLinkPassword,\n requestInterceptor,\n responseInterceptor,\n theme,\n }: Props = this.props;\n\n const {\n canPrint,\n currentFileId,\n error,\n file,\n isLoading,\n isReloadNotificationVisible,\n isThumbnailSidebarOpen,\n selectedVersion,\n }: State = this.state;\n\n const styleClassName = classNames(\n 'be bcpr',\n {\n 'bcpr-thumbnails-open': isThumbnailSidebarOpen,\n },\n className,\n );\n\n if (!currentFileId) {\n return null;\n }\n\n const errorCode = getProp(error, 'code');\n const currentExtension = getProp(file, 'id') === currentFileId ? getProp(file, 'extension') : '';\n const currentVersionId = getProp(file, 'file_version.id');\n const selectedVersionId = getProp(selectedVersion, 'id', currentVersionId);\n const onHeaderClose = currentVersionId === selectedVersionId ? onClose : this.updateVersionToCurrent;\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: API)}>\n <Providers hasProviders={hasProviders}>\n <div\n id={this.id}\n className={styleClassName}\n ref={measureRef}\n onKeyDown={this.onKeyDown}\n tabIndex={0}\n >\n <ThemingStyles theme={theme} />\n {hasHeader && (\n <PreviewHeader\n file={file}\n logoUrl={logoUrl}\n token={token}\n onClose={onHeaderClose}\n onPrint={this.print}\n canDownload={this.canDownload()}\n canPrint={canPrint}\n onDownload={this.download}\n contentAnswersProps={contentAnswersProps}\n contentOpenWithProps={contentOpenWithProps}\n canAnnotate={this.canAnnotate()}\n selectedVersion={selectedVersion}\n />\n )}\n <div className=\"bcpr-body\">\n <div className=\"bcpr-container\" onMouseMove={this.onMouseMove} ref={this.containerRef}>\n {file && (\n <Measure bounds onResize={this.onResize}>\n {({ measureRef: previewRef }) => (\n <div ref={previewRef} className=\"bcpr-content\" />\n )}\n </Measure>\n )}\n <PreviewMask\n errorCode={errorCode}\n extension={currentExtension}\n isLoading={isLoading}\n />\n <PreviewNavigation\n collection={collection}\n currentIndex={this.getFileIndex()}\n onNavigateLeft={this.navigateLeft}\n onNavigateRight={this.navigateRight}\n />\n </div>\n {file && (\n <LoadableSidebar\n {...contentSidebarProps}\n apiHost={apiHost}\n token={token}\n cache={this.api.getCache()}\n fileId={currentFileId}\n getPreview={this.getPreview}\n getViewer={this.getViewer}\n history={history}\n isDefaultOpen={isLarge || isVeryLarge}\n language={language}\n ref={this.contentSidebar}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n onAnnotationSelect={this.handleAnnotationSelect}\n onVersionChange={this.onVersionChange}\n />\n )}\n </div>\n {isReloadNotificationVisible && (\n <ReloadNotification\n onClose={this.closeReloadNotification}\n onClick={this.loadFileFromStage}\n />\n )}\n </div>\n </Providers>\n </APIContext.Provider>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport type ContentPreviewProps = Props;\nexport { ContentPreview as ContentPreviewComponent };\nexport default flow([\n makeResponsive,\n withAnnotatorContext,\n withAnnotations,\n withRouter,\n withNavRouter,\n withFeatureConsumer,\n withFeatureProvider,\n withBlueprintModernization,\n withLogger(ORIGIN_CONTENT_PREVIEW),\n withErrorBoundary(ORIGIN_CONTENT_PREVIEW),\n])(ContentPreview);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContentPreview.js","names":["React","classNames","cloneDeep","flow","getProp","isEqual","noop","omit","setProp","throttle","uniqueid","Measure","withRouter","decode","makeResponsive","withNavRouter","Internationalize","AsyncLoad","ThemingStyles","TokenService","isInputElement","focus","getTypedFileId","withAnnotations","withAnnotatorContext","withErrorBoundary","withLogger","PREVIEW_FIELDS_TO_FETCH","mark","withFeatureConsumer","withFeatureProvider","withBlueprintModernization","EVENT_JS_READY","ReloadNotification","API","APIContext","PreviewHeader","PreviewMask","PreviewNavigation","Providers","DEFAULT_HOSTNAME_API","DEFAULT_HOSTNAME_APP","DEFAULT_HOSTNAME_STATIC","DEFAULT_PREVIEW_VERSION","DEFAULT_LOCALE","DEFAULT_PATH_STATIC_PREVIEW","CLIENT_NAME_CONTENT_PREVIEW","CLIENT_VERSION","ORIGIN_PREVIEW","ORIGIN_CONTENT_PREVIEW","ERROR_CODE_UNKNOWN","startAtTypes","page","InvalidIdError","Error","PREVIEW_LOAD_METRIC_EVENT","MARK_NAME_JS_READY","LoadableSidebar","loader","ContentPreview","PureComponent","constructor","props","_defineProperty","createRef","canPrint","error","undefined","isLoading","isReloadNotificationVisible","isThumbnailSidebarOpen","_ref","rest","_objectWithoutProperties","_excluded","code","onError","setState","_objectSpread","previewMetrics","logger","event_name","metrics","totalFetchFileTime","getTotalFileFetchTime","totalTime","value","file_info_time","onPreviewMetric","data","onLoad","collection","currentIndex","getFileIndex","filesToPrefetch","slice","previewTimeMetrics","loadData","totalPreviewMetrics","addFetchFileTimeToPreviewMetrics","time","focusPreview","preview","length","prefetch","handleCanPrint","_this$props","advancedContentInsights","annotatorState","activeAnnotationId","enableThumbnailsSidebar","features","fileOptions","onAnnotatorEvent","onAnnotator","onContentInsightsEventReport","previewExperiences","showAnnotationsControls","token","tokenOrTokenFunction","_excluded2","file","selectedVersion","startAt","state","isPreviewLibraryLoaded","fileId","getFileId","currentFileId","fileOpts","typedId","getReadTokens","id","previewOptions","container","header","headerElement","experiences","showAnnotations","canViewAnnotations","showDownload","canDownload","showLoading","showProgress","skipServerUpdate","useHotkeys","Preview","global","Box","addListener","onPreviewLoad","onPreviewError","updateFileCache","show","Object","keys","stagedFile","initialState","getCurrentViewer","resize","fetchFileEndTime","performance","now","currentFile","isExistingFile","isWatermarked","file_version","sha1","fileError","errorCode","message","getPreview","viewer","isLoaded","isDestroyed","newIndex","navigateToIndex","onDownload","download","print","getViewer","isPreviewing","CLASS_NAVIGATION_VISIBILITY","clearTimeout","mouseMoveTimeoutID","previewContainer","classList","remove","allowNavigationArrows","add","setTimeout","event","consumed","key","target","onKeydown","nativeEvent","navigateLeft","navigateRight","preventDefault","stopPropagation","version","additionalVersionInfo","onVersionChange","updateVersionToCurrent","location","annotationFileVersionId","currentFileVersionId","currentPreviewFileVersionId","unit","type","emit","pageNumber","getThumbnail","apiHost","cache","language","requestInterceptor","responseInterceptor","sharedLink","sharedLinkPassword","api","clientName","prevFileIdProp","onReadyMetric","endMarkName","componentWillUnmount","destroy","destroyPreview","shouldReset","onPreviewDestroy","removeAllListeners","clearCache","componentDidMount","loadStylesheet","loadScript","fetchFile","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","prevFeatures","prevPreviewExperiences","prevToken","hasFileIdChanged","hasTokenChanged","haveAdvancedContentInsightsChanged","haveExperiencesChanged","shouldLoadPreview","loadPreview","updatePreviewToken","updateExperiences","updateContentInsightsOptions","shouldReload","updateToken","prevFile","prevSelectedVersion","prevSelectedVersionId","selectedVersionId","prevFileVersionId","fileVersionId","isPreviousCurrent","isSelectedCurrent","getBasePath","asset","staticHost","staticPath","previewLibraryVersion","path","suffix","endsWith","head","document","url","querySelector","link","createElement","rel","href","appendChild","previewScript","script","src","addEventListener","autoFocus","getInnerRef","activeElement","updatePreviewCacheAndPrefetch","files","typedIds","map","cacheTokens","forEach","refreshCache","fetchFileStartTime","Math","round","rendering","conversion","preload","totalConversion","totalRendering","totalPreload","total","isFileDownloadable","canAnnotate","isFileAnnotatable","hasViewAllPermissions","hasViewSelfPermissions","successCallback","errorCallback","fetchOptions","getFileAPI","getFile","fetchFileSuccessCallback","fetchFileErrorCallback","fields","findIndex","item","index","onNavigate","fileOrId","refreshSidebar","current","contentSidebar","refresh","render","messages","className","contentAnswersProps","contentOpenWithProps","contentSidebarProps","hasHeader","hasProviders","history","isLarge","isVeryLarge","logoUrl","onClose","measureRef","theme","styleClassName","currentExtension","currentVersionId","onHeaderClose","Provider","ref","onKeyDown","tabIndex","onPrint","onMouseMove","containerRef","bounds","onResize","previewRef","extension","onNavigateLeft","onNavigateRight","_extends","getCache","isDefaultOpen","onAnnotationSelect","handleAnnotationSelect","closeReloadNotification","onClick","loadFileFromStage","appHost","ContentPreviewComponent"],"sources":["../../../src/elements/content-preview/ContentPreview.js"],"sourcesContent":["/**\n * @flow\n * @file Content Preview Component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport cloneDeep from 'lodash/cloneDeep';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport noop from 'lodash/noop';\nimport omit from 'lodash/omit';\nimport setProp from 'lodash/set';\nimport throttle from 'lodash/throttle';\nimport uniqueid from 'lodash/uniqueId';\nimport Measure from 'react-measure';\nimport { withRouter } from 'react-router-dom';\nimport type { ContextRouter } from 'react-router-dom';\nimport { decode } from '../../utils/keys';\nimport makeResponsive from '../common/makeResponsive';\nimport { withNavRouter } from '../common/nav-router';\nimport Internationalize from '../common/Internationalize';\nimport AsyncLoad from '../common/async-load';\n// $FlowFixMe TypeScript file\nimport ThemingStyles from '../common/theming';\nimport TokenService from '../../utils/TokenService';\nimport { isInputElement, focus } from '../../utils/dom';\nimport { getTypedFileId } from '../../utils/file';\nimport { withAnnotations, withAnnotatorContext } from '../common/annotator-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withLogger } from '../common/logger';\nimport { PREVIEW_FIELDS_TO_FETCH } from '../../utils/fields';\nimport { mark } from '../../utils/performance';\nimport { withFeatureConsumer, withFeatureProvider } from '../common/feature-checking';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport { EVENT_JS_READY } from '../common/logger/constants';\nimport ReloadNotification from './ReloadNotification';\nimport API from '../../api';\nimport APIContext from '../common/api-context';\nimport PreviewHeader from './preview-header';\nimport PreviewMask from './PreviewMask';\nimport PreviewNavigation from './PreviewNavigation';\nimport Providers from '../common/Providers';\nimport {\n DEFAULT_HOSTNAME_API,\n DEFAULT_HOSTNAME_APP,\n DEFAULT_HOSTNAME_STATIC,\n DEFAULT_PREVIEW_VERSION,\n DEFAULT_LOCALE,\n DEFAULT_PATH_STATIC_PREVIEW,\n CLIENT_NAME_CONTENT_PREVIEW,\n CLIENT_VERSION,\n ORIGIN_PREVIEW,\n ORIGIN_CONTENT_PREVIEW,\n ERROR_CODE_UNKNOWN,\n} from '../../constants';\nimport type { Annotation } from '../../common/types/feed';\nimport type { TargetingApi } from '../../features/targeting/types';\nimport type { ErrorType, AdditionalVersionInfo } from '../common/flowTypes';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { RequestOptions, ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { StringMap, Token, BoxItem, BoxItemVersion } from '../../common/types/core';\nimport type { VersionChangeCallback } from '../content-sidebar/versions';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport type { WithAnnotationsProps, WithAnnotatorContextProps } from '../common/annotator-context';\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 './ContentPreview.scss';\n\ntype StartAt = {\n unit: 'pages' | 'seconds',\n value: number,\n};\n\ntype Props = {\n advancedContentInsights: {\n isActive: boolean,\n ownerEId: number,\n userId: number,\n },\n apiHost: string,\n appHost: string,\n autoFocus: boolean,\n boxAnnotations?: Object,\n cache?: APICache,\n canDownload?: boolean,\n className: string,\n collection: Array<string | BoxItem>,\n contentAnswersProps: ContentAnswersProps,\n contentOpenWithProps: ContentOpenWithProps,\n contentSidebarProps: ContentSidebarProps,\n enableThumbnailsSidebar: boolean,\n features?: FeatureConfig,\n fileId?: string,\n fileOptions?: Object,\n getInnerRef: () => ?HTMLElement,\n hasHeader?: boolean,\n hasProviders?: boolean,\n isLarge: boolean,\n isVeryLarge?: boolean,\n language: string,\n logoUrl?: string,\n measureRef: Function,\n messages?: StringMap,\n onAnnotator: Function,\n onAnnotatorEvent: Function,\n onClose?: Function,\n onContentInsightsEventReport: Function,\n onDownload: Function,\n onLoad: Function,\n onNavigate: Function,\n onVersionChange: VersionChangeCallback,\n previewExperiences?: {\n [name: string]: TargetingApi,\n },\n previewLibraryVersion: string,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n sharedLink?: string,\n sharedLinkPassword?: string,\n showAnnotations?: boolean,\n showAnnotationsControls?: boolean,\n staticHost: string,\n staticPath: string,\n theme?: Theme,\n token: Token,\n useHotkeys: boolean,\n} & ErrorContextProps &\n WithLoggerProps &\n WithAnnotationsProps &\n WithAnnotatorContextProps &\n ContextRouter;\n\ntype State = {\n canPrint?: boolean,\n currentFileId?: string,\n error?: ErrorType,\n file?: BoxItem,\n isLoading: boolean,\n isReloadNotificationVisible: boolean,\n isThumbnailSidebarOpen: boolean,\n prevFileIdProp?: string, // the previous value of the \"fileId\" prop. Needed to implement getDerivedStateFromProps\n selectedVersion?: BoxItemVersion,\n startAt?: StartAt,\n};\n\n// Emitted by preview's 'load' event\ntype PreviewTimeMetrics = {\n conversion: number,\n preload?: number,\n rendering: number,\n total: number,\n};\n\n// Emitted by preview's 'preview_metric' event\ntype PreviewMetrics = {\n browser_name: string,\n client_version: string,\n content_type: string, // Sum of all available load times.\n convert_time: number,\n download_response_time: number,\n error?: Object,\n event_name?: string,\n extension: string,\n file_id: string,\n file_info_time: number,\n file_version_id: string,\n full_document_load_time: number,\n locale: string,\n logger_session_id: string,\n rep_type: string,\n timestamp: string,\n value: number,\n};\n\ntype PreviewLibraryError = {\n error: ErrorType,\n};\n\nconst startAtTypes = {\n page: 'pages',\n};\nconst InvalidIdError = new Error('Invalid id for Preview!');\nconst PREVIEW_LOAD_METRIC_EVENT = 'load';\nconst MARK_NAME_JS_READY = `${ORIGIN_CONTENT_PREVIEW}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nconst LoadableSidebar = AsyncLoad({\n loader: () => import(/* webpackMode: \"lazy\", webpackChunkName: \"content-sidebar\" */ '../content-sidebar'),\n});\n\nclass ContentPreview extends React.PureComponent<Props, State> {\n id: string;\n\n props: Props;\n\n state: State;\n\n preview: any;\n\n api: API;\n\n // Defines a generic type for ContentSidebar, since an import would interfere with code splitting\n contentSidebar: { current: null | { refresh: Function } } = React.createRef();\n\n previewContainer: ?HTMLDivElement;\n\n mouseMoveTimeoutID: TimeoutID;\n\n rootElement: HTMLElement;\n\n stagedFile: ?BoxItem;\n\n updateVersionToCurrent: ?() => void;\n\n initialState: State = {\n canPrint: false,\n error: undefined,\n isLoading: true,\n isReloadNotificationVisible: false,\n isThumbnailSidebarOpen: false,\n };\n\n static defaultProps = {\n apiHost: DEFAULT_HOSTNAME_API,\n appHost: DEFAULT_HOSTNAME_APP,\n autoFocus: false,\n canDownload: true,\n className: '',\n collection: [],\n contentAnswersProps: {},\n contentOpenWithProps: {},\n contentSidebarProps: {},\n enableThumbnailsSidebar: false,\n hasHeader: false,\n language: DEFAULT_LOCALE,\n onAnnotator: noop,\n onAnnotatorEvent: noop,\n onContentInsightsEventReport: noop,\n onDownload: noop,\n onError: noop,\n onLoad: noop,\n onNavigate: noop,\n onPreviewDestroy: noop,\n onVersionChange: noop,\n previewLibraryVersion: DEFAULT_PREVIEW_VERSION,\n showAnnotations: false,\n staticHost: DEFAULT_HOSTNAME_STATIC,\n staticPath: DEFAULT_PATH_STATIC_PREVIEW,\n useHotkeys: true,\n };\n\n /**\n * @property {number}\n */\n fetchFileEndTime: ?number;\n\n /**\n * @property {number}\n */\n fetchFileStartTime: ?number;\n\n /**\n * [constructor]\n *\n * @return {ContentPreview}\n */\n constructor(props: Props) {\n super(props);\n const {\n apiHost,\n cache,\n fileId,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n } = props;\n\n this.id = uniqueid('bcpr_');\n this.api = new API({\n apiHost,\n cache,\n clientName: CLIENT_NAME_CONTENT_PREVIEW,\n language,\n requestInterceptor,\n responseInterceptor,\n sharedLink,\n sharedLinkPassword,\n token,\n version: CLIENT_VERSION,\n });\n this.state = {\n ...this.initialState,\n currentFileId: fileId,\n // eslint-disable-next-line react/no-unused-state\n prevFileIdProp: fileId,\n };\n const { logger } = props;\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n }\n\n /**\n * Cleanup\n *\n * @return {void}\n */\n componentWillUnmount(): void {\n // Don't destroy the cache while unmounting\n this.api.destroy(false);\n this.destroyPreview();\n }\n\n /**\n * Cleans up the preview instance\n */\n destroyPreview(shouldReset: boolean = true) {\n const { onPreviewDestroy } = this.props;\n if (this.preview) {\n this.preview.destroy();\n this.preview.removeAllListeners();\n this.preview = undefined;\n\n onPreviewDestroy(shouldReset);\n }\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 * Once the component mounts, load Preview assets and fetch file info.\n *\n * @return {void}\n */\n componentDidMount(): void {\n this.loadStylesheet();\n this.loadScript();\n\n this.fetchFile(this.state.currentFileId);\n this.focusPreview();\n }\n\n static getDerivedStateFromProps(props: Props, state: State) {\n const { fileId } = props;\n\n if (fileId !== state.prevFileIdProp) {\n return {\n currentFileId: fileId,\n prevFileIdProp: fileId,\n };\n }\n\n return null;\n }\n\n /**\n * After component updates, load Preview if appropriate.\n *\n * @return {void}\n */\n componentDidUpdate(prevProps: Props, prevState: State): void {\n const { features, previewExperiences, token } = this.props;\n const { features: prevFeatures, previewExperiences: prevPreviewExperiences, token: prevToken } = prevProps;\n const { currentFileId } = this.state;\n const hasFileIdChanged = prevState.currentFileId !== currentFileId;\n const hasTokenChanged = prevToken !== token;\n const haveAdvancedContentInsightsChanged = !isEqual(\n prevFeatures?.advancedContentInsights,\n features?.advancedContentInsights,\n );\n const haveExperiencesChanged = prevPreviewExperiences !== previewExperiences;\n\n if (hasFileIdChanged) {\n this.destroyPreview();\n this.setState({ isLoading: true, selectedVersion: undefined });\n this.fetchFile(currentFileId);\n } else if (this.shouldLoadPreview(prevState)) {\n this.destroyPreview(false);\n this.setState({ isLoading: true });\n this.loadPreview();\n } else if (hasTokenChanged) {\n this.updatePreviewToken();\n }\n\n if (haveExperiencesChanged && this.preview && this.preview.updateExperiences) {\n this.preview.updateExperiences(previewExperiences);\n }\n\n if (\n this.preview?.updateContentInsightsOptions &&\n features?.advancedContentInsights &&\n haveAdvancedContentInsightsChanged\n ) {\n this.preview.updateContentInsightsOptions(features?.advancedContentInsights);\n }\n }\n\n /**\n * Updates the access token used by preview library\n *\n * @param {boolean} shouldReload - true if preview should be reloaded\n */\n updatePreviewToken(shouldReload: boolean = false) {\n if (this.preview) {\n this.preview.updateToken(this.props.token, shouldReload);\n }\n }\n\n /**\n * Returns whether or not preview should be loaded.\n *\n * @param {State} prevState - Previous state\n * @return {boolean}\n */\n shouldLoadPreview(prevState: State): boolean {\n const { file, selectedVersion }: State = this.state;\n const { file: prevFile, selectedVersion: prevSelectedVersion }: State = prevState;\n const prevSelectedVersionId = getProp(prevSelectedVersion, 'id');\n const selectedVersionId = getProp(selectedVersion, 'id');\n const prevFileVersionId = getProp(prevFile, 'file_version.id');\n const fileVersionId = getProp(file, 'file_version.id');\n let loadPreview = false;\n\n if (selectedVersionId !== prevSelectedVersionId) {\n const isPreviousCurrent = fileVersionId === prevSelectedVersionId || !prevSelectedVersionId;\n const isSelectedCurrent = fileVersionId === selectedVersionId || !selectedVersionId;\n\n // Load preview if the user has selected a non-current version of the file\n loadPreview = !isPreviousCurrent || !isSelectedCurrent;\n } else if (fileVersionId && prevFileVersionId) {\n // Load preview if the file's current version ID has changed\n loadPreview = fileVersionId !== prevFileVersionId;\n } else {\n // Load preview if file object has newly been populated in state\n loadPreview = !prevFile && !!file;\n }\n\n return loadPreview;\n }\n\n /**\n * Returns preview asset urls\n *\n * @return {string} base url\n */\n getBasePath(asset: string): string {\n const { staticHost, staticPath, language, previewLibraryVersion }: Props = this.props;\n const path: string = `${staticPath}/${previewLibraryVersion}/${language}/${asset}`;\n const suffix: string = staticHost.endsWith('/') ? path : `/${path}`;\n return `${staticHost}${suffix}`;\n }\n\n /**\n * Determines if preview assets are loaded\n *\n * @return {boolean} true if preview is loaded\n */\n isPreviewLibraryLoaded(): boolean {\n return !!global.Box && !!global.Box.Preview;\n }\n\n /**\n * Loads external css by appending a <link> element\n *\n * @return {void}\n */\n loadStylesheet(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.css');\n\n if (!head || head.querySelector(`link[rel=\"stylesheet\"][href=\"${url}\"]`)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = url;\n head.appendChild(link);\n }\n\n /**\n * Loads external script by appending a <script> element\n *\n * @return {void}\n */\n loadScript(): void {\n const { head } = document;\n const url: string = this.getBasePath('preview.js');\n\n if (!head || this.isPreviewLibraryLoaded()) {\n return;\n }\n\n const previewScript = head.querySelector(`script[src=\"${url}\"]`);\n if (previewScript) {\n return;\n }\n\n const script = document.createElement('script');\n script.src = url;\n script.addEventListener('load', this.loadPreview);\n head.appendChild(script);\n }\n\n /**\n * Focuses the preview on load.\n *\n * @return {void}\n */\n focusPreview() {\n const { autoFocus, getInnerRef }: Props = this.props;\n if (autoFocus && !isInputElement(document.activeElement)) {\n focus(getInnerRef());\n }\n }\n\n /**\n * Updates preview cache and prefetches a file\n *\n * @param {BoxItem} file - file to prefetch\n * @return {void}\n */\n updatePreviewCacheAndPrefetch(file: BoxItem, token: Token): void {\n if (!this.preview || !file || !file.id) {\n return;\n }\n\n this.preview.updateFileCache([file]);\n this.preview.prefetch({ fileId: file.id, token });\n }\n\n /**\n * Gets the file id\n *\n * @param {string|BoxItem} file - box file or file id\n * @return {string} file id\n */\n getFileId(file?: string | BoxItem): string {\n if (typeof file === 'string') {\n return file;\n }\n\n if (typeof file === 'object' && !!file.id) {\n return file.id;\n }\n\n throw InvalidIdError;\n }\n\n /**\n * Prefetches the next few preview files if any\n *\n * @param {Array<string|BoxItem>} files - files to prefetch\n * @return {void}\n */\n async prefetch(files: Array<string | BoxItem>): Promise<void> {\n const { token }: Props = this.props;\n const typedIds: string[] = files.map(file => getTypedFileId(this.getFileId(file)));\n await TokenService.cacheTokens(typedIds, token);\n files.forEach(file => {\n const fileId = this.getFileId(file);\n this.fetchFile(fileId, noop, noop, {\n refreshCache: false,\n });\n });\n }\n\n /**\n * Calculates the total file fetch time\n *\n * @return {number} the total fetch time\n */\n getTotalFileFetchTime(): number {\n if (!this.fetchFileStartTime || !this.fetchFileEndTime) {\n return 0;\n }\n\n return Math.round(this.fetchFileEndTime - this.fetchFileStartTime);\n }\n\n /**\n * Handler for 'preview_error' preview event\n *\n * @param {PreviewLibraryError} previewError - the error data emitted from preview\n * @return {void}\n */\n onPreviewError = ({ error, ...rest }: PreviewLibraryError): void => {\n const { code = ERROR_CODE_UNKNOWN } = error;\n const { onError } = this.props;\n\n // In case of error, there should be no thumbnail sidebar to account for\n this.setState({ isLoading: false, isThumbnailSidebarOpen: false });\n\n onError(\n error,\n code,\n {\n ...rest,\n error,\n },\n ORIGIN_PREVIEW,\n );\n };\n\n /**\n * Event handler 'preview_metric' which also adds in the file fetch time if it's a load event\n *\n * @param {Object} previewMetrics - the object emitted by 'preview_metric'\n * @return {void}\n */\n onPreviewMetric = (previewMetrics: PreviewMetrics): void => {\n const { logger } = this.props;\n const { event_name } = previewMetrics;\n let metrics = {\n ...previewMetrics,\n };\n\n // We need to add in the total file fetch time to the file_info_time and value (total)\n // as preview does not do the files call\n if (event_name === PREVIEW_LOAD_METRIC_EVENT) {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const totalTime = (previewMetrics.value || 0) + totalFetchFileTime;\n\n // If an unnatural load time occurs or is invalid, don't log a load event\n if (!totalTime) {\n return;\n }\n\n metrics = {\n ...previewMetrics,\n file_info_time: totalFetchFileTime,\n value: totalTime,\n };\n }\n\n logger.onPreviewMetric(metrics);\n };\n\n /**\n * Adds in the file fetch time to the preview metrics\n *\n * @param {Object} previewTimeMetrics - the preview time metrics\n * @return {Object} the preview time metrics merged with the files call time\n */\n addFetchFileTimeToPreviewMetrics(previewTimeMetrics: PreviewTimeMetrics): PreviewTimeMetrics {\n const totalFetchFileTime = this.getTotalFileFetchTime();\n const { rendering, conversion, preload } = previewTimeMetrics;\n\n // We need to add in the total file fetch time to the rendering and total as preview\n // does not do the files call. In the case the file is in the process of\n // being converted, we need to add to conversion instead of the render\n let totalConversion = conversion;\n let totalRendering = rendering;\n let totalPreload = preload;\n if (conversion) {\n totalConversion += totalFetchFileTime;\n } else {\n totalRendering += totalFetchFileTime;\n }\n\n if (totalPreload) {\n // Preload is optional, depending on file type\n totalPreload += totalFetchFileTime;\n }\n\n const previewMetrics = {\n conversion: totalConversion,\n rendering: totalRendering,\n total: totalRendering + totalConversion,\n preload: totalPreload,\n };\n\n return previewMetrics;\n }\n\n /**\n * onLoad function for preview\n *\n * @return {void}\n */\n onPreviewLoad = (data: Object): void => {\n const { onLoad, collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const filesToPrefetch = collection.slice(currentIndex + 1, currentIndex + 5);\n const previewTimeMetrics = getProp(data, 'metrics.time');\n let loadData = data;\n\n if (previewTimeMetrics) {\n const totalPreviewMetrics = this.addFetchFileTimeToPreviewMetrics(previewTimeMetrics);\n loadData = {\n ...loadData,\n metrics: {\n ...loadData.metrics,\n time: totalPreviewMetrics,\n },\n };\n }\n\n onLoad(loadData);\n\n this.setState({ isLoading: false });\n this.focusPreview();\n\n if (this.preview && filesToPrefetch.length) {\n this.prefetch(filesToPrefetch);\n }\n\n this.handleCanPrint();\n };\n\n /**\n * Returns whether file can be downloaded based on file properties, permissions, and user-defined options.\n *\n * @return {boolean}\n */\n canDownload(): boolean {\n const { canDownload }: Props = this.props;\n const { file }: State = this.state;\n const isFileDownloadable =\n getProp(file, 'permissions.can_download', false) && getProp(file, 'is_download_available', false);\n return isFileDownloadable && !!canDownload;\n }\n\n /**\n * Returns whether file can be annotated based on permissions\n *\n * @return {boolean}\n */\n canAnnotate(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const isFileAnnotatable = getProp(file, 'permissions.can_annotate', false);\n return !!showAnnotations && isFileAnnotatable;\n }\n\n /**\n * Returns whether a preview should render annotations based on permissions\n *\n * @return {boolean}\n */\n canViewAnnotations(): boolean {\n const { showAnnotations }: Props = this.props;\n const { file }: State = this.state;\n const hasViewAllPermissions = getProp(file, 'permissions.can_view_annotations_all', false);\n const hasViewSelfPermissions = getProp(file, 'permissions.can_view_annotations_self', false);\n return !!showAnnotations && (this.canAnnotate() || hasViewAllPermissions || hasViewSelfPermissions);\n }\n\n handleCanPrint() {\n const preview = this.getPreview();\n this.setState({ canPrint: !!preview && (!preview.canPrint || preview.canPrint()) });\n }\n\n /**\n * Loads preview in the component using the preview library.\n *\n * @return {void}\n */\n loadPreview = async (): Promise<void> => {\n const {\n advancedContentInsights, // will be removed once preview package will be updated to utilize feature flip for ACI\n annotatorState: { activeAnnotationId } = {},\n enableThumbnailsSidebar,\n features,\n fileOptions,\n onAnnotatorEvent,\n onAnnotator,\n onContentInsightsEventReport,\n previewExperiences,\n showAnnotationsControls,\n token: tokenOrTokenFunction,\n ...rest\n }: Props = this.props;\n const { file, selectedVersion, startAt }: State = this.state;\n\n if (!this.isPreviewLibraryLoaded() || !file || !tokenOrTokenFunction) {\n return;\n }\n\n const fileId = this.getFileId(file);\n\n if (fileId !== this.state.currentFileId) {\n return;\n }\n\n const fileOpts = { ...fileOptions };\n const token = typedId => TokenService.getReadTokens(typedId, tokenOrTokenFunction);\n\n if (selectedVersion) {\n setProp(fileOpts, [fileId, 'fileVersionId'], selectedVersion.id);\n setProp(fileOpts, [fileId, 'currentFileVersionId'], getProp(file, 'file_version.id'));\n }\n\n if (activeAnnotationId) {\n setProp(fileOpts, [fileId, 'annotations', 'activeId'], activeAnnotationId);\n }\n\n if (startAt) {\n setProp(fileOpts, [fileId, 'startAt'], startAt);\n }\n\n const previewOptions = {\n advancedContentInsights, // will be removed once preview package will be updated to utilize feature flip for ACI\n container: `#${this.id} .bcpr-content`,\n enableThumbnailsSidebar,\n features,\n fileOptions: fileOpts,\n header: 'none',\n headerElement: `#${this.id} .bcpr-PreviewHeader`,\n experiences: previewExperiences,\n showAnnotations: this.canViewAnnotations(),\n showAnnotationsControls,\n showDownload: this.canDownload(),\n showLoading: false,\n showProgress: false,\n skipServerUpdate: true,\n useHotkeys: false,\n };\n const { Preview } = global.Box;\n this.preview = new Preview();\n this.preview.addListener('load', this.onPreviewLoad);\n this.preview.addListener('preview_error', this.onPreviewError);\n this.preview.addListener('preview_metric', this.onPreviewMetric);\n this.preview.addListener('thumbnailsOpen', () => this.setState({ isThumbnailSidebarOpen: true }));\n this.preview.addListener('thumbnailsClose', () => this.setState({ isThumbnailSidebarOpen: false }));\n\n if (showAnnotationsControls) {\n this.preview.addListener('annotator_create', onAnnotator);\n }\n\n this.preview.updateFileCache([file]);\n this.preview.show(file.id, token, {\n ...previewOptions,\n ...omit(rest, Object.keys(previewOptions)),\n });\n if (advancedContentInsights) {\n this.preview.addListener('advanced_insights_report', onContentInsightsEventReport);\n }\n };\n\n /**\n * Updates preview file from temporary staged file.\n *\n * @return {void}\n */\n loadFileFromStage = () => {\n if (this.stagedFile) {\n this.setState({ ...this.initialState, file: this.stagedFile }, () => {\n this.stagedFile = undefined;\n });\n }\n };\n\n /**\n * Removes the reload notification\n *\n * @return {void}\n */\n closeReloadNotification = () => {\n this.setState({ isReloadNotificationVisible: false });\n };\n\n /**\n * Tells the preview to resize\n *\n * @return {void}\n */\n onResize = (): void => {\n if (this.preview && this.preview.getCurrentViewer()) {\n this.preview.resize();\n }\n };\n\n /**\n * File fetch success callback\n *\n * @param {Object} file - Box file\n * @return {void}\n */\n fetchFileSuccessCallback = (file: BoxItem): void => {\n this.fetchFileEndTime = performance.now();\n\n const { file: currentFile }: State = this.state;\n const isExistingFile = currentFile ? currentFile.id === file.id : false;\n const isWatermarked = getProp(file, 'watermark_info.is_watermarked', false);\n\n // If the file is watermarked or if its a new file, then update the state\n // In this case preview should reload without prompting the user\n if (isWatermarked || !isExistingFile) {\n this.setState({ ...this.initialState, file });\n // $FlowFixMe file version and sha1 should exist at this point\n } else if (currentFile.file_version.sha1 !== file.file_version.sha1) {\n // If we are already prevewing the file that got updated then show the\n // user a notification to reload the file only if its sha1 changed\n this.stagedFile = file;\n this.setState({\n ...this.initialState,\n isReloadNotificationVisible: true,\n });\n }\n };\n\n /**\n * File fetch error callback\n *\n * @return {void}\n */\n fetchFileErrorCallback = (fileError: ElementsXhrError, code: string): void => {\n const { onError } = this.props;\n const errorCode = fileError.code || code;\n const error = {\n code: errorCode,\n message: fileError.message,\n };\n this.setState({ error, file: undefined, isLoading: false });\n onError(fileError, errorCode, {\n error: fileError,\n });\n };\n\n /**\n * Fetches a file\n *\n * @param {string} id file id\n * @param {Function|void} [successCallback] - Callback after file is fetched\n * @param {Function|void} [errorCallback] - Callback after error\n * @param {Object|void} [fetchOptions] - Fetch options\n * @return {void}\n */\n fetchFile(\n id: ?string,\n successCallback?: Function,\n errorCallback?: Function,\n fetchOptions: RequestOptions = {},\n ): void {\n if (!id) {\n return;\n }\n\n this.fetchFileStartTime = performance.now();\n this.fetchFileEndTime = null;\n\n this.api\n .getFileAPI()\n .getFile(\n id,\n successCallback || this.fetchFileSuccessCallback,\n errorCallback || this.fetchFileErrorCallback,\n {\n ...fetchOptions,\n fields: PREVIEW_FIELDS_TO_FETCH,\n },\n );\n }\n\n /**\n * Returns the preview instance\n *\n * @return {Preview} current instance of preview\n */\n getPreview = (): any => {\n const { file }: State = this.state;\n if (!this.preview || !file) {\n return null;\n }\n\n return this.preview;\n };\n\n /**\n * Returns the viewer instance being used by preview.\n * This will let child components access the viewers.\n *\n * @return {Viewer} current instance of the preview viewer\n */\n getViewer = (): any => {\n const preview = this.getPreview();\n const viewer = preview ? preview.getCurrentViewer() : null;\n return viewer && viewer.isLoaded() && !viewer.isDestroyed() ? viewer : null;\n };\n\n /**\n * Finds the index of current file inside the collection\n *\n * @return {number} -1 if not indexed\n */\n getFileIndex() {\n const { currentFileId }: State = this.state;\n const { collection }: Props = this.props;\n if (!currentFileId || collection.length < 2) {\n return -1;\n }\n\n return collection.findIndex(item => {\n if (typeof item === 'string') {\n return item === currentFileId;\n }\n\n return item.id === currentFileId;\n });\n }\n\n /**\n * Shows a preview of a file at the specified index in the current collection.\n *\n * @public\n * @param {number} index - Index of file to preview\n * @return {void}\n */\n navigateToIndex(index: number) {\n const { collection, onNavigate }: Props = this.props;\n const { length } = collection;\n if (length < 2 || index < 0 || index > length - 1) {\n return;\n }\n\n const fileOrId = collection[index];\n const fileId = typeof fileOrId === 'object' ? fileOrId.id || '' : fileOrId;\n\n this.setState(\n {\n currentFileId: fileId,\n },\n () => {\n // Execute navigation callback\n onNavigate(fileId);\n },\n );\n }\n\n /**\n * Shows a preview of the previous file.\n *\n * @public\n * @return {void}\n */\n navigateLeft = () => {\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === 0 ? 0 : currentIndex - 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Shows a preview of the next file.\n *\n * @public\n * @return {void}\n */\n navigateRight = () => {\n const { collection }: Props = this.props;\n const currentIndex = this.getFileIndex();\n const newIndex = currentIndex === collection.length - 1 ? collection.length - 1 : currentIndex + 1;\n if (newIndex !== currentIndex) {\n this.navigateToIndex(newIndex);\n }\n };\n\n /**\n * Downloads file.\n *\n * @public\n * @return {void}\n */\n download = () => {\n const { onDownload }: Props = this.props;\n const { file }: State = this.state;\n if (this.preview) {\n this.preview.download();\n onDownload(cloneDeep(file));\n }\n };\n\n /**\n * Prints file.\n *\n * @public\n * @return {void}\n */\n print = () => {\n if (this.preview) {\n this.preview.print();\n }\n };\n\n /**\n * Mouse move handler that is throttled and show\n * the navigation arrows if applicable.\n *\n * @return {void}\n */\n onMouseMove = throttle(() => {\n const viewer = this.getViewer();\n const isPreviewing = !!viewer;\n const CLASS_NAVIGATION_VISIBILITY = 'bcpr-nav-is-visible';\n\n clearTimeout(this.mouseMoveTimeoutID);\n\n if (!this.previewContainer) {\n return;\n }\n\n // Always assume that navigation arrows will be hidden\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n\n // Only show it if either we aren't previewing or if we are then the viewer\n // is not blocking the show. If we are previewing then the viewer may choose\n // to not allow navigation arrows. This is mostly useful for videos since the\n // navigation arrows may interfere with the settings menu inside video player.\n if (this.previewContainer && (!isPreviewing || viewer.allowNavigationArrows())) {\n this.previewContainer.classList.add(CLASS_NAVIGATION_VISIBILITY);\n }\n\n this.mouseMoveTimeoutID = setTimeout(() => {\n if (this.previewContainer) {\n this.previewContainer.classList.remove(CLASS_NAVIGATION_VISIBILITY);\n }\n }, 1500);\n }, 1000);\n\n /**\n * Keyboard events\n *\n * @return {void}\n */\n onKeyDown = (event: SyntheticKeyboardEvent<HTMLElement>) => {\n const { useHotkeys }: Props = this.props;\n if (!useHotkeys) {\n return;\n }\n\n let consumed = false;\n const key = decode(event);\n const viewer = this.getViewer();\n\n // If focus was on an input or if the viewer doesn't exist\n // then don't bother doing anything further\n if (!key || !viewer || isInputElement(event.target)) {\n return;\n }\n\n if (typeof viewer.onKeydown === 'function') {\n consumed = !!viewer.onKeydown(key, event.nativeEvent);\n }\n\n if (!consumed) {\n switch (key) {\n case 'ArrowLeft':\n this.navigateLeft();\n consumed = true;\n break;\n case 'ArrowRight':\n this.navigateRight();\n consumed = true;\n break;\n default:\n // no-op\n }\n }\n\n if (consumed) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n /**\n * Handles version change events\n *\n * @param {string} [version] - The version that is now previewed\n * @param {object} [additionalVersionInfo] - extra info about the version\n */\n onVersionChange = (version?: BoxItemVersion, additionalVersionInfo: AdditionalVersionInfo = {}): void => {\n const { onVersionChange }: Props = this.props;\n this.updateVersionToCurrent = additionalVersionInfo.updateVersionToCurrent;\n\n onVersionChange(version, additionalVersionInfo);\n this.setState({\n selectedVersion: version,\n });\n };\n\n handleAnnotationSelect = ({ file_version, id, target }: Annotation) => {\n const { location = {} } = target;\n const { file, selectedVersion } = this.state;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const currentPreviewFileVersionId = getProp(selectedVersion, 'id', currentFileVersionId);\n const unit = startAtTypes[location.type];\n const viewer = this.getViewer();\n\n if (unit && annotationFileVersionId && annotationFileVersionId !== currentPreviewFileVersionId) {\n this.setState({\n startAt: {\n unit,\n value: location.value,\n },\n });\n }\n\n if (viewer) {\n viewer.emit('scrolltoannotation', { id, target });\n }\n };\n\n /**\n * Holds the reference the preview container\n *\n * @return {void}\n */\n containerRef = (container: ?HTMLDivElement) => {\n this.previewContainer = container;\n };\n\n /**\n * Refreshes the content sidebar panel\n *\n * @return {void}\n */\n refreshSidebar(): void {\n const { current: contentSidebar } = this.contentSidebar;\n\n if (contentSidebar) {\n contentSidebar.refresh();\n }\n }\n\n /**\n * Fetches a thumbnail for the page given\n *\n * @return {Promise|null} - promise resolves with the image HTMLElement or null if generation is in progress\n */\n getThumbnail = (pageNumber: ?number): Promise<HTMLElement> | null => {\n const preview = this.getPreview();\n if (preview && preview.viewer) {\n return preview.viewer.getThumbnail(pageNumber);\n }\n\n return null;\n };\n\n /**\n * Renders the file preview\n *\n * @inheritdoc\n * @return {Element}\n */\n render() {\n const {\n apiHost,\n collection,\n token,\n language,\n messages,\n className,\n contentAnswersProps,\n contentOpenWithProps,\n contentSidebarProps,\n hasHeader,\n hasProviders,\n history,\n isLarge,\n isVeryLarge,\n logoUrl,\n onClose,\n measureRef,\n sharedLink,\n sharedLinkPassword,\n requestInterceptor,\n responseInterceptor,\n theme,\n }: Props = this.props;\n\n const {\n canPrint,\n currentFileId,\n error,\n file,\n isLoading,\n isReloadNotificationVisible,\n isThumbnailSidebarOpen,\n selectedVersion,\n }: State = this.state;\n\n const styleClassName = classNames(\n 'be bcpr',\n {\n 'bcpr-thumbnails-open': isThumbnailSidebarOpen,\n },\n className,\n );\n\n if (!currentFileId) {\n return null;\n }\n\n const errorCode = getProp(error, 'code');\n const currentExtension = getProp(file, 'id') === currentFileId ? getProp(file, 'extension') : '';\n const currentVersionId = getProp(file, 'file_version.id');\n const selectedVersionId = getProp(selectedVersion, 'id', currentVersionId);\n const onHeaderClose = currentVersionId === selectedVersionId ? onClose : this.updateVersionToCurrent;\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n /* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n return (\n <Internationalize language={language} messages={messages}>\n <APIContext.Provider value={(this.api: API)}>\n <Providers hasProviders={hasProviders}>\n <div\n id={this.id}\n className={styleClassName}\n ref={measureRef}\n onKeyDown={this.onKeyDown}\n tabIndex={0}\n >\n <ThemingStyles theme={theme} />\n {hasHeader && (\n <PreviewHeader\n file={file}\n logoUrl={logoUrl}\n token={token}\n onClose={onHeaderClose}\n onPrint={this.print}\n canDownload={this.canDownload()}\n canPrint={canPrint}\n onDownload={this.download}\n contentAnswersProps={contentAnswersProps}\n contentOpenWithProps={contentOpenWithProps}\n canAnnotate={this.canAnnotate()}\n selectedVersion={selectedVersion}\n />\n )}\n <div className=\"bcpr-body\">\n <div className=\"bcpr-container\" onMouseMove={this.onMouseMove} ref={this.containerRef}>\n {file && (\n <Measure bounds onResize={this.onResize}>\n {({ measureRef: previewRef }) => (\n <div ref={previewRef} className=\"bcpr-content\" />\n )}\n </Measure>\n )}\n <PreviewMask\n errorCode={errorCode}\n extension={currentExtension}\n isLoading={isLoading}\n />\n <PreviewNavigation\n collection={collection}\n currentIndex={this.getFileIndex()}\n onNavigateLeft={this.navigateLeft}\n onNavigateRight={this.navigateRight}\n />\n </div>\n {file && (\n <LoadableSidebar\n {...contentSidebarProps}\n apiHost={apiHost}\n token={token}\n cache={this.api.getCache()}\n fileId={currentFileId}\n getPreview={this.getPreview}\n getViewer={this.getViewer}\n history={history}\n isDefaultOpen={isLarge || isVeryLarge}\n language={language}\n ref={this.contentSidebar}\n sharedLink={sharedLink}\n sharedLinkPassword={sharedLinkPassword}\n requestInterceptor={requestInterceptor}\n responseInterceptor={responseInterceptor}\n onAnnotationSelect={this.handleAnnotationSelect}\n onVersionChange={this.onVersionChange}\n />\n )}\n </div>\n {isReloadNotificationVisible && (\n <ReloadNotification\n onClose={this.closeReloadNotification}\n onClick={this.loadFileFromStage}\n />\n )}\n </div>\n </Providers>\n </APIContext.Provider>\n </Internationalize>\n );\n /* eslint-enable jsx-a11y/no-static-element-interactions */\n /* eslint-enable jsx-a11y/no-noninteractive-tabindex */\n }\n}\n\nexport type ContentPreviewProps = Props;\nexport { ContentPreview as ContentPreviewComponent };\nexport default flow([\n makeResponsive,\n withAnnotatorContext,\n withAnnotations,\n withRouter,\n withNavRouter,\n withFeatureConsumer,\n withFeatureProvider,\n withBlueprintModernization,\n withLogger(ORIGIN_CONTENT_PREVIEW),\n withErrorBoundary(ORIGIN_CONTENT_PREVIEW),\n])(ContentPreview);\n"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ import API from '../../api';
12
12
  // $FlowFixMe
13
13
  import { withBlueprintModernization } from '../common/withBlueprintModernization';
14
14
  import SharingModal from './SharingModal';
15
- import { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';
15
+ import { CLIENT_NAME_CONTENT_SHARING, CLIENT_VERSION, DEFAULT_HOSTNAME_API } from '../../constants';
16
16
  import '../common/base.scss';
17
17
  import '../common/fonts.scss';
18
18
  import '../common/modal.scss';
@@ -20,7 +20,8 @@ const createAPI = (apiHost, itemID, itemType, token) => new API({
20
20
  apiHost,
21
21
  clientName: CLIENT_NAME_CONTENT_SHARING,
22
22
  id: `${itemType}_${itemID}`,
23
- token
23
+ token,
24
+ version: CLIENT_VERSION
24
25
  });
25
26
  function ContentSharing({
26
27
  apiHost = DEFAULT_HOSTNAME_API,
@@ -12,7 +12,7 @@ import API from '../../api';
12
12
  // $FlowFixMe
13
13
  import { withBlueprintModernization } from '../common/withBlueprintModernization';
14
14
  import SharingModal from './SharingModal';
15
- import { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';
15
+ import { CLIENT_NAME_CONTENT_SHARING, CLIENT_VERSION, DEFAULT_HOSTNAME_API } from '../../constants';
16
16
  import type { ItemType, StringMap } from '../../common/types/core';
17
17
  import type { USMConfig } from '../../features/unified-share-modal/flowTypes';
18
18
 
@@ -57,6 +57,7 @@ const createAPI = (apiHost, itemID, itemType, token) =>
57
57
  clientName: CLIENT_NAME_CONTENT_SHARING,
58
58
  id: `${itemType}_${itemID}`,
59
59
  token,
60
+ version: CLIENT_VERSION,
60
61
  });
61
62
 
62
63
  function ContentSharing({
@@ -1 +1 @@
1
- {"version":3,"file":"ContentSharing.js","names":["React","API","withBlueprintModernization","SharingModal","CLIENT_NAME_CONTENT_SHARING","DEFAULT_HOSTNAME_API","createAPI","apiHost","itemID","itemType","token","clientName","id","ContentSharing","config","customButton","displayInModal","language","messages","uuid","api","setAPI","useState","launchButton","setLaunchButton","isVisible","setIsVisible","useEffect","cloneElement","onClick","createElement","Fragment","ContentSharingComponent"],"sources":["../../../src/elements/content-sharing/ContentSharing.js"],"sourcesContent":["/**\n * @flow\n * @file ContentSharing Element\n * @description This is the top-level component for ContentSharing. It instantiates the API, which it then\n * passes to the SharingModal component either immediately (when no custom button is provided) or on\n * button click (when a custom button is provided).\n * @author Box\n */\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport API from '../../api';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport SharingModal from './SharingModal';\nimport { CLIENT_NAME_CONTENT_SHARING, DEFAULT_HOSTNAME_API } from '../../constants';\nimport type { ItemType, StringMap } from '../../common/types/core';\nimport type { USMConfig } from '../../features/unified-share-modal/flowTypes';\n\nimport '../common/base.scss';\nimport '../common/fonts.scss';\nimport '../common/modal.scss';\n\ntype ContentSharingProps = {\n /** apiHost - API hostname. Defaults to https://api.box.com */\n apiHost: string,\n /** config - Configuration object that shows/hides features in the USM */\n config?: USMConfig,\n /**\n * customButton - Clickable element for opening the SharingModal component.\n * This property should always be used in conjunction with displayInModal.\n */\n customButton?: React.Element<any>,\n /**\n * displayInModal - Whether the SharingModal component should be displayed in a modal.\n * If false, the SharingModal component will appear as a form within the surrounding page.\n * This property can be used with or without a customButton. If used without a customButton,\n * the modal will appear on page load. See ContentSharing.stories.js for examples.\n */\n displayInModal: boolean,\n /** itemID - Box file or folder ID */\n itemID: string,\n /** itemType - \"file\" or \"folder\" */\n itemType: ItemType,\n /** language - Language used for the element */\n language: string,\n /** messages - Localized strings used by the element */\n messages?: StringMap,\n /** token - Valid access token */\n token: string,\n /** uuid - Unique identifier, used for refreshing element visibility when called from the ES6 wrapper */\n uuid?: string,\n};\n\nconst createAPI = (apiHost, itemID, itemType, token) =>\n new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_SHARING,\n id: `${itemType}_${itemID}`,\n token,\n });\n\nfunction ContentSharing({\n apiHost = DEFAULT_HOSTNAME_API,\n config,\n customButton,\n displayInModal,\n itemID,\n itemType,\n language,\n messages,\n token,\n uuid,\n}: ContentSharingProps) {\n const [api, setAPI] = React.useState<API | null>(createAPI(apiHost, itemID, itemType, token));\n const [launchButton, setLaunchButton] = React.useState<React.Element<any> | null>(null);\n const [isVisible, setIsVisible] = React.useState<boolean>(!customButton);\n\n // Reset the API if necessary\n React.useEffect(() => {\n if (apiHost && itemID && itemType && token) {\n setAPI(createAPI(apiHost, itemID, itemType, token));\n }\n }, [apiHost, itemID, itemType, token]);\n\n // Reset state if the API has changed\n React.useEffect(() => {\n setIsVisible(!customButton);\n }, [api, customButton, uuid]);\n\n React.useEffect(() => {\n if (customButton && !launchButton) {\n setLaunchButton(\n React.cloneElement(customButton, {\n onClick: () => {\n return setIsVisible(true);\n },\n }),\n );\n }\n }, [config, customButton, displayInModal, itemID, itemType, language, launchButton, messages, isVisible]);\n\n return (\n <>\n {launchButton}\n {api && (\n <SharingModal\n api={api}\n config={config}\n displayInModal={displayInModal}\n isVisible={isVisible}\n itemID={itemID}\n itemType={itemType}\n language={language}\n messages={messages}\n setIsVisible={setIsVisible}\n uuid={uuid}\n />\n )}\n </>\n );\n}\n\nexport { ContentSharing as ContentSharingComponent };\nexport default withBlueprintModernization(ContentSharing);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContentSharing.js","names":["React","API","withBlueprintModernization","SharingModal","CLIENT_NAME_CONTENT_SHARING","CLIENT_VERSION","DEFAULT_HOSTNAME_API","createAPI","apiHost","itemID","itemType","token","clientName","id","version","ContentSharing","config","customButton","displayInModal","language","messages","uuid","api","setAPI","useState","launchButton","setLaunchButton","isVisible","setIsVisible","useEffect","cloneElement","onClick","createElement","Fragment","ContentSharingComponent"],"sources":["../../../src/elements/content-sharing/ContentSharing.js"],"sourcesContent":["/**\n * @flow\n * @file ContentSharing Element\n * @description This is the top-level component for ContentSharing. It instantiates the API, which it then\n * passes to the SharingModal component either immediately (when no custom button is provided) or on\n * button click (when a custom button is provided).\n * @author Box\n */\nimport 'regenerator-runtime/runtime';\nimport * as React from 'react';\nimport API from '../../api';\n// $FlowFixMe\nimport { withBlueprintModernization } from '../common/withBlueprintModernization';\nimport SharingModal from './SharingModal';\nimport { CLIENT_NAME_CONTENT_SHARING, CLIENT_VERSION, DEFAULT_HOSTNAME_API } from '../../constants';\nimport type { ItemType, StringMap } from '../../common/types/core';\nimport type { USMConfig } from '../../features/unified-share-modal/flowTypes';\n\nimport '../common/base.scss';\nimport '../common/fonts.scss';\nimport '../common/modal.scss';\n\ntype ContentSharingProps = {\n /** apiHost - API hostname. Defaults to https://api.box.com */\n apiHost: string,\n /** config - Configuration object that shows/hides features in the USM */\n config?: USMConfig,\n /**\n * customButton - Clickable element for opening the SharingModal component.\n * This property should always be used in conjunction with displayInModal.\n */\n customButton?: React.Element<any>,\n /**\n * displayInModal - Whether the SharingModal component should be displayed in a modal.\n * If false, the SharingModal component will appear as a form within the surrounding page.\n * This property can be used with or without a customButton. If used without a customButton,\n * the modal will appear on page load. See ContentSharing.stories.js for examples.\n */\n displayInModal: boolean,\n /** itemID - Box file or folder ID */\n itemID: string,\n /** itemType - \"file\" or \"folder\" */\n itemType: ItemType,\n /** language - Language used for the element */\n language: string,\n /** messages - Localized strings used by the element */\n messages?: StringMap,\n /** token - Valid access token */\n token: string,\n /** uuid - Unique identifier, used for refreshing element visibility when called from the ES6 wrapper */\n uuid?: string,\n};\n\nconst createAPI = (apiHost, itemID, itemType, token) =>\n new API({\n apiHost,\n clientName: CLIENT_NAME_CONTENT_SHARING,\n id: `${itemType}_${itemID}`,\n token,\n version: CLIENT_VERSION,\n });\n\nfunction ContentSharing({\n apiHost = DEFAULT_HOSTNAME_API,\n config,\n customButton,\n displayInModal,\n itemID,\n itemType,\n language,\n messages,\n token,\n uuid,\n}: ContentSharingProps) {\n const [api, setAPI] = React.useState<API | null>(createAPI(apiHost, itemID, itemType, token));\n const [launchButton, setLaunchButton] = React.useState<React.Element<any> | null>(null);\n const [isVisible, setIsVisible] = React.useState<boolean>(!customButton);\n\n // Reset the API if necessary\n React.useEffect(() => {\n if (apiHost && itemID && itemType && token) {\n setAPI(createAPI(apiHost, itemID, itemType, token));\n }\n }, [apiHost, itemID, itemType, token]);\n\n // Reset state if the API has changed\n React.useEffect(() => {\n setIsVisible(!customButton);\n }, [api, customButton, uuid]);\n\n React.useEffect(() => {\n if (customButton && !launchButton) {\n setLaunchButton(\n React.cloneElement(customButton, {\n onClick: () => {\n return setIsVisible(true);\n },\n }),\n );\n }\n }, [config, customButton, displayInModal, itemID, itemType, language, launchButton, messages, isVisible]);\n\n return (\n <>\n {launchButton}\n {api && (\n <SharingModal\n api={api}\n config={config}\n displayInModal={displayInModal}\n isVisible={isVisible}\n itemID={itemID}\n itemType={itemType}\n language={language}\n messages={messages}\n setIsVisible={setIsVisible}\n uuid={uuid}\n />\n )}\n </>\n );\n}\n\nexport { ContentSharing as ContentSharingComponent };\nexport default withBlueprintModernization(ContentSharing);\n"],"mappings":"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","ignoreList":[]}
@@ -20,7 +20,7 @@ import Internationalize from '../common/Internationalize';
20
20
  import Sidebar from './Sidebar';
21
21
  import NavRouter from '../common/nav-router';
22
22
  import SidebarUtils from './SidebarUtils';
23
- import { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';
23
+ import { CLIENT_NAME_CONTENT_SIDEBAR, CLIENT_VERSION, DEFAULT_HOSTNAME_API, ORIGIN_CONTENT_SIDEBAR } from '../../constants';
24
24
  import { EVENT_JS_READY } from '../common/logger/constants';
25
25
  import { mark } from '../../utils/performance';
26
26
  import { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';
@@ -123,7 +123,8 @@ class ContentSidebar extends React.Component {
123
123
  responseInterceptor,
124
124
  sharedLink,
125
125
  sharedLinkPassword,
126
- token
126
+ token,
127
+ version: CLIENT_VERSION
127
128
  });
128
129
 
129
130
  /* eslint-disable react/prop-types */
@@ -16,7 +16,12 @@ import Internationalize from '../common/Internationalize';
16
16
  import Sidebar from './Sidebar';
17
17
  import NavRouter from '../common/nav-router';
18
18
  import SidebarUtils from './SidebarUtils';
19
- import { DEFAULT_HOSTNAME_API, CLIENT_NAME_CONTENT_SIDEBAR, ORIGIN_CONTENT_SIDEBAR } from '../../constants';
19
+ import {
20
+ CLIENT_NAME_CONTENT_SIDEBAR,
21
+ CLIENT_VERSION,
22
+ DEFAULT_HOSTNAME_API,
23
+ ORIGIN_CONTENT_SIDEBAR,
24
+ } from '../../constants';
20
25
  import { EVENT_JS_READY } from '../common/logger/constants';
21
26
  import { mark } from '../../utils/performance';
22
27
  import { SIDEBAR_FIELDS_TO_FETCH, SIDEBAR_FIELDS_TO_FETCH_ARCHIVE } from '../../utils/fields';
@@ -165,6 +170,7 @@ class ContentSidebar extends React.Component<Props, State> {
165
170
  sharedLink,
166
171
  sharedLinkPassword,
167
172
  token,
173
+ version: CLIENT_VERSION,
168
174
  });
169
175
 
170
176
  /* eslint-disable react/prop-types */