@atlaskit/media-viewer 49.2.7 → 49.4.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 (83) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/analytics/events/operational/download.js +59 -0
  3. package/dist/cjs/analytics/index.js +1 -1
  4. package/dist/cjs/analytics/ufoExperiences.js +1 -1
  5. package/dist/cjs/components/media-viewer.js +4 -2
  6. package/dist/cjs/download.js +60 -27
  7. package/dist/cjs/header.js +4 -2
  8. package/dist/cjs/item-viewer.js +32 -17
  9. package/dist/cjs/list.js +11 -3
  10. package/dist/cjs/media-viewer.js +4 -2
  11. package/dist/cjs/viewerOptions.js +5 -0
  12. package/dist/cjs/viewers/archiveSidebar/archive.js +52 -8
  13. package/dist/cjs/viewers/base-viewer.js +4 -2
  14. package/dist/cjs/viewers/customViewer/customViewer.js +55 -0
  15. package/dist/es2019/analytics/events/operational/download.js +55 -0
  16. package/dist/es2019/analytics/index.js +1 -1
  17. package/dist/es2019/analytics/ufoExperiences.js +1 -1
  18. package/dist/es2019/components/media-viewer.js +4 -2
  19. package/dist/es2019/download.js +53 -24
  20. package/dist/es2019/header.js +4 -2
  21. package/dist/es2019/item-viewer.js +30 -17
  22. package/dist/es2019/list.js +12 -4
  23. package/dist/es2019/media-viewer.js +4 -2
  24. package/dist/es2019/viewerOptions.js +1 -0
  25. package/dist/es2019/viewers/archiveSidebar/archive.js +27 -5
  26. package/dist/es2019/viewers/base-viewer.js +4 -2
  27. package/dist/es2019/viewers/customViewer/customViewer.js +37 -0
  28. package/dist/esm/analytics/events/operational/download.js +53 -0
  29. package/dist/esm/analytics/index.js +1 -1
  30. package/dist/esm/analytics/ufoExperiences.js +1 -1
  31. package/dist/esm/components/media-viewer.js +4 -2
  32. package/dist/esm/download.js +60 -25
  33. package/dist/esm/header.js +4 -2
  34. package/dist/esm/item-viewer.js +32 -17
  35. package/dist/esm/list.js +12 -4
  36. package/dist/esm/media-viewer.js +4 -2
  37. package/dist/esm/viewerOptions.js +1 -0
  38. package/dist/esm/viewers/archiveSidebar/archive.js +52 -8
  39. package/dist/esm/viewers/base-viewer.js +4 -2
  40. package/dist/esm/viewers/customViewer/customViewer.js +46 -0
  41. package/dist/types/analytics/events/index.d.ts +2 -1
  42. package/dist/types/analytics/events/operational/_mediaFile.d.ts +1 -1
  43. package/dist/types/analytics/events/operational/download.d.ts +9 -0
  44. package/dist/types/components/media-viewer.d.ts +1 -1
  45. package/dist/types/components/types.d.ts +2 -0
  46. package/dist/types/download.d.ts +7 -11
  47. package/dist/types/errors.d.ts +2 -2
  48. package/dist/types/header.d.ts +3 -2
  49. package/dist/types/index.d.ts +1 -0
  50. package/dist/types/item-viewer.d.ts +7 -2
  51. package/dist/types/list.d.ts +3 -1
  52. package/dist/types/media-viewer.d.ts +2 -0
  53. package/dist/types/viewerOptions.d.ts +21 -0
  54. package/dist/types/viewers/archiveSidebar/types.d.ts +4 -0
  55. package/dist/types/viewers/audio.d.ts +2 -0
  56. package/dist/types/viewers/base-viewer.d.ts +2 -0
  57. package/dist/types/viewers/codeViewer/index.d.ts +2 -0
  58. package/dist/types/viewers/customViewer/customViewer.d.ts +12 -0
  59. package/dist/types/viewers/doc/index.d.ts +2 -0
  60. package/dist/types/viewers/image/index.d.ts +1 -1
  61. package/dist/types/viewers/video.d.ts +2 -0
  62. package/dist/types-ts4.5/analytics/events/index.d.ts +2 -1
  63. package/dist/types-ts4.5/analytics/events/operational/_mediaFile.d.ts +1 -1
  64. package/dist/types-ts4.5/analytics/events/operational/download.d.ts +9 -0
  65. package/dist/types-ts4.5/components/media-viewer.d.ts +1 -1
  66. package/dist/types-ts4.5/components/types.d.ts +2 -0
  67. package/dist/types-ts4.5/download.d.ts +7 -11
  68. package/dist/types-ts4.5/errors.d.ts +2 -2
  69. package/dist/types-ts4.5/header.d.ts +3 -2
  70. package/dist/types-ts4.5/index.d.ts +1 -0
  71. package/dist/types-ts4.5/item-viewer.d.ts +7 -2
  72. package/dist/types-ts4.5/list.d.ts +3 -1
  73. package/dist/types-ts4.5/media-viewer.d.ts +2 -0
  74. package/dist/types-ts4.5/viewerOptions.d.ts +21 -0
  75. package/dist/types-ts4.5/viewers/archiveSidebar/types.d.ts +4 -0
  76. package/dist/types-ts4.5/viewers/audio.d.ts +2 -0
  77. package/dist/types-ts4.5/viewers/base-viewer.d.ts +2 -0
  78. package/dist/types-ts4.5/viewers/codeViewer/index.d.ts +2 -0
  79. package/dist/types-ts4.5/viewers/customViewer/customViewer.d.ts +12 -0
  80. package/dist/types-ts4.5/viewers/doc/index.d.ts +2 -0
  81. package/dist/types-ts4.5/viewers/image/index.d.ts +1 -1
  82. package/dist/types-ts4.5/viewers/video.d.ts +2 -0
  83. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @atlaskit/media-viewer
2
2
 
3
+ ## 49.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#163838](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/163838)
8
+ [`c3fcf9a7c2028`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c3fcf9a7c2028) -
9
+ Logging good/bad events from file downloads
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
15
+ ## 49.3.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [`6099ac032dd30`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6099ac032dd30) -
20
+ Added viewerOptions to override file preview renderer in media components
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies
25
+
3
26
  ## 49.2.7
4
27
 
5
28
  ### Patch Changes
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createDownloadSucceededEventPayload = exports.createDownloadFailedEventPayload = void 0;
7
+ var _ = require("../..");
8
+ var _errors = require("../../../errors");
9
+ var createDownloadSucceededEventPayload = exports.createDownloadSucceededEventPayload = function createDownloadSucceededEventPayload(fileState, traceContext) {
10
+ var _getFileAttributes = (0, _.getFileAttributes)(fileState),
11
+ fileId = _getFileAttributes.fileId,
12
+ fileMediatype = _getFileAttributes.fileMediatype,
13
+ fileMimetype = _getFileAttributes.fileMimetype,
14
+ fileSize = _getFileAttributes.fileSize;
15
+ return {
16
+ eventType: 'operational',
17
+ actionSubject: 'mediaFile',
18
+ action: 'downloadSucceeded',
19
+ attributes: {
20
+ status: 'success',
21
+ fileMediatype: fileMediatype,
22
+ fileMimetype: fileMimetype,
23
+ fileAttributes: {
24
+ fileId: fileId,
25
+ fileMediatype: fileMediatype,
26
+ fileMimetype: fileMimetype,
27
+ fileSize: fileSize
28
+ },
29
+ traceContext: traceContext
30
+ }
31
+ };
32
+ };
33
+ var createDownloadFailedEventPayload = exports.createDownloadFailedEventPayload = function createDownloadFailedEventPayload(fileId, error, fileState, traceContext) {
34
+ var _getFileAttributes2 = (0, _.getFileAttributes)(fileState),
35
+ fileMediatype = _getFileAttributes2.fileMediatype,
36
+ fileMimetype = _getFileAttributes2.fileMimetype,
37
+ fileSize = _getFileAttributes2.fileSize;
38
+ return {
39
+ eventType: 'operational',
40
+ actionSubject: 'mediaFile',
41
+ action: 'downloadFailed',
42
+ attributes: {
43
+ status: 'fail',
44
+ failReason: (0, _errors.getPrimaryErrorReason)(error),
45
+ error: (0, _errors.getSecondaryErrorReason)(error),
46
+ errorDetail: (0, _errors.getErrorDetail)(error),
47
+ request: (0, _errors.getRequestMetadata)(error),
48
+ fileMimetype: fileMimetype,
49
+ fileMediatype: fileMediatype,
50
+ fileAttributes: {
51
+ fileId: fileId,
52
+ fileMediatype: fileMediatype,
53
+ fileMimetype: fileMimetype,
54
+ fileSize: fileSize
55
+ },
56
+ traceContext: traceContext
57
+ }
58
+ };
59
+ };
@@ -10,7 +10,7 @@ exports.packageVersion = exports.packageName = void 0;
10
10
  var _analytics = require("@atlaskit/media-common/analytics");
11
11
  var componentName = exports.component = exports.componentName = 'mediaViewer';
12
12
  var packageName = exports.packageName = "@atlaskit/media-viewer";
13
- var packageVersion = exports.packageVersion = "49.2.7";
13
+ var packageVersion = exports.packageVersion = "49.4.0";
14
14
  function getFileAttributes(fileState) {
15
15
  if (!fileState) {
16
16
  return {
@@ -12,7 +12,7 @@ var _mediaCommon = require("@atlaskit/media-common");
12
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
13
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
14
  var packageName = "@atlaskit/media-viewer";
15
- var packageVersion = "49.2.7";
15
+ var packageVersion = "49.4.0";
16
16
  var ufoExperience;
17
17
  var getExperience = function getExperience() {
18
18
  if (!ufoExperience) {
@@ -47,7 +47,8 @@ var MediaViewerBase = exports.MediaViewerBase = function MediaViewerBase(_ref) {
47
47
  collectionName = _ref.collectionName,
48
48
  items = _ref.items,
49
49
  extensions = _ref.extensions,
50
- contextId = _ref.contextId;
50
+ contextId = _ref.contextId,
51
+ viewerOptions = _ref.viewerOptions;
51
52
  var _useMemo = (0, _react.useMemo)(function () {
52
53
  return normaliseItems(items, selectedItem, collectionName);
53
54
  }, [items, selectedItem, collectionName]),
@@ -80,7 +81,8 @@ var MediaViewerBase = exports.MediaViewerBase = function MediaViewerBase(_ref) {
80
81
  items: normalisedItems,
81
82
  featureFlags: featureFlags,
82
83
  extensions: extensions,
83
- contextId: contextId
84
+ contextId: contextId,
85
+ viewerOptions: viewerOptions
84
86
  });
85
87
  };
86
88
 
@@ -5,20 +5,23 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.DisabledToolbarDownloadButton = void 0;
9
- exports.DownloadButton = DownloadButton;
10
- exports.createItemDownloader = exports.ToolbarDownloadButton = exports.ErrorViewDownloadButton = void 0;
8
+ exports.ToolbarDownloadButton = exports.ErrorViewDownloadButton = exports.DisabledToolbarDownloadButton = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+ var _analyticsNext = require("@atlaskit/analytics-next");
13
14
  var _download = _interopRequireDefault(require("@atlaskit/icon/core/migration/download"));
14
15
  var _mediaClient = require("@atlaskit/media-client");
15
16
  var _mediaUi = require("@atlaskit/media-ui");
16
17
  var _react = _interopRequireWildcard(require("react"));
17
18
  var _reactIntlNext = require("react-intl-next");
18
- var _mediaCommon = require("@atlaskit/media-common");
19
19
  var _downloadButtonClicked = require("./analytics/events/ui/downloadButtonClicked");
20
+ var _download2 = require("./analytics/events/operational/download");
21
+ var _analytics = require("./analytics");
20
22
  var _failedPreviewDownloadButtonClicked = require("./analytics/events/ui/failedPreviewDownloadButtonClicked");
21
23
  var _styleWrappers = require("./styleWrappers");
24
+ var _errors = require("./errors");
22
25
  var _excluded = ["analyticspayload", "onClick"];
23
26
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -33,40 +36,66 @@ function DownloadButton(_ref) {
33
36
  _ref$onClick = _ref.onClick,
34
37
  providedOnClick = _ref$onClick === void 0 ? noop : _ref$onClick,
35
38
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
39
+ var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
40
+ createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
36
41
  var onClick = (0, _react.useCallback)(function (event, analyticsEvent) {
37
- var clone = analyticsEvent.clone();
38
- if (clone) {
39
- clone.update(analyticspayload);
40
- clone.fire(_mediaCommon.ANALYTICS_MEDIA_CHANNEL);
41
- }
42
+ (0, _analytics.fireAnalytics)(analyticspayload, createAnalyticsEvent);
42
43
  providedOnClick(event, analyticsEvent);
43
- }, [analyticspayload, providedOnClick]);
44
+ }, [analyticspayload, providedOnClick, createAnalyticsEvent]);
44
45
  return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaButton, (0, _extends2.default)({}, rest, {
45
46
  onClick: onClick
46
47
  }));
47
48
  }
48
- var createItemDownloader = exports.createItemDownloader = function createItemDownloader(file, mediaClient, collectionName) {
49
- return function () {
50
- var id = file.id;
51
- var name = !(0, _mediaClient.isErrorFileState)(file) ? file.name : undefined;
52
- return mediaClient.file.downloadBinary(id, name, collectionName);
53
- };
49
+ var createItemDownloader = function createItemDownloader(file, mediaClient, options) {
50
+ return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
51
+ var collectionName, traceContext, createAnalyticsEvent, id, name;
52
+ return _regenerator.default.wrap(function _callee$(_context) {
53
+ while (1) switch (_context.prev = _context.next) {
54
+ case 0:
55
+ collectionName = options.collectionName, traceContext = options.traceContext, createAnalyticsEvent = options.createAnalyticsEvent;
56
+ id = file.id;
57
+ name = !(0, _mediaClient.isErrorFileState)(file) ? file.name : undefined;
58
+ mediaClient.file.downloadBinary(id, name, collectionName, traceContext).then(function () {
59
+ (0, _analytics.fireAnalytics)((0, _download2.createDownloadSucceededEventPayload)(file, traceContext), createAnalyticsEvent);
60
+ }).catch(function (e) {
61
+ (0, _analytics.fireAnalytics)((0, _download2.createDownloadFailedEventPayload)(file.id, new _errors.MediaViewerError('download', e), file, traceContext), createAnalyticsEvent);
62
+ });
63
+ case 4:
64
+ case "end":
65
+ return _context.stop();
66
+ }
67
+ }, _callee);
68
+ }));
54
69
  };
55
- var ErrorViewDownloadButton = exports.ErrorViewDownloadButton = function ErrorViewDownloadButton(props) {
56
- var fileState = props.fileState,
57
- error = props.error;
70
+ var ErrorViewDownloadButton = exports.ErrorViewDownloadButton = function ErrorViewDownloadButton(_ref3) {
71
+ var fileState = _ref3.fileState,
72
+ mediaClient = _ref3.mediaClient,
73
+ error = _ref3.error,
74
+ traceContext = _ref3.traceContext,
75
+ collectionName = _ref3.collectionName;
58
76
  var downloadEvent = (0, _failedPreviewDownloadButtonClicked.createFailedPreviewDownloadButtonClickedEvent)(fileState, error);
59
- return /*#__PURE__*/_react.default.createElement(_styleWrappers.DownloadButtonWrapper, null, /*#__PURE__*/_react.default.createElement(DownloadButton, {
60
- testId: "media-viewer-download-button",
77
+ var _useAnalyticsEvents2 = (0, _analyticsNext.useAnalyticsEvents)(),
78
+ createAnalyticsEvent = _useAnalyticsEvents2.createAnalyticsEvent;
79
+ return /*#__PURE__*/_react.default.createElement(_styleWrappers.DownloadButtonWrapper, null, /*#__PURE__*/_react.default.createElement(DownloadButton
80
+ // testId="media-viewer-failed-preview-download-button"
81
+ , {
82
+ testId: "media-viewer-error-download-button",
61
83
  analyticspayload: downloadEvent,
62
84
  appearance: "primary",
63
- onClick: createItemDownloader(props.fileState, props.mediaClient, props.collectionName)
85
+ onClick: createItemDownloader(fileState, mediaClient, {
86
+ collectionName: collectionName,
87
+ traceContext: traceContext,
88
+ createAnalyticsEvent: createAnalyticsEvent
89
+ })
64
90
  }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.download)));
65
91
  };
66
- var ToolbarDownloadButton = exports.ToolbarDownloadButton = function ToolbarDownloadButton(props) {
67
- var state = props.state,
68
- mediaClient = props.mediaClient,
69
- identifier = props.identifier;
92
+ var ToolbarDownloadButton = exports.ToolbarDownloadButton = function ToolbarDownloadButton(_ref4) {
93
+ var state = _ref4.state,
94
+ mediaClient = _ref4.mediaClient,
95
+ identifier = _ref4.identifier,
96
+ traceContext = _ref4.traceContext;
97
+ var _useAnalyticsEvents3 = (0, _analyticsNext.useAnalyticsEvents)(),
98
+ createAnalyticsEvent = _useAnalyticsEvents3.createAnalyticsEvent;
70
99
  var downloadEvent = (0, _downloadButtonClicked.createDownloadButtonClickedEvent)(state);
71
100
 
72
101
  // TODO [MS-1731]: make it work for external files as well
@@ -76,7 +105,11 @@ var ToolbarDownloadButton = exports.ToolbarDownloadButton = function ToolbarDown
76
105
  return /*#__PURE__*/_react.default.createElement(DownloadButton, {
77
106
  testId: "media-viewer-download-button",
78
107
  analyticspayload: downloadEvent,
79
- onClick: createItemDownloader(state, mediaClient, identifier.collectionName),
108
+ onClick: createItemDownloader(state, mediaClient, {
109
+ collectionName: identifier.collectionName,
110
+ createAnalyticsEvent: createAnalyticsEvent,
111
+ traceContext: traceContext
112
+ }),
80
113
  iconBefore: downloadIcon
81
114
  });
82
115
  };
@@ -28,7 +28,8 @@ var Header = exports.Header = function Header(_ref) {
28
28
  isSidebarVisible = _ref.isSidebarVisible,
29
29
  onSidebarButtonClick = _ref.onSidebarButtonClick,
30
30
  identifier = _ref.identifier,
31
- onSetArchiveSideBarVisible = _ref.onSetArchiveSideBarVisible;
31
+ onSetArchiveSideBarVisible = _ref.onSetArchiveSideBarVisible,
32
+ traceContext = _ref.traceContext;
32
33
  // States
33
34
  var _useState = (0, _react.useState)(_domain.Outcome.pending()),
34
35
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -153,7 +154,8 @@ var Header = exports.Header = function Header(_ref) {
153
154
  return /*#__PURE__*/_react.default.createElement(_download.ToolbarDownloadButton, {
154
155
  state: item,
155
156
  identifier: identifier,
156
- mediaClient: mediaClient
157
+ mediaClient: mediaClient,
158
+ traceContext: traceContext
157
159
  });
158
160
  }
159
161
  })));
@@ -11,6 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _reactLoadable = _interopRequireDefault(require("react-loadable"));
13
13
  var _mediaClient = require("@atlaskit/media-client");
14
+ var _primitives = require("@atlaskit/primitives");
14
15
  var _reactIntlNext = require("react-intl-next");
15
16
  var _mediaUi = require("@atlaskit/media-ui");
16
17
  var _codeViewer = require("@atlaskit/media-ui/codeViewer");
@@ -26,8 +27,8 @@ var _loadSucceeded = require("./analytics/events/operational/loadSucceeded");
26
27
  var _analytics = require("./analytics");
27
28
  var _interactiveImg = require("./viewers/image/interactive-img");
28
29
  var _archiveViewerLoader = _interopRequireDefault(require("./viewers/archiveSidebar/archiveViewerLoader"));
29
- var _mediaCommon = require("@atlaskit/media-common");
30
30
  var _ufoExperiences = require("./analytics/ufoExperiences");
31
+ var _customViewer = require("./viewers/customViewer/customViewer");
31
32
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
32
33
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
33
34
  var ImageViewer = (0, _reactLoadable.default)({
@@ -119,15 +120,14 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
119
120
  onClose = _ref.onClose,
120
121
  previewCount = _ref.previewCount,
121
122
  contextId = _ref.contextId,
122
- createAnalyticsEvent = _ref.createAnalyticsEvent;
123
+ createAnalyticsEvent = _ref.createAnalyticsEvent,
124
+ viewerOptions = _ref.viewerOptions,
125
+ traceContext = _ref.traceContext;
123
126
  // States and Refs
124
127
  var _useState = (0, _react.useState)(_domain.Outcome.pending()),
125
128
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
126
129
  item = _useState2[0],
127
130
  setItem = _useState2[1];
128
- var traceContext = (0, _react.useRef)({
129
- traceId: (0, _mediaCommon.getRandomHex)(8)
130
- });
131
131
  var fileStateFlagsRef = (0, _react.useRef)({
132
132
  wasStatusUploading: false,
133
133
  wasStatusProcessing: false
@@ -148,9 +148,10 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
148
148
  fileState: fileState,
149
149
  mediaClient: mediaClient,
150
150
  error: error,
151
- collectionName: collectionName
151
+ collectionName: collectionName,
152
+ traceContext: traceContext
152
153
  });
153
- }, [mediaClient, identifier]);
154
+ }, [mediaClient, identifier, traceContext]);
154
155
 
155
156
  // Did mount
156
157
 
@@ -158,9 +159,9 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
158
159
  if ((0, _mediaClient.isExternalImageIdentifier)(identifier)) {
159
160
  return;
160
161
  }
161
- (0, _analytics.fireAnalytics)((0, _commenced.createCommencedEvent)(identifier === null || identifier === void 0 ? void 0 : identifier.id, traceContext.current), createAnalyticsEventRef.current);
162
+ (0, _analytics.fireAnalytics)((0, _commenced.createCommencedEvent)(identifier === null || identifier === void 0 ? void 0 : identifier.id, traceContext), createAnalyticsEventRef.current);
162
163
  (0, _ufoExperiences.startMediaFileUfoExperience)();
163
- }, [identifier]);
164
+ }, [identifier, traceContext]);
164
165
  (0, _react.useEffect)(function () {
165
166
  if ((0, _mediaClient.isExternalImageIdentifier)(identifier)) {
166
167
  // external images do not need to talk to our backend,
@@ -192,26 +193,41 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
192
193
  item.whenSuccessful(function (fileItem) {
193
194
  if (isFileStateItem(fileItem)) {
194
195
  var fileAttributes = (0, _analytics.getFileAttributes)(fileItem);
195
- (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)(fileAttributes, traceContext.current), createAnalyticsEventRef.current);
196
+ (0, _analytics.fireAnalytics)((0, _loadSucceeded.createLoadSucceededEvent)(fileAttributes, traceContext), createAnalyticsEventRef.current);
196
197
  (0, _ufoExperiences.succeedMediaFileUfoExperience)({
197
198
  fileAttributes: fileAttributes,
198
199
  fileStateFlags: fileStateFlagsRef.current
199
200
  });
200
201
  }
201
202
  });
202
- }, [item]);
203
+ }, [item, traceContext]);
203
204
  var onLoadFail = (0, _react.useCallback)(function (mediaViewerError) {
204
205
  setItem(_domain.Outcome.failed(mediaViewerError, fileState));
205
206
  }, [fileState]);
206
207
  var renderItem = function renderItem(fileItem) {
208
+ var _viewerOptions$custom;
207
209
  var collectionName = (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.collectionName : undefined;
208
210
  var viewerProps = {
209
211
  mediaClient: mediaClient,
210
212
  item: fileItem,
211
213
  collectionName: collectionName,
212
214
  onClose: onClose,
213
- previewCount: previewCount
215
+ previewCount: previewCount,
216
+ viewerOptions: viewerOptions,
217
+ traceContext: traceContext
214
218
  };
219
+ var customRenderer = viewerOptions === null || viewerOptions === void 0 || (_viewerOptions$custom = viewerOptions.customRenderers) === null || _viewerOptions$custom === void 0 ? void 0 : _viewerOptions$custom.find(function (renderer) {
220
+ return renderer.shouldUseCustomRenderer({
221
+ fileItem: fileItem
222
+ });
223
+ });
224
+ if (customRenderer) {
225
+ return /*#__PURE__*/_react.default.createElement(_customViewer.CustomViewer, (0, _extends2.default)({
226
+ customRendererConfig: customRenderer,
227
+ onError: onLoadFail,
228
+ onSuccess: onSuccess
229
+ }, viewerProps));
230
+ }
215
231
 
216
232
  // TODO: fix all of the item errors
217
233
 
@@ -232,7 +248,7 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
232
248
  onLoad: onSuccess,
233
249
  onError: onLoadFail,
234
250
  onClose: onClose,
235
- traceContext: traceContext.current
251
+ traceContext: traceContext
236
252
  });
237
253
  }
238
254
  var mediaType = fileItem.mediaType;
@@ -241,8 +257,7 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
241
257
  return /*#__PURE__*/_react.default.createElement(ImageViewer, (0, _extends2.default)({
242
258
  onLoad: onSuccess,
243
259
  onError: onLoadFail,
244
- contextId: contextId,
245
- traceContext: traceContext.current
260
+ contextId: contextId
246
261
  }, viewerProps));
247
262
  case 'audio':
248
263
  return /*#__PURE__*/_react.default.createElement(AudioViewer, (0, _extends2.default)({
@@ -287,8 +302,8 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
287
302
  error: error,
288
303
  fileState: _fileState,
289
304
  fileStateFlags: fileStateFlagsRef.current,
290
- traceContext: traceContext.current
291
- }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file)), renderDownloadButton(_fileState, error));
305
+ traceContext: traceContext
306
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Text, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file)), renderDownloadButton(_fileState, error));
292
307
  } else {
293
308
  return /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
294
309
  fileId: (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.id : 'undefined',
package/dist/cjs/list.js CHANGED
@@ -12,6 +12,7 @@ var _mediaUi = require("@atlaskit/media-ui");
12
12
  var _itemViewer = require("./item-viewer");
13
13
  var _styleWrappers = require("./styleWrappers");
14
14
  var _navigation = require("./navigation");
15
+ var _mediaCommon = require("@atlaskit/media-common");
15
16
  var _header = _interopRequireDefault(require("./header"));
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -25,7 +26,8 @@ var List = exports.List = function List(_ref) {
25
26
  featureFlags = _ref.featureFlags,
26
27
  isSidebarVisible = _ref.isSidebarVisible,
27
28
  onNavigationChange = _ref.onNavigationChange,
28
- items = _ref.items;
29
+ items = _ref.items,
30
+ viewerOptions = _ref.viewerOptions;
29
31
  var _useState = (0, _react.useState)(defaultSelectedItem),
30
32
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
31
33
  selectedItem = _useState2[0],
@@ -38,6 +40,9 @@ var List = exports.List = function List(_ref) {
38
40
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
39
41
  isArchiveSideBarVisible = _useState6[0],
40
42
  setIsArchiveSideBarVisible = _useState6[1];
43
+ var traceContext = (0, _react.useRef)({
44
+ traceId: (0, _mediaCommon.getRandomHex)(8)
45
+ });
41
46
  return /*#__PURE__*/_react.default.createElement(_styleWrappers.ListWrapper, null, /*#__PURE__*/_react.default.createElement(_styleWrappers.HeaderWrapper
42
47
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
43
48
  , {
@@ -51,14 +56,17 @@ var List = exports.List = function List(_ref) {
51
56
  isSidebarVisible: isSidebarVisible,
52
57
  isArchiveSideBarVisible: isArchiveSideBarVisible,
53
58
  featureFlags: featureFlags,
54
- onSetArchiveSideBarVisible: setIsArchiveSideBarVisible
59
+ onSetArchiveSideBarVisible: setIsArchiveSideBarVisible,
60
+ traceContext: traceContext.current
55
61
  })), /*#__PURE__*/_react.default.createElement(_itemViewer.ItemViewer, {
56
62
  identifier: selectedItem,
57
63
  showControls: showControls,
58
64
  onClose: onClose,
59
65
  previewCount: previewCount,
60
66
  contextId: contextId,
61
- featureFlags: featureFlags
67
+ featureFlags: featureFlags,
68
+ viewerOptions: viewerOptions,
69
+ traceContext: traceContext.current
62
70
  }), /*#__PURE__*/_react.default.createElement(_navigation.Navigation, {
63
71
  items: items,
64
72
  selectedItem: selectedItem,
@@ -32,7 +32,8 @@ var MediaViewerComponent = function MediaViewerComponent(_ref) {
32
32
  innerRef = _ref.innerRef,
33
33
  _onClose = _ref.onClose,
34
34
  selectedItem = _ref.selectedItem,
35
- intl = _ref.intl;
35
+ intl = _ref.intl,
36
+ viewerOptions = _ref.viewerOptions;
36
37
  var _useState = (0, _react.useState)(false),
37
38
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
38
39
  isSidebarVisible = _useState2[0],
@@ -95,7 +96,8 @@ var MediaViewerComponent = function MediaViewerComponent(_ref) {
95
96
  },
96
97
  isSidebarVisible: isSidebarVisible,
97
98
  contextId: contextId,
98
- featureFlags: featureFlags
99
+ featureFlags: featureFlags,
100
+ viewerOptions: viewerOptions
99
101
  })), renderSidebar()));
100
102
  return intl ? content : /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
101
103
  locale: "en"
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -19,6 +19,7 @@ var _unzipit = require("unzipit");
19
19
  var _reactIntlNext = require("react-intl-next");
20
20
  var _mediaUi = require("@atlaskit/media-ui");
21
21
  var _codeViewer = require("@atlaskit/media-ui/codeViewer");
22
+ var _primitives = require("@atlaskit/primitives");
22
23
  var _domain = require("../../domain");
23
24
  var _styleWrappers = require("../../styleWrappers");
24
25
  var _audioMediaServicesAudio = _interopRequireDefault(require("@atlaskit/icon/core/migration/audio--media-services-audio"));
@@ -98,7 +99,8 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
98
99
  case 0:
99
100
  _this.setState({
100
101
  content: _domain.Outcome.successful(_objectSpread(_objectSpread({}, _this.state.content.data), {}, {
101
- selectedArchiveEntry: undefined
102
+ selectedArchiveEntry: undefined,
103
+ hasLoadedEntries: false // displays a nice loading spinner for the content viewer
102
104
  }))
103
105
  });
104
106
  src = '';
@@ -112,7 +114,7 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
112
114
  _context2.next = 8;
113
115
  return (0, _utils.rejectAfter)(function () {
114
116
  return selectedArchiveEntry.blob();
115
- });
117
+ }, 10000);
116
118
  case 8:
117
119
  blob = _context2.sent;
118
120
  src = URL.createObjectURL(blob);
@@ -142,7 +144,8 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
142
144
  isDirectory: selectedArchiveEntry.isDirectory,
143
145
  error: undefined,
144
146
  codeViewerSrc: codeViewerSrc,
145
- isCodeMimeType: isCodeMimeType
147
+ isCodeMimeType: isCodeMimeType,
148
+ hasLoadedEntries: true
146
149
  }))
147
150
  });
148
151
  case 20:
@@ -244,7 +247,9 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
244
247
  }, {
245
248
  key: "renderArchiveItemViewer",
246
249
  value: function renderArchiveItemViewer(content) {
247
- var item = this.props.item;
250
+ var _this$props2 = this.props,
251
+ item = _this$props2.item,
252
+ viewerOptions = _this$props2.viewerOptions;
248
253
  var src = content.src,
249
254
  name = content.name,
250
255
  isDirectory = content.isDirectory,
@@ -256,9 +261,48 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
256
261
  return this.renderPreviewError(error, selectedArchiveEntry);
257
262
  }
258
263
  if (!isDirectory && selectedArchiveEntry) {
264
+ var _viewerOptions$custom;
259
265
  if (!name || !src) {
260
266
  return this.renderPreviewError(new _errors.ArchiveViewerError('archiveviewer-missing-name-src'), selectedArchiveEntry);
261
267
  }
268
+ var customRenderer = viewerOptions === null || viewerOptions === void 0 || (_viewerOptions$custom = viewerOptions.customRenderers) === null || _viewerOptions$custom === void 0 ? void 0 : _viewerOptions$custom.find(function (renderer) {
269
+ return renderer.shouldUseCustomRenderer({
270
+ fileItem: item,
271
+ archiveFileItem: {
272
+ name: name
273
+ }
274
+ });
275
+ });
276
+ if (customRenderer) {
277
+ return /*#__PURE__*/_react.default.createElement(_styleWrappers2.ArchiveItemViewerWrapper, null, customRenderer.renderContent({
278
+ fileItem: item,
279
+ archiveFileItem: {
280
+ name: name
281
+ },
282
+ getBinaryContent: function () {
283
+ var _getBinaryContent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
284
+ return _regenerator.default.wrap(function _callee4$(_context4) {
285
+ while (1) switch (_context4.prev = _context4.next) {
286
+ case 0:
287
+ _context4.next = 2;
288
+ return fetch(src);
289
+ case 2:
290
+ return _context4.abrupt("return", _context4.sent.blob());
291
+ case 3:
292
+ case "end":
293
+ return _context4.stop();
294
+ }
295
+ }, _callee4);
296
+ }));
297
+ function getBinaryContent() {
298
+ return _getBinaryContent.apply(this, arguments);
299
+ }
300
+ return getBinaryContent;
301
+ }(),
302
+ onLoad: this.onViewerLoad(selectedArchiveEntry),
303
+ onError: this.onViewerError('archiveviewer-customrenderer-onerror', selectedArchiveEntry)
304
+ }));
305
+ }
262
306
  var mediaType = (0, _utils.getMediaTypeFromFilename)(name);
263
307
  if (isCodeMimeType) {
264
308
  // Same code viewer logic as in Item-Viewer.tsx
@@ -330,16 +374,16 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
330
374
  }, {
331
375
  key: "renderPreviewError",
332
376
  value: function renderPreviewError(error, entry) {
333
- var _this$props2 = this.props,
334
- item = _this$props2.item,
335
- createAnalyticsEvent = _this$props2.createAnalyticsEvent;
377
+ var _this$props3 = this.props,
378
+ item = _this$props3.item,
379
+ createAnalyticsEvent = _this$props3.createAnalyticsEvent;
336
380
  (0, _analytics.fireAnalytics)((0, _zipEntryLoadFailed.createZipEntryLoadFailedEvent)(item, error, entry), createAnalyticsEvent);
337
381
  return /*#__PURE__*/_react.default.createElement(_styleWrappers.ListWrapper, null, /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
338
382
  fileId: item.id,
339
383
  fileState: item,
340
384
  error: error,
341
385
  supressAnalytics: true
342
- }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file))));
386
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Text, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file))));
343
387
  }
344
388
  }]);
345
389
  return ArchiveViewerBase;
@@ -123,12 +123,14 @@ var BaseViewer = exports.BaseViewer = /*#__PURE__*/function (_React$Component) {
123
123
  var _this$props = this.props,
124
124
  item = _this$props.item,
125
125
  mediaClient = _this$props.mediaClient,
126
- collectionName = _this$props.collectionName;
126
+ collectionName = _this$props.collectionName,
127
+ traceContext = _this$props.traceContext;
127
128
  return /*#__PURE__*/_react.default.createElement(_download.ErrorViewDownloadButton, {
128
129
  fileState: item,
129
130
  mediaClient: mediaClient,
130
131
  error: error,
131
- collectionName: collectionName
132
+ collectionName: collectionName,
133
+ traceContext: traceContext
132
134
  });
133
135
  }
134
136
  }, {