@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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/media-viewer
2
2
 
3
+ ## 47.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`c3eba8c788d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c3eba8c788d) - Deprecation notice: Media Viewer no longer accepts a collection name as a data source. Integrators should pass the full list of files to browse through the new "items" property.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
13
+ ## 47.4.3
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 47.4.2
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.4.2";
15
+ var packageVersion = "47.5.0";
16
16
  exports.packageVersion = packageVersion;
17
17
  var relevantFlags = {
18
18
  newCardExperience: false,
@@ -12,7 +12,7 @@ var _ = require(".");
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.4.2";
15
+ var packageVersion = "47.5.0";
16
16
  var ufoExperience;
17
17
  var getExperience = function getExperience() {
18
18
  if (!ufoExperience) {
@@ -1,128 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.MediaViewer = void 0;
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
- var _react = _interopRequireWildcard(require("react"));
18
- var _mediaClient = require("@atlaskit/media-client");
8
+ var _react = _interopRequireDefault(require("react"));
19
9
  var _mediaViewer = require("../media-viewer");
20
- var _getIdentifierCollection = require("../utils/getIdentifierCollection");
21
- var _utils = require("../utils");
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
- 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; }
25
- 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; }
26
- 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); }; }
27
- 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; } }
28
- var MediaViewer = /*#__PURE__*/function (_Component) {
29
- (0, _inherits2.default)(MediaViewer, _Component);
30
- var _super = _createSuper(MediaViewer);
31
- function MediaViewer() {
32
- var _this;
33
- (0, _classCallCheck2.default)(this, MediaViewer);
34
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
35
- args[_key] = arguments[_key];
36
- }
37
- _this = _super.call.apply(_super, [this].concat(args));
38
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getDataSourceWithSelectedItem", function (dataSource, selectedItem) {
39
- // we want to ensure the card identifier is in the list
40
- var list = dataSource.list;
41
- if (list) {
42
- var selectedItemIndex = (0, _utils.getSelectedIndex)(list, selectedItem);
43
- if (selectedItemIndex === -1) {
44
- return {
45
- list: [selectedItem].concat((0, _toConsumableArray2.default)(list))
46
- };
47
- }
48
- }
49
- return dataSource;
50
- });
51
- return _this;
52
- }
53
- (0, _createClass2.default)(MediaViewer, [{
54
- key: "render",
55
- value: function render() {
56
- var _this$props = this.props,
57
- featureFlags = _this$props.featureFlags,
58
- onClose = _this$props.onClose,
59
- mediaClient = _this$props.mediaClient,
60
- selectedItem = _this$props.selectedItem,
61
- collectionName = _this$props.collectionName,
62
- dataSource = _this$props.dataSource,
63
- pageSize = _this$props.pageSize,
64
- extensions = _this$props.extensions,
65
- contextId = _this$props.contextId;
66
- var defaultPageSize = 30;
67
- var dataSourceWithSelectedItem = this.getDataSourceWithSelectedItem(dataSource, selectedItem);
68
- if (dataSourceWithSelectedItem.list) {
69
- var items = dataSourceWithSelectedItem.list.map(function (identifier) {
70
- return _objectSpread(_objectSpread({}, identifier), {}, {
71
- collectionName: (0, _getIdentifierCollection.getIdentifierCollection)(identifier, collectionName)
72
- });
73
- });
74
- var itemSource = {
75
- kind: 'ARRAY',
76
- items: items
77
- };
78
- var identifier = _objectSpread(_objectSpread({}, selectedItem), {}, {
79
- collectionName: collectionName
80
- });
81
- return /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
82
- mediaClient: mediaClient,
83
- selectedItem: identifier,
84
- onClose: onClose,
85
- itemSource: itemSource,
86
- featureFlags: featureFlags,
87
- extensions: extensions,
88
- contextId: contextId
89
- });
90
- } else if (dataSourceWithSelectedItem.collectionName) {
91
- if ((0, _mediaClient.isExternalImageIdentifier)(selectedItem)) {
92
- // if integrators pass an external image + collection, we remove the collection and just show the selectedItem
93
- return /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
94
- mediaClient: mediaClient,
95
- selectedItem: selectedItem,
96
- onClose: onClose,
97
- itemSource: {
98
- kind: 'ARRAY',
99
- items: [selectedItem]
100
- },
101
- featureFlags: featureFlags,
102
- contextId: contextId
103
- });
104
- }
105
- var _itemSource = {
106
- kind: 'COLLECTION',
107
- collectionName: dataSourceWithSelectedItem.collectionName,
108
- pageSize: pageSize || defaultPageSize
109
- };
110
- var _identifier = _objectSpread(_objectSpread({}, selectedItem), {}, {
111
- collectionName: dataSourceWithSelectedItem.collectionName
112
- });
113
- return /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
114
- mediaClient: mediaClient,
115
- selectedItem: _identifier,
116
- onClose: onClose,
117
- itemSource: _itemSource,
118
- featureFlags: featureFlags,
119
- contextId: contextId
120
- });
121
- } else {
122
- throw new Error();
123
- }
124
- }
125
- }]);
126
- return MediaViewer;
127
- }(_react.Component);
10
+ var _normaliseInput2 = require("./normaliseInput");
11
+ var MediaViewer = function MediaViewer(_ref) {
12
+ var featureFlags = _ref.featureFlags,
13
+ onClose = _ref.onClose,
14
+ mediaClient = _ref.mediaClient,
15
+ selectedItem = _ref.selectedItem,
16
+ collectionName = _ref.collectionName,
17
+ items = _ref.items,
18
+ 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;
29
+ return /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
30
+ mediaClient: mediaClient,
31
+ selectedItem: normalisedSelectedItem,
32
+ onClose: onClose,
33
+ items: normalisedItems,
34
+ featureFlags: featureFlags,
35
+ extensions: extensions,
36
+ contextId: contextId
37
+ });
38
+ };
128
39
  exports.MediaViewer = MediaViewer;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.normaliseInput = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _mediaClient = require("@atlaskit/media-client");
11
+ var _getIdentifierCollection = require("../utils/getIdentifierCollection");
12
+ var _utils = require("../utils");
13
+ 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; }
14
+ 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; }
15
+ var ensureCollectionName = function ensureCollectionName(items, collectionName) {
16
+ return items.map(function (identifier) {
17
+ return (0, _mediaClient.isExternalImageIdentifier)(identifier) ? identifier : _objectSpread(_objectSpread({}, identifier), {}, {
18
+ collectionName: (0, _getIdentifierCollection.getIdentifierCollection)(identifier, collectionName)
19
+ });
20
+ });
21
+ };
22
+
23
+ // returns a valid MV data source including current the card identifier
24
+ var ensureSelectedItem = function ensureSelectedItem(items, selectedItem) {
25
+ // we want to ensure the card identifier is in the list
26
+ var selectedItemIndex = (0, _utils.getSelectedIndex)(items, selectedItem);
27
+ if (selectedItemIndex === -1) {
28
+ return [selectedItem].concat((0, _toConsumableArray2.default)(items));
29
+ }
30
+ return items;
31
+ };
32
+ var normaliseItems = function normaliseItems(selectedItem, items, collectionName) {
33
+ var itemsWithCollection = ensureCollectionName(items, collectionName);
34
+ return ensureSelectedItem(itemsWithCollection, selectedItem);
35
+ };
36
+ var normaliseInput = function normaliseInput(_ref) {
37
+ var dataSource = _ref.dataSource,
38
+ selectedItem = _ref.selectedItem,
39
+ items = _ref.items,
40
+ collectionName = _ref.collectionName;
41
+ var normalisedSelectedItem = (0, _mediaClient.isExternalImageIdentifier)(selectedItem) ? selectedItem : _objectSpread(_objectSpread({}, selectedItem), {}, {
42
+ collectionName: collectionName
43
+ });
44
+ if (items) {
45
+ return {
46
+ normalisedSelectedItem: normalisedSelectedItem,
47
+ normalisedItems: normaliseItems(normalisedSelectedItem, items, collectionName)
48
+ };
49
+ } else if (dataSource !== null && dataSource !== void 0 && dataSource.list) {
50
+ return {
51
+ normalisedSelectedItem: normalisedSelectedItem,
52
+ normalisedItems: normaliseItems(normalisedSelectedItem, dataSource.list, collectionName)
53
+ };
54
+ } else if (dataSource !== null && dataSource !== void 0 && dataSource.collectionName && !(0, _mediaClient.isExternalImageIdentifier)(selectedItem)) {
55
+ return {
56
+ normalisedSelectedItem: normalisedSelectedItem,
57
+ normalisedItems: undefined
58
+ };
59
+ }
60
+ return {
61
+ normalisedSelectedItem: normalisedSelectedItem,
62
+ normalisedItems: [normalisedSelectedItem]
63
+ };
64
+ };
65
+ exports.normaliseInput = normaliseInput;
@@ -21,11 +21,12 @@ var _analytics = require("./analytics");
21
21
  var _modal = require("./analytics/events/screen/modal");
22
22
  var _closed = require("./analytics/events/ui/closed");
23
23
  var _list = require("./list");
24
- var _collection = require("./collection");
25
24
  var _content = require("./content");
26
25
  var _styleWrappers = require("./styleWrappers");
27
26
  var _perfMarks = require("perf-marks");
28
27
  var _classnames = require("./classnames");
28
+ var _errorMessage = _interopRequireDefault(require("./errorMessage"));
29
+ var _errors = require("./errors");
29
30
  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); }; }
30
31
  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; } }
31
32
  var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
@@ -93,18 +94,36 @@ var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
93
94
  key: "defaultSelectedItem",
94
95
  get: function get() {
95
96
  var _this$props = this.props,
96
- itemSource = _this$props.itemSource,
97
+ items = _this$props.items,
97
98
  selectedItem = _this$props.selectedItem;
98
- if (itemSource.kind === 'COLLECTION') {
99
- return selectedItem;
100
- }
101
- var items = itemSource.items;
102
- var firstItem = items[0];
99
+ var firstItem = items === null || items === void 0 ? void 0 : items[0];
103
100
  return selectedItem || firstItem;
104
101
  }
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
+ }
105
117
  }, {
106
118
  key: "render",
107
119
  value: function render() {
120
+ var _this$props2 = this.props,
121
+ mediaClient = _this$props2.mediaClient,
122
+ onClose = _this$props2.onClose,
123
+ items = _this$props2.items,
124
+ extensions = _this$props2.extensions,
125
+ contextId = _this$props2.contextId,
126
+ featureFlags = _this$props2.featureFlags;
108
127
  var isSidebarVisible = this.state.isSidebarVisible;
109
128
  var content = /*#__PURE__*/_react.default.createElement(_styleWrappers.Blanket, {
110
129
  "data-testid": "media-viewer-popup",
@@ -115,52 +134,22 @@ var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
115
134
  }), /*#__PURE__*/_react.default.createElement(_content.Content, {
116
135
  isSidebarVisible: isSidebarVisible,
117
136
  onClose: this.onContentClose
118
- }, this.renderContent()), this.renderSidebar());
137
+ }, !items ? this.renderError() : /*#__PURE__*/_react.default.createElement(_list.List, {
138
+ defaultSelectedItem: this.defaultSelectedItem || items[0],
139
+ items: items,
140
+ mediaClient: mediaClient,
141
+ onClose: onClose,
142
+ extensions: extensions,
143
+ onNavigationChange: this.onNavigationChange,
144
+ onSidebarButtonClick: this.toggleSidebar,
145
+ isSidebarVisible: isSidebarVisible,
146
+ contextId: contextId,
147
+ featureFlags: featureFlags
148
+ })), this.renderSidebar());
119
149
  return this.props.intl ? content : /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
120
150
  locale: "en"
121
151
  }, content);
122
152
  }
123
- }, {
124
- key: "renderContent",
125
- value: function renderContent() {
126
- var _this$props2 = this.props,
127
- mediaClient = _this$props2.mediaClient,
128
- onClose = _this$props2.onClose,
129
- itemSource = _this$props2.itemSource,
130
- extensions = _this$props2.extensions,
131
- contextId = _this$props2.contextId,
132
- featureFlags = _this$props2.featureFlags;
133
- var isSidebarVisible = this.state.isSidebarVisible;
134
- if (itemSource.kind === 'COLLECTION') {
135
- return /*#__PURE__*/_react.default.createElement(_collection.Collection, {
136
- pageSize: itemSource.pageSize,
137
- defaultSelectedItem: this.defaultSelectedItem,
138
- collectionName: itemSource.collectionName,
139
- mediaClient: mediaClient,
140
- onClose: onClose,
141
- extensions: extensions,
142
- onNavigationChange: this.onNavigationChange,
143
- onSidebarButtonClick: this.toggleSidebar,
144
- featureFlags: featureFlags
145
- });
146
- } else if (itemSource.kind === 'ARRAY') {
147
- var items = itemSource.items;
148
- return /*#__PURE__*/_react.default.createElement(_list.List, {
149
- defaultSelectedItem: this.defaultSelectedItem || items[0],
150
- items: items,
151
- mediaClient: mediaClient,
152
- onClose: onClose,
153
- extensions: extensions,
154
- onNavigationChange: this.onNavigationChange,
155
- onSidebarButtonClick: this.toggleSidebar,
156
- isSidebarVisible: isSidebarVisible,
157
- contextId: contextId,
158
- featureFlags: featureFlags
159
- });
160
- } else {
161
- return null;
162
- }
163
- }
164
153
  }]);
165
154
  return MediaViewerComponent;
166
155
  }(_react.default.Component);
@@ -4,23 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.toIdentifier = exports.rejectAfter = exports.isMacPrivateFile = exports.getSelectedIndex = exports.getMimeTypeFromFilename = exports.getMediaTypeFromFilename = exports.getFormattedFolderName = exports.getFolderParent = exports.extractArchiveFolderName = void 0;
7
+ exports.rejectAfter = 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 toIdentifier = function toIdentifier(item, collectionName) {
13
- return {
14
- id: item.id,
15
- mediaItemType: 'file',
16
- occurrenceKey: item.occurrenceKey,
17
- collectionName: collectionName
18
- };
19
- };
20
-
21
12
  // TODO MS-1752 - current implementation makes viewer navigation to misbehave
22
13
  // if passed a file with the same id (with different occurrenceKeys) or with the same dataURI twice
23
- exports.toIdentifier = toIdentifier;
24
14
  var getSelectedIndex = function getSelectedIndex(items, selectedItem) {
25
15
  return items.findIndex(function (item) {
26
16
  if ((0, _mediaClient.isFileIdentifier)(item) && (0, _mediaClient.isFileIdentifier)(selectedItem)) {
@@ -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
  const componentName = 'mediaViewer';
3
3
  const packageName = "@atlaskit/media-viewer";
4
- const packageVersion = "47.4.2";
4
+ const packageVersion = "47.5.0";
5
5
  export { packageName, packageVersion, componentName, componentName as component };
6
6
  export const relevantFlags = {
7
7
  newCardExperience: false,
@@ -2,7 +2,7 @@ import { UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atl
2
2
  import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
3
3
  import { LOGGED_FEATURE_FLAG_KEYS } from '.';
4
4
  const packageName = "@atlaskit/media-viewer";
5
- const packageVersion = "47.4.2";
5
+ const packageVersion = "47.5.0";
6
6
  let ufoExperience;
7
7
  const getExperience = () => {
8
8
  if (!ufoExperience) {
@@ -1,99 +1,33 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  import React from 'react';
3
- import { Component } from 'react';
4
- import { isExternalImageIdentifier } from '@atlaskit/media-client';
5
2
  import { MediaViewer as MediaViewerNextGen } from '../media-viewer';
6
- import { getIdentifierCollection } from '../utils/getIdentifierCollection';
7
- import { getSelectedIndex } from '../utils';
8
- export class MediaViewer extends Component {
9
- constructor(...args) {
10
- super(...args);
11
- _defineProperty(this, "getDataSourceWithSelectedItem", (dataSource, selectedItem) => {
12
- // we want to ensure the card identifier is in the list
13
- const {
14
- list
15
- } = dataSource;
16
- if (list) {
17
- const selectedItemIndex = getSelectedIndex(list, selectedItem);
18
- if (selectedItemIndex === -1) {
19
- return {
20
- list: [selectedItem, ...list]
21
- };
22
- }
23
- }
24
- return dataSource;
25
- });
26
- }
27
- render() {
28
- const {
29
- featureFlags,
30
- onClose,
31
- mediaClient,
32
- selectedItem,
33
- collectionName,
34
- dataSource,
35
- pageSize,
36
- extensions,
37
- contextId
38
- } = this.props;
39
- const defaultPageSize = 30;
40
- const dataSourceWithSelectedItem = this.getDataSourceWithSelectedItem(dataSource, selectedItem);
41
- if (dataSourceWithSelectedItem.list) {
42
- const items = dataSourceWithSelectedItem.list.map(identifier => ({
43
- ...identifier,
44
- collectionName: getIdentifierCollection(identifier, collectionName)
45
- }));
46
- const itemSource = {
47
- kind: 'ARRAY',
48
- items: items
49
- };
50
- const identifier = {
51
- ...selectedItem,
52
- collectionName
53
- };
54
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
55
- mediaClient: mediaClient,
56
- selectedItem: identifier,
57
- onClose: onClose,
58
- itemSource: itemSource,
59
- featureFlags: featureFlags,
60
- extensions: extensions,
61
- contextId: contextId
62
- });
63
- } else if (dataSourceWithSelectedItem.collectionName) {
64
- if (isExternalImageIdentifier(selectedItem)) {
65
- // if integrators pass an external image + collection, we remove the collection and just show the selectedItem
66
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
67
- mediaClient: mediaClient,
68
- selectedItem: selectedItem,
69
- onClose: onClose,
70
- itemSource: {
71
- kind: 'ARRAY',
72
- items: [selectedItem]
73
- },
74
- featureFlags: featureFlags,
75
- contextId: contextId
76
- });
77
- }
78
- const itemSource = {
79
- kind: 'COLLECTION',
80
- collectionName: dataSourceWithSelectedItem.collectionName,
81
- pageSize: pageSize || defaultPageSize
82
- };
83
- const identifier = {
84
- ...selectedItem,
85
- collectionName: dataSourceWithSelectedItem.collectionName
86
- };
87
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
88
- mediaClient: mediaClient,
89
- selectedItem: identifier,
90
- onClose: onClose,
91
- itemSource: itemSource,
92
- featureFlags: featureFlags,
93
- contextId: contextId
94
- });
95
- } else {
96
- throw new Error();
97
- }
98
- }
99
- }
3
+ import { normaliseInput } from './normaliseInput';
4
+ export const MediaViewer = ({
5
+ featureFlags,
6
+ onClose,
7
+ mediaClient,
8
+ selectedItem,
9
+ collectionName,
10
+ items,
11
+ extensions,
12
+ contextId,
13
+ dataSource
14
+ }) => {
15
+ const {
16
+ normalisedSelectedItem,
17
+ normalisedItems
18
+ } = normaliseInput({
19
+ selectedItem,
20
+ collectionName,
21
+ items,
22
+ dataSource
23
+ });
24
+ return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
25
+ mediaClient: mediaClient,
26
+ selectedItem: normalisedSelectedItem,
27
+ onClose: onClose,
28
+ items: normalisedItems,
29
+ featureFlags: featureFlags,
30
+ extensions: extensions,
31
+ contextId: contextId
32
+ });
33
+ };
@@ -0,0 +1,52 @@
1
+ import { isExternalImageIdentifier } from '@atlaskit/media-client';
2
+ import { getIdentifierCollection } from '../utils/getIdentifierCollection';
3
+ import { getSelectedIndex } from '../utils';
4
+ const ensureCollectionName = (items, collectionName) => items.map(identifier => isExternalImageIdentifier(identifier) ? identifier : {
5
+ ...identifier,
6
+ collectionName: getIdentifierCollection(identifier, collectionName)
7
+ });
8
+
9
+ // returns a valid MV data source including current the card identifier
10
+ const ensureSelectedItem = (items, selectedItem) => {
11
+ // we want to ensure the card identifier is in the list
12
+ const selectedItemIndex = getSelectedIndex(items, selectedItem);
13
+ if (selectedItemIndex === -1) {
14
+ return [selectedItem, ...items];
15
+ }
16
+ return items;
17
+ };
18
+ const normaliseItems = (selectedItem, items, collectionName) => {
19
+ const itemsWithCollection = ensureCollectionName(items, collectionName);
20
+ return ensureSelectedItem(itemsWithCollection, selectedItem);
21
+ };
22
+ export const normaliseInput = ({
23
+ dataSource,
24
+ selectedItem,
25
+ items,
26
+ collectionName
27
+ }) => {
28
+ const normalisedSelectedItem = isExternalImageIdentifier(selectedItem) ? selectedItem : {
29
+ ...selectedItem,
30
+ collectionName
31
+ };
32
+ if (items) {
33
+ return {
34
+ normalisedSelectedItem,
35
+ normalisedItems: normaliseItems(normalisedSelectedItem, items, collectionName)
36
+ };
37
+ } else if (dataSource !== null && dataSource !== void 0 && dataSource.list) {
38
+ return {
39
+ normalisedSelectedItem,
40
+ normalisedItems: normaliseItems(normalisedSelectedItem, dataSource.list, collectionName)
41
+ };
42
+ } else if (dataSource !== null && dataSource !== void 0 && dataSource.collectionName && !isExternalImageIdentifier(selectedItem)) {
43
+ return {
44
+ normalisedSelectedItem,
45
+ normalisedItems: undefined
46
+ };
47
+ }
48
+ return {
49
+ normalisedSelectedItem,
50
+ normalisedItems: [normalisedSelectedItem]
51
+ };
52
+ };