@atlaskit/media-viewer 47.4.2 → 47.5.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 (34) 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 +30 -119
  5. package/dist/cjs/components/normaliseInput.js +65 -0
  6. package/dist/cjs/media-viewer.js +38 -49
  7. package/dist/cjs/utils/index.js +1 -11
  8. package/dist/cjs/version.json +1 -1
  9. package/dist/es2019/analytics/index.js +1 -1
  10. package/dist/es2019/analytics/ufoExperiences.js +1 -1
  11. package/dist/es2019/components/media-viewer.js +31 -97
  12. package/dist/es2019/components/normaliseInput.js +52 -0
  13. package/dist/es2019/media-viewer.js +36 -54
  14. package/dist/es2019/utils/index.js +0 -8
  15. package/dist/es2019/version.json +1 -1
  16. package/dist/esm/analytics/index.js +1 -1
  17. package/dist/esm/analytics/ufoExperiences.js +1 -1
  18. package/dist/esm/components/media-viewer.js +29 -116
  19. package/dist/esm/components/normaliseInput.js +57 -0
  20. package/dist/esm/media-viewer.js +38 -49
  21. package/dist/esm/utils/index.js +0 -8
  22. package/dist/esm/version.json +1 -1
  23. package/dist/types/components/media-viewer.d.ts +3 -7
  24. package/dist/types/components/normaliseInput.d.ts +13 -0
  25. package/dist/types/components/types.d.ts +12 -1
  26. package/dist/types/domain/index.d.ts +0 -9
  27. package/dist/types/media-viewer.d.ts +12 -3
  28. package/dist/types/utils/index.d.ts +1 -2
  29. package/package.json +9 -9
  30. package/report.api.md +5 -3
  31. package/dist/cjs/collection.js +0 -195
  32. package/dist/es2019/collection.js +0 -145
  33. package/dist/esm/collection.js +0 -187
  34. package/dist/types/collection.d.ts +0 -36
@@ -8,11 +8,12 @@ import { packageName, packageVersion, component, componentName, fireAnalytics, L
8
8
  import { createModalEvent } from './analytics/events/screen/modal';
9
9
  import { createClosedEvent } from './analytics/events/ui/closed';
10
10
  import { List } from './list';
11
- import { Collection } from './collection';
12
11
  import { Content } from './content';
13
12
  import { Blanket, SidebarWrapper } from './styleWrappers';
14
13
  import { start } from 'perf-marks';
15
14
  import { mediaViewerPopupClass } from './classnames';
15
+ import ErrorMessage from './errorMessage';
16
+ import { MediaViewerError } from './errors';
16
17
  export class MediaViewerComponent extends React.Component {
17
18
  constructor(...args) {
18
19
  super(...args);
@@ -73,19 +74,33 @@ export class MediaViewerComponent extends React.Component {
73
74
  }
74
75
  get defaultSelectedItem() {
75
76
  const {
76
- itemSource,
77
+ items,
77
78
  selectedItem
78
79
  } = this.props;
79
- if (itemSource.kind === 'COLLECTION') {
80
- return selectedItem;
81
- }
82
- const {
83
- items
84
- } = itemSource;
85
- const firstItem = items[0];
80
+ const firstItem = items === null || items === void 0 ? void 0 : items[0];
86
81
  return selectedItem || firstItem;
87
82
  }
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
+ }
88
95
  render() {
96
+ const {
97
+ mediaClient,
98
+ onClose,
99
+ items,
100
+ extensions,
101
+ contextId,
102
+ featureFlags
103
+ } = this.props;
89
104
  const {
90
105
  isSidebarVisible
91
106
  } = this.state;
@@ -98,55 +113,22 @@ export class MediaViewerComponent extends React.Component {
98
113
  }), /*#__PURE__*/React.createElement(Content, {
99
114
  isSidebarVisible: isSidebarVisible,
100
115
  onClose: this.onContentClose
101
- }, this.renderContent()), this.renderSidebar());
116
+ }, !items ? this.renderError() : /*#__PURE__*/React.createElement(List, {
117
+ defaultSelectedItem: this.defaultSelectedItem || items[0],
118
+ items: items,
119
+ mediaClient: mediaClient,
120
+ onClose: onClose,
121
+ extensions: extensions,
122
+ onNavigationChange: this.onNavigationChange,
123
+ onSidebarButtonClick: this.toggleSidebar,
124
+ isSidebarVisible: isSidebarVisible,
125
+ contextId: contextId,
126
+ featureFlags: featureFlags
127
+ })), this.renderSidebar());
102
128
  return this.props.intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
103
129
  locale: "en"
104
130
  }, content);
105
131
  }
106
- renderContent() {
107
- const {
108
- mediaClient,
109
- onClose,
110
- itemSource,
111
- extensions,
112
- contextId,
113
- featureFlags
114
- } = this.props;
115
- const {
116
- isSidebarVisible
117
- } = this.state;
118
- if (itemSource.kind === 'COLLECTION') {
119
- return /*#__PURE__*/React.createElement(Collection, {
120
- pageSize: itemSource.pageSize,
121
- defaultSelectedItem: this.defaultSelectedItem,
122
- collectionName: itemSource.collectionName,
123
- mediaClient: mediaClient,
124
- onClose: onClose,
125
- extensions: extensions,
126
- onNavigationChange: this.onNavigationChange,
127
- onSidebarButtonClick: this.toggleSidebar,
128
- featureFlags: featureFlags
129
- });
130
- } else if (itemSource.kind === 'ARRAY') {
131
- const {
132
- items
133
- } = itemSource;
134
- return /*#__PURE__*/React.createElement(List, {
135
- defaultSelectedItem: this.defaultSelectedItem || items[0],
136
- items: items,
137
- mediaClient: mediaClient,
138
- onClose: onClose,
139
- extensions: extensions,
140
- onNavigationChange: this.onNavigationChange,
141
- onSidebarButtonClick: this.toggleSidebar,
142
- isSidebarVisible: isSidebarVisible,
143
- contextId: contextId,
144
- featureFlags: featureFlags
145
- });
146
- } else {
147
- return null;
148
- }
149
- }
150
132
  }
151
133
  export const MediaViewer = withMediaAnalyticsContext({
152
134
  packageName,
@@ -1,13 +1,5 @@
1
1
  import { isFileIdentifier, getMediaTypeFromMimeType } from '@atlaskit/media-client';
2
2
  import { getType } from 'mime';
3
- export const toIdentifier = (item, collectionName) => {
4
- return {
5
- id: item.id,
6
- mediaItemType: 'file',
7
- occurrenceKey: item.occurrenceKey,
8
- collectionName
9
- };
10
- };
11
3
 
12
4
  // TODO MS-1752 - current implementation makes viewer navigation to misbehave
13
5
  // if passed a file with the same id (with different occurrenceKeys) or with the same dataURI twice
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-viewer",
3
- "version": "47.4.2",
3
+ "version": "47.5.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,7 @@
1
1
  import { filterFeatureFlagNames, filterFeatureFlagKeysAllProducts, ANALYTICS_MEDIA_CHANNEL } from '@atlaskit/media-common';
2
2
  var componentName = 'mediaViewer';
3
3
  var packageName = "@atlaskit/media-viewer";
4
- var packageVersion = "47.4.2";
4
+ var packageVersion = "47.5.0";
5
5
  export { packageName, packageVersion, componentName, componentName as component };
6
6
  export var relevantFlags = {
7
7
  newCardExperience: false,
@@ -5,7 +5,7 @@ import { UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atl
5
5
  import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
6
6
  import { LOGGED_FEATURE_FLAG_KEYS } from '.';
7
7
  var packageName = "@atlaskit/media-viewer";
8
- var packageVersion = "47.4.2";
8
+ var packageVersion = "47.5.0";
9
9
  var ufoExperience;
10
10
  var getExperience = function getExperience() {
11
11
  if (!ufoExperience) {
@@ -1,118 +1,31 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
- import _inherits from "@babel/runtime/helpers/inherits";
6
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- 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; }
10
- 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; }
11
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12
- 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; } }
13
1
  import React from 'react';
14
- import { Component } from 'react';
15
- import { isExternalImageIdentifier } from '@atlaskit/media-client';
16
2
  import { MediaViewer as MediaViewerNextGen } from '../media-viewer';
17
- import { getIdentifierCollection } from '../utils/getIdentifierCollection';
18
- import { getSelectedIndex } from '../utils';
19
- export var MediaViewer = /*#__PURE__*/function (_Component) {
20
- _inherits(MediaViewer, _Component);
21
- var _super = _createSuper(MediaViewer);
22
- function MediaViewer() {
23
- var _this;
24
- _classCallCheck(this, MediaViewer);
25
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
- args[_key] = arguments[_key];
27
- }
28
- _this = _super.call.apply(_super, [this].concat(args));
29
- _defineProperty(_assertThisInitialized(_this), "getDataSourceWithSelectedItem", function (dataSource, selectedItem) {
30
- // we want to ensure the card identifier is in the list
31
- var list = dataSource.list;
32
- if (list) {
33
- var selectedItemIndex = getSelectedIndex(list, selectedItem);
34
- if (selectedItemIndex === -1) {
35
- return {
36
- list: [selectedItem].concat(_toConsumableArray(list))
37
- };
38
- }
39
- }
40
- return dataSource;
41
- });
42
- return _this;
43
- }
44
- _createClass(MediaViewer, [{
45
- key: "render",
46
- value: function render() {
47
- var _this$props = this.props,
48
- featureFlags = _this$props.featureFlags,
49
- onClose = _this$props.onClose,
50
- mediaClient = _this$props.mediaClient,
51
- selectedItem = _this$props.selectedItem,
52
- collectionName = _this$props.collectionName,
53
- dataSource = _this$props.dataSource,
54
- pageSize = _this$props.pageSize,
55
- extensions = _this$props.extensions,
56
- contextId = _this$props.contextId;
57
- var defaultPageSize = 30;
58
- var dataSourceWithSelectedItem = this.getDataSourceWithSelectedItem(dataSource, selectedItem);
59
- if (dataSourceWithSelectedItem.list) {
60
- var items = dataSourceWithSelectedItem.list.map(function (identifier) {
61
- return _objectSpread(_objectSpread({}, identifier), {}, {
62
- collectionName: getIdentifierCollection(identifier, collectionName)
63
- });
64
- });
65
- var itemSource = {
66
- kind: 'ARRAY',
67
- items: items
68
- };
69
- var identifier = _objectSpread(_objectSpread({}, selectedItem), {}, {
70
- collectionName: collectionName
71
- });
72
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
73
- mediaClient: mediaClient,
74
- selectedItem: identifier,
75
- onClose: onClose,
76
- itemSource: itemSource,
77
- featureFlags: featureFlags,
78
- extensions: extensions,
79
- contextId: contextId
80
- });
81
- } else if (dataSourceWithSelectedItem.collectionName) {
82
- if (isExternalImageIdentifier(selectedItem)) {
83
- // if integrators pass an external image + collection, we remove the collection and just show the selectedItem
84
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
85
- mediaClient: mediaClient,
86
- selectedItem: selectedItem,
87
- onClose: onClose,
88
- itemSource: {
89
- kind: 'ARRAY',
90
- items: [selectedItem]
91
- },
92
- featureFlags: featureFlags,
93
- contextId: contextId
94
- });
95
- }
96
- var _itemSource = {
97
- kind: 'COLLECTION',
98
- collectionName: dataSourceWithSelectedItem.collectionName,
99
- pageSize: pageSize || defaultPageSize
100
- };
101
- var _identifier = _objectSpread(_objectSpread({}, selectedItem), {}, {
102
- collectionName: dataSourceWithSelectedItem.collectionName
103
- });
104
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
105
- mediaClient: mediaClient,
106
- selectedItem: _identifier,
107
- onClose: onClose,
108
- itemSource: _itemSource,
109
- featureFlags: featureFlags,
110
- contextId: contextId
111
- });
112
- } else {
113
- throw new Error();
114
- }
115
- }
116
- }]);
117
- return MediaViewer;
118
- }(Component);
3
+ import { normaliseInput } from './normaliseInput';
4
+ export var MediaViewer = function MediaViewer(_ref) {
5
+ var featureFlags = _ref.featureFlags,
6
+ onClose = _ref.onClose,
7
+ mediaClient = _ref.mediaClient,
8
+ selectedItem = _ref.selectedItem,
9
+ collectionName = _ref.collectionName,
10
+ items = _ref.items,
11
+ 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;
22
+ return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
23
+ mediaClient: mediaClient,
24
+ selectedItem: normalisedSelectedItem,
25
+ onClose: onClose,
26
+ items: normalisedItems,
27
+ featureFlags: featureFlags,
28
+ extensions: extensions,
29
+ contextId: contextId
30
+ });
31
+ };
@@ -0,0 +1,57 @@
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 { isExternalImageIdentifier } from '@atlaskit/media-client';
6
+ import { getIdentifierCollection } from '../utils/getIdentifierCollection';
7
+ import { getSelectedIndex } from '../utils';
8
+ var ensureCollectionName = function ensureCollectionName(items, collectionName) {
9
+ return items.map(function (identifier) {
10
+ return isExternalImageIdentifier(identifier) ? identifier : _objectSpread(_objectSpread({}, identifier), {}, {
11
+ collectionName: getIdentifierCollection(identifier, collectionName)
12
+ });
13
+ });
14
+ };
15
+
16
+ // returns a valid MV data source including current the card identifier
17
+ var ensureSelectedItem = function ensureSelectedItem(items, selectedItem) {
18
+ // we want to ensure the card identifier is in the list
19
+ var selectedItemIndex = getSelectedIndex(items, selectedItem);
20
+ if (selectedItemIndex === -1) {
21
+ return [selectedItem].concat(_toConsumableArray(items));
22
+ }
23
+ return items;
24
+ };
25
+ var normaliseItems = function normaliseItems(selectedItem, items, collectionName) {
26
+ var itemsWithCollection = ensureCollectionName(items, collectionName);
27
+ return ensureSelectedItem(itemsWithCollection, selectedItem);
28
+ };
29
+ export var normaliseInput = function normaliseInput(_ref) {
30
+ var dataSource = _ref.dataSource,
31
+ selectedItem = _ref.selectedItem,
32
+ items = _ref.items,
33
+ collectionName = _ref.collectionName;
34
+ var normalisedSelectedItem = isExternalImageIdentifier(selectedItem) ? selectedItem : _objectSpread(_objectSpread({}, selectedItem), {}, {
35
+ collectionName: collectionName
36
+ });
37
+ if (items) {
38
+ return {
39
+ normalisedSelectedItem: normalisedSelectedItem,
40
+ normalisedItems: normaliseItems(normalisedSelectedItem, items, collectionName)
41
+ };
42
+ } else if (dataSource !== null && dataSource !== void 0 && dataSource.list) {
43
+ return {
44
+ normalisedSelectedItem: normalisedSelectedItem,
45
+ normalisedItems: normaliseItems(normalisedSelectedItem, dataSource.list, collectionName)
46
+ };
47
+ } else if (dataSource !== null && dataSource !== void 0 && dataSource.collectionName && !isExternalImageIdentifier(selectedItem)) {
48
+ return {
49
+ normalisedSelectedItem: normalisedSelectedItem,
50
+ normalisedItems: undefined
51
+ };
52
+ }
53
+ return {
54
+ normalisedSelectedItem: normalisedSelectedItem,
55
+ normalisedItems: [normalisedSelectedItem]
56
+ };
57
+ };
@@ -16,11 +16,12 @@ import { packageName, packageVersion, component, componentName, fireAnalytics, L
16
16
  import { createModalEvent } from './analytics/events/screen/modal';
17
17
  import { createClosedEvent } from './analytics/events/ui/closed';
18
18
  import { List } from './list';
19
- import { Collection } from './collection';
20
19
  import { Content } from './content';
21
20
  import { Blanket, SidebarWrapper } from './styleWrappers';
22
21
  import { start } from 'perf-marks';
23
22
  import { mediaViewerPopupClass } from './classnames';
23
+ import ErrorMessage from './errorMessage';
24
+ import { MediaViewerError } from './errors';
24
25
  export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
25
26
  _inherits(MediaViewerComponent, _React$Component);
26
27
  var _super = _createSuper(MediaViewerComponent);
@@ -86,18 +87,36 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
86
87
  key: "defaultSelectedItem",
87
88
  get: function get() {
88
89
  var _this$props = this.props,
89
- itemSource = _this$props.itemSource,
90
+ items = _this$props.items,
90
91
  selectedItem = _this$props.selectedItem;
91
- if (itemSource.kind === 'COLLECTION') {
92
- return selectedItem;
93
- }
94
- var items = itemSource.items;
95
- var firstItem = items[0];
92
+ var firstItem = items === null || items === void 0 ? void 0 : items[0];
96
93
  return selectedItem || firstItem;
97
94
  }
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
+ }
98
110
  }, {
99
111
  key: "render",
100
112
  value: function render() {
113
+ var _this$props2 = this.props,
114
+ mediaClient = _this$props2.mediaClient,
115
+ onClose = _this$props2.onClose,
116
+ items = _this$props2.items,
117
+ extensions = _this$props2.extensions,
118
+ contextId = _this$props2.contextId,
119
+ featureFlags = _this$props2.featureFlags;
101
120
  var isSidebarVisible = this.state.isSidebarVisible;
102
121
  var content = /*#__PURE__*/React.createElement(Blanket, {
103
122
  "data-testid": "media-viewer-popup",
@@ -108,52 +127,22 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
108
127
  }), /*#__PURE__*/React.createElement(Content, {
109
128
  isSidebarVisible: isSidebarVisible,
110
129
  onClose: this.onContentClose
111
- }, this.renderContent()), this.renderSidebar());
130
+ }, !items ? this.renderError() : /*#__PURE__*/React.createElement(List, {
131
+ defaultSelectedItem: this.defaultSelectedItem || items[0],
132
+ items: items,
133
+ mediaClient: mediaClient,
134
+ onClose: onClose,
135
+ extensions: extensions,
136
+ onNavigationChange: this.onNavigationChange,
137
+ onSidebarButtonClick: this.toggleSidebar,
138
+ isSidebarVisible: isSidebarVisible,
139
+ contextId: contextId,
140
+ featureFlags: featureFlags
141
+ })), this.renderSidebar());
112
142
  return this.props.intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
113
143
  locale: "en"
114
144
  }, content);
115
145
  }
116
- }, {
117
- key: "renderContent",
118
- value: function renderContent() {
119
- var _this$props2 = this.props,
120
- mediaClient = _this$props2.mediaClient,
121
- onClose = _this$props2.onClose,
122
- itemSource = _this$props2.itemSource,
123
- extensions = _this$props2.extensions,
124
- contextId = _this$props2.contextId,
125
- featureFlags = _this$props2.featureFlags;
126
- var isSidebarVisible = this.state.isSidebarVisible;
127
- if (itemSource.kind === 'COLLECTION') {
128
- return /*#__PURE__*/React.createElement(Collection, {
129
- pageSize: itemSource.pageSize,
130
- defaultSelectedItem: this.defaultSelectedItem,
131
- collectionName: itemSource.collectionName,
132
- mediaClient: mediaClient,
133
- onClose: onClose,
134
- extensions: extensions,
135
- onNavigationChange: this.onNavigationChange,
136
- onSidebarButtonClick: this.toggleSidebar,
137
- featureFlags: featureFlags
138
- });
139
- } else if (itemSource.kind === 'ARRAY') {
140
- var items = itemSource.items;
141
- return /*#__PURE__*/React.createElement(List, {
142
- defaultSelectedItem: this.defaultSelectedItem || items[0],
143
- items: items,
144
- mediaClient: mediaClient,
145
- onClose: onClose,
146
- extensions: extensions,
147
- onNavigationChange: this.onNavigationChange,
148
- onSidebarButtonClick: this.toggleSidebar,
149
- isSidebarVisible: isSidebarVisible,
150
- contextId: contextId,
151
- featureFlags: featureFlags
152
- });
153
- } else {
154
- return null;
155
- }
156
- }
157
146
  }]);
158
147
  return MediaViewerComponent;
159
148
  }(React.Component);
@@ -2,14 +2,6 @@ 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 toIdentifier = function toIdentifier(item, collectionName) {
6
- return {
7
- id: item.id,
8
- mediaItemType: 'file',
9
- occurrenceKey: item.occurrenceKey,
10
- collectionName: collectionName
11
- };
12
- };
13
5
 
14
6
  // TODO MS-1752 - current implementation makes viewer navigation to misbehave
15
7
  // if passed a file with the same id (with different occurrenceKeys) or with the same dataURI twice
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-viewer",
3
- "version": "47.4.2",
3
+ "version": "47.5.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,3 @@
1
- import { Component } from 'react';
2
- import { Identifier } from '@atlaskit/media-client';
3
- import { MediaViewerProps, MediaViewerDataSource } from './types';
4
- export declare class MediaViewer extends Component<MediaViewerProps> {
5
- getDataSourceWithSelectedItem: (dataSource: MediaViewerDataSource, selectedItem: Identifier) => MediaViewerDataSource;
6
- render(): JSX.Element;
7
- }
1
+ /// <reference types="react" />
2
+ import { MediaViewerProps } from './types';
3
+ export declare const MediaViewer: ({ featureFlags, onClose, mediaClient, selectedItem, collectionName, items, extensions, contextId, dataSource, }: MediaViewerProps) => JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { MediaViewerDataSource } from './types';
2
+ import { Identifier } from '@atlaskit/media-client';
3
+ declare type NormaliseInputParams = {
4
+ dataSource?: MediaViewerDataSource;
5
+ selectedItem: Identifier;
6
+ items?: Array<Identifier>;
7
+ collectionName: string;
8
+ };
9
+ export declare const normaliseInput: ({ dataSource, selectedItem, items, collectionName, }: NormaliseInputParams) => {
10
+ normalisedSelectedItem: Identifier;
11
+ normalisedItems?: Identifier[] | undefined;
12
+ };
13
+ export {};
@@ -21,8 +21,19 @@ export interface MediaViewerExtensions {
21
21
  export interface MediaViewerProps {
22
22
  readonly mediaClient: MediaClient;
23
23
  readonly selectedItem: Identifier;
24
- readonly dataSource: MediaViewerDataSource;
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>;
25
31
  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
+ */
26
37
  readonly pageSize?: number;
27
38
  readonly onClose?: () => void;
28
39
  readonly featureFlags?: MediaFeatureFlags;
@@ -1,10 +1 @@
1
- import { Identifier } from '@atlaskit/media-client';
2
1
  export { Outcome } from './outcome';
3
- export declare type ItemSource = {
4
- kind: 'COLLECTION';
5
- collectionName: string;
6
- pageSize: number;
7
- } | {
8
- kind: 'ARRAY';
9
- items: Identifier[];
10
- };
@@ -3,14 +3,17 @@ import { MediaClient, Identifier } from '@atlaskit/media-client';
3
3
  import { MediaFeatureFlags } from '@atlaskit/media-common';
4
4
  import { WrappedComponentProps } from 'react-intl-next';
5
5
  import { WithAnalyticsEventsProps, UIAnalyticsEvent } from '@atlaskit/analytics-next';
6
- import { ItemSource } from './domain';
7
6
  import { MediaViewerExtensions } from './components/types';
8
7
  export declare type Props = {
9
8
  onClose?: () => void;
10
9
  selectedItem?: Identifier;
11
10
  featureFlags?: MediaFeatureFlags;
12
11
  mediaClient: MediaClient;
13
- itemSource: ItemSource;
12
+ /**
13
+ * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
14
+ * property should be mandatory
15
+ */
16
+ items?: Identifier[];
14
17
  extensions?: MediaViewerExtensions;
15
18
  contextId?: string;
16
19
  } & WithAnalyticsEventsProps;
@@ -26,8 +29,14 @@ export declare class MediaViewerComponent extends React.Component<Props & Wrappe
26
29
  private toggleSidebar;
27
30
  private get defaultSelectedItem();
28
31
  renderSidebar: () => JSX.Element | undefined;
32
+ /**
33
+ * TODO: https://product-fabric.atlassian.net/browse/MEX-2207
34
+ * This error message is simulating the current error thrown by the backend when consumer provides a collection as datasource.
35
+ * This is displayed at this level when no items are provided from the parent component.
36
+ * This error message should be removed when the deprecated API is removed.
37
+ */
38
+ renderError(): JSX.Element;
29
39
  render(): JSX.Element;
30
40
  private onNavigationChange;
31
- private renderContent;
32
41
  }
33
42
  export declare const MediaViewer: React.ComponentType<Props>;
@@ -1,5 +1,4 @@
1
- import { FileIdentifier, Identifier, MediaCollectionItem, MediaType } from '@atlaskit/media-client';
2
- export declare const toIdentifier: (item: MediaCollectionItem, collectionName: string) => FileIdentifier;
1
+ import { Identifier, MediaType } from '@atlaskit/media-client';
3
2
  export declare const getSelectedIndex: (items: Identifier[], selectedItem: Identifier) => number;
4
3
  export declare const getMediaTypeFromFilename: (filename: string) => MediaType;
5
4
  export declare const getMimeTypeFromFilename: (filename: string) => string;