@atlaskit/media-viewer 47.6.1 → 48.0.1

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 (99) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/analytics/index.js +1 -1
  3. package/dist/cjs/analytics/ufoExperiences.js +1 -1
  4. package/dist/cjs/components/media-viewer.js +36 -12
  5. package/dist/cjs/media-viewer.js +2 -19
  6. package/dist/cjs/utils/index.js +13 -8
  7. package/dist/cjs/version.json +1 -1
  8. package/dist/es2019/analytics/index.js +1 -1
  9. package/dist/es2019/analytics/ufoExperiences.js +1 -1
  10. package/dist/es2019/components/media-viewer.js +26 -12
  11. package/dist/es2019/media-viewer.js +2 -16
  12. package/dist/es2019/utils/index.js +10 -9
  13. package/dist/es2019/version.json +1 -1
  14. package/dist/esm/analytics/index.js +1 -1
  15. package/dist/esm/analytics/ufoExperiences.js +1 -1
  16. package/dist/esm/components/media-viewer.js +33 -12
  17. package/dist/esm/media-viewer.js +2 -19
  18. package/dist/esm/utils/index.js +10 -7
  19. package/dist/esm/version.json +1 -1
  20. package/dist/types/components/media-viewer.d.ts +1 -1
  21. package/dist/types/components/types.d.ts +1 -17
  22. package/dist/types/index.d.ts +1 -1
  23. package/dist/types/media-viewer.d.ts +1 -12
  24. package/dist/types/utils/index.d.ts +1 -0
  25. package/dist/types-ts4.5/analytics/events/index.d.ts +14 -0
  26. package/dist/types-ts4.5/analytics/events/operational/_mediaFile.d.ts +3 -0
  27. package/dist/types-ts4.5/analytics/events/operational/commenced.d.ts +5 -0
  28. package/dist/types-ts4.5/analytics/events/operational/loadFailed.d.ts +7 -0
  29. package/dist/types-ts4.5/analytics/events/operational/loadSucceeded.d.ts +5 -0
  30. package/dist/types-ts4.5/analytics/events/operational/previewUnsupported.d.ts +6 -0
  31. package/dist/types-ts4.5/analytics/events/operational/zipEntryLoadFailed.d.ts +13 -0
  32. package/dist/types-ts4.5/analytics/events/operational/zipEntryLoadSucceeded.d.ts +12 -0
  33. package/dist/types-ts4.5/analytics/events/screen/modal.d.ts +3 -0
  34. package/dist/types-ts4.5/analytics/events/ui/_clickedButton.d.ts +2 -0
  35. package/dist/types-ts4.5/analytics/events/ui/closed.d.ts +8 -0
  36. package/dist/types-ts4.5/analytics/events/ui/downloadButtonClicked.d.ts +8 -0
  37. package/dist/types-ts4.5/analytics/events/ui/failedPreviewDownloadButtonClicked.d.ts +10 -0
  38. package/dist/types-ts4.5/analytics/events/ui/navigated.d.ts +12 -0
  39. package/dist/types-ts4.5/analytics/events/ui/zoomInButtonClicked.d.ts +8 -0
  40. package/dist/types-ts4.5/analytics/events/ui/zoomOutButtonClicked.d.ts +6 -0
  41. package/dist/types-ts4.5/analytics/index.d.ts +16 -0
  42. package/dist/types-ts4.5/analytics/ufoExperiences.d.ts +19 -0
  43. package/dist/types-ts4.5/classnames.d.ts +5 -0
  44. package/dist/types-ts4.5/components/media-viewer-analytics-error-boundary.d.ts +10 -0
  45. package/dist/types-ts4.5/components/media-viewer-loader.d.ts +20 -0
  46. package/dist/types-ts4.5/components/media-viewer.d.ts +3 -0
  47. package/dist/types-ts4.5/components/types.d.ts +26 -0
  48. package/dist/types-ts4.5/content.d.ts +10 -0
  49. package/dist/types-ts4.5/domain/index.d.ts +1 -0
  50. package/dist/types-ts4.5/domain/outcome.d.ts +32 -0
  51. package/dist/types-ts4.5/domain/zoomLevel.d.ts +15 -0
  52. package/dist/types-ts4.5/download.d.ts +24 -0
  53. package/dist/types-ts4.5/error-images.d.ts +2 -0
  54. package/dist/types-ts4.5/errorMessage.d.ts +31 -0
  55. package/dist/types-ts4.5/errors.d.ts +23 -0
  56. package/dist/types-ts4.5/header.d.ts +41 -0
  57. package/dist/types-ts4.5/index.d.ts +2 -0
  58. package/dist/types-ts4.5/item-viewer.d.ts +45 -0
  59. package/dist/types-ts4.5/list.d.ts +28 -0
  60. package/dist/types-ts4.5/loading.d.ts +2 -0
  61. package/dist/types-ts4.5/media-viewer.d.ts +32 -0
  62. package/dist/types-ts4.5/navigation.d.ts +20 -0
  63. package/dist/types-ts4.5/styleWrappers.d.ts +120 -0
  64. package/dist/types-ts4.5/styles.d.ts +62 -0
  65. package/dist/types-ts4.5/utils/closeOnDirectClick.d.ts +2 -0
  66. package/dist/types-ts4.5/utils/getIdentifierCollection.d.ts +2 -0
  67. package/dist/types-ts4.5/utils/getObjectUrlFromFileState.d.ts +2 -0
  68. package/dist/types-ts4.5/utils/index.d.ts +10 -0
  69. package/dist/types-ts4.5/utils/isIE.d.ts +1 -0
  70. package/dist/types-ts4.5/viewers/archiveSidebar/archive-sidebar-folder-entry.d.ts +27 -0
  71. package/dist/types-ts4.5/viewers/archiveSidebar/archive-sidebar-header.d.ts +9 -0
  72. package/dist/types-ts4.5/viewers/archiveSidebar/archive-sidebar-renderer.d.ts +26 -0
  73. package/dist/types-ts4.5/viewers/archiveSidebar/archive-sidebar.d.ts +26 -0
  74. package/dist/types-ts4.5/viewers/archiveSidebar/archive.d.ts +37 -0
  75. package/dist/types-ts4.5/viewers/archiveSidebar/archiveViewerLoader.d.ts +12 -0
  76. package/dist/types-ts4.5/viewers/archiveSidebar/consts.d.ts +2 -0
  77. package/dist/types-ts4.5/viewers/archiveSidebar/styleWrappers.d.ts +24 -0
  78. package/dist/types-ts4.5/viewers/archiveSidebar/styles.d.ts +26 -0
  79. package/dist/types-ts4.5/viewers/archiveSidebar/types.d.ts +9 -0
  80. package/dist/types-ts4.5/viewers/audio.d.ts +31 -0
  81. package/dist/types-ts4.5/viewers/base-viewer.d.ts +28 -0
  82. package/dist/types-ts4.5/viewers/codeViewer/codeViewerRenderer.d.ts +31 -0
  83. package/dist/types-ts4.5/viewers/codeViewer/index.d.ts +25 -0
  84. package/dist/types-ts4.5/viewers/codeViewer/msg-parser.d.ts +8 -0
  85. package/dist/types-ts4.5/viewers/codeViewer/styles.d.ts +3 -0
  86. package/dist/types-ts4.5/viewers/codeViewer/util.d.ts +4 -0
  87. package/dist/types-ts4.5/viewers/doc/index.d.ts +27 -0
  88. package/dist/types-ts4.5/viewers/doc/pdfRenderer.d.ts +30 -0
  89. package/dist/types-ts4.5/viewers/image/index.d.ts +34 -0
  90. package/dist/types-ts4.5/viewers/image/interactive-img.d.ts +41 -0
  91. package/dist/types-ts4.5/viewers/modalSpinner.d.ts +8 -0
  92. package/dist/types-ts4.5/viewers/video.d.ts +30 -0
  93. package/dist/types-ts4.5/zoomControls.d.ts +15 -0
  94. package/package.json +4 -4
  95. package/report.api.md +1 -13
  96. package/dist/cjs/components/normaliseInput.js +0 -65
  97. package/dist/es2019/components/normaliseInput.js +0 -52
  98. package/dist/esm/components/normaliseInput.js +0 -57
  99. package/dist/types/components/normaliseInput.d.ts +0 -13
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/media-viewer
2
2
 
3
+ ## 48.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`9d00501a414`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9d00501a414) - Ensure legacy types are published for TS 4.5-4.8
8
+
9
+ ## 48.0.0
10
+
11
+ ### Major Changes
12
+
13
+ - [`8c6a6cf4bc4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8c6a6cf4bc4) - Media Viewer no longer accepts a collection name as a data source. Integrators should pass the full list of files to browse, instead.
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 47.6.1
4
20
 
5
21
  ### Patch Changes
@@ -12,7 +12,7 @@ var componentName = 'mediaViewer';
12
12
  exports.component = exports.componentName = componentName;
13
13
  var packageName = "@atlaskit/media-viewer";
14
14
  exports.packageName = packageName;
15
- var packageVersion = "47.6.1";
15
+ var packageVersion = "48.0.1";
16
16
  exports.packageVersion = packageVersion;
17
17
  function getFileAttributes(fileState) {
18
18
  if (!fileState) {
@@ -12,7 +12,7 @@ var _mediaCommon = require("@atlaskit/media-common");
12
12
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
13
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
14
  var packageName = "@atlaskit/media-viewer";
15
- var packageVersion = "47.6.1";
15
+ var packageVersion = "48.0.1";
16
16
  var ufoExperience;
17
17
  var getExperience = function getExperience() {
18
18
  if (!ufoExperience) {
@@ -1,13 +1,41 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.MediaViewer = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _react = _interopRequireWildcard(require("react"));
9
12
  var _mediaViewer = require("../media-viewer");
10
- var _normaliseInput2 = require("./normaliseInput");
13
+ var _utils = require("../utils");
14
+ var _mediaClient = require("@atlaskit/media-client");
15
+ 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
+ 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
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+ var ensureCollectionName = function ensureCollectionName(identifier, collectionName) {
20
+ return (0, _mediaClient.isFileIdentifier)(identifier) ? _objectSpread(_objectSpread({}, identifier), {}, {
21
+ collectionName: identifier.collectionName || collectionName
22
+ }) : identifier;
23
+ };
24
+ var normaliseItems = function normaliseItems(items, selectedItem, collectionName) {
25
+ var selectedItemWithCollectionName = ensureCollectionName(selectedItem, collectionName);
26
+ var selectedIndex = -1;
27
+ var itemsWithCollectionName = items.map(function (item, index) {
28
+ if ((0, _utils.isSameIdentifier)(item, selectedItemWithCollectionName)) {
29
+ selectedIndex = index;
30
+ }
31
+ return ensureCollectionName(item, collectionName);
32
+ });
33
+ var itemsWithSelectedItem = selectedIndex === -1 ? [selectedItem].concat((0, _toConsumableArray2.default)(itemsWithCollectionName)) : itemsWithCollectionName;
34
+ return {
35
+ items: itemsWithSelectedItem,
36
+ selectedItem: selectedItemWithCollectionName
37
+ };
38
+ };
11
39
  var MediaViewer = function MediaViewer(_ref) {
12
40
  var featureFlags = _ref.featureFlags,
13
41
  onClose = _ref.onClose,
@@ -16,16 +44,12 @@ var MediaViewer = function MediaViewer(_ref) {
16
44
  collectionName = _ref.collectionName,
17
45
  items = _ref.items,
18
46
  extensions = _ref.extensions,
19
- contextId = _ref.contextId,
20
- dataSource = _ref.dataSource;
21
- var _normaliseInput = (0, _normaliseInput2.normaliseInput)({
22
- selectedItem: selectedItem,
23
- collectionName: collectionName,
24
- items: items,
25
- dataSource: dataSource
26
- }),
27
- normalisedSelectedItem = _normaliseInput.normalisedSelectedItem,
28
- normalisedItems = _normaliseInput.normalisedItems;
47
+ contextId = _ref.contextId;
48
+ var _useMemo = (0, _react.useMemo)(function () {
49
+ return normaliseItems(items, selectedItem, collectionName);
50
+ }, [items, selectedItem, collectionName]),
51
+ normalisedItems = _useMemo.items,
52
+ normalisedSelectedItem = _useMemo.selectedItem;
29
53
  return /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
30
54
  mediaClient: mediaClient,
31
55
  selectedItem: normalisedSelectedItem,
@@ -25,8 +25,6 @@ var _content = require("./content");
25
25
  var _styleWrappers = require("./styleWrappers");
26
26
  var _perfMarks = require("perf-marks");
27
27
  var _classnames = require("./classnames");
28
- var _errorMessage = _interopRequireDefault(require("./errorMessage"));
29
- var _errors = require("./errors");
30
28
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
31
29
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
32
30
  var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
@@ -96,24 +94,9 @@ var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
96
94
  var _this$props = this.props,
97
95
  items = _this$props.items,
98
96
  selectedItem = _this$props.selectedItem;
99
- var firstItem = items === null || items === void 0 ? void 0 : items[0];
97
+ var firstItem = items[0];
100
98
  return selectedItem || firstItem;
101
99
  }
102
- }, {
103
- key: "renderError",
104
- value:
105
- /**
106
- * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
107
- * This error message is simulating the current error thrown by the backend when consumer provides a collection as datasource.
108
- * This is displayed at this level when no items are provided from the parent component.
109
- * This error message should be removed when the deprecated API is removed.
110
- */
111
- function renderError() {
112
- return /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
113
- fileId: 'undefined',
114
- error: new _errors.MediaViewerError('collection-fetch-metadata', new Error('collection as datasource is no longer supported'))
115
- });
116
- }
117
100
  }, {
118
101
  key: "render",
119
102
  value: function render() {
@@ -134,7 +117,7 @@ var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
134
117
  }), /*#__PURE__*/_react.default.createElement(_content.Content, {
135
118
  isSidebarVisible: isSidebarVisible,
136
119
  onClose: this.onContentClose
137
- }, !items ? this.renderError() : /*#__PURE__*/_react.default.createElement(_list.List, {
120
+ }, /*#__PURE__*/_react.default.createElement(_list.List, {
138
121
  defaultSelectedItem: this.defaultSelectedItem || items[0],
139
122
  items: items,
140
123
  mediaClient: mediaClient,
@@ -4,22 +4,27 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.rejectAfter = exports.isMacPrivateFile = exports.getSelectedIndex = exports.getMimeTypeFromFilename = exports.getMediaTypeFromFilename = exports.getFormattedFolderName = exports.getFolderParent = exports.extractArchiveFolderName = void 0;
7
+ exports.rejectAfter = exports.isSameIdentifier = exports.isMacPrivateFile = exports.getSelectedIndex = exports.getMimeTypeFromFilename = exports.getMediaTypeFromFilename = exports.getFormattedFolderName = exports.getFolderParent = exports.extractArchiveFolderName = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _mediaClient = require("@atlaskit/media-client");
11
11
  var _mime = require("mime");
12
+ var isSameIdentifier = function isSameIdentifier(id1, id2) {
13
+ if ((0, _mediaClient.isFileIdentifier)(id1) && (0, _mediaClient.isFileIdentifier)(id2)) {
14
+ return id1.id === id2.id;
15
+ }
16
+ if (!(0, _mediaClient.isFileIdentifier)(id1) && !(0, _mediaClient.isFileIdentifier)(id2)) {
17
+ return id1.dataURI === id2.dataURI;
18
+ }
19
+ return false;
20
+ };
21
+
12
22
  // TODO MS-1752 - current implementation makes viewer navigation to misbehave
13
23
  // if passed a file with the same id (with different occurrenceKeys) or with the same dataURI twice
24
+ exports.isSameIdentifier = isSameIdentifier;
14
25
  var getSelectedIndex = function getSelectedIndex(items, selectedItem) {
15
26
  return items.findIndex(function (item) {
16
- if ((0, _mediaClient.isFileIdentifier)(item) && (0, _mediaClient.isFileIdentifier)(selectedItem)) {
17
- return item.id === selectedItem.id;
18
- }
19
- if (!(0, _mediaClient.isFileIdentifier)(item) && !(0, _mediaClient.isFileIdentifier)(selectedItem)) {
20
- return item.dataURI === selectedItem.dataURI;
21
- }
22
- return false;
27
+ return isSameIdentifier(item, selectedItem);
23
28
  });
24
29
  };
25
30
  exports.getSelectedIndex = getSelectedIndex;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-viewer",
3
- "version": "47.6.1",
3
+ "version": "48.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,7 @@
1
1
  import { ANALYTICS_MEDIA_CHANNEL } from '@atlaskit/media-common';
2
2
  const componentName = 'mediaViewer';
3
3
  const packageName = "@atlaskit/media-viewer";
4
- const packageVersion = "47.6.1";
4
+ const packageVersion = "48.0.1";
5
5
  export { packageName, packageVersion, componentName, componentName as component };
6
6
  export function getFileAttributes(fileState) {
7
7
  if (!fileState) {
@@ -2,7 +2,7 @@ import { UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atl
2
2
  import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
3
3
  import { getFeatureFlagKeysAllProducts } from '@atlaskit/media-common';
4
4
  const packageName = "@atlaskit/media-viewer";
5
- const packageVersion = "47.6.1";
5
+ const packageVersion = "48.0.1";
6
6
  let ufoExperience;
7
7
  const getExperience = () => {
8
8
  if (!ufoExperience) {
@@ -1,6 +1,26 @@
1
- import React from 'react';
1
+ import React, { useMemo } from 'react';
2
2
  import { MediaViewer as MediaViewerNextGen } from '../media-viewer';
3
- import { normaliseInput } from './normaliseInput';
3
+ import { isSameIdentifier } from '../utils';
4
+ import { isFileIdentifier } from '@atlaskit/media-client';
5
+ const ensureCollectionName = (identifier, collectionName) => isFileIdentifier(identifier) ? {
6
+ ...identifier,
7
+ collectionName: identifier.collectionName || collectionName
8
+ } : identifier;
9
+ const normaliseItems = (items, selectedItem, collectionName) => {
10
+ const selectedItemWithCollectionName = ensureCollectionName(selectedItem, collectionName);
11
+ let selectedIndex = -1;
12
+ const itemsWithCollectionName = items.map((item, index) => {
13
+ if (isSameIdentifier(item, selectedItemWithCollectionName)) {
14
+ selectedIndex = index;
15
+ }
16
+ return ensureCollectionName(item, collectionName);
17
+ });
18
+ const itemsWithSelectedItem = selectedIndex === -1 ? [selectedItem, ...itemsWithCollectionName] : itemsWithCollectionName;
19
+ return {
20
+ items: itemsWithSelectedItem,
21
+ selectedItem: selectedItemWithCollectionName
22
+ };
23
+ };
4
24
  export const MediaViewer = ({
5
25
  featureFlags,
6
26
  onClose,
@@ -9,18 +29,12 @@ export const MediaViewer = ({
9
29
  collectionName,
10
30
  items,
11
31
  extensions,
12
- contextId,
13
- dataSource
32
+ contextId
14
33
  }) => {
15
34
  const {
16
- normalisedSelectedItem,
17
- normalisedItems
18
- } = normaliseInput({
19
- selectedItem,
20
- collectionName,
21
- items,
22
- dataSource
23
- });
35
+ items: normalisedItems,
36
+ selectedItem: normalisedSelectedItem
37
+ } = useMemo(() => normaliseItems(items, selectedItem, collectionName), [items, selectedItem, collectionName]);
24
38
  return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
25
39
  mediaClient: mediaClient,
26
40
  selectedItem: normalisedSelectedItem,
@@ -12,8 +12,6 @@ import { Content } from './content';
12
12
  import { Blanket, SidebarWrapper } from './styleWrappers';
13
13
  import { start } from 'perf-marks';
14
14
  import { mediaViewerPopupClass } from './classnames';
15
- import ErrorMessage from './errorMessage';
16
- import { MediaViewerError } from './errors';
17
15
  export class MediaViewerComponent extends React.Component {
18
16
  constructor(...args) {
19
17
  super(...args);
@@ -77,21 +75,9 @@ export class MediaViewerComponent extends React.Component {
77
75
  items,
78
76
  selectedItem
79
77
  } = this.props;
80
- const firstItem = items === null || items === void 0 ? void 0 : items[0];
78
+ const firstItem = items[0];
81
79
  return selectedItem || firstItem;
82
80
  }
83
- /**
84
- * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
85
- * This error message is simulating the current error thrown by the backend when consumer provides a collection as datasource.
86
- * This is displayed at this level when no items are provided from the parent component.
87
- * This error message should be removed when the deprecated API is removed.
88
- */
89
- renderError() {
90
- return /*#__PURE__*/React.createElement(ErrorMessage, {
91
- fileId: 'undefined',
92
- error: new MediaViewerError('collection-fetch-metadata', new Error('collection as datasource is no longer supported'))
93
- });
94
- }
95
81
  render() {
96
82
  const {
97
83
  mediaClient,
@@ -113,7 +99,7 @@ export class MediaViewerComponent extends React.Component {
113
99
  }), /*#__PURE__*/React.createElement(Content, {
114
100
  isSidebarVisible: isSidebarVisible,
115
101
  onClose: this.onContentClose
116
- }, !items ? this.renderError() : /*#__PURE__*/React.createElement(List, {
102
+ }, /*#__PURE__*/React.createElement(List, {
117
103
  defaultSelectedItem: this.defaultSelectedItem || items[0],
118
104
  items: items,
119
105
  mediaClient: mediaClient,
@@ -1,18 +1,19 @@
1
1
  import { isFileIdentifier, getMediaTypeFromMimeType } from '@atlaskit/media-client';
2
2
  import { getType } from 'mime';
3
+ export const isSameIdentifier = (id1, id2) => {
4
+ if (isFileIdentifier(id1) && isFileIdentifier(id2)) {
5
+ return id1.id === id2.id;
6
+ }
7
+ if (!isFileIdentifier(id1) && !isFileIdentifier(id2)) {
8
+ return id1.dataURI === id2.dataURI;
9
+ }
10
+ return false;
11
+ };
3
12
 
4
13
  // TODO MS-1752 - current implementation makes viewer navigation to misbehave
5
14
  // if passed a file with the same id (with different occurrenceKeys) or with the same dataURI twice
6
15
  export const getSelectedIndex = (items, selectedItem) => {
7
- return items.findIndex(item => {
8
- if (isFileIdentifier(item) && isFileIdentifier(selectedItem)) {
9
- return item.id === selectedItem.id;
10
- }
11
- if (!isFileIdentifier(item) && !isFileIdentifier(selectedItem)) {
12
- return item.dataURI === selectedItem.dataURI;
13
- }
14
- return false;
15
- });
16
+ return items.findIndex(item => isSameIdentifier(item, selectedItem));
16
17
  };
17
18
  export const getMediaTypeFromFilename = filename => {
18
19
  const mimeType = getMimeTypeFromFilename(filename);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-viewer",
3
- "version": "47.6.1",
3
+ "version": "48.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,7 @@
1
1
  import { ANALYTICS_MEDIA_CHANNEL } from '@atlaskit/media-common';
2
2
  var componentName = 'mediaViewer';
3
3
  var packageName = "@atlaskit/media-viewer";
4
- var packageVersion = "47.6.1";
4
+ var packageVersion = "48.0.1";
5
5
  export { packageName, packageVersion, componentName, componentName as component };
6
6
  export function getFileAttributes(fileState) {
7
7
  if (!fileState) {
@@ -5,7 +5,7 @@ import { UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atl
5
5
  import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
6
6
  import { getFeatureFlagKeysAllProducts } from '@atlaskit/media-common';
7
7
  var packageName = "@atlaskit/media-viewer";
8
- var packageVersion = "47.6.1";
8
+ var packageVersion = "48.0.1";
9
9
  var ufoExperience;
10
10
  var getExperience = function getExperience() {
11
11
  if (!ufoExperience) {
@@ -1,6 +1,31 @@
1
- import React from 'react';
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
+ import React, { useMemo } from 'react';
2
6
  import { MediaViewer as MediaViewerNextGen } from '../media-viewer';
3
- import { normaliseInput } from './normaliseInput';
7
+ import { isSameIdentifier } from '../utils';
8
+ import { isFileIdentifier } from '@atlaskit/media-client';
9
+ var ensureCollectionName = function ensureCollectionName(identifier, collectionName) {
10
+ return isFileIdentifier(identifier) ? _objectSpread(_objectSpread({}, identifier), {}, {
11
+ collectionName: identifier.collectionName || collectionName
12
+ }) : identifier;
13
+ };
14
+ var normaliseItems = function normaliseItems(items, selectedItem, collectionName) {
15
+ var selectedItemWithCollectionName = ensureCollectionName(selectedItem, collectionName);
16
+ var selectedIndex = -1;
17
+ var itemsWithCollectionName = items.map(function (item, index) {
18
+ if (isSameIdentifier(item, selectedItemWithCollectionName)) {
19
+ selectedIndex = index;
20
+ }
21
+ return ensureCollectionName(item, collectionName);
22
+ });
23
+ var itemsWithSelectedItem = selectedIndex === -1 ? [selectedItem].concat(_toConsumableArray(itemsWithCollectionName)) : itemsWithCollectionName;
24
+ return {
25
+ items: itemsWithSelectedItem,
26
+ selectedItem: selectedItemWithCollectionName
27
+ };
28
+ };
4
29
  export var MediaViewer = function MediaViewer(_ref) {
5
30
  var featureFlags = _ref.featureFlags,
6
31
  onClose = _ref.onClose,
@@ -9,16 +34,12 @@ export var MediaViewer = function MediaViewer(_ref) {
9
34
  collectionName = _ref.collectionName,
10
35
  items = _ref.items,
11
36
  extensions = _ref.extensions,
12
- contextId = _ref.contextId,
13
- dataSource = _ref.dataSource;
14
- var _normaliseInput = normaliseInput({
15
- selectedItem: selectedItem,
16
- collectionName: collectionName,
17
- items: items,
18
- dataSource: dataSource
19
- }),
20
- normalisedSelectedItem = _normaliseInput.normalisedSelectedItem,
21
- normalisedItems = _normaliseInput.normalisedItems;
37
+ contextId = _ref.contextId;
38
+ var _useMemo = useMemo(function () {
39
+ return normaliseItems(items, selectedItem, collectionName);
40
+ }, [items, selectedItem, collectionName]),
41
+ normalisedItems = _useMemo.items,
42
+ normalisedSelectedItem = _useMemo.selectedItem;
22
43
  return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
23
44
  mediaClient: mediaClient,
24
45
  selectedItem: normalisedSelectedItem,
@@ -20,8 +20,6 @@ import { Content } from './content';
20
20
  import { Blanket, SidebarWrapper } from './styleWrappers';
21
21
  import { start } from 'perf-marks';
22
22
  import { mediaViewerPopupClass } from './classnames';
23
- import ErrorMessage from './errorMessage';
24
- import { MediaViewerError } from './errors';
25
23
  export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
26
24
  _inherits(MediaViewerComponent, _React$Component);
27
25
  var _super = _createSuper(MediaViewerComponent);
@@ -89,24 +87,9 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
89
87
  var _this$props = this.props,
90
88
  items = _this$props.items,
91
89
  selectedItem = _this$props.selectedItem;
92
- var firstItem = items === null || items === void 0 ? void 0 : items[0];
90
+ var firstItem = items[0];
93
91
  return selectedItem || firstItem;
94
92
  }
95
- }, {
96
- key: "renderError",
97
- value:
98
- /**
99
- * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
100
- * This error message is simulating the current error thrown by the backend when consumer provides a collection as datasource.
101
- * This is displayed at this level when no items are provided from the parent component.
102
- * This error message should be removed when the deprecated API is removed.
103
- */
104
- function renderError() {
105
- return /*#__PURE__*/React.createElement(ErrorMessage, {
106
- fileId: 'undefined',
107
- error: new MediaViewerError('collection-fetch-metadata', new Error('collection as datasource is no longer supported'))
108
- });
109
- }
110
93
  }, {
111
94
  key: "render",
112
95
  value: function render() {
@@ -127,7 +110,7 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
127
110
  }), /*#__PURE__*/React.createElement(Content, {
128
111
  isSidebarVisible: isSidebarVisible,
129
112
  onClose: this.onContentClose
130
- }, !items ? this.renderError() : /*#__PURE__*/React.createElement(List, {
113
+ }, /*#__PURE__*/React.createElement(List, {
131
114
  defaultSelectedItem: this.defaultSelectedItem || items[0],
132
115
  items: items,
133
116
  mediaClient: mediaClient,
@@ -2,18 +2,21 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { isFileIdentifier, getMediaTypeFromMimeType } from '@atlaskit/media-client';
4
4
  import { getType } from 'mime';
5
+ export var isSameIdentifier = function isSameIdentifier(id1, id2) {
6
+ if (isFileIdentifier(id1) && isFileIdentifier(id2)) {
7
+ return id1.id === id2.id;
8
+ }
9
+ if (!isFileIdentifier(id1) && !isFileIdentifier(id2)) {
10
+ return id1.dataURI === id2.dataURI;
11
+ }
12
+ return false;
13
+ };
5
14
 
6
15
  // TODO MS-1752 - current implementation makes viewer navigation to misbehave
7
16
  // if passed a file with the same id (with different occurrenceKeys) or with the same dataURI twice
8
17
  export var getSelectedIndex = function getSelectedIndex(items, selectedItem) {
9
18
  return items.findIndex(function (item) {
10
- if (isFileIdentifier(item) && isFileIdentifier(selectedItem)) {
11
- return item.id === selectedItem.id;
12
- }
13
- if (!isFileIdentifier(item) && !isFileIdentifier(selectedItem)) {
14
- return item.dataURI === selectedItem.dataURI;
15
- }
16
- return false;
19
+ return isSameIdentifier(item, selectedItem);
17
20
  });
18
21
  };
19
22
  export var getMediaTypeFromFilename = function getMediaTypeFromFilename(filename) {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-viewer",
3
- "version": "47.6.1",
3
+ "version": "48.0.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
2
  import { MediaViewerProps } from './types';
3
- export declare const MediaViewer: ({ featureFlags, onClose, mediaClient, selectedItem, collectionName, items, extensions, contextId, dataSource, }: MediaViewerProps) => JSX.Element;
3
+ export declare const MediaViewer: ({ featureFlags, onClose, mediaClient, selectedItem, collectionName, items, extensions, contextId, }: MediaViewerProps) => JSX.Element;
@@ -1,10 +1,6 @@
1
1
  import { Identifier, MediaClient } from '@atlaskit/media-client';
2
2
  import { MediaFeatureFlags } from '@atlaskit/media-common';
3
3
  import { ReactNode } from 'react';
4
- export interface MediaViewerDataSource {
5
- list?: Array<Identifier>;
6
- collectionName?: string;
7
- }
8
4
  export type FileStateFlags = {
9
5
  wasStatusProcessing: boolean;
10
6
  wasStatusUploading: boolean;
@@ -21,20 +17,8 @@ export interface MediaViewerExtensions {
21
17
  export interface MediaViewerProps {
22
18
  readonly mediaClient: MediaClient;
23
19
  readonly selectedItem: Identifier;
24
- /**
25
- * Data source for media viewer.
26
- * @deprecated {@link https://hello.atlassian.net/browse/ENGHEALTH-147 Internal documentation for deprecation (no external access)}}
27
- * Use items property instead
28
- */
29
- readonly dataSource?: MediaViewerDataSource;
30
- readonly items?: Array<Identifier>;
20
+ readonly items: Array<Identifier>;
31
21
  readonly collectionName: string;
32
- /**
33
- * The page size
34
- * @deprecated {@link https://hello.atlassian.net/browse/ENGHEALTH-147 Internal documentation for deprecation (no external access)}}
35
- * There is no replacement for this property.
36
- */
37
- readonly pageSize?: number;
38
22
  readonly onClose?: () => void;
39
23
  readonly featureFlags?: MediaFeatureFlags;
40
24
  readonly extensions?: MediaViewerExtensions;
@@ -1,2 +1,2 @@
1
1
  export { default as MediaViewer } from './components/media-viewer-loader';
2
- export type { MediaViewerDataSource, MediaViewerExtensions, MediaViewerExtensionsActions, MediaViewerProps, } from './components/types';
2
+ export type { MediaViewerExtensions, MediaViewerExtensionsActions, MediaViewerProps, } from './components/types';
@@ -10,11 +10,7 @@ export type Props = {
10
10
  selectedItem?: Identifier;
11
11
  featureFlags?: MediaFeatureFlags;
12
12
  mediaClient: MediaClient;
13
- /**
14
- * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
15
- * property should be mandatory
16
- */
17
- items?: Identifier[];
13
+ items: Identifier[];
18
14
  extensions?: MediaViewerExtensions;
19
15
  contextId?: string;
20
16
  } & WithAnalyticsEventsProps;
@@ -30,13 +26,6 @@ export declare class MediaViewerComponent extends React.Component<Props & Wrappe
30
26
  private toggleSidebar;
31
27
  private get defaultSelectedItem();
32
28
  renderSidebar: () => JSX.Element | undefined;
33
- /**
34
- * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
35
- * This error message is simulating the current error thrown by the backend when consumer provides a collection as datasource.
36
- * This is displayed at this level when no items are provided from the parent component.
37
- * This error message should be removed when the deprecated API is removed.
38
- */
39
- renderError(): JSX.Element;
40
29
  render(): JSX.Element;
41
30
  private onNavigationChange;
42
31
  }
@@ -1,4 +1,5 @@
1
1
  import { Identifier, MediaType } from '@atlaskit/media-client';
2
+ export declare const isSameIdentifier: (id1: Identifier, id2: Identifier) => boolean;
2
3
  export declare const getSelectedIndex: (items: Identifier[], selectedItem: Identifier) => number;
3
4
  export declare const getMediaTypeFromFilename: (filename: string) => MediaType;
4
5
  export declare const getMimeTypeFromFilename: (filename: string) => string;
@@ -0,0 +1,14 @@
1
+ import { CommencedEventPayload } from './operational/commenced';
2
+ import { LoadFailedEventPayload } from './operational/loadFailed';
3
+ import { LoadSucceededEventPayload } from './operational/loadSucceeded';
4
+ import { PreviewUnsupportedEventPayload } from './operational/previewUnsupported';
5
+ import { ZipEntryLoadFailedEventPayload } from './operational/zipEntryLoadFailed';
6
+ import { ZipEntryLoadSucceededEventPayload } from './operational/zipEntryLoadSucceeded';
7
+ import { ModalEventPayload } from './screen/modal';
8
+ import { ClosedEventPayload } from './ui/closed';
9
+ import { DownloadButtonClickedEventPayload } from './ui/downloadButtonClicked';
10
+ import { FailedPreviewDownloadButtonClickedEventPayload } from './ui/failedPreviewDownloadButtonClicked';
11
+ import { NavigatedEventPayload } from './ui/navigated';
12
+ import { ZoomInButtonClickEventPayload } from './ui/zoomInButtonClicked';
13
+ import { ZoomOutButtonClickEventPayload } from './ui/zoomOutButtonClicked';
14
+ export type MediaViewerEventPayload = CommencedEventPayload | LoadFailedEventPayload | LoadSucceededEventPayload | PreviewUnsupportedEventPayload | ZipEntryLoadFailedEventPayload | ZipEntryLoadSucceededEventPayload | ModalEventPayload | ClosedEventPayload | DownloadButtonClickedEventPayload | FailedPreviewDownloadButtonClickedEventPayload | NavigatedEventPayload | ZoomInButtonClickEventPayload | ZoomOutButtonClickEventPayload;
@@ -0,0 +1,3 @@
1
+ import { OperationalEventPayload, OperationalAttributes } from '@atlaskit/media-common';
2
+ /** common definition used by other mediaFile events */
3
+ export type MediaFileEventPayload<Attributes extends OperationalAttributes, Action extends 'commenced' | 'loadSucceeded' | 'loadFailed' | 'previewUnsupported' | 'zipEntryLoadSucceeded' | 'zipEntryLoadFailed'> = OperationalEventPayload<Attributes, Action, 'mediaFile'>;
@@ -0,0 +1,5 @@
1
+ import { MediaTraceContext, WithFileAttributes, WithTraceContext } from '@atlaskit/media-common';
2
+ import { MediaFileEventPayload } from './_mediaFile';
3
+ export type CommencedAttributes = WithFileAttributes & WithTraceContext;
4
+ export type CommencedEventPayload = MediaFileEventPayload<CommencedAttributes, 'commenced'>;
5
+ export declare const createCommencedEvent: (fileId: string, traceContext: MediaTraceContext) => CommencedEventPayload;
@@ -0,0 +1,7 @@
1
+ import { FileState } from '@atlaskit/media-client';
2
+ import { MediaFileEventPayload } from './_mediaFile';
3
+ import { MediaViewerFailureAttributes } from '../..';
4
+ import { MediaViewerError } from '../../../errors';
5
+ import { MediaTraceContext } from '@atlaskit/media-common';
6
+ export type LoadFailedEventPayload = MediaFileEventPayload<MediaViewerFailureAttributes, 'loadFailed'>;
7
+ export declare const createLoadFailedEvent: (fileId: string, error: MediaViewerError, fileState?: FileState, traceContext?: MediaTraceContext) => LoadFailedEventPayload;
@@ -0,0 +1,5 @@
1
+ import { SuccessAttributes, WithFileAttributes, FileAttributes, MediaTraceContext, WithTraceContext } from '@atlaskit/media-common';
2
+ import { MediaFileEventPayload } from './_mediaFile';
3
+ export type LoadSucceededAttributes = SuccessAttributes & WithFileAttributes & WithTraceContext;
4
+ export type LoadSucceededEventPayload = MediaFileEventPayload<LoadSucceededAttributes, 'loadSucceeded'>;
5
+ export declare const createLoadSucceededEvent: ({ fileId, fileMediatype, fileMimetype, fileSize }: FileAttributes, traceContext?: MediaTraceContext) => LoadSucceededEventPayload;