@atlaskit/media-card 71.0.0 → 72.0.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 (110) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/errors.js +56 -5
  3. package/dist/cjs/files/cardImageView/index.js +53 -104
  4. package/dist/cjs/files/index.js +0 -6
  5. package/dist/cjs/root/card/cardAnalytics.js +3 -15
  6. package/dist/cjs/root/card/cardSSRView.js +4 -2
  7. package/dist/cjs/root/card/cardState.js +50 -0
  8. package/dist/cjs/root/card/getCardPreview/cache.js +5 -0
  9. package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +50 -0
  10. package/dist/cjs/root/card/getCardPreview/helpers.js +13 -21
  11. package/dist/cjs/root/card/getCardPreview/index.js +91 -94
  12. package/dist/cjs/root/card/getCardStatus.js +7 -1
  13. package/dist/cjs/root/card/index.js +271 -266
  14. package/dist/cjs/root/cardView.js +96 -60
  15. package/dist/cjs/root/inline/loader.js +2 -1
  16. package/dist/cjs/root/inline/mediaInlineCard.js +4 -3
  17. package/dist/cjs/root/ui/iconMessage/index.js +12 -5
  18. package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +30 -124
  19. package/dist/cjs/root/ui/titleBox/failedTitleBox.js +7 -3
  20. package/dist/cjs/utils/analytics.js +6 -44
  21. package/dist/cjs/utils/dimensionComparer.js +1 -1
  22. package/dist/cjs/utils/metadata.js +11 -3
  23. package/dist/cjs/utils/objectURLCache.js +6 -0
  24. package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
  25. package/dist/cjs/version.json +1 -1
  26. package/dist/es2019/errors.js +34 -2
  27. package/dist/es2019/files/cardImageView/index.js +8 -61
  28. package/dist/es2019/files/index.js +1 -1
  29. package/dist/es2019/root/card/cardAnalytics.js +3 -14
  30. package/dist/es2019/root/card/cardSSRView.js +3 -2
  31. package/dist/es2019/root/card/cardState.js +26 -0
  32. package/dist/es2019/root/card/getCardPreview/cache.js +5 -0
  33. package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +35 -0
  34. package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
  35. package/dist/es2019/root/card/getCardPreview/index.js +71 -74
  36. package/dist/es2019/root/card/getCardStatus.js +1 -0
  37. package/dist/es2019/root/card/index.js +193 -171
  38. package/dist/es2019/root/cardView.js +100 -61
  39. package/dist/es2019/root/inline/loader.js +2 -1
  40. package/dist/es2019/root/inline/mediaInlineCard.js +4 -3
  41. package/dist/es2019/root/ui/iconMessage/index.js +5 -3
  42. package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +21 -88
  43. package/dist/es2019/root/ui/titleBox/failedTitleBox.js +5 -3
  44. package/dist/es2019/utils/analytics.js +5 -34
  45. package/dist/es2019/utils/dimensionComparer.js +1 -1
  46. package/dist/es2019/utils/metadata.js +12 -4
  47. package/dist/es2019/utils/objectURLCache.js +5 -0
  48. package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
  49. package/dist/es2019/version.json +1 -1
  50. package/dist/esm/errors.js +42 -1
  51. package/dist/esm/files/cardImageView/index.js +51 -102
  52. package/dist/esm/files/index.js +1 -1
  53. package/dist/esm/root/card/cardAnalytics.js +3 -15
  54. package/dist/esm/root/card/cardSSRView.js +3 -2
  55. package/dist/esm/root/card/cardState.js +32 -0
  56. package/dist/esm/root/card/getCardPreview/cache.js +6 -0
  57. package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +35 -0
  58. package/dist/esm/root/card/getCardPreview/helpers.js +13 -21
  59. package/dist/esm/root/card/getCardPreview/index.js +79 -88
  60. package/dist/esm/root/card/getCardStatus.js +3 -0
  61. package/dist/esm/root/card/index.js +278 -268
  62. package/dist/esm/root/cardView.js +98 -61
  63. package/dist/esm/root/inline/loader.js +2 -1
  64. package/dist/esm/root/inline/mediaInlineCard.js +4 -3
  65. package/dist/esm/root/ui/iconMessage/index.js +7 -3
  66. package/dist/esm/root/ui/imageRenderer/imageRenderer.js +23 -118
  67. package/dist/esm/root/ui/titleBox/failedTitleBox.js +6 -3
  68. package/dist/esm/utils/analytics.js +5 -36
  69. package/dist/esm/utils/dimensionComparer.js +1 -1
  70. package/dist/esm/utils/metadata.js +12 -4
  71. package/dist/esm/utils/objectURLCache.js +6 -0
  72. package/dist/esm/utils/shouldDisplayImageThumbnail.js +1 -1
  73. package/dist/esm/version.json +1 -1
  74. package/dist/types/errors.d.ts +9 -1
  75. package/dist/types/files/cardImageView/index.d.ts +4 -13
  76. package/dist/types/files/cardImageView/styled.d.ts +1 -1
  77. package/dist/types/files/index.d.ts +1 -1
  78. package/dist/types/index.d.ts +4 -3
  79. package/dist/types/root/card/cardAnalytics.d.ts +1 -6
  80. package/dist/types/root/card/cardSSRView.d.ts +1 -1
  81. package/dist/types/root/card/cardState.d.ts +5 -0
  82. package/dist/types/root/card/getCardPreview/cache.d.ts +3 -1
  83. package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
  84. package/dist/types/root/card/getCardPreview/helpers.d.ts +3 -4
  85. package/dist/types/root/card/getCardPreview/index.d.ts +17 -13
  86. package/dist/types/root/card/getCardStatus.d.ts +1 -0
  87. package/dist/types/root/card/index.d.ts +11 -10
  88. package/dist/types/root/cardView.d.ts +11 -8
  89. package/dist/types/root/inlinePlayer.d.ts +1 -1
  90. package/dist/types/root/ui/iconMessage/index.d.ts +2 -1
  91. package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +2 -13
  92. package/dist/types/root/ui/styledSSR.d.ts +1 -1
  93. package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +2 -0
  94. package/dist/types/styles/mixins.d.ts +1 -1
  95. package/dist/types/types.d.ts +7 -1
  96. package/dist/types/utils/analytics.d.ts +6 -15
  97. package/dist/types/utils/cardDimensions.d.ts +4 -4
  98. package/dist/types/utils/dimensionComparer.d.ts +1 -1
  99. package/dist/types/utils/metadata.d.ts +2 -2
  100. package/dist/types/utils/objectURLCache.d.ts +2 -1
  101. package/example-helpers/index.tsx +21 -0
  102. package/package.json +6 -5
  103. package/dist/cjs/root/card/getCardPreview/types.js +0 -5
  104. package/dist/cjs/utils/fileAttributesContext.js +0 -40
  105. package/dist/es2019/root/card/getCardPreview/types.js +0 -1
  106. package/dist/es2019/utils/fileAttributesContext.js +0 -19
  107. package/dist/esm/root/card/getCardPreview/types.js +0 -1
  108. package/dist/esm/utils/fileAttributesContext.js +0 -18
  109. package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
  110. package/dist/types/utils/fileAttributesContext.d.ts +0 -10
@@ -79,12 +79,12 @@ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
79
79
 
80
80
  var _iconMessage = require("./ui/iconMessage");
81
81
 
82
- var _loadingRateLimited = require("./ui/loadingRateLimited/loadingRateLimited");
83
-
84
82
  var _mediaClient = require("@atlaskit/media-client");
85
83
 
86
84
  var _cardConstants = require("./card/cardConstants");
87
85
 
86
+ var _errors = require("../errors");
87
+
88
88
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
89
89
 
90
90
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -113,13 +113,33 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
113
113
 
114
114
  _this = _super.call.apply(_super, [this].concat(args));
115
115
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
116
- isImageFailedToLoad: false
116
+ didImageRender: false
117
117
  });
118
118
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "divRef", /*#__PURE__*/_react.default.createRef());
119
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageLoadError", function () {
119
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageLoad", function () {
120
+ var onImageLoad = _this.props.onImageLoad; // We render the icon & icon message always, even if there is dataURI available.
121
+ // If the image fails to load/render, the icon will remain, i.e. the user won't see a change until
122
+ // the root card decides to chage status to error.
123
+ // If the image renders successfully, we switch this variable to hide the icon & icon message
124
+ // behind the thumbnail in case the image has transparency.
125
+ // It is less likely that root component replaces a suceeded dataURI for a failed one
126
+ // than the opposite case. Therefore we prefer to hide the icon instead show when the image fails,
127
+ // for a smoother transition
128
+
129
+ _this.setState({
130
+ didImageRender: true
131
+ });
132
+
133
+ onImageLoad && onImageLoad();
134
+ });
135
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageError", function () {
136
+ var onImageError = _this.props.onImageError;
137
+
120
138
  _this.setState({
121
- isImageFailedToLoad: true
139
+ didImageRender: false
122
140
  });
141
+
142
+ onImageError && onImageError();
123
143
  });
124
144
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "saveElementWidth", function () {
125
145
  var dimensions = _this.props.dimensions;
@@ -156,7 +176,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
156
176
  name = _ref.name;
157
177
 
158
178
  var shouldUsePointerCursor = status !== 'error' && status !== 'failed-processing';
159
- var shouldDisplayBackground = !dataURI || !disableOverlay;
179
+ var shouldDisplayBackground = !dataURI || !disableOverlay || status === 'error' || status === 'failed-processing';
160
180
  var isPlayButtonClickable = !!(_this.shouldRenderPlayButton() && disableOverlay);
161
181
  var isTickBoxSelectable = !disableOverlay && !!selectable && !selected; // Make tooltip optional for media singles - images, videos.
162
182
  // Intention is to show full file name when it's truncate in titlebox,
@@ -200,8 +220,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
200
220
  previewOrientation = _this$props2.previewOrientation,
201
221
  alt = _this$props2.alt,
202
222
  onDisplayImage = _this$props2.onDisplayImage,
203
- actions = _this$props2.actions,
204
- timeElapsedTillCommenced = _this$props2.timeElapsedTillCommenced;
223
+ actions = _this$props2.actions;
205
224
 
206
225
  var _ref2 = metadata || {},
207
226
  name = _ref2.name,
@@ -231,7 +250,8 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
231
250
  disableOverlay: disableOverlay,
232
251
  previewOrientation: previewOrientation,
233
252
  alt: alt,
234
- timeElapsedTillCommenced: timeElapsedTillCommenced
253
+ onImageLoad: _this.onImageLoad,
254
+ onImageError: _this.onImageError
235
255
  });
236
256
  });
237
257
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getRenderConfigByStatus", function () {
@@ -248,15 +268,14 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
248
268
  name = _ref3.name,
249
269
  mediaType = _ref3.mediaType;
250
270
 
251
- var isImageFailedToLoad = _this.state.isImageFailedToLoad;
271
+ var didImageRender = _this.state.didImageRender;
252
272
  var isZeroSize = !!(metadata && metadata.size === 0);
253
273
  var defaultConfig = {
254
- renderTypeIcon: isImageFailedToLoad || !dataURI,
255
- renderImageRenderer: !!dataURI && !isImageFailedToLoad,
274
+ renderTypeIcon: !didImageRender,
275
+ renderImageRenderer: !!dataURI,
256
276
  renderPlayButton: !!dataURI && mediaType === 'video',
257
277
  renderBlanket: !disableOverlay,
258
- renderTitleBox: !!name && !disableOverlay,
259
- renderFailedTitleBox: !!isImageFailedToLoad && !metadata,
278
+ renderTitleBox: !disableOverlay && !!name,
260
279
  renderTickBox: !disableOverlay && !!selectable
261
280
  };
262
281
 
@@ -271,55 +290,71 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
271
290
  case 'processing':
272
291
  case 'loading-preview':
273
292
  return _objectSpread(_objectSpread({}, defaultConfig), {}, {
274
- iconMessage: (isImageFailedToLoad || !dataURI) && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.CreatingPreview, {
293
+ iconMessage: !didImageRender && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.CreatingPreview, {
275
294
  disableAnimation: disableAnimation
276
295
  }) : undefined
277
296
  });
278
297
 
279
298
  case 'complete':
280
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
281
- iconMessage: !!isImageFailedToLoad && !!metadata ? /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewUnavailable, null) : undefined
282
- });
299
+ return defaultConfig;
283
300
 
284
301
  case 'error':
285
- if (error && (0, _mediaClient.isPollingError)(error)) {
286
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
287
- renderTypeIcon: true,
288
- renderImageRenderer: false,
289
- renderTitleBox: !!name,
290
- renderFailedTitleBox: false,
291
- iconMessage: !!metadata && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewCurrentlyUnavailable, null) : undefined
302
+ case 'failed-processing':
303
+ var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
304
+ renderTypeIcon: true,
305
+ renderImageRenderer: false,
306
+ renderTitleBox: false,
307
+ renderPlayButton: false
308
+ });
309
+
310
+ var iconMessage;
311
+
312
+ if (!!metadata) {
313
+ if (error) {
314
+ var secondaryError = error.secondaryError;
315
+
316
+ if ((0, _mediaClient.isRateLimitedError)(secondaryError) || secondaryError && (0, _mediaClient.isPollingError)(secondaryError)) {
317
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewCurrentlyUnavailable, null);
318
+ }
319
+ } else if (!isZeroSize) {
320
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewUnavailable, null);
321
+ }
322
+ } else if (!!disableOverlay) {
323
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.FailedToLoad, null);
324
+ }
325
+
326
+ if (error && (0, _errors.isUploadError)(error)) {
327
+ if (!disableOverlay) {
328
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
329
+ renderFailedTitleBox: true,
330
+ customTitleMessage: _mediaUi.messages.failed_to_upload
331
+ });
332
+ }
333
+
334
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
335
+ renderTitleBox: !metadata && !!name,
336
+ iconMessage: /*#__PURE__*/_react.default.createElement(_iconMessage.FailedToUpload, null)
292
337
  });
293
- } else if ((0, _mediaClient.isRateLimitedError)(error) && !disableOverlay) {
294
- return {
295
- renderTypeIcon: !!metadata,
296
- renderTitleBox: !!metadata,
297
- iconMessage: !!metadata ? /*#__PURE__*/_react.default.createElement(_iconMessage.RateLimited, null) : undefined,
298
- renderLoadingRateLimited: !metadata
299
- };
300
- } else {
301
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
302
- renderTypeIcon: true,
303
- renderImageRenderer: false,
304
- renderTitleBox: false,
305
- renderFailedTitleBox: true
338
+ }
339
+
340
+ if (!disableOverlay) {
341
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
342
+ renderTitleBox: !!name,
343
+ renderFailedTitleBox: !metadata,
344
+ iconMessage: iconMessage
306
345
  });
307
346
  }
308
347
 
309
- case 'failed-processing':
310
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
311
- renderTypeIcon: true,
312
- renderImageRenderer: false,
313
- renderTitleBox: !!name && !disableOverlay,
314
- renderFailedTitleBox: !metadata,
315
- iconMessage: !!metadata && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewUnavailable, null) : undefined
348
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
349
+ iconMessage: iconMessage
316
350
  });
317
351
 
318
352
  case 'loading':
319
353
  default:
320
354
  return _objectSpread(_objectSpread({}, defaultConfig), {}, {
355
+ renderPlayButton: false,
321
356
  renderTypeIcon: false,
322
- renderSpinner: true
357
+ renderSpinner: !didImageRender
323
358
  });
324
359
  }
325
360
  });
@@ -336,7 +371,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
336
371
  renderFailedTitleBox = _this$getRenderConfig.renderFailedTitleBox,
337
372
  renderTickBox = _this$getRenderConfig.renderTickBox,
338
373
  isFixedBlanket = _this$getRenderConfig.isFixedBlanket,
339
- renderLoadingRateLimited = _this$getRenderConfig.renderLoadingRateLimited;
374
+ customTitleMessage = _this$getRenderConfig.customTitleMessage;
340
375
 
341
376
  var _this$props4 = _this.props,
342
377
  progress = _this$props4.progress,
@@ -355,7 +390,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
355
390
  "data-test-status": status,
356
391
  "data-test-progress": progress,
357
392
  "data-test-selected": selected ? true : undefined
358
- }, renderTypeIcon && _this.renderMediaTypeIcon(hasTitleBox, iconMessage), renderSpinner && _this.renderSpinner(hasTitleBox), renderImageRenderer && _this.renderImageRenderer(), renderPlayButton && _this.renderPlayButton(hasTitleBox), renderBlanket && _this.renderBlanket(!!isFixedBlanket), renderTitleBox && _this.renderTitleBox(), renderFailedTitleBox && _this.renderFailedTitleBox(), renderProgressBar && _this.renderProgressBar(!hasTitleBox), renderLoadingRateLimited && /*#__PURE__*/_react.default.createElement(_loadingRateLimited.LoadingRateLimited, null), renderTickBox && _this.renderTickBox()), _this.renderActionsBar());
393
+ }, renderTypeIcon && _this.renderMediaTypeIcon(hasTitleBox, iconMessage), renderSpinner && _this.renderSpinner(hasTitleBox), renderImageRenderer && _this.renderImageRenderer(), renderPlayButton && _this.renderPlayButton(hasTitleBox), renderBlanket && _this.renderBlanket(!!isFixedBlanket), renderTitleBox && _this.renderTitleBox(), renderFailedTitleBox && _this.renderFailedTitleBox(customTitleMessage), renderProgressBar && _this.renderProgressBar(!hasTitleBox), renderTickBox && _this.renderTickBox()), _this.renderActionsBar());
359
394
  });
360
395
  return _this;
361
396
  }
@@ -371,13 +406,14 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
371
406
  key: "componentDidUpdate",
372
407
  value: function componentDidUpdate(_ref5) {
373
408
  var prevDataURI = _ref5.dataURI;
374
- var dataURI = this.props.dataURI;
409
+ var dataURI = this.props.dataURI; // We should only switch didImageRender to false
410
+ // when dataURI goes undefined, not when it is updated.
411
+ // as this method could be triggered after onImageLoad callback,
412
+ // falling on a race condition
375
413
 
376
- if (prevDataURI !== dataURI) {
377
- this.setState({
378
- isImageFailedToLoad: false
379
- });
380
- }
414
+ prevDataURI && !dataURI && this.setState({
415
+ didImageRender: false
416
+ });
381
417
  }
382
418
  }, {
383
419
  key: "width",
@@ -498,9 +534,10 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
498
534
  }
499
535
  }, {
500
536
  key: "renderFailedTitleBox",
501
- value: function renderFailedTitleBox() {
537
+ value: function renderFailedTitleBox(customMessage) {
502
538
  return /*#__PURE__*/_react.default.createElement(_failedTitleBox.FailedTitleBox, {
503
- breakpoint: this.breakpoint
539
+ breakpoint: this.breakpoint,
540
+ customMessage: customMessage
504
541
  });
505
542
  }
506
543
  }, {
@@ -526,8 +563,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
526
563
  alt = _this$props8.alt,
527
564
  resizeMode = _this$props8.resizeMode,
528
565
  onDisplayImage = _this$props8.onDisplayImage,
529
- mediaItemType = _this$props8.mediaItemType,
530
- timeElapsedTillCommenced = _this$props8.timeElapsedTillCommenced;
566
+ mediaItemType = _this$props8.mediaItemType;
531
567
  return !!dataURI && /*#__PURE__*/_react.default.createElement(_imageRenderer.ImageRenderer, {
532
568
  dataURI: dataURI,
533
569
  mediaType: mediaType,
@@ -536,8 +572,8 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
536
572
  alt: alt,
537
573
  resizeMode: resizeMode,
538
574
  onDisplayImage: onDisplayImage,
539
- onImageError: this.onImageLoadError,
540
- timeElapsedTillCommenced: timeElapsedTillCommenced
575
+ onImageLoad: this.onImageLoad,
576
+ onImageError: this.onImageError
541
577
  });
542
578
  }
543
579
  }, {
@@ -57,7 +57,8 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
57
57
 
58
58
  _this = _super.call.apply(_super, [this].concat(args));
59
59
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
60
- MediaInlineCard: MediaInlineCardLoader.MediaInlineCard
60
+ MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
61
+ ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
61
62
  });
62
63
  return _this;
63
64
  }
@@ -152,15 +152,16 @@ var MediaInlineCardInternal = function MediaInlineCardInternal(_ref) {
152
152
  formattedDate = (0, _formatDate.formatDate)(fileState.createdAt, locale);
153
153
  }
154
154
 
155
- return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
155
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
156
156
  position: "bottom",
157
- content: formattedDate
157
+ content: formattedDate,
158
+ tag: "span"
158
159
  }, /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardLoadedView, {
159
160
  icon: linkIcon,
160
161
  title: name,
161
162
  onClick: onMediaInlineCardClick,
162
163
  isSelected: isSelected
163
- }), mediaViewer);
164
+ })), mediaViewer);
164
165
  };
165
166
 
166
167
  exports.MediaInlineCardInternal = MediaInlineCardInternal;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.PreviewCurrentlyUnavailable = exports.RateLimited = exports.PreviewUnavailable = exports.CreatingPreview = exports.IconMessage = void 0;
8
+ exports.PreviewCurrentlyUnavailable = exports.FailedToUpload = exports.FailedToLoad = exports.PreviewUnavailable = exports.CreatingPreview = exports.IconMessage = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -49,14 +49,21 @@ var PreviewUnavailable = function PreviewUnavailable(props) {
49
49
 
50
50
  exports.PreviewUnavailable = PreviewUnavailable;
51
51
 
52
- var RateLimited = function RateLimited(props) {
52
+ var FailedToLoad = function FailedToLoad(props) {
53
53
  return /*#__PURE__*/_react.default.createElement(IconMessage, (0, _extends2.default)({}, props, {
54
- messageDescriptor: _mediaUi.messages.preview_rateLimited,
55
- reducedFont: true
54
+ messageDescriptor: _mediaUi.messages.failed_to_load
55
+ }));
56
+ };
57
+
58
+ exports.FailedToLoad = FailedToLoad;
59
+
60
+ var FailedToUpload = function FailedToUpload(props) {
61
+ return /*#__PURE__*/_react.default.createElement(IconMessage, (0, _extends2.default)({}, props, {
62
+ messageDescriptor: _mediaUi.messages.failed_to_upload
56
63
  }));
57
64
  };
58
65
 
59
- exports.RateLimited = RateLimited;
66
+ exports.FailedToUpload = FailedToUpload;
60
67
 
61
68
  var PreviewCurrentlyUnavailable = function PreviewCurrentlyUnavailable(props) {
62
69
  return /*#__PURE__*/_react.default.createElement(IconMessage, (0, _extends2.default)({}, props, {
@@ -2,141 +2,47 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
- exports.ImageRenderer = exports.ImageRendererBase = void 0;
10
+ exports.ImageRenderer = void 0;
9
11
 
10
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
13
 
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _react = _interopRequireDefault(require("react"));
14
+ var _react = _interopRequireWildcard(require("react"));
27
15
 
28
16
  var _mediaUi = require("@atlaskit/media-ui");
29
17
 
30
- var _analyticsNext = require("@atlaskit/analytics-next");
31
-
32
- var _analytics = require("../../../utils/analytics");
33
-
34
- var _fileAttributesContext = require("../../../utils/fileAttributesContext");
35
-
36
18
  var _resizeModeToMediaImageProps = require("../../../utils/resizeModeToMediaImageProps");
37
19
 
38
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
39
-
40
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
-
42
- var ImageRendererBase = /*#__PURE__*/function (_React$Component) {
43
- (0, _inherits2.default)(ImageRendererBase, _React$Component);
44
-
45
- var _super = _createSuper(ImageRendererBase);
46
-
47
- function ImageRendererBase() {
48
- var _this;
49
-
50
- (0, _classCallCheck2.default)(this, ImageRendererBase);
51
-
52
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
53
- args[_key] = arguments[_key];
54
- }
55
-
56
- _this = _super.call.apply(_super, [this].concat(args));
57
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageLoad", function () {
58
- var _this$props = _this.props,
59
- createAnalyticsEvent = _this$props.createAnalyticsEvent,
60
- fileAttributes = _this$props.fileAttributes,
61
- timeElapsedTillCommenced = _this$props.timeElapsedTillCommenced;
62
-
63
- if (fileAttributes && _this.shouldFireEvent(_analytics.RenderEventAction.SUCCEEDED)) {
64
- var timeElapsedTillSucceeded = performance.now();
65
- var durationSinceCommenced = timeElapsedTillCommenced && timeElapsedTillSucceeded - timeElapsedTillCommenced;
66
- var performanceAttributes = {
67
- overall: {
68
- durationSincePageStart: timeElapsedTillSucceeded,
69
- durationSinceCommenced: durationSinceCommenced
70
- }
71
- };
72
- (0, _analytics.fireMediaCardEvent)((0, _analytics.getRenderSucceededEventPayload)(fileAttributes, performanceAttributes), createAnalyticsEvent);
73
- }
74
- });
75
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageError", function () {
76
- var _this$props2 = _this.props,
77
- onImageError = _this$props2.onImageError,
78
- fileAttributes = _this$props2.fileAttributes;
79
- onImageError && onImageError();
80
-
81
- if (fileAttributes && _this.shouldFireEvent(_analytics.RenderEventAction.FAILED)) {
82
- var _this$props3 = _this.props,
83
- createAnalyticsEvent = _this$props3.createAnalyticsEvent,
84
- mediaItemType = _this$props3.mediaItemType,
85
- timeElapsedTillCommenced = _this$props3.timeElapsedTillCommenced;
86
- var timeElapsedTillFailed = performance.now();
87
- var durationSinceCommenced = timeElapsedTillCommenced && timeElapsedTillFailed - timeElapsedTillCommenced;
88
- var performanceAttributes = {
89
- overall: {
90
- durationSincePageStart: timeElapsedTillFailed,
91
- durationSinceCommenced: durationSinceCommenced
92
- }
93
- };
94
-
95
- if (mediaItemType === 'file') {
96
- (0, _analytics.fireMediaCardEvent)((0, _analytics.getRenderFailedFileUriPayload)(fileAttributes, performanceAttributes), createAnalyticsEvent);
97
- } else if (mediaItemType === 'external-image') {
98
- (0, _analytics.fireMediaCardEvent)((0, _analytics.getRenderFailedExternalUriPayload)(fileAttributes, performanceAttributes), createAnalyticsEvent);
99
- }
100
- }
101
- });
102
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "shouldFireEvent", function (action) {
103
- return !_this.lastAnalyticsAction || _this.lastAnalyticsAction !== action;
104
- });
105
- return _this;
106
- }
107
-
108
- (0, _createClass2.default)(ImageRendererBase, [{
109
- key: "componentDidMount",
110
- value: function componentDidMount() {
111
- // TODO: trigger accordingly with the succeeded event. This could be a breaking change
112
- var _this$props4 = this.props,
113
- onDisplayImage = _this$props4.onDisplayImage,
114
- mediaType = _this$props4.mediaType;
115
-
116
- if (mediaType === 'image' && onDisplayImage) {
117
- onDisplayImage();
118
- }
119
- }
120
- }, {
121
- key: "render",
122
- value: function render() {
123
- var _this$props5 = this.props,
124
- dataURI = _this$props5.dataURI,
125
- previewOrientation = _this$props5.previewOrientation,
126
- alt = _this$props5.alt,
127
- resizeMode = _this$props5.resizeMode;
128
- return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaImage, (0, _extends2.default)({
129
- dataURI: dataURI,
130
- alt: alt,
131
- previewOrientation: previewOrientation,
132
- onImageLoad: this.onImageLoad,
133
- onImageError: this.onImageError
134
- }, (0, _resizeModeToMediaImageProps.resizeModeToMediaImageProps)(resizeMode)));
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ var ImageRenderer = function ImageRenderer(_ref) {
25
+ var dataURI = _ref.dataURI,
26
+ previewOrientation = _ref.previewOrientation,
27
+ alt = _ref.alt,
28
+ resizeMode = _ref.resizeMode,
29
+ onImageLoad = _ref.onImageLoad,
30
+ onImageError = _ref.onImageError,
31
+ onDisplayImage = _ref.onDisplayImage,
32
+ mediaType = _ref.mediaType;
33
+ (0, _react.useEffect)(function () {
34
+ // TODO: trigger accordingly with the succeeded event. This could be a breaking change
35
+ if (mediaType === 'image' && onDisplayImage) {
36
+ onDisplayImage();
135
37
  }
136
- }]);
137
- return ImageRendererBase;
138
- }(_react.default.Component);
38
+ }, [mediaType, onDisplayImage]);
39
+ return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaImage, (0, _extends2.default)({
40
+ dataURI: dataURI,
41
+ alt: alt,
42
+ previewOrientation: previewOrientation,
43
+ onImageLoad: onImageLoad,
44
+ onImageError: onImageError
45
+ }, (0, _resizeModeToMediaImageProps.resizeModeToMediaImageProps)(resizeMode)));
46
+ };
139
47
 
140
- exports.ImageRendererBase = ImageRendererBase;
141
- var ImageRenderer = (0, _analyticsNext.withAnalyticsEvents)()((0, _fileAttributesContext.withFileAttributes)(ImageRendererBase));
142
48
  exports.ImageRenderer = ImageRenderer;
@@ -13,19 +13,23 @@ var _styled = require("./styled");
13
13
 
14
14
  var _warning = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/warning"));
15
15
 
16
+ var _mediaUi = require("@atlaskit/media-ui");
17
+
16
18
  var _colors = require("@atlaskit/theme/colors");
17
19
 
18
- var _getErrorMessage = require("../../../utils/getErrorMessage");
20
+ var _reactIntl = require("react-intl");
19
21
 
20
22
  var FailedTitleBox = function FailedTitleBox(_ref) {
21
- var breakpoint = _ref.breakpoint;
23
+ var breakpoint = _ref.breakpoint,
24
+ _ref$customMessage = _ref.customMessage,
25
+ customMessage = _ref$customMessage === void 0 ? _mediaUi.messages.failed_to_load : _ref$customMessage;
22
26
  return /*#__PURE__*/_react.default.createElement(_styled.TitleBoxWrapper, {
23
27
  breakpoint: breakpoint
24
28
  }, /*#__PURE__*/_react.default.createElement(_styled.ErrorMessageWrapper, null, /*#__PURE__*/_react.default.createElement(_warning.default, {
25
29
  label: 'Warning',
26
30
  size: 'small',
27
31
  primaryColor: _colors.R300
28
- }), (0, _getErrorMessage.getErrorMessage)('error')));
32
+ }), /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, customMessage)));
29
33
  };
30
34
 
31
35
  exports.FailedTitleBox = FailedTitleBox;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.fireMediaCardEvent = fireMediaCardEvent;
7
- exports.createAndFireMediaCardEvent = exports.getCopiedFilePayload = exports.getRenderFailedFileStatusPayload = exports.getRenderErrorEventPayload = exports.getRenderErrorRequestMetadata = exports.getRenderErrorErrorDetail = exports.getRenderErrorErrorReason = exports.getRenderErrorFailReason = exports.getRenderFailedExternalUriPayload = exports.getRenderFailedFileUriPayload = exports.getFailedFileUriFailReason = exports.getRenderSucceededEventPayload = exports.getRenderCommencedEventPayload = exports.getRenderPreviewableCardPayload = exports.getFileAttributes = exports.RenderEventAction = void 0;
7
+ exports.createAndFireMediaCardEvent = exports.getCopiedFilePayload = exports.getRenderFailedFileStatusPayload = exports.getRenderErrorEventPayload = exports.getRenderErrorRequestMetadata = exports.getRenderErrorErrorDetail = exports.getRenderErrorErrorReason = exports.getRenderErrorFailReason = exports.getRenderFailedExternalUriPayload = exports.getRenderSucceededEventPayload = exports.getRenderCommencedEventPayload = exports.getRenderPreviewableCardPayload = exports.getFileAttributes = void 0;
8
8
 
9
9
  var _mediaClient = require("@atlaskit/media-client");
10
10
 
@@ -14,15 +14,6 @@ var _analyticsNext = require("@atlaskit/analytics-next");
14
14
 
15
15
  var _errors = require("../errors");
16
16
 
17
- var RenderEventAction;
18
- exports.RenderEventAction = RenderEventAction;
19
-
20
- (function (RenderEventAction) {
21
- RenderEventAction["COMMENCED"] = "commenced";
22
- RenderEventAction["SUCCEEDED"] = "succeeded";
23
- RenderEventAction["FAILED"] = "failed";
24
- })(RenderEventAction || (exports.RenderEventAction = RenderEventAction = {}));
25
-
26
17
  var getFileAttributes = function getFileAttributes(metadata, fileStatus) {
27
18
  return {
28
19
  fileMediatype: metadata.mediaType,
@@ -53,7 +44,7 @@ exports.getRenderPreviewableCardPayload = getRenderPreviewableCardPayload;
53
44
  var getRenderCommencedEventPayload = function getRenderCommencedEventPayload(fileAttributes, performanceAttributes) {
54
45
  return {
55
46
  eventType: 'operational',
56
- action: RenderEventAction.COMMENCED,
47
+ action: 'commenced',
57
48
  actionSubject: 'mediaCardRender',
58
49
  attributes: {
59
50
  fileAttributes: fileAttributes,
@@ -67,7 +58,7 @@ exports.getRenderCommencedEventPayload = getRenderCommencedEventPayload;
67
58
  var getRenderSucceededEventPayload = function getRenderSucceededEventPayload(fileAttributes, performanceAttributes) {
68
59
  return {
69
60
  eventType: 'operational',
70
- action: RenderEventAction.SUCCEEDED,
61
+ action: 'succeeded',
71
62
  actionSubject: 'mediaCardRender',
72
63
  attributes: {
73
64
  fileAttributes: fileAttributes,
@@ -79,39 +70,10 @@ var getRenderSucceededEventPayload = function getRenderSucceededEventPayload(fil
79
70
 
80
71
  exports.getRenderSucceededEventPayload = getRenderSucceededEventPayload;
81
72
 
82
- var getFailedFileUriFailReason = function getFailedFileUriFailReason(fileStatus) {
83
- if (!fileStatus) {
84
- // This fail reason will come from a bug, most likely.
85
- return "unknown-uri";
86
- } else if (fileStatus === 'uploading') {
87
- return 'local-uri';
88
- }
89
-
90
- return 'remote-uri';
91
- };
92
-
93
- exports.getFailedFileUriFailReason = getFailedFileUriFailReason;
94
-
95
- var getRenderFailedFileUriPayload = function getRenderFailedFileUriPayload(fileAttributes, performanceAttributes) {
96
- return {
97
- eventType: 'operational',
98
- action: RenderEventAction.FAILED,
99
- actionSubject: 'mediaCardRender',
100
- attributes: {
101
- fileAttributes: fileAttributes,
102
- performanceAttributes: performanceAttributes,
103
- status: 'fail',
104
- failReason: getFailedFileUriFailReason(fileAttributes.fileStatus)
105
- }
106
- };
107
- };
108
-
109
- exports.getRenderFailedFileUriPayload = getRenderFailedFileUriPayload;
110
-
111
73
  var getRenderFailedExternalUriPayload = function getRenderFailedExternalUriPayload(fileAttributes, performanceAttributes) {
112
74
  return {
113
75
  eventType: 'operational',
114
- action: RenderEventAction.FAILED,
76
+ action: 'failed',
115
77
  actionSubject: 'mediaCardRender',
116
78
  attributes: {
117
79
  fileAttributes: fileAttributes,
@@ -169,7 +131,7 @@ exports.getRenderErrorRequestMetadata = getRenderErrorRequestMetadata;
169
131
  var getRenderErrorEventPayload = function getRenderErrorEventPayload(fileAttributes, performanceAttributes, error) {
170
132
  return {
171
133
  eventType: 'operational',
172
- action: RenderEventAction.FAILED,
134
+ action: 'failed',
173
135
  actionSubject: 'mediaCardRender',
174
136
  attributes: {
175
137
  fileAttributes: fileAttributes,
@@ -188,7 +150,7 @@ exports.getRenderErrorEventPayload = getRenderErrorEventPayload;
188
150
  var getRenderFailedFileStatusPayload = function getRenderFailedFileStatusPayload(fileAttributes, performanceAttributes) {
189
151
  return {
190
152
  eventType: 'operational',
191
- action: RenderEventAction.FAILED,
153
+ action: 'failed',
192
154
  actionSubject: 'mediaCardRender',
193
155
  attributes: {
194
156
  fileAttributes: fileAttributes,
@@ -32,7 +32,7 @@ var canCompareDimension = function canCompareDimension(current, next) {
32
32
  exports.canCompareDimension = canCompareDimension;
33
33
 
34
34
  var isBigger = function isBigger(current, next) {
35
- if (canCompareDimension(current.width, next.width) && canCompareDimension(current.height, next.height)) {
35
+ if (!!current && !!next && canCompareDimension(current.width, next.width) && canCompareDimension(current.height, next.height)) {
36
36
  var nextIsHigher = parseInt("".concat(current.width), 10) < parseInt("".concat(next.width), 10);
37
37
  var nextIsWider = parseInt("".concat(current.height), 10) < parseInt("".concat(next.height), 10);
38
38
  return nextIsHigher || nextIsWider;