@atlaskit/media-viewer 48.1.7 → 48.2.0

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 (54) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/analytics/index.js +2 -3
  3. package/dist/cjs/analytics/ufoExperiences.js +1 -1
  4. package/dist/cjs/components/media-viewer.js +13 -1
  5. package/dist/cjs/errorMessage.js +5 -3
  6. package/dist/cjs/item-viewer.js +5 -4
  7. package/dist/cjs/media-viewer.js +21 -17
  8. package/dist/cjs/navigation.js +5 -4
  9. package/dist/cjs/styleWrappers.js +1 -0
  10. package/dist/cjs/v2/header-v2.js +159 -0
  11. package/dist/cjs/v2/item-viewer-v2.js +322 -0
  12. package/dist/cjs/v2/list-v2.js +71 -0
  13. package/dist/cjs/v2/media-viewer-v2.js +114 -0
  14. package/dist/cjs/viewers/archiveSidebar/archive.js +5 -3
  15. package/dist/cjs/zoomControls.js +6 -4
  16. package/dist/es2019/analytics/index.js +2 -5
  17. package/dist/es2019/analytics/ufoExperiences.js +1 -1
  18. package/dist/es2019/components/media-viewer.js +13 -1
  19. package/dist/es2019/errorMessage.js +5 -3
  20. package/dist/es2019/item-viewer.js +5 -4
  21. package/dist/es2019/media-viewer.js +8 -6
  22. package/dist/es2019/navigation.js +5 -4
  23. package/dist/es2019/styleWrappers.js +1 -0
  24. package/dist/es2019/v2/header-v2.js +138 -0
  25. package/dist/es2019/v2/item-viewer-v2.js +269 -0
  26. package/dist/es2019/v2/list-v2.js +52 -0
  27. package/dist/es2019/v2/media-viewer-v2.js +95 -0
  28. package/dist/es2019/viewers/archiveSidebar/archive.js +4 -3
  29. package/dist/es2019/zoomControls.js +6 -4
  30. package/dist/esm/analytics/index.js +2 -3
  31. package/dist/esm/analytics/ufoExperiences.js +1 -1
  32. package/dist/esm/components/media-viewer.js +13 -1
  33. package/dist/esm/errorMessage.js +5 -3
  34. package/dist/esm/item-viewer.js +5 -4
  35. package/dist/esm/media-viewer.js +21 -17
  36. package/dist/esm/navigation.js +5 -4
  37. package/dist/esm/styleWrappers.js +1 -0
  38. package/dist/esm/v2/header-v2.js +149 -0
  39. package/dist/esm/v2/item-viewer-v2.js +302 -0
  40. package/dist/esm/v2/list-v2.js +61 -0
  41. package/dist/esm/v2/media-viewer-v2.js +104 -0
  42. package/dist/esm/viewers/archiveSidebar/archive.js +5 -3
  43. package/dist/esm/zoomControls.js +6 -4
  44. package/dist/types/analytics/index.d.ts +2 -2
  45. package/dist/types/v2/header-v2.d.ts +18 -0
  46. package/dist/types/v2/item-viewer-v2.d.ts +21 -0
  47. package/dist/types/v2/list-v2.d.ts +22 -0
  48. package/dist/types/v2/media-viewer-v2.d.ts +14 -0
  49. package/dist/types-ts4.5/analytics/index.d.ts +2 -2
  50. package/dist/types-ts4.5/v2/header-v2.d.ts +18 -0
  51. package/dist/types-ts4.5/v2/item-viewer-v2.d.ts +21 -0
  52. package/dist/types-ts4.5/v2/list-v2.d.ts +22 -0
  53. package/dist/types-ts4.5/v2/media-viewer-v2.d.ts +14 -0
  54. package/package.json +11 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/media-viewer
2
2
 
3
+ ## 48.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#43014](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43014) [`761551f78ab`](https://bitbucket.org/atlassian/atlassian-frontend/commits/761551f78ab) - Implement useFileState hook on Media Viewer under Version 2
8
+
9
+ ### Patch Changes
10
+
11
+ - [#43014](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43014) [`f021d31543e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f021d31543e) - create useFileState hook versions of header and itemviewer, create list-v2, refactor MediaFileStateError to media-client-react
12
+ - Updated dependencies
13
+
3
14
  ## 48.1.7
4
15
 
5
16
  ### Patch Changes
@@ -10,7 +10,7 @@ exports.packageVersion = exports.packageName = void 0;
10
10
  var _mediaCommon = require("@atlaskit/media-common");
11
11
  var componentName = exports.component = exports.componentName = 'mediaViewer';
12
12
  var packageName = exports.packageName = "@atlaskit/media-viewer";
13
- var packageVersion = exports.packageVersion = "48.1.7";
13
+ var packageVersion = exports.packageVersion = "48.2.0";
14
14
  function getFileAttributes(fileState) {
15
15
  if (!fileState) {
16
16
  return {
@@ -41,8 +41,7 @@ function getFileAttributes(fileState) {
41
41
 
42
42
  /** This type takes FailureAttributes and redefines `failReason` to be the strong media-viewer type */
43
43
 
44
- function fireAnalytics(payload, props) {
45
- var createAnalyticsEvent = props.createAnalyticsEvent;
44
+ function fireAnalytics(payload, createAnalyticsEvent) {
46
45
  if (createAnalyticsEvent) {
47
46
  var ev = createAnalyticsEvent(payload);
48
47
  ev.fire(_mediaCommon.ANALYTICS_MEDIA_CHANNEL);
@@ -12,7 +12,7 @@ var _mediaCommon = require("@atlaskit/media-common");
12
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
13
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
14
  var packageName = "@atlaskit/media-viewer";
15
- var packageVersion = "48.1.7";
15
+ var packageVersion = "48.2.0";
16
16
  var ufoExperience;
17
17
  var getExperience = function getExperience() {
18
18
  if (!ufoExperience) {
@@ -9,9 +9,11 @@ exports.MediaViewer = void 0;
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _react = _interopRequireWildcard(require("react"));
12
+ var _mediaViewerV = require("../v2/media-viewer-v2");
12
13
  var _mediaViewer = require("../media-viewer");
13
14
  var _utils = require("../utils");
14
15
  var _mediaClient = require("@atlaskit/media-client");
16
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -36,6 +38,9 @@ var normaliseItems = function normaliseItems(items, selectedItem, collectionName
36
38
  selectedItem: selectedItemWithCollectionName
37
39
  };
38
40
  };
41
+
42
+ // TODO: This component will be removed in https://product-fabric.atlassian.net/browse/CXP-2722
43
+
39
44
  var MediaViewer = exports.MediaViewer = function MediaViewer(_ref) {
40
45
  var featureFlags = _ref.featureFlags,
41
46
  onClose = _ref.onClose,
@@ -71,7 +76,14 @@ var MediaViewer = exports.MediaViewer = function MediaViewer(_ref) {
71
76
  parent.postMessage(closingMsg, '*');
72
77
  };
73
78
  }, []);
74
- return /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
79
+ return (0, _platformFeatureFlags.getBooleanFF)('platform.media-experience.media-viewer-v2_hgsii') ? /*#__PURE__*/_react.default.createElement(_mediaViewerV.MediaViewerV2, {
80
+ selectedItem: normalisedSelectedItem,
81
+ onClose: onClose,
82
+ items: normalisedItems,
83
+ featureFlags: featureFlags,
84
+ extensions: extensions,
85
+ contextId: contextId
86
+ }) : /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
75
87
  mediaClient: mediaClient,
76
88
  selectedItem: normalisedSelectedItem,
77
89
  onClose: onClose,
@@ -70,12 +70,14 @@ var ErrorMessage = exports.ErrorMessage = /*#__PURE__*/function (_React$Componen
70
70
  error = props.error,
71
71
  fileState = props.fileState,
72
72
  fileId = props.fileId,
73
- traceContext = props.traceContext;
73
+ traceContext = props.traceContext,
74
+ createAnalyticsEvent = props.createAnalyticsEvent,
75
+ fileStateFlags = props.fileStateFlags;
74
76
  if (supressAnalytics !== true) {
75
77
  var payload = ErrorMessage.getEventPayload(error, fileId, fileState, traceContext);
76
- (0, _analytics.fireAnalytics)(payload, props);
78
+ (0, _analytics.fireAnalytics)(payload, createAnalyticsEvent);
77
79
  var rawPayload = _objectSpread(_objectSpread({}, payload === null || payload === void 0 ? void 0 : payload.attributes), {}, {
78
- fileStateFlags: props.fileStateFlags
80
+ fileStateFlags: fileStateFlags
79
81
  });
80
82
  if (Object.keys(rawPayload).includes('status')) {
81
83
  delete rawPayload['status'];
@@ -131,7 +131,7 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
131
131
  item.whenSuccessful(function (fileItem) {
132
132
  if (isFileStateItem(fileItem)) {
133
133
  var fileAttributes = (0, _analytics.getFileAttributes)(fileItem);
134
- (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)(fileAttributes, _this.traceContext), _this.props);
134
+ (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)(fileAttributes, _this.traceContext), _this.props.createAnalyticsEvent);
135
135
  (0, _ufoExperiences.succeedMediaFileUfoExperience)({
136
136
  fileAttributes: fileAttributes,
137
137
  fileStateFlags: _this.fileStateFlags
@@ -147,7 +147,7 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
147
147
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onExternalImgSuccess", function () {
148
148
  (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)({
149
149
  fileId: 'external-image'
150
- }), _this.props);
150
+ }), _this.props.createAnalyticsEvent);
151
151
  (0, _ufoExperiences.succeedMediaFileUfoExperience)({
152
152
  fileAttributes: {
153
153
  fileId: 'external-image'
@@ -352,7 +352,8 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
352
352
  value: function init(props) {
353
353
  var _this3 = this;
354
354
  var mediaClient = props.mediaClient,
355
- identifier = props.identifier;
355
+ identifier = props.identifier,
356
+ createAnalyticsEvent = props.createAnalyticsEvent;
356
357
  if ((0, _mediaClient.isExternalImageIdentifier)(identifier)) {
357
358
  // external images do not need to talk to our backend,
358
359
  // so therefore no need for media-client subscriptions.
@@ -363,7 +364,7 @@ var ItemViewerBase = exports.ItemViewerBase = /*#__PURE__*/function (_React$Comp
363
364
  return;
364
365
  }
365
366
  var id = identifier.id;
366
- (0, _analytics.fireAnalytics)((0, _commenced.createCommencedEvent)(id, this.traceContext), this.props);
367
+ (0, _analytics.fireAnalytics)((0, _commenced.createCommencedEvent)(id, this.traceContext), createAnalyticsEvent);
367
368
  (0, _ufoExperiences.startMediaFileUfoExperience)();
368
369
  this.subscription = mediaClient.file.getFileState(id, {
369
370
  collectionName: identifier.collectionName
@@ -44,16 +44,20 @@ var MediaViewerComponent = exports.MediaViewerComponent = /*#__PURE__*/function
44
44
  isSidebarVisible: false
45
45
  });
46
46
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onShortcutClosed", function () {
47
- (0, _analytics.fireAnalytics)((0, _closed.createClosedEvent)('escKey'), _this.props);
48
- var onClose = _this.props.onClose;
47
+ var _this$props = _this.props,
48
+ onClose = _this$props.onClose,
49
+ createAnalyticsEvent = _this$props.createAnalyticsEvent;
50
+ (0, _analytics.fireAnalytics)((0, _closed.createClosedEvent)('escKey'), createAnalyticsEvent);
49
51
  if (onClose) {
50
52
  onClose();
51
53
  }
52
54
  });
53
55
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onContentClose", function (_e, analyticsEvent) {
54
- var onClose = _this.props.onClose;
56
+ var _this$props2 = _this.props,
57
+ onClose = _this$props2.onClose,
58
+ createAnalyticsEvent = _this$props2.createAnalyticsEvent;
55
59
  if (analyticsEvent && analyticsEvent.payload && analyticsEvent.payload.actionSubject === 'button') {
56
- (0, _analytics.fireAnalytics)((0, _closed.createClosedEvent)('button'), _this.props);
60
+ (0, _analytics.fireAnalytics)((0, _closed.createClosedEvent)('button'), createAnalyticsEvent);
57
61
  }
58
62
  if (onClose) {
59
63
  onClose();
@@ -88,29 +92,29 @@ var MediaViewerComponent = exports.MediaViewerComponent = /*#__PURE__*/function
88
92
  (0, _createClass2.default)(MediaViewerComponent, [{
89
93
  key: "UNSAFE_componentWillMount",
90
94
  value: function UNSAFE_componentWillMount() {
91
- (0, _analytics.fireAnalytics)((0, _modal.createModalEvent)(), this.props);
95
+ (0, _analytics.fireAnalytics)((0, _modal.createModalEvent)(), this.props.createAnalyticsEvent);
92
96
  (0, _perfMarks.start)('MediaViewer.SessionDuration');
93
97
  }
94
98
  }, {
95
99
  key: "defaultSelectedItem",
96
100
  get: function get() {
97
- var _this$props = this.props,
98
- items = _this$props.items,
99
- selectedItem = _this$props.selectedItem;
101
+ var _this$props3 = this.props,
102
+ items = _this$props3.items,
103
+ selectedItem = _this$props3.selectedItem;
100
104
  var firstItem = items[0];
101
105
  return selectedItem || firstItem;
102
106
  }
103
107
  }, {
104
108
  key: "render",
105
109
  value: function render() {
106
- var _this$props2 = this.props,
107
- mediaClient = _this$props2.mediaClient,
108
- onClose = _this$props2.onClose,
109
- items = _this$props2.items,
110
- extensions = _this$props2.extensions,
111
- contextId = _this$props2.contextId,
112
- featureFlags = _this$props2.featureFlags,
113
- innerRef = _this$props2.innerRef;
110
+ var _this$props4 = this.props,
111
+ mediaClient = _this$props4.mediaClient,
112
+ onClose = _this$props4.onClose,
113
+ items = _this$props4.items,
114
+ extensions = _this$props4.extensions,
115
+ contextId = _this$props4.contextId,
116
+ featureFlags = _this$props4.featureFlags,
117
+ innerRef = _this$props4.innerRef;
114
118
  var isSidebarVisible = this.state.isSidebarVisible;
115
119
  var content = /*#__PURE__*/_react.default.createElement("div", {
116
120
  ref: innerRef
@@ -118,7 +122,7 @@ var MediaViewerComponent = exports.MediaViewerComponent = /*#__PURE__*/function
118
122
  "data-testid": "media-viewer-popup",
119
123
  className: _classnames.mediaViewerPopupClass
120
124
  }, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
121
- keyCode: 27,
125
+ code: 'Escape',
122
126
  handler: this.onShortcutClosed
123
127
  }), /*#__PURE__*/_react.default.createElement(_content.Content, {
124
128
  isSidebarVisible: isSidebarVisible,
@@ -41,11 +41,12 @@ var NavigationBase = exports.NavigationBase = /*#__PURE__*/function (_Component)
41
41
  return function () {
42
42
  var _this$props = _this.props,
43
43
  onChange = _this$props.onChange,
44
- items = _this$props.items;
44
+ items = _this$props.items,
45
+ createAnalyticsEvent = _this$props.createAnalyticsEvent;
45
46
  var selectedIndex = _this.selectedIndex;
46
47
  var newItem = direction === 'next' ? items[selectedIndex + 1] : items[selectedIndex - 1];
47
48
  if (newItem) {
48
- (0, _analytics.fireAnalytics)((0, _navigated.createNavigatedEvent)(direction, source, newItem), _this.props);
49
+ (0, _analytics.fireAnalytics)((0, _navigated.createNavigatedEvent)(direction, source, newItem), createAnalyticsEvent);
49
50
  onChange(newItem);
50
51
  }
51
52
  };
@@ -82,7 +83,7 @@ var NavigationBase = exports.NavigationBase = /*#__PURE__*/function (_Component)
82
83
  }, isLeftVisible ? /*#__PURE__*/_react.default.createElement(_styleWrappers.Arrow, {
83
84
  className: _mediaUi.hideControlsClassName
84
85
  }, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
85
- keyCode: 37,
86
+ code: 'ArrowLeft',
86
87
  handler: prev('keyboard')
87
88
  }), /*#__PURE__*/_react.default.createElement(_standardButton.default, {
88
89
  testId: prevNavButtonId,
@@ -100,7 +101,7 @@ var NavigationBase = exports.NavigationBase = /*#__PURE__*/function (_Component)
100
101
  })) : null), /*#__PURE__*/_react.default.createElement(_styleWrappers.RightWrapper, null, isRightVisible ? /*#__PURE__*/_react.default.createElement(_styleWrappers.Arrow, {
101
102
  className: _mediaUi.hideControlsClassName
102
103
  }, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
103
- keyCode: 39,
104
+ code: 'ArrowRight',
104
105
  handler: next('keyboard')
105
106
  }), /*#__PURE__*/_react.default.createElement(_standardButton.default, {
106
107
  testId: nextNavButtonId,
@@ -13,6 +13,7 @@ var _reactScrolllock = require("react-scrolllock");
13
13
  var _useCallbackRef = require("use-callback-ref");
14
14
  /** @jsx jsx */
15
15
 
16
+ // We are keeping this data-testid since JIRA is still using it in their codebase to perform checks. Before removing this, we need to ensure this 'media-viewer-popup' test id is not being used anywhere else in other codebases
16
17
  var Blanket = exports.Blanket = function Blanket(_ref) {
17
18
  var datatestId = _ref['data-testid'],
18
19
  className = _ref.className,
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.HeaderV2 = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _mediaClient = require("@atlaskit/media-client");
12
+ var _mediaUi = require("@atlaskit/media-ui");
13
+ var _codeViewer = require("@atlaskit/media-ui/codeViewer");
14
+ var _reactIntlNext = require("react-intl-next");
15
+ var _domain = require("../domain");
16
+ var _styleWrappers = require("../styleWrappers");
17
+ var _download = require("../download");
18
+ var _mediaClientReact = require("@atlaskit/media-client-react");
19
+ var _mimeTypeIcon = require("@atlaskit/media-ui/mime-type-icon");
20
+ var _util = require("../viewers/codeViewer/util");
21
+ var _errors = require("../errors");
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+ var HeaderV2 = exports.HeaderV2 = function HeaderV2(_ref) {
25
+ var _ref$isArchiveSideBar = _ref.isArchiveSideBarVisible,
26
+ isArchiveSideBarVisible = _ref$isArchiveSideBar === void 0 ? false : _ref$isArchiveSideBar,
27
+ extensions = _ref.extensions,
28
+ isSidebarVisible = _ref.isSidebarVisible,
29
+ onSidebarButtonClick = _ref.onSidebarButtonClick,
30
+ identifier = _ref.identifier,
31
+ onSetArchiveSideBarVisible = _ref.onSetArchiveSideBarVisible;
32
+ // States
33
+ var _useState = (0, _react.useState)(_domain.Outcome.pending()),
34
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
35
+ item = _useState2[0],
36
+ setItem = _useState2[1];
37
+
38
+ // Refs and Hooks
39
+ var mediaClient = (0, _mediaClientReact.useMediaClient)();
40
+ var _ref2 = identifier,
41
+ id = _ref2.id,
42
+ collectionName = _ref2.collectionName,
43
+ occurrenceKey = _ref2.occurrenceKey;
44
+ var _useFileState = (0, _mediaClientReact.useFileState)(id, {
45
+ collectionName: collectionName,
46
+ occurrenceKey: occurrenceKey
47
+ }),
48
+ fileState = _useFileState.fileState;
49
+ var onSetArchiveSideBarVisibleRef = (0, _react.useRef)(onSetArchiveSideBarVisible);
50
+ onSetArchiveSideBarVisibleRef.current = onSetArchiveSideBarVisible;
51
+
52
+ // previous values
53
+ (0, _react.useEffect)(function () {
54
+ if ((0, _mediaClient.isExternalImageIdentifier)(identifier)) {
55
+ var _identifier$name = identifier.name,
56
+ name = _identifier$name === void 0 ? identifier.dataURI : _identifier$name;
57
+
58
+ // Simulate a processing file state to render right metadata
59
+ var _fileState = {
60
+ status: 'processing',
61
+ id: name,
62
+ mediaType: 'image',
63
+ mimeType: 'image/',
64
+ name: name,
65
+ representations: {},
66
+ size: 0
67
+ };
68
+ setItem(_domain.Outcome.successful(_fileState));
69
+ return;
70
+ }
71
+ if (!fileState) {
72
+ return;
73
+ }
74
+ if (fileState.status !== 'error') {
75
+ var _onSetArchiveSideBarV;
76
+ (_onSetArchiveSideBarV = onSetArchiveSideBarVisibleRef.current) === null || _onSetArchiveSideBarV === void 0 || _onSetArchiveSideBarV.call(onSetArchiveSideBarVisibleRef, !(0, _mediaClient.isErrorFileState)(fileState) && fileState.mediaType === 'archive');
77
+ setItem(_domain.Outcome.successful(fileState));
78
+ } else {
79
+ var error = new _mediaClientReact.MediaFileStateError(fileState.id, fileState.reason, fileState.message, fileState.details);
80
+ setItem(_domain.Outcome.failed(new _errors.MediaViewerError('header-fetch-metadata', error)));
81
+ }
82
+ }, [fileState, identifier]);
83
+ var renderFileTypeText = function renderFileTypeText(item) {
84
+ // render appropriate header if its a code/email item and the feature flag is enabled
85
+ if ((0, _codeViewer.isCodeViewerItem)(item.name, item.mimeType)) {
86
+ // gather language and extension
87
+ // i.e test.py would have a language of 'python' and an extension of 'py'
88
+ var language = (0, _codeViewer.getLanguageType)(item.name, item.mimeType);
89
+ var ext = (0, _codeViewer.getExtension)(item.name);
90
+
91
+ // specific cases for if we want a certain word translated in other languages
92
+ switch (ext) {
93
+ case 'msg':
94
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.email);
95
+ case 'txt':
96
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.text);
97
+ }
98
+
99
+ // no need for translations in other languages
100
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _util.getFormat)(language || 'unknown', ext));
101
+ }
102
+ var mediaType = item.mediaType;
103
+ var mediaTypeTranslationMap = {
104
+ doc: _mediaUi.messages.document,
105
+ audio: _mediaUi.messages.audio,
106
+ video: _mediaUi.messages.video,
107
+ image: _mediaUi.messages.image,
108
+ archive: _mediaUi.messages.archive,
109
+ unknown: _mediaUi.messages.unknown
110
+ };
111
+ var message = mediaTypeTranslationMap[mediaType || 'unknown'];
112
+
113
+ // Defaulting to unknown again since backend has more mediaTypes than the current supported ones
114
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, message || _mediaUi.messages.unknown);
115
+ };
116
+ return /*#__PURE__*/_react.default.createElement(_styleWrappers.Header, {
117
+ isArchiveSideBarVisible: isArchiveSideBarVisible,
118
+ className: _mediaUi.hideControlsClassName
119
+ }, /*#__PURE__*/_react.default.createElement(_styleWrappers.LeftHeader, null, item.match({
120
+ successful: function successful(item) {
121
+ return !(0, _mediaClient.isErrorFileState)(item) && /*#__PURE__*/_react.default.createElement(_styleWrappers.MetadataWrapper, null, /*#__PURE__*/_react.default.createElement(_styleWrappers.MetadataIconWrapper, null, /*#__PURE__*/_react.default.createElement(_mimeTypeIcon.MimeTypeIcon, {
122
+ testId: 'media-viewer-file-type-icon',
123
+ mediaType: item.mediaType,
124
+ mimeType: item.mimeType,
125
+ name: item.name
126
+ })), /*#__PURE__*/_react.default.createElement(_styleWrappers.MedatadataTextWrapper, null, /*#__PURE__*/_react.default.createElement(_styleWrappers.MetadataFileName, {
127
+ "data-testid": "media-viewer-file-name"
128
+ }, item.name || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.unknown)), /*#__PURE__*/_react.default.createElement(_styleWrappers.MetadataSubText, {
129
+ "data-testid": "media-viewer-file-metadata-text"
130
+ }, /*#__PURE__*/_react.default.createElement(_styleWrappers.FormattedMessageWrapper, null, renderFileTypeText(item)), item.size ? ' · ' + (0, _mediaUi.toHumanReadableMediaSize)(item.size) : '')));
131
+ },
132
+ pending: function pending() {
133
+ return null;
134
+ },
135
+ failed: function failed() {
136
+ return null;
137
+ }
138
+ })), /*#__PURE__*/_react.default.createElement(_styleWrappers.RightHeader, null, (extensions === null || extensions === void 0 ? void 0 : extensions.sidebar) && /*#__PURE__*/_react.default.createElement(_mediaUi.MediaButton, {
139
+ isSelected: isSidebarVisible,
140
+ testId: "media-viewer-sidebar-button",
141
+ onClick: onSidebarButtonClick,
142
+ iconBefore: extensions.sidebar.icon
143
+ }), item.match({
144
+ pending: function pending() {
145
+ return _download.DisabledToolbarDownloadButton;
146
+ },
147
+ failed: function failed() {
148
+ return _download.DisabledToolbarDownloadButton;
149
+ },
150
+ successful: function successful(item) {
151
+ return /*#__PURE__*/_react.default.createElement(_download.ToolbarDownloadButton, {
152
+ state: item,
153
+ identifier: identifier,
154
+ mediaClient: mediaClient
155
+ });
156
+ }
157
+ })));
158
+ };
159
+ var _default = exports.default = (0, _reactIntlNext.injectIntl)(HeaderV2);