@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.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/analytics/index.js +1 -1
- package/dist/cjs/analytics/ufoExperiences.js +1 -1
- package/dist/cjs/components/media-viewer.js +30 -119
- package/dist/cjs/components/normaliseInput.js +65 -0
- package/dist/cjs/media-viewer.js +38 -49
- package/dist/cjs/utils/index.js +1 -11
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/index.js +1 -1
- package/dist/es2019/analytics/ufoExperiences.js +1 -1
- package/dist/es2019/components/media-viewer.js +31 -97
- package/dist/es2019/components/normaliseInput.js +52 -0
- package/dist/es2019/media-viewer.js +36 -54
- package/dist/es2019/utils/index.js +0 -8
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/index.js +1 -1
- package/dist/esm/analytics/ufoExperiences.js +1 -1
- package/dist/esm/components/media-viewer.js +29 -116
- package/dist/esm/components/normaliseInput.js +57 -0
- package/dist/esm/media-viewer.js +38 -49
- package/dist/esm/utils/index.js +0 -8
- package/dist/esm/version.json +1 -1
- package/dist/types/components/media-viewer.d.ts +3 -7
- package/dist/types/components/normaliseInput.d.ts +13 -0
- package/dist/types/components/types.d.ts +12 -1
- package/dist/types/domain/index.d.ts +0 -9
- package/dist/types/media-viewer.d.ts +12 -3
- package/dist/types/utils/index.d.ts +1 -2
- package/package.json +9 -9
- package/report.api.md +5 -3
- package/dist/cjs/collection.js +0 -195
- package/dist/es2019/collection.js +0 -145
- package/dist/esm/collection.js +0 -187
- 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
|
-
|
|
77
|
+
items,
|
|
77
78
|
selectedItem
|
|
78
79
|
} = this.props;
|
|
79
|
-
|
|
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.
|
|
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
|
package/dist/es2019/version.json
CHANGED
|
@@ -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
|
+
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.
|
|
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 {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
+
};
|
package/dist/esm/media-viewer.js
CHANGED
|
@@ -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
|
-
|
|
90
|
+
items = _this$props.items,
|
|
90
91
|
selectedItem = _this$props.selectedItem;
|
|
91
|
-
|
|
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.
|
|
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);
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -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
|
package/dist/esm/version.json
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
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
|
-
|
|
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;
|
|
@@ -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
|
-
|
|
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 {
|
|
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;
|