@atlaskit/media-card 78.12.1 → 78.14.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 (69) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/card/actions.js +15 -1
  3. package/dist/cjs/card/card.js +1 -1
  4. package/dist/cjs/card/cardAnalytics.js +12 -1
  5. package/dist/cjs/card/cardView.js +41 -13
  6. package/dist/cjs/card/fileCard.js +72 -95
  7. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  8. package/dist/cjs/card/svgView/errors.js +37 -1
  9. package/dist/cjs/card/svgView/svgView.js +41 -97
  10. package/dist/cjs/card/svgView/types.js +1 -0
  11. package/dist/cjs/card/svgView/useResolveSvg.js +115 -0
  12. package/dist/cjs/card/ui/wrapper/imageContainer.js +0 -1
  13. package/dist/cjs/inline/loader.js +1 -1
  14. package/dist/cjs/utils/analytics/analytics.js +30 -1
  15. package/dist/cjs/utils/analytics/index.js +12 -0
  16. package/dist/cjs/utils/ufoExperiences.js +1 -1
  17. package/dist/es2019/card/actions.js +12 -1
  18. package/dist/es2019/card/card.js +1 -1
  19. package/dist/es2019/card/cardAnalytics.js +9 -1
  20. package/dist/es2019/card/cardView.js +36 -11
  21. package/dist/es2019/card/fileCard.js +40 -79
  22. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  23. package/dist/es2019/card/svgView/errors.js +18 -0
  24. package/dist/es2019/card/svgView/svgView.js +43 -91
  25. package/dist/es2019/card/svgView/types.js +0 -0
  26. package/dist/es2019/card/svgView/useResolveSvg.js +68 -0
  27. package/dist/es2019/card/ui/wrapper/imageContainer.js +0 -1
  28. package/dist/es2019/inline/loader.js +1 -1
  29. package/dist/es2019/utils/analytics/analytics.js +25 -0
  30. package/dist/es2019/utils/analytics/index.js +1 -1
  31. package/dist/es2019/utils/ufoExperiences.js +1 -1
  32. package/dist/esm/card/actions.js +14 -1
  33. package/dist/esm/card/card.js +1 -1
  34. package/dist/esm/card/cardAnalytics.js +12 -1
  35. package/dist/esm/card/cardView.js +41 -13
  36. package/dist/esm/card/fileCard.js +74 -97
  37. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  38. package/dist/esm/card/svgView/errors.js +35 -0
  39. package/dist/esm/card/svgView/svgView.js +42 -97
  40. package/dist/esm/card/svgView/types.js +0 -0
  41. package/dist/esm/card/svgView/useResolveSvg.js +108 -0
  42. package/dist/esm/card/ui/wrapper/imageContainer.js +0 -1
  43. package/dist/esm/inline/loader.js +1 -1
  44. package/dist/esm/utils/analytics/analytics.js +29 -0
  45. package/dist/esm/utils/analytics/index.js +1 -1
  46. package/dist/esm/utils/ufoExperiences.js +1 -1
  47. package/dist/types/card/actions.d.ts +5 -0
  48. package/dist/types/card/cardAnalytics.d.ts +2 -0
  49. package/dist/types/card/cardView.d.ts +6 -2
  50. package/dist/types/card/svgView/errors.d.ts +7 -1
  51. package/dist/types/card/svgView/svgView.d.ts +7 -21
  52. package/dist/types/card/svgView/types.d.ts +1 -0
  53. package/dist/types/card/svgView/useResolveSvg.d.ts +7 -0
  54. package/dist/types/card/ui/wrapper/imageContainer.d.ts +1 -1
  55. package/dist/types/errors.d.ts +1 -1
  56. package/dist/types/utils/analytics/analytics.d.ts +9 -2
  57. package/dist/types/utils/analytics/index.d.ts +1 -1
  58. package/dist/types-ts4.5/card/actions.d.ts +5 -0
  59. package/dist/types-ts4.5/card/cardAnalytics.d.ts +2 -0
  60. package/dist/types-ts4.5/card/cardView.d.ts +6 -2
  61. package/dist/types-ts4.5/card/svgView/errors.d.ts +7 -1
  62. package/dist/types-ts4.5/card/svgView/svgView.d.ts +7 -21
  63. package/dist/types-ts4.5/card/svgView/types.d.ts +1 -0
  64. package/dist/types-ts4.5/card/svgView/useResolveSvg.d.ts +7 -0
  65. package/dist/types-ts4.5/card/ui/wrapper/imageContainer.d.ts +1 -1
  66. package/dist/types-ts4.5/errors.d.ts +1 -1
  67. package/dist/types-ts4.5/utils/analytics/analytics.d.ts +9 -2
  68. package/dist/types-ts4.5/utils/analytics/index.d.ts +1 -1
  69. package/package.json +9 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @atlaskit/media-card
2
2
 
3
+ ## 78.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#162568](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/162568)
8
+ [`bdec058ec8fe8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/bdec058ec8fe8) -
9
+ Added support for navite SVG rendering when overlay is enabled (Media Group)
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
15
+ ## 78.13.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#163838](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/163838)
20
+ [`c3fcf9a7c2028`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c3fcf9a7c2028) -
21
+ Logging good/bad events from file downloads
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies
26
+
3
27
  ## 78.12.1
4
28
 
5
29
  ### Patch Changes
@@ -5,7 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.attachDetailsToActions = attachDetailsToActions;
8
+ exports.createDownloadAction = void 0;
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _download = _interopRequireDefault(require("@atlaskit/icon/core/migration/download"));
9
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; }
10
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; }
11
14
  function attachDetailsToActions(actions, details) {
@@ -19,4 +22,15 @@ function attachDetailsToActions(actions, details) {
19
22
  }
20
23
  });
21
24
  });
22
- }
25
+ }
26
+ var createDownloadAction = exports.createDownloadAction = function createDownloadAction(handler) {
27
+ return {
28
+ label: 'Download',
29
+ icon: /*#__PURE__*/_react.default.createElement(_download.default, {
30
+ color: "currentColor",
31
+ spacing: "spacious",
32
+ label: "Download"
33
+ }),
34
+ handler: handler
35
+ };
36
+ };
@@ -22,7 +22,7 @@ var _excluded = ["identifier"];
22
22
  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); }
23
23
  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; }
24
24
  var packageName = "@atlaskit/media-card";
25
- var packageVersion = "78.12.1";
25
+ var packageVersion = "78.14.0";
26
26
  var CardBase = exports.CardBase = function CardBase(_ref) {
27
27
  var identifier = _ref.identifier,
28
28
  otherProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.fireScreenEvent = exports.fireOperationalEvent = exports.fireNonCriticalErrorEvent = exports.fireCopiedEvent = void 0;
6
+ exports.fireScreenEvent = exports.fireOperationalEvent = exports.fireNonCriticalErrorEvent = exports.fireDownloadSucceededEvent = exports.fireDownloadFailedEvent = exports.fireCopiedEvent = void 0;
7
7
  var _analytics = require("../utils/analytics");
8
8
  var _errors = require("../errors");
9
9
  var fireOperationalEvent = exports.fireOperationalEvent = function fireOperationalEvent(createAnalyticsEvent, status, fileAttributes, performanceAttributes, ssrReliability) {
@@ -43,4 +43,15 @@ var fireNonCriticalErrorEvent = exports.fireNonCriticalErrorEvent = function fir
43
43
  var metadataTraceContext = arguments.length > 6 ? arguments[6] : undefined;
44
44
  var errorPayload = (0, _analytics.getErrorEventPayload)(cardStatus, fileAttributes, error, ssrReliability, traceContext, metadataTraceContext);
45
45
  (0, _analytics.fireMediaCardEvent)(errorPayload, createAnalyticsEvent);
46
+ };
47
+ var fireDownloadSucceededEvent = exports.fireDownloadSucceededEvent = function fireDownloadSucceededEvent(createAnalyticsEvent, fileAttributes, traceContext, metadataTraceContext) {
48
+ var payload = (0, _analytics.getDownloadSucceededEventPayload)(fileAttributes, traceContext, metadataTraceContext);
49
+ (0, _analytics.fireMediaCardEvent)(payload, createAnalyticsEvent);
50
+ };
51
+ var fireDownloadFailedEvent = exports.fireDownloadFailedEvent = function fireDownloadFailedEvent(createAnalyticsEvent, fileAttributes) {
52
+ var error = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new _errors.MediaCardError('missing-error-data');
53
+ var traceContext = arguments.length > 3 ? arguments[3] : undefined;
54
+ var metadataTraceContext = arguments.length > 4 ? arguments[4] : undefined;
55
+ var payload = (0, _analytics.getDownloadFailedEventPayload)(fileAttributes, error, traceContext, metadataTraceContext);
56
+ (0, _analytics.fireMediaCardEvent)(payload, createAnalyticsEvent);
46
57
  };
@@ -32,6 +32,8 @@ var _classnames = require("./classnames");
32
32
  var _useBreakpoint = require("./useBreakpoint");
33
33
  var _openMediaViewerButton = _interopRequireDefault(require("./ui/openMediaViewerButton/openMediaViewerButton"));
34
34
  var _useCurrentValueRef = require("../utils/useCurrentValueRef");
35
+ var _svgView = require("./svgView");
36
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
35
37
  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); }
36
38
  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; }
37
39
  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; }
@@ -40,7 +42,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
40
42
  * @jsx jsx
41
43
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
42
44
  var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
43
- var innerRef = _ref.innerRef,
45
+ var identifier = _ref.identifier,
46
+ innerRef = _ref.innerRef,
44
47
  onImageLoad = _ref.onImageLoad,
45
48
  onImageError = _ref.onImageError,
46
49
  dimensions = _ref.dimensions,
@@ -69,11 +72,17 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
69
72
  _ref$openMediaViewerB = _ref.openMediaViewerButtonRef,
70
73
  openMediaViewerButtonRef = _ref$openMediaViewerB === void 0 ? null : _ref$openMediaViewerB,
71
74
  shouldOpenMediaViewer = _ref.shouldOpenMediaViewer,
72
- overriddenCreationDate = _ref.overriddenCreationDate;
75
+ overriddenCreationDate = _ref.overriddenCreationDate,
76
+ onSvgError = _ref.onSvgError,
77
+ onSvgLoad = _ref.onSvgLoad;
73
78
  var _useState = (0, _react2.useState)(false),
74
79
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
75
- didImageRender = _useState2[0],
76
- setDidImageRender = _useState2[1];
80
+ didSvgRender = _useState2[0],
81
+ setDidSvgRender = _useState2[1];
82
+ var _useState3 = (0, _react2.useState)(false),
83
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
84
+ didImageRender = _useState4[0],
85
+ setDidImageRender = _useState4[1];
77
86
  var divRef = (0, _react2.useRef)(null);
78
87
  var prevCardPreviewRef = (0, _react2.useRef)();
79
88
  var breakpoint = (0, _useBreakpoint.useBreakpoint)(dimensions === null || dimensions === void 0 ? void 0 : dimensions.width, divRef);
@@ -118,16 +127,23 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
118
127
  var getRenderConfigByStatus = function getRenderConfigByStatus() {
119
128
  var _ref3 = metadata || {},
120
129
  name = _ref3.name,
121
- mediaType = _ref3.mediaType;
130
+ mediaType = _ref3.mediaType,
131
+ mimeType = _ref3.mimeType;
122
132
  var isZeroSize = metadata && metadata.size === 0;
123
133
  var defaultConfig = {
124
- renderTypeIcon: !didImageRender,
125
- renderImageRenderer: true,
134
+ renderTypeIcon: !didImageRender && !didSvgRender,
135
+ renderImageRenderer: !didSvgRender,
136
+ renderSvgView: mimeType === 'image/svg+xml' && (0, _platformFeatureFlags.fg)('platform_media_group_svg'),
126
137
  renderPlayButton: !!cardPreview && mediaType === 'video',
127
138
  renderBlanket: !disableOverlay,
128
139
  renderTitleBox: !disableOverlay,
129
140
  renderTickBox: !disableOverlay && !!selectable
130
141
  };
142
+ var loadingConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
143
+ renderPlayButton: false,
144
+ renderTypeIcon: false,
145
+ renderSpinner: !didImageRender && !didSvgRender
146
+ });
131
147
  switch (status) {
132
148
  case 'uploading':
133
149
  return _objectSpread(_objectSpread({}, defaultConfig), {}, {
@@ -145,9 +161,13 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
145
161
  return defaultConfig;
146
162
  case 'error':
147
163
  case 'failed-processing':
164
+ if (status === 'failed-processing' && mimeType === 'image/svg+xml' && (0, _platformFeatureFlags.fg)('platform_media_group_svg')) {
165
+ return loadingConfig;
166
+ }
148
167
  var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
149
168
  renderTypeIcon: true,
150
169
  renderImageRenderer: false,
170
+ renderSvgView: false,
151
171
  renderTitleBox: false,
152
172
  renderPlayButton: false
153
173
  });
@@ -176,17 +196,14 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
176
196
  case 'loading-preview':
177
197
  case 'loading':
178
198
  default:
179
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
180
- renderPlayButton: false,
181
- renderTypeIcon: false,
182
- renderSpinner: !didImageRender
183
- });
199
+ return loadingConfig;
184
200
  }
185
201
  };
186
202
  var _getRenderConfigBySta = getRenderConfigByStatus(),
187
203
  renderTypeIcon = _getRenderConfigBySta.renderTypeIcon,
188
204
  iconMessage = _getRenderConfigBySta.iconMessage,
189
205
  renderImageRenderer = _getRenderConfigBySta.renderImageRenderer,
206
+ renderSvgView = _getRenderConfigBySta.renderSvgView,
190
207
  renderSpinner = _getRenderConfigBySta.renderSpinner,
191
208
  renderPlayButton = _getRenderConfigBySta.renderPlayButton,
192
209
  renderBlanket = _getRenderConfigBySta.renderBlanket,
@@ -228,7 +245,12 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
228
245
  });
229
246
  });
230
247
  }, [actions, metadataRef]);
248
+ var onSvgLoadBase = function onSvgLoadBase() {
249
+ setDidSvgRender(true);
250
+ onSvgLoad === null || onSvgLoad === void 0 || onSvgLoad();
251
+ };
231
252
  var contents = (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)(_wrapper.ImageContainer, {
253
+ centerElements: didSvgRender,
232
254
  testId: _classnames.fileCardImageViewSelector,
233
255
  mediaName: name,
234
256
  status: status,
@@ -249,7 +271,13 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
249
271
  }, (0, _react.jsx)(_spinner.default, {
250
272
  testId: "media-card-loading",
251
273
  interactionName: "media-card-loading"
252
- })), renderImageRenderer && (0, _react.jsx)(_imageRenderer.ImageRenderer, {
274
+ })), renderSvgView && identifier && (0, _react.jsx)(_svgView.SvgView, {
275
+ identifier: identifier,
276
+ resizeMode: resizeMode || 'crop',
277
+ onError: onSvgError,
278
+ onLoad: onSvgLoadBase,
279
+ wrapperRef: divRef
280
+ }), renderImageRenderer && (0, _react.jsx)(_imageRenderer.ImageRenderer, {
253
281
  cardPreview: cardPreview,
254
282
  mediaType: (metadata === null || metadata === void 0 ? void 0 : metadata.mediaType) || 'unknown',
255
283
  alt: alt !== null && alt !== void 0 ? alt : name,
@@ -6,11 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.FileCard = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
14
  var _analyticsNext = require("@atlaskit/analytics-next");
13
- var _download = _interopRequireDefault(require("@atlaskit/icon/core/migration/download"));
14
15
  var _mediaClient = require("@atlaskit/media-client");
15
16
  var _mediaClientReact = require("@atlaskit/media-client-react");
16
17
  var _mediaCommon = require("@atlaskit/media-common");
@@ -33,9 +34,10 @@ var _cardAnalytics = require("./cardAnalytics");
33
34
  var _cardView = require("./cardView");
34
35
  var _inlinePlayerLazy = require("./inlinePlayerLazy");
35
36
  var _mediaFilePreview = require("@atlaskit/media-file-preview");
37
+ var _actions = require("./actions");
36
38
  var _performance = require("./performance");
37
39
  var _dateOverrideContext = require("../dateOverrideContext");
38
- var _svgView = require("./svgView");
40
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
39
41
  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); }
40
42
  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; }
41
43
  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; }
@@ -107,9 +109,9 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
107
109
  occurrenceKey: identifier.occurrenceKey
108
110
  }),
109
111
  fileState = _useFileState.fileState;
110
- var prevFileState = (0, _usePrevious.usePrevious)(fileState);
112
+ var prevFileState = (0, _usePrevious.usePrevious)(fileState && (0, _mediaClient.isErrorFileState)(fileState) ? undefined : fileState);
111
113
  var fileStateValue = (0, _react.useMemo)(function () {
112
- if (fileState && (fileState === null || fileState === void 0 ? void 0 : fileState.status) !== 'error') {
114
+ if (fileState && !(0, _mediaClient.isErrorFileState)(fileState)) {
113
115
  return fileState;
114
116
  }
115
117
  return prevFileState;
@@ -150,16 +152,12 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
150
152
  setIsPlayingFile = _useState8[1];
151
153
  var _useState9 = (0, _react.useState)(false),
152
154
  _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
153
- shouldRenderSVG = _useState10[0],
154
- setShouldRenderSVG = _useState10[1];
155
+ shouldAutoplay = _useState10[0],
156
+ setShouldAutoplay = _useState10[1];
155
157
  var _useState11 = (0, _react.useState)(false),
156
158
  _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
157
- shouldAutoplay = _useState12[0],
158
- setShouldAutoplay = _useState12[1];
159
- var _useState13 = (0, _react.useState)(false),
160
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
161
- previewDidRender = _useState14[0],
162
- setPreviewDidRender = _useState14[1];
159
+ previewDidRender = _useState12[0],
160
+ setPreviewDidRender = _useState12[1];
163
161
  var mediaBlobUrlAttrs = (0, _react.useMemo)(function () {
164
162
  var id = identifier.id,
165
163
  collection = identifier.collectionName;
@@ -196,18 +194,18 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
196
194
  onImageErrorBase = _useFilePreview.onImageError,
197
195
  onImageLoadBase = _useFilePreview.onImageLoad,
198
196
  getSsrScriptProps = _useFilePreview.getSsrScriptProps;
199
- var _useState15 = (0, _react.useState)(),
200
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
201
- error = _useState16[0],
202
- setError = _useState16[1];
197
+ var _useState13 = (0, _react.useState)(),
198
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
199
+ error = _useState14[0],
200
+ setError = _useState14[1];
203
201
 
204
202
  // CXP-2723 TODO: TEMPORARY VARIABLES
205
- var finalError = error || (previewError && previewError.primaryReason !== 'failed-processing' ? previewError : undefined);
206
- var finalStatus = finalError ? 'error' : status;
207
- var _useState17 = (0, _react.useState)(null),
208
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
209
- mediaViewerSelectedItem = _useState18[0],
210
- setMediaViewerSelectedItem = _useState18[1];
203
+ var finalError = error || (previewError && previewError.primaryReason !== 'failed-processing' && ((fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.mimeType) !== 'image/svg+xml' || !(0, _platformFeatureFlags.fg)('platform_media_group_svg')) ? previewError : undefined);
204
+ var finalStatus = finalError ? 'error' : status === 'failed-processing' && (fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.mimeType) === 'image/svg+xml' && (0, _platformFeatureFlags.fg)('platform_media_group_svg') ? 'loading-preview' : status;
205
+ var _useState15 = (0, _react.useState)(null),
206
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
207
+ mediaViewerSelectedItem = _useState16[0],
208
+ setMediaViewerSelectedItem = _useState16[1];
211
209
  var uploadProgressRef = (0, _react.useRef)();
212
210
  var metadata = (0, _react.useMemo)(function () {
213
211
  var getProcessingStatusFromFileState = function getProcessingStatusFromFileState(status) {
@@ -220,7 +218,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
220
218
  return 'failed';
221
219
  }
222
220
  };
223
- if (fileStateValue && (fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.status) !== 'error') {
221
+ if (fileStateValue) {
224
222
  return {
225
223
  id: fileStateValue.id,
226
224
  name: fileStateValue.name,
@@ -247,22 +245,40 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
247
245
  }, [fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.status, metadata.id, metadata.mediaType, metadata.mimeType, metadata.size]);
248
246
  var computedActions = (0, _react.useMemo)(function () {
249
247
  if (finalStatus === 'failed-processing' || shouldEnableDownloadButton) {
250
- var downloadAction = {
251
- label: 'Download',
252
- icon: /*#__PURE__*/_react.default.createElement(_download.default, {
253
- color: "currentColor",
254
- spacing: "spacious",
255
- label: "Download"
256
- }),
257
- handler: function handler() {
258
- return mediaClient.file.downloadBinary(identifier.id, metadata.name, identifier.collectionName);
259
- }
260
- };
248
+ var downloadHandler = /*#__PURE__*/function () {
249
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
250
+ var _error;
251
+ return _regenerator.default.wrap(function _callee$(_context) {
252
+ while (1) switch (_context.prev = _context.next) {
253
+ case 0:
254
+ _context.prev = 0;
255
+ _context.next = 3;
256
+ return mediaClient.file.downloadBinary(identifier.id, metadata.name, identifier.collectionName, traceContext);
257
+ case 3:
258
+ (0, _cardAnalytics.fireDownloadSucceededEvent)(createAnalyticsEvent, fileAttributes, traceContext, fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.metadataTraceContext);
259
+ _context.next = 10;
260
+ break;
261
+ case 6:
262
+ _context.prev = 6;
263
+ _context.t0 = _context["catch"](0);
264
+ _error = new _errors.MediaCardError('download', _context.t0);
265
+ (0, _cardAnalytics.fireDownloadFailedEvent)(createAnalyticsEvent, fileAttributes, _error, traceContext, fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.metadataTraceContext);
266
+ case 10:
267
+ case "end":
268
+ return _context.stop();
269
+ }
270
+ }, _callee, null, [[0, 6]]);
271
+ }));
272
+ return function downloadHandler() {
273
+ return _ref2.apply(this, arguments);
274
+ };
275
+ }();
276
+ var downloadAction = (0, _actions.createDownloadAction)(downloadHandler);
261
277
  return [downloadAction].concat((0, _toConsumableArray2.default)(actions !== null && actions !== void 0 ? actions : []));
262
278
  } else {
263
279
  return actions;
264
280
  }
265
- }, [actions, identifier.collectionName, identifier.id, mediaClient.file, metadata.name, shouldEnableDownloadButton, finalStatus]);
281
+ }, [actions, identifier.collectionName, identifier.id, mediaClient.file, metadata.name, shouldEnableDownloadButton, finalStatus, createAnalyticsEvent, fileAttributes, fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.metadataTraceContext, traceContext]);
266
282
 
267
283
  //----------------------------------------------------------------//
268
284
  //---------------------- Analytics ------------------------------//
@@ -322,10 +338,9 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
322
338
  var onSvgError = function onSvgError(error) {
323
339
  setError(error);
324
340
  setStatus('error');
325
- setShouldRenderSVG(false);
326
341
  };
327
342
  var onImageError = function onImageError(newCardPreview) {
328
- if (metadata.mimeType === 'image/svg+xml') {
343
+ if (metadata.mimeType === 'image/svg+xml' && (0, _platformFeatureFlags.fg)('platform_media_group_svg')) {
329
344
  return;
330
345
  }
331
346
  onImageErrorBase(newCardPreview);
@@ -334,7 +349,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
334
349
  setPreviewDidRender(true);
335
350
  };
336
351
  var onImageLoad = function onImageLoad(newCardPreview) {
337
- if (metadata.mimeType === 'image/svg+xml') {
352
+ if (metadata.mimeType === 'image/svg+xml' && (0, _platformFeatureFlags.fg)('platform_media_group_svg')) {
338
353
  return;
339
354
  }
340
355
  onImageLoadBase(newCardPreview);
@@ -423,19 +438,6 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
423
438
  }
424
439
  }, [startUfoExperienceRef, isCardVisible, prevIsCardVisible]);
425
440
 
426
- //----------------------------------------------------------------//
427
- //----------------- set complete status --------------------------//
428
- //----------------------------------------------------------------//
429
-
430
- (0, _react.useEffect)(function () {
431
- if (previewDidRender &&
432
- // We should't complete if status is uploading
433
- ['loading-preview', 'processing'].includes(finalStatus)) {
434
- setStatus('complete');
435
- // TODO MEX-788: add test for "do not remove the card preview when unsubscribing".
436
- }
437
- }, [previewDidRender, finalStatus]);
438
-
439
441
  //----------------------------------------------------------------//
440
442
  //----------------- set isPlayingFile state ----------------------//
441
443
  //----------------------------------------------------------------//
@@ -456,23 +458,6 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
456
458
  }
457
459
  }, [isCardVisible, disableOverlay, fileAttributes.fileMediatype, fileStateValue, identifier, isPlayingFile, finalStatus, useInlinePlayer]);
458
460
 
459
- //----------------------------------------------------------------//
460
- // Switch to SVG
461
- //----------------------------------------------------------------//
462
-
463
- (0, _react.useEffect)(function () {
464
- if (finalStatus !== 'error' &&
465
- /**
466
- * We need to check that the card is visible before switching to SVG
467
- * in order to avoid race conditions of the ViewportDector being unmounted before
468
- * it is able to set isCardVisible to true.
469
- */
470
- isCardVisible && metadata.mimeType === 'image/svg+xml' && disableOverlay // SVG won't be supported when overlay is on
471
- ) {
472
- setShouldRenderSVG(true);
473
- }
474
- }, [isCardVisible, disableOverlay, metadata.mimeType, finalStatus]);
475
-
476
461
  //----------------------------------------------------------------//
477
462
  //----------------- fireScreenEvent ------------------------------//
478
463
  //----------------------------------------------------------------//
@@ -497,15 +482,22 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
497
482
  }, [fireAbortedEventRef]);
498
483
 
499
484
  //----------------------------------------------------------------//
500
- //------------------ Subscribe to file state ---------------------//
485
+ // Update Status
501
486
  //----------------------------------------------------------------//
502
487
 
503
488
  var updateFileStateRef = (0, _useCurrentValueRef.useCurrentValueRef)(function () {
504
- if (fileState) {
505
- // do not update the card status if the status is final
506
- if (['complete', 'error', 'failed-processing'].includes(finalStatus)) {
507
- return;
508
- }
489
+ // This effect has race condition with Complete effect. We share the same check to ovid status overrides
490
+
491
+ // do not update the card status if the status is final
492
+ if (['complete', 'error', 'failed-processing'].includes(finalStatus)) {
493
+ return;
494
+ }
495
+ if (previewDidRender &&
496
+ // We should't complete if status is uploading
497
+ ['loading-preview', 'processing'].includes(finalStatus)) {
498
+ setStatus('complete');
499
+ // TODO MEX-788: add test for "do not remove the card preview when unsubscribing".
500
+ } else if (fileState) {
509
501
  if (fileState.status !== 'error') {
510
502
  var newStatus;
511
503
  switch (fileState.status) {
@@ -538,7 +530,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
538
530
  });
539
531
  (0, _react.useEffect)(function () {
540
532
  updateFileStateRef.current();
541
- }, [fileState, preview, previewStatus, updateFileStateRef]);
533
+ }, [fileState, preview, previewStatus, updateFileStateRef, previewDidRender, finalStatus]);
542
534
 
543
535
  //----------------------------------------------------------------//
544
536
  // Shared Card View & SVG View resources
@@ -572,6 +564,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
572
564
  // Force Media Image to always display img for SSR
573
565
  var forceSyncDisplay = !!ssr;
574
566
  var card = /*#__PURE__*/_react.default.createElement(_cardView.CardView, {
567
+ identifier: identifier,
575
568
  status: cardStatusOverride || finalStatus,
576
569
  error: finalError,
577
570
  mediaItemType: mediaItemType,
@@ -604,6 +597,8 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
604
597
  titleBoxIcon: titleBoxIcon,
605
598
  onImageError: withCallbacks ? onImageError : undefined,
606
599
  onImageLoad: withCallbacks ? onImageLoad : undefined,
600
+ onSvgError: onSvgError,
601
+ onSvgLoad: onSvgLoad,
607
602
  nativeLazyLoad: nativeLazyLoad,
608
603
  forceSyncDisplay: forceSyncDisplay,
609
604
  mediaCardCursor: mediaCardCursor,
@@ -622,7 +617,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
622
617
  //-------------------------- RENDER ------------------------------//
623
618
  //----------------------------------------------------------------//
624
619
 
625
- var inlinePlayerFallback = renderCard(false, 'loading', false);
620
+ var inlinePlayerFallback = isPlayingFile ? renderCard(false, 'loading', false) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
626
621
  var collectionName = identifier.collectionName || '';
627
622
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isPlayingFile ? /*#__PURE__*/_react.default.createElement(_react.Suspense, {
628
623
  fallback: inlinePlayerFallback
@@ -643,25 +638,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
643
638
  testId: testId,
644
639
  cardPreview: preview,
645
640
  videoControlsWrapperRef: videoControlsWrapperRef
646
- })) : shouldRenderSVG ? /*#__PURE__*/_react.default.createElement(_svgView.SvgView, {
647
- testId: testId,
648
- identifier: identifier,
649
- status: finalStatus,
650
- fileName: metadata.name,
651
- cardPreview: preview,
652
- alt: alt,
653
- resizeMode: resizeMode,
654
- cardDimensions: cardDimensions,
655
- selected: selected,
656
- onClick: onCardViewClick,
657
- onMouseEnter: onImageMouseEnter,
658
- progress: uploadProgressRef.current,
659
- onError: onSvgError,
660
- onLoad: onSvgLoad,
661
- mediaCardCursor: mediaCardCursor,
662
- shouldOpenMediaViewer: shouldOpenMediaViewer,
663
- openMediaViewerButtonRef: mediaViewerButtonRef
664
- }) : renderCard(), mediaViewerSelectedItem ? /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
641
+ })) : renderCard(), mediaViewerSelectedItem ? /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_mediaViewer.MediaViewer, {
665
642
  collectionName: collectionName,
666
643
  items: mediaViewerItems || [],
667
644
  mediaClientConfig: mediaClient.config,
@@ -90,7 +90,7 @@ var WrappedMediaCardAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Compo
90
90
  }(_react.default.Component);
91
91
  (0, _defineProperty2.default)(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
92
92
  var packageName = "@atlaskit/media-card";
93
- var packageVersion = "78.12.1";
93
+ var packageVersion = "78.14.0";
94
94
 
95
95
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
96
96
  var MediaCardAnalyticsErrorBoundary = (0, _mediaCommon.withMediaAnalyticsContext)({
@@ -1,9 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.getErrorReason = void 0;
7
+ exports.getErrorReason = exports.createUnexpectedErrorCallback = exports.MediaSVGError = void 0;
8
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
15
+ function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
16
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
7
17
  var getErrorReason = exports.getErrorReason = function getErrorReason(svgReason) {
8
18
  switch (svgReason) {
9
19
  case 'img-error':
@@ -13,4 +23,30 @@ var getErrorReason = exports.getErrorReason = function getErrorReason(svgReason)
13
23
  default:
14
24
  return 'svg-unknown-error';
15
25
  }
26
+ };
27
+ var MediaSVGError = exports.MediaSVGError = /*#__PURE__*/function (_Error) {
28
+ (0, _inherits2.default)(MediaSVGError, _Error);
29
+ var _super = _createSuper(MediaSVGError);
30
+ function MediaSVGError(primaryReason, secondaryError) {
31
+ var _this;
32
+ (0, _classCallCheck2.default)(this, MediaSVGError);
33
+ _this = _super.call(this, primaryReason);
34
+
35
+ // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
36
+ _this.primaryReason = primaryReason;
37
+ _this.secondaryError = secondaryError;
38
+ Object.setPrototypeOf((0, _assertThisInitialized2.default)(_this), (this instanceof MediaSVGError ? this.constructor : void 0).prototype);
39
+
40
+ // https://v8.dev/docs/stack-trace-api
41
+ if ('captureStackTrace' in Error) {
42
+ Error.captureStackTrace((0, _assertThisInitialized2.default)(_this), this instanceof MediaSVGError ? this.constructor : void 0);
43
+ }
44
+ return _this;
45
+ }
46
+ return (0, _createClass2.default)(MediaSVGError);
47
+ }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
48
+ var createUnexpectedErrorCallback = exports.createUnexpectedErrorCallback = function createUnexpectedErrorCallback(onError) {
49
+ return function (e) {
50
+ onError === null || onError === void 0 || onError(new MediaSVGError('unexpected', e));
51
+ };
16
52
  };