@atlaskit/media-viewer 48.1.7 → 48.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/analytics/index.js +2 -3
  3. package/dist/cjs/analytics/ufoExperiences.js +1 -1
  4. package/dist/cjs/components/media-viewer.js +13 -1
  5. package/dist/cjs/errorMessage.js +5 -3
  6. package/dist/cjs/item-viewer.js +5 -4
  7. package/dist/cjs/media-viewer.js +21 -17
  8. package/dist/cjs/navigation.js +5 -4
  9. package/dist/cjs/styleWrappers.js +1 -0
  10. package/dist/cjs/v2/header-v2.js +159 -0
  11. package/dist/cjs/v2/item-viewer-v2.js +322 -0
  12. package/dist/cjs/v2/list-v2.js +71 -0
  13. package/dist/cjs/v2/media-viewer-v2.js +114 -0
  14. package/dist/cjs/viewers/archiveSidebar/archive.js +5 -3
  15. package/dist/cjs/zoomControls.js +6 -4
  16. package/dist/es2019/analytics/index.js +2 -5
  17. package/dist/es2019/analytics/ufoExperiences.js +1 -1
  18. package/dist/es2019/components/media-viewer.js +13 -1
  19. package/dist/es2019/errorMessage.js +5 -3
  20. package/dist/es2019/item-viewer.js +5 -4
  21. package/dist/es2019/media-viewer.js +8 -6
  22. package/dist/es2019/navigation.js +5 -4
  23. package/dist/es2019/styleWrappers.js +1 -0
  24. package/dist/es2019/v2/header-v2.js +138 -0
  25. package/dist/es2019/v2/item-viewer-v2.js +269 -0
  26. package/dist/es2019/v2/list-v2.js +52 -0
  27. package/dist/es2019/v2/media-viewer-v2.js +95 -0
  28. package/dist/es2019/viewers/archiveSidebar/archive.js +4 -3
  29. package/dist/es2019/zoomControls.js +6 -4
  30. package/dist/esm/analytics/index.js +2 -3
  31. package/dist/esm/analytics/ufoExperiences.js +1 -1
  32. package/dist/esm/components/media-viewer.js +13 -1
  33. package/dist/esm/errorMessage.js +5 -3
  34. package/dist/esm/item-viewer.js +5 -4
  35. package/dist/esm/media-viewer.js +21 -17
  36. package/dist/esm/navigation.js +5 -4
  37. package/dist/esm/styleWrappers.js +1 -0
  38. package/dist/esm/v2/header-v2.js +149 -0
  39. package/dist/esm/v2/item-viewer-v2.js +302 -0
  40. package/dist/esm/v2/list-v2.js +61 -0
  41. package/dist/esm/v2/media-viewer-v2.js +104 -0
  42. package/dist/esm/viewers/archiveSidebar/archive.js +5 -3
  43. package/dist/esm/zoomControls.js +6 -4
  44. package/dist/types/analytics/index.d.ts +2 -2
  45. package/dist/types/v2/header-v2.d.ts +18 -0
  46. package/dist/types/v2/item-viewer-v2.d.ts +21 -0
  47. package/dist/types/v2/list-v2.d.ts +22 -0
  48. package/dist/types/v2/media-viewer-v2.d.ts +14 -0
  49. package/dist/types-ts4.5/analytics/index.d.ts +2 -2
  50. package/dist/types-ts4.5/v2/header-v2.d.ts +18 -0
  51. package/dist/types-ts4.5/v2/item-viewer-v2.d.ts +21 -0
  52. package/dist/types-ts4.5/v2/list-v2.d.ts +22 -0
  53. package/dist/types-ts4.5/v2/media-viewer-v2.d.ts +14 -0
  54. package/package.json +11 -4
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isFileStateItem = exports.isExternalImageItem = exports.MAX_FILE_SIZE_SUPPORTED_BY_CODEVIEWER = exports.ItemViewerV2Base = exports.ItemViewerV2 = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactLoadable = _interopRequireDefault(require("react-loadable"));
13
+ var _mediaClient = require("@atlaskit/media-client");
14
+ var _reactIntlNext = require("react-intl-next");
15
+ var _mediaUi = require("@atlaskit/media-ui");
16
+ var _codeViewer = require("@atlaskit/media-ui/codeViewer");
17
+ var _mediaClientReact = require("@atlaskit/media-client-react");
18
+ var _domain = require("../domain");
19
+ var _loading = require("../loading");
20
+ var _errorMessage = _interopRequireDefault(require("../errorMessage"));
21
+ var _errors = require("../errors");
22
+ var _download = require("../download");
23
+ var _analyticsNext = require("@atlaskit/analytics-next");
24
+ var _commenced = require("../analytics/events/operational/commenced");
25
+ var _loadSucceeded = require("../analytics/events/operational/loadSucceeded");
26
+ var _analytics = require("../analytics");
27
+ var _interactiveImg = require("../viewers/image/interactive-img");
28
+ var _archiveViewerLoader = _interopRequireDefault(require("../viewers/archiveSidebar/archiveViewerLoader"));
29
+ var _mediaCommon = require("@atlaskit/media-common");
30
+ var _ufoExperiences = require("../analytics/ufoExperiences");
31
+ 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); }
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || (0, _typeof2.default)(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; }
33
+ var ImageViewer = (0, _reactLoadable.default)({
34
+ loader: function loader() {
35
+ return Promise.resolve().then(function () {
36
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_imageViewer" */'../viewers/image'));
37
+ }).then(function (mod) {
38
+ return mod.ImageViewer;
39
+ });
40
+ },
41
+ loading: function loading() {
42
+ return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
43
+ }
44
+ });
45
+ var VideoViewer = (0, _reactLoadable.default)({
46
+ loader: function loader() {
47
+ return Promise.resolve().then(function () {
48
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_videoViewer" */'../viewers/video'));
49
+ }).then(function (mod) {
50
+ return mod.VideoViewer;
51
+ });
52
+ },
53
+ loading: function loading() {
54
+ return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
55
+ }
56
+ });
57
+ var AudioViewer = (0, _reactLoadable.default)({
58
+ loader: function loader() {
59
+ return Promise.resolve().then(function () {
60
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_audioViewer" */'../viewers/audio'));
61
+ }).then(function (mod) {
62
+ return mod.AudioViewer;
63
+ });
64
+ },
65
+ loading: function loading() {
66
+ return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
67
+ }
68
+ });
69
+ var DocViewer = (0, _reactLoadable.default)({
70
+ loader: function loader() {
71
+ return Promise.resolve().then(function () {
72
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_docViewer" */'../viewers/doc'));
73
+ }).then(function (mod) {
74
+ return mod.DocViewer;
75
+ });
76
+ },
77
+ loading: function loading() {
78
+ return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
79
+ }
80
+ });
81
+ var CodeViewer = (0, _reactLoadable.default)({
82
+ loader: function loader() {
83
+ return Promise.resolve().then(function () {
84
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_codeViewer" */'../viewers/codeViewer'));
85
+ }).then(function (mod) {
86
+ return mod.CodeViewer;
87
+ });
88
+ },
89
+ loading: function loading() {
90
+ return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
91
+ }
92
+ });
93
+ // Consts
94
+ var isExternalImageItem = exports.isExternalImageItem = function isExternalImageItem(fileItem) {
95
+ return fileItem === 'external-image';
96
+ };
97
+ var isFileStateItem = exports.isFileStateItem = function isFileStateItem(fileItem) {
98
+ return !isExternalImageItem(fileItem);
99
+ };
100
+ var MAX_FILE_SIZE_SUPPORTED_BY_CODEVIEWER = exports.MAX_FILE_SIZE_SUPPORTED_BY_CODEVIEWER = 10 * 1024 * 1024;
101
+ var ItemViewerV2Base = exports.ItemViewerV2Base = function ItemViewerV2Base(_ref) {
102
+ var identifier = _ref.identifier,
103
+ showControls = _ref.showControls,
104
+ onClose = _ref.onClose,
105
+ previewCount = _ref.previewCount,
106
+ contextId = _ref.contextId,
107
+ createAnalyticsEvent = _ref.createAnalyticsEvent;
108
+ // States and Refs
109
+ var _useState = (0, _react.useState)(_domain.Outcome.pending()),
110
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
111
+ item = _useState2[0],
112
+ setItem = _useState2[1];
113
+ var traceContext = (0, _react.useRef)({
114
+ traceId: (0, _mediaCommon.getRandomHex)(8)
115
+ });
116
+ var fileStateFlagsRef = (0, _react.useRef)({
117
+ wasStatusUploading: false,
118
+ wasStatusProcessing: false
119
+ });
120
+ var createAnalyticsEventRef = (0, _react.useRef)(createAnalyticsEvent);
121
+ createAnalyticsEventRef.current = createAnalyticsEvent;
122
+
123
+ // Hooks
124
+ var mediaClient = (0, _mediaClientReact.useMediaClient)();
125
+ var _useFileState = (0, _mediaClientReact.useFileState)((0, _mediaClient.isExternalImageIdentifier)(identifier) ? '' : identifier.id, {
126
+ collectionName: (0, _mediaClient.isExternalImageIdentifier)(identifier) ? '' : identifier.collectionName,
127
+ skipRemote: (0, _mediaClient.isExternalImageIdentifier)(identifier)
128
+ }),
129
+ fileState = _useFileState.fileState;
130
+ var renderDownloadButton = (0, _react.useCallback)(function (fileState, error) {
131
+ var collectionName = (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.collectionName : undefined;
132
+ return /*#__PURE__*/_react.default.createElement(_download.ErrorViewDownloadButton, {
133
+ fileState: fileState,
134
+ mediaClient: mediaClient,
135
+ error: error,
136
+ collectionName: collectionName
137
+ });
138
+ }, [mediaClient, identifier]);
139
+
140
+ // Did mount
141
+
142
+ (0, _react.useEffect)(function () {
143
+ if ((0, _mediaClient.isExternalImageIdentifier)(identifier)) {
144
+ // external images do not need to talk to our backend,
145
+ // so therefore no need for media-client subscriptions.
146
+ // just set a successful outcome of type "external-image".
147
+ setItem(_domain.Outcome.successful('external-image'));
148
+ return;
149
+ }
150
+ (0, _analytics.fireAnalytics)((0, _commenced.createCommencedEvent)(identifier === null || identifier === void 0 ? void 0 : identifier.id, traceContext.current), createAnalyticsEventRef.current);
151
+ (0, _ufoExperiences.startMediaFileUfoExperience)();
152
+
153
+ // File Subscription
154
+
155
+ if (fileState) {
156
+ var status = fileState.status;
157
+ if (fileState.status !== 'error') {
158
+ // updateFileStateFlag
159
+
160
+ if (status === 'processing') {
161
+ fileStateFlagsRef.current.wasStatusProcessing = true;
162
+ } else if (status === 'uploading') {
163
+ fileStateFlagsRef.current.wasStatusUploading = true;
164
+ }
165
+ setItem(_domain.Outcome.successful(fileState));
166
+ } else {
167
+ var e = new _mediaClientReact.MediaFileStateError(fileState.id, fileState.reason, fileState.message, fileState.details);
168
+ setItem(_domain.Outcome.failed(new _errors.MediaViewerError('itemviewer-fetch-metadata', e)));
169
+ }
170
+ }
171
+ }, [fileState, identifier]);
172
+ var onSuccess = (0, _react.useCallback)(function () {
173
+ item.whenSuccessful(function (fileItem) {
174
+ if (isFileStateItem(fileItem)) {
175
+ var fileAttributes = (0, _analytics.getFileAttributes)(fileItem);
176
+ (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)(fileAttributes, traceContext.current), createAnalyticsEventRef.current);
177
+ (0, _ufoExperiences.succeedMediaFileUfoExperience)({
178
+ fileAttributes: fileAttributes,
179
+ fileStateFlags: fileStateFlagsRef.current
180
+ });
181
+ }
182
+ });
183
+ }, [item]);
184
+ var onLoadFail = (0, _react.useCallback)(function (mediaViewerError) {
185
+ setItem(_domain.Outcome.failed(mediaViewerError));
186
+ }, []);
187
+ var renderError = (0, _react.useCallback)(function (error, fileItem) {
188
+ if (fileItem) {
189
+ var _fileState;
190
+ if (fileItem === 'external-image') {
191
+ // external image error outcome
192
+ _fileState = {
193
+ id: 'external-image',
194
+ status: 'error'
195
+ };
196
+ } else {
197
+ // FileState error outcome
198
+ _fileState = fileItem;
199
+ }
200
+ return /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
201
+ fileId: (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.id : 'undefined',
202
+ error: error,
203
+ fileState: _fileState,
204
+ fileStateFlags: fileStateFlagsRef.current,
205
+ traceContext: traceContext.current
206
+ }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file)), renderDownloadButton(_fileState, error));
207
+ } else {
208
+ return /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
209
+ fileId: (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.id : 'undefined',
210
+ error: error,
211
+ fileStateFlags: fileStateFlagsRef.current
212
+ });
213
+ }
214
+ }, [identifier, renderDownloadButton, traceContext]);
215
+ return item.match({
216
+ successful: function successful(fileItem) {
217
+ if (fileItem === 'external-image') {
218
+ // render an external image
219
+ var _ref2 = identifier,
220
+ dataURI = _ref2.dataURI;
221
+ return /*#__PURE__*/_react.default.createElement(_interactiveImg.InteractiveImg, {
222
+ src: dataURI,
223
+ onLoad: function onLoad() {
224
+ (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)({
225
+ fileId: 'external-image'
226
+ }), createAnalyticsEventRef.current);
227
+ (0, _ufoExperiences.succeedMediaFileUfoExperience)({
228
+ fileAttributes: {
229
+ fileId: 'external-image'
230
+ },
231
+ fileStateFlags: fileStateFlagsRef.current
232
+ });
233
+ },
234
+ onError: function onError() {
235
+ setItem(_domain.Outcome.failed(new _errors.MediaViewerError('imageviewer-external-onerror')));
236
+ }
237
+ });
238
+ } else {
239
+ // render a FileState fetched through media-client
240
+ switch (fileItem.status) {
241
+ case 'processed':
242
+ case 'uploading':
243
+ case 'processing':
244
+ // TODO: renderItem
245
+ var collectionName = (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.collectionName : undefined;
246
+ var viewerProps = {
247
+ mediaClient: mediaClient,
248
+ item: fileItem,
249
+ collectionName: collectionName,
250
+ onClose: onClose,
251
+ previewCount: previewCount
252
+ };
253
+
254
+ // TODO: fix all of the item errors
255
+
256
+ if ((0, _codeViewer.isCodeViewerItem)(fileItem.name, fileItem.mimeType)) {
257
+ //Render error message if code file has size over 10MB.
258
+ //Required by https://product-fabric.atlassian.net/browse/MEX-1788
259
+ if (fileItem.size > MAX_FILE_SIZE_SUPPORTED_BY_CODEVIEWER) {
260
+ return renderError(new _errors.MediaViewerError('codeviewer-file-size-exceeds'), fileItem);
261
+ }
262
+ return /*#__PURE__*/_react.default.createElement(CodeViewer, (0, _extends2.default)({
263
+ onSuccess: onSuccess,
264
+ onError: onLoadFail
265
+ }, viewerProps));
266
+ }
267
+ var mediaType = fileItem.mediaType;
268
+ switch (mediaType) {
269
+ case 'image':
270
+ return /*#__PURE__*/_react.default.createElement(ImageViewer, (0, _extends2.default)({
271
+ onLoad: onSuccess,
272
+ onError: onLoadFail,
273
+ contextId: contextId,
274
+ traceContext: traceContext.current
275
+ }, viewerProps));
276
+ case 'audio':
277
+ return /*#__PURE__*/_react.default.createElement(AudioViewer, (0, _extends2.default)({
278
+ showControls: showControls,
279
+ onCanPlay: onSuccess,
280
+ onError: onLoadFail
281
+ }, viewerProps));
282
+ case 'video':
283
+ return /*#__PURE__*/_react.default.createElement(VideoViewer, (0, _extends2.default)({
284
+ showControls: showControls,
285
+ onCanPlay: onSuccess,
286
+ onError: onLoadFail
287
+ }, viewerProps));
288
+ case 'doc':
289
+ return /*#__PURE__*/_react.default.createElement(DocViewer, (0, _extends2.default)({
290
+ onSuccess: onSuccess,
291
+ onError: onLoadFail
292
+ }, viewerProps));
293
+ case 'archive':
294
+ return /*#__PURE__*/_react.default.createElement(_archiveViewerLoader.default, (0, _extends2.default)({
295
+ onSuccess: onSuccess,
296
+ onError: onLoadFail
297
+ }, viewerProps));
298
+ }
299
+ return renderError(new _errors.MediaViewerError('unsupported'), fileItem);
300
+ case 'failed-processing':
301
+ return renderError(new _errors.MediaViewerError('itemviewer-file-failed-processing-status'), fileItem);
302
+ case 'error':
303
+ return renderError(new _errors.MediaViewerError('itemviewer-file-error-status'), fileItem);
304
+ }
305
+ }
306
+ },
307
+ pending: function pending() {
308
+ return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
309
+ },
310
+ failed: function failed(error) {
311
+ return renderError(error, item.data);
312
+ }
313
+ });
314
+ };
315
+ var ViewerWithKey = function ViewerWithKey(props) {
316
+ var identifier = props.identifier;
317
+ var key = (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.id : identifier.dataURI;
318
+ return /*#__PURE__*/_react.default.createElement(ItemViewerV2Base, (0, _extends2.default)({}, props, {
319
+ key: key
320
+ }));
321
+ };
322
+ var ItemViewerV2 = exports.ItemViewerV2 = (0, _analyticsNext.withAnalyticsEvents)()(ViewerWithKey);
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ListV2 = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _mediaUi = require("@atlaskit/media-ui");
12
+ var _itemViewerV = require("./item-viewer-v2");
13
+ var _styleWrappers = require("../styleWrappers");
14
+ var _navigation = require("../navigation");
15
+ var _headerV = _interopRequireDefault(require("./header-v2"));
16
+ 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); }
17
+ 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; }
18
+ var ListV2 = exports.ListV2 = function ListV2(_ref) {
19
+ var defaultSelectedItem = _ref.defaultSelectedItem,
20
+ onClose = _ref.onClose,
21
+ showControls = _ref.showControls,
22
+ extensions = _ref.extensions,
23
+ onSidebarButtonClick = _ref.onSidebarButtonClick,
24
+ contextId = _ref.contextId,
25
+ featureFlags = _ref.featureFlags,
26
+ isSidebarVisible = _ref.isSidebarVisible,
27
+ onNavigationChange = _ref.onNavigationChange,
28
+ items = _ref.items;
29
+ var _useState = (0, _react.useState)(defaultSelectedItem),
30
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
31
+ selectedItem = _useState2[0],
32
+ setSelectedItem = _useState2[1];
33
+ var _useState3 = (0, _react.useState)(0),
34
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
35
+ previewCount = _useState4[0],
36
+ setPreviewCount = _useState4[1];
37
+ var _useState5 = (0, _react.useState)(false),
38
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
39
+ isArchiveSideBarVisible = _useState6[0],
40
+ setIsArchiveSideBarVisible = _useState6[1];
41
+ return /*#__PURE__*/_react.default.createElement(_styleWrappers.ListWrapper, null, /*#__PURE__*/_react.default.createElement(_styleWrappers.HeaderWrapper, {
42
+ className: _mediaUi.hideControlsClassName,
43
+ isArchiveSideBarVisible: isArchiveSideBarVisible
44
+ }, /*#__PURE__*/_react.default.createElement(_headerV.default, {
45
+ identifier: selectedItem,
46
+ onClose: onClose,
47
+ extensions: extensions,
48
+ onSidebarButtonClick: onSidebarButtonClick,
49
+ isSidebarVisible: isSidebarVisible,
50
+ isArchiveSideBarVisible: isArchiveSideBarVisible,
51
+ featureFlags: featureFlags,
52
+ onSetArchiveSideBarVisible: setIsArchiveSideBarVisible
53
+ })), /*#__PURE__*/_react.default.createElement(_itemViewerV.ItemViewerV2, {
54
+ identifier: selectedItem,
55
+ showControls: showControls,
56
+ onClose: onClose,
57
+ previewCount: previewCount,
58
+ contextId: contextId,
59
+ featureFlags: featureFlags
60
+ }), /*#__PURE__*/_react.default.createElement(_navigation.Navigation, {
61
+ items: items,
62
+ selectedItem: selectedItem,
63
+ onChange: function onChange(selectedItem) {
64
+ onNavigationChange === null || onNavigationChange === void 0 || onNavigationChange(selectedItem);
65
+ showControls === null || showControls === void 0 || showControls();
66
+ setSelectedItem(selectedItem);
67
+ setPreviewCount(previewCount + 1);
68
+ },
69
+ isArchiveSideBarVisible: isArchiveSideBarVisible
70
+ }));
71
+ };
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.MediaViewerV2 = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactIntlNext = require("react-intl-next");
13
+ var _mediaUi = require("@atlaskit/media-ui");
14
+ var _analyticsNext = require("@atlaskit/analytics-next");
15
+ var _analytics = require("../analytics");
16
+ var _modal = require("../analytics/events/screen/modal");
17
+ var _closed = require("../analytics/events/ui/closed");
18
+ var _listV = require("./list-v2");
19
+ var _content = require("../content");
20
+ var _styleWrappers = require("../styleWrappers");
21
+ var _perfMarks = require("perf-marks");
22
+ var _classnames = require("../classnames");
23
+ var _reactScrolllock = _interopRequireDefault(require("react-scrolllock"));
24
+ var _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
25
+ 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); }
26
+ 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; }
27
+ var MediaViewerComponent = function MediaViewerComponent(_ref) {
28
+ var featureFlags = _ref.featureFlags,
29
+ items = _ref.items,
30
+ extensions = _ref.extensions,
31
+ contextId = _ref.contextId,
32
+ innerRef = _ref.innerRef,
33
+ _onClose = _ref.onClose,
34
+ selectedItem = _ref.selectedItem,
35
+ intl = _ref.intl;
36
+ var _useState = (0, _react.useState)(false),
37
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
38
+ isSidebarVisible = _useState2[0],
39
+ setIsSidebarVisible = _useState2[1];
40
+ var _useState3 = (0, _react.useState)(),
41
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
42
+ selectedIdentifier = _useState4[0],
43
+ setSelectedIdentifier = _useState4[1];
44
+ var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
45
+ createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
46
+ var createAnalyticsEventRef = (0, _react.useRef)(createAnalyticsEvent);
47
+ createAnalyticsEventRef.current = createAnalyticsEvent;
48
+ (0, _react.useLayoutEffect)(function () {
49
+ (0, _analytics.fireAnalytics)((0, _modal.createModalEvent)(), createAnalyticsEventRef.current);
50
+ (0, _perfMarks.start)('MediaViewer.SessionDuration');
51
+ }, []);
52
+ var defaultSelectedItem = selectedItem || items[0];
53
+ var renderSidebar = function renderSidebar() {
54
+ var sidebarSelectedIdentifier = selectedIdentifier || defaultSelectedItem;
55
+ if (sidebarSelectedIdentifier && isSidebarVisible && extensions && extensions.sidebar) {
56
+ return /*#__PURE__*/_react.default.createElement(_styleWrappers.SidebarWrapper, {
57
+ "data-testid": "media-viewer-sidebar-content"
58
+ }, extensions.sidebar.renderer(sidebarSelectedIdentifier, {
59
+ close: function close() {
60
+ return setIsSidebarVisible(!isSidebarVisible);
61
+ }
62
+ }));
63
+ }
64
+ };
65
+ var content = /*#__PURE__*/_react.default.createElement("div", {
66
+ ref: innerRef
67
+ }, /*#__PURE__*/_react.default.createElement(_styleWrappers.Blanket, {
68
+ "data-testid": "media-viewer-popup",
69
+ className: _classnames.mediaViewerPopupClass
70
+ }, /*#__PURE__*/_react.default.createElement(_mediaUi.Shortcut, {
71
+ code: 'Escape',
72
+ handler: function handler() {
73
+ (0, _analytics.fireAnalytics)((0, _closed.createClosedEvent)('escKey'), createAnalyticsEventRef.current);
74
+ _onClose && _onClose();
75
+ }
76
+ }), /*#__PURE__*/_react.default.createElement(_content.Content, {
77
+ isSidebarVisible: isSidebarVisible,
78
+ onClose: function onClose(_e, analyticsEvent) {
79
+ var _analyticsEvent$paylo;
80
+ if ((analyticsEvent === null || analyticsEvent === void 0 || (_analyticsEvent$paylo = analyticsEvent.payload) === null || _analyticsEvent$paylo === void 0 ? void 0 : _analyticsEvent$paylo.actionSubject) === 'button') {
81
+ (0, _analytics.fireAnalytics)((0, _closed.createClosedEvent)('button'), createAnalyticsEventRef.current);
82
+ }
83
+ _onClose && _onClose();
84
+ }
85
+ }, /*#__PURE__*/_react.default.createElement(_listV.ListV2, {
86
+ defaultSelectedItem: defaultSelectedItem || items[0],
87
+ items: items,
88
+ onClose: _onClose,
89
+ extensions: extensions,
90
+ onNavigationChange: setSelectedIdentifier,
91
+ onSidebarButtonClick: function onSidebarButtonClick() {
92
+ return setIsSidebarVisible(!isSidebarVisible);
93
+ },
94
+ isSidebarVisible: isSidebarVisible,
95
+ contextId: contextId,
96
+ featureFlags: featureFlags
97
+ })), renderSidebar()));
98
+ return intl ? content : /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
99
+ locale: "en"
100
+ }, content);
101
+ };
102
+ var MediaViewerWithRef = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
103
+ return /*#__PURE__*/_react.default.createElement(MediaViewerComponent, (0, _extends2.default)({}, props, {
104
+ innerRef: ref
105
+ }));
106
+ });
107
+ var MediaViewerWithScrollLock = function MediaViewerWithScrollLock(props) {
108
+ return /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, {
109
+ autoFocus: true
110
+ }, /*#__PURE__*/_react.default.createElement(_reactScrolllock.default, null), /*#__PURE__*/_react.default.createElement(MediaViewerWithRef, props));
111
+ };
112
+ var MediaViewerV2 = exports.MediaViewerV2 = (0, _reactIntlNext.injectIntl)(MediaViewerWithScrollLock, {
113
+ enforceContext: false
114
+ });
@@ -164,7 +164,7 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
164
164
  });
165
165
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onViewerLoad", function (selectedArchiveEntry) {
166
166
  return function () {
167
- (0, _analytics.fireAnalytics)((0, _zipEntryLoadSucceeded.createZipEntryLoadSucceededEvent)(_this.props.item, selectedArchiveEntry), _this.props);
167
+ (0, _analytics.fireAnalytics)((0, _zipEntryLoadSucceeded.createZipEntryLoadSucceededEvent)(_this.props.item, selectedArchiveEntry), _this.props.createAnalyticsEvent);
168
168
  };
169
169
  });
170
170
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onViewerError", function (primaryErrorReason, selectedArchiveEntry) {
@@ -326,8 +326,10 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
326
326
  }, {
327
327
  key: "renderPreviewError",
328
328
  value: function renderPreviewError(error, entry) {
329
- var item = this.props.item;
330
- (0, _analytics.fireAnalytics)((0, _zipEntryLoadFailed.createZipEntryLoadFailedEvent)(this.props.item, error, entry), this.props);
329
+ var _this$props2 = this.props,
330
+ item = _this$props2.item,
331
+ createAnalyticsEvent = _this$props2.createAnalyticsEvent;
332
+ (0, _analytics.fireAnalytics)((0, _zipEntryLoadFailed.createZipEntryLoadFailedEvent)(item, error, entry), createAnalyticsEvent);
331
333
  return /*#__PURE__*/_react.default.createElement(_styleWrappers.ListWrapper, null, /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
332
334
  fileId: item.id,
333
335
  fileState: item,
@@ -40,20 +40,22 @@ var ZoomControlsBase = exports.ZoomControlsBase = /*#__PURE__*/function (_Compon
40
40
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "zoomIn", function () {
41
41
  var _this$props = _this.props,
42
42
  onChange = _this$props.onChange,
43
- zoomLevel = _this$props.zoomLevel;
43
+ zoomLevel = _this$props.zoomLevel,
44
+ createAnalyticsEvent = _this$props.createAnalyticsEvent;
44
45
  if (zoomLevel.canZoomIn) {
45
46
  var zoom = zoomLevel.zoomIn();
46
- (0, _analytics.fireAnalytics)((0, _zoomInButtonClicked.createZoomInButtonClickEvent)(zoom.value), _this.props);
47
+ (0, _analytics.fireAnalytics)((0, _zoomInButtonClicked.createZoomInButtonClickEvent)(zoom.value), createAnalyticsEvent);
47
48
  onChange(zoom);
48
49
  }
49
50
  });
50
51
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "zoomOut", function () {
51
52
  var _this$props2 = _this.props,
52
53
  onChange = _this$props2.onChange,
53
- zoomLevel = _this$props2.zoomLevel;
54
+ zoomLevel = _this$props2.zoomLevel,
55
+ createAnalyticsEvent = _this$props2.createAnalyticsEvent;
54
56
  if (zoomLevel.canZoomOut) {
55
57
  var zoom = zoomLevel.zoomOut();
56
- (0, _analytics.fireAnalytics)((0, _zoomOutButtonClicked.createZoomOutButtonClickedEvent)(zoom.value), _this.props);
58
+ (0, _analytics.fireAnalytics)((0, _zoomOutButtonClicked.createZoomOutButtonClickedEvent)(zoom.value), createAnalyticsEvent);
57
59
  onChange(zoom);
58
60
  }
59
61
  });
@@ -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 = "48.1.7";
4
+ const packageVersion = "48.2.0";
5
5
  export { packageName, packageVersion, componentName, componentName as component };
6
6
  export function getFileAttributes(fileState) {
7
7
  if (!fileState) {
@@ -37,10 +37,7 @@ export function getFileAttributes(fileState) {
37
37
 
38
38
  /** This type takes FailureAttributes and redefines `failReason` to be the strong media-viewer type */
39
39
 
40
- export function fireAnalytics(payload, props) {
41
- const {
42
- createAnalyticsEvent
43
- } = props;
40
+ export function fireAnalytics(payload, createAnalyticsEvent) {
44
41
  if (createAnalyticsEvent) {
45
42
  const ev = createAnalyticsEvent(payload);
46
43
  ev.fire(ANALYTICS_MEDIA_CHANNEL);
@@ -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 = "48.1.7";
5
+ const packageVersion = "48.2.0";
6
6
  let ufoExperience;
7
7
  const getExperience = () => {
8
8
  if (!ufoExperience) {
@@ -1,7 +1,9 @@
1
1
  import React, { useEffect, useMemo } from 'react';
2
+ import { MediaViewerV2 as MediaViewerNextGenV2 } from '../v2/media-viewer-v2';
2
3
  import { MediaViewer as MediaViewerNextGen } from '../media-viewer';
3
4
  import { isSameIdentifier } from '../utils';
4
5
  import { isFileIdentifier } from '@atlaskit/media-client';
6
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
5
7
  const ensureCollectionName = (identifier, collectionName) => isFileIdentifier(identifier) ? {
6
8
  ...identifier,
7
9
  collectionName: identifier.collectionName || collectionName
@@ -21,6 +23,9 @@ const normaliseItems = (items, selectedItem, collectionName) => {
21
23
  selectedItem: selectedItemWithCollectionName
22
24
  };
23
25
  };
26
+
27
+ // TODO: This component will be removed in https://product-fabric.atlassian.net/browse/CXP-2722
28
+
24
29
  export const MediaViewer = ({
25
30
  featureFlags,
26
31
  onClose,
@@ -56,7 +61,14 @@ export const MediaViewer = ({
56
61
  parent.postMessage(closingMsg, '*');
57
62
  };
58
63
  }, []);
59
- return /*#__PURE__*/React.createElement(MediaViewerNextGen, {
64
+ return getBooleanFF('platform.media-experience.media-viewer-v2_hgsii') ? /*#__PURE__*/React.createElement(MediaViewerNextGenV2, {
65
+ selectedItem: normalisedSelectedItem,
66
+ onClose: onClose,
67
+ items: normalisedItems,
68
+ featureFlags: featureFlags,
69
+ extensions: extensions,
70
+ contextId: contextId
71
+ }) : /*#__PURE__*/React.createElement(MediaViewerNextGen, {
60
72
  mediaClient: mediaClient,
61
73
  selectedItem: normalisedSelectedItem,
62
74
  onClose: onClose,
@@ -45,14 +45,16 @@ export class ErrorMessage extends React.Component {
45
45
  error,
46
46
  fileState,
47
47
  fileId,
48
- traceContext
48
+ traceContext,
49
+ createAnalyticsEvent,
50
+ fileStateFlags
49
51
  } = props;
50
52
  if (supressAnalytics !== true) {
51
53
  const payload = ErrorMessage.getEventPayload(error, fileId, fileState, traceContext);
52
- fireAnalytics(payload, props);
54
+ fireAnalytics(payload, createAnalyticsEvent);
53
55
  const rawPayload = {
54
56
  ...(payload === null || payload === void 0 ? void 0 : payload.attributes),
55
- fileStateFlags: props.fileStateFlags
57
+ fileStateFlags
56
58
  };
57
59
  if (Object.keys(rawPayload).includes('status')) {
58
60
  delete rawPayload['status'];