@atlaskit/media-card 70.11.0 → 73.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 (197) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/dist/cjs/errors.js +78 -5
  3. package/dist/cjs/files/cardImageView/cardOverlay/styled.js +1 -1
  4. package/dist/cjs/files/cardImageView/index.js +53 -104
  5. package/dist/cjs/files/cardImageView/styled.js +1 -1
  6. package/dist/cjs/files/index.js +0 -6
  7. package/dist/cjs/index.js +12 -6
  8. package/dist/cjs/root/card/cardAnalytics.js +11 -17
  9. package/dist/cjs/root/card/cardLoader.js +66 -124
  10. package/dist/cjs/root/card/cardState.js +50 -0
  11. package/dist/cjs/root/card/getCardPreview/cache.js +6 -1
  12. package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +53 -0
  13. package/dist/cjs/root/card/getCardPreview/helpers.js +14 -22
  14. package/dist/cjs/root/card/getCardPreview/index.js +176 -102
  15. package/dist/cjs/root/card/getCardStatus.js +7 -1
  16. package/dist/cjs/root/card/index.js +361 -281
  17. package/dist/cjs/root/cardView.js +109 -86
  18. package/dist/cjs/root/index.js +9 -1
  19. package/dist/cjs/root/inline/loader.js +22 -21
  20. package/dist/cjs/root/inline/{inlineMediaCard.js → mediaInlineCard.js} +84 -26
  21. package/dist/cjs/root/inlinePlayer.js +4 -3
  22. package/dist/cjs/root/styled.js +7 -3
  23. package/dist/cjs/root/ui/actionsBar/styled.js +1 -1
  24. package/dist/cjs/root/ui/blanket/styled.js +1 -1
  25. package/dist/cjs/root/ui/common.js +11 -5
  26. package/dist/cjs/root/ui/iconMessage/index.js +16 -7
  27. package/dist/cjs/root/ui/iconWrapper/styled.js +1 -1
  28. package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +34 -124
  29. package/dist/cjs/root/ui/loadingRateLimited/loadingRateLimited.js +6 -4
  30. package/dist/cjs/root/ui/loadingRateLimited/styled.js +1 -1
  31. package/dist/cjs/root/ui/playButton/styled.js +1 -1
  32. package/dist/cjs/root/ui/progressBar/progressBar.js +2 -2
  33. package/dist/cjs/root/ui/progressBar/styled.js +2 -4
  34. package/dist/cjs/root/ui/styled.js +80 -17
  35. package/dist/cjs/root/ui/tickBox/styled.js +1 -1
  36. package/dist/cjs/root/ui/titleBox/failedTitleBox.js +9 -3
  37. package/dist/cjs/root/ui/titleBox/styled.js +2 -4
  38. package/dist/cjs/root/ui/titleBox/titleBox.js +2 -2
  39. package/dist/cjs/styles/index.js +25 -23
  40. package/dist/cjs/styles/mixins.js +1 -1
  41. package/dist/cjs/utils/analytics.js +21 -43
  42. package/dist/cjs/utils/breakpoint.js +1 -1
  43. package/dist/cjs/utils/cardActions/cardActionsDropdownMenu.js +16 -9
  44. package/dist/cjs/utils/cardActions/index.js +10 -10
  45. package/dist/cjs/utils/cardActions/styled.js +1 -1
  46. package/dist/cjs/utils/cardDimensions.js +1 -1
  47. package/dist/cjs/utils/dimensionComparer.js +1 -1
  48. package/dist/cjs/utils/getErrorMessage.js +2 -2
  49. package/dist/cjs/utils/index.js +46 -46
  50. package/dist/cjs/utils/lightCards/styled.js +1 -1
  51. package/dist/cjs/utils/metadata.js +11 -3
  52. package/dist/cjs/utils/objectURLCache.js +7 -1
  53. package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
  54. package/dist/cjs/utils/viewportDetector.js +1 -1
  55. package/dist/cjs/version.json +1 -1
  56. package/dist/es2019/errors.js +42 -2
  57. package/dist/es2019/files/cardImageView/index.js +8 -61
  58. package/dist/es2019/files/index.js +1 -1
  59. package/dist/es2019/index.js +1 -1
  60. package/dist/es2019/root/card/cardAnalytics.js +7 -15
  61. package/dist/es2019/root/card/cardLoader.js +47 -53
  62. package/dist/es2019/root/card/cardState.js +26 -0
  63. package/dist/es2019/root/card/getCardPreview/cache.js +5 -0
  64. package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +38 -0
  65. package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
  66. package/dist/es2019/root/card/getCardPreview/index.js +112 -79
  67. package/dist/es2019/root/card/getCardStatus.js +1 -0
  68. package/dist/es2019/root/card/index.js +285 -190
  69. package/dist/es2019/root/cardView.js +93 -68
  70. package/dist/es2019/root/index.js +2 -1
  71. package/dist/es2019/root/inline/loader.js +16 -15
  72. package/dist/es2019/root/inline/mediaInlineCard.js +143 -0
  73. package/dist/es2019/root/inlinePlayer.js +3 -2
  74. package/dist/es2019/root/styled.js +2 -1
  75. package/dist/es2019/root/ui/common.js +7 -1
  76. package/dist/es2019/root/ui/iconMessage/index.js +8 -5
  77. package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +25 -88
  78. package/dist/es2019/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  79. package/dist/es2019/root/ui/progressBar/progressBar.js +1 -1
  80. package/dist/es2019/root/ui/progressBar/styled.js +1 -2
  81. package/dist/es2019/root/ui/styled.js +64 -3
  82. package/dist/es2019/root/ui/titleBox/failedTitleBox.js +6 -3
  83. package/dist/es2019/root/ui/titleBox/styled.js +1 -2
  84. package/dist/es2019/root/ui/titleBox/titleBox.js +1 -1
  85. package/dist/es2019/utils/analytics.js +15 -34
  86. package/dist/es2019/utils/cardActions/cardActionsDropdownMenu.js +8 -4
  87. package/dist/es2019/utils/dimensionComparer.js +1 -1
  88. package/dist/es2019/utils/getErrorMessage.js +1 -1
  89. package/dist/es2019/utils/metadata.js +12 -4
  90. package/dist/es2019/utils/objectURLCache.js +5 -0
  91. package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
  92. package/dist/es2019/version.json +1 -1
  93. package/dist/esm/errors.js +60 -1
  94. package/dist/esm/files/cardImageView/index.js +51 -102
  95. package/dist/esm/files/index.js +1 -1
  96. package/dist/esm/index.js +1 -1
  97. package/dist/esm/root/card/cardAnalytics.js +7 -16
  98. package/dist/esm/root/card/cardLoader.js +66 -126
  99. package/dist/esm/root/card/cardState.js +32 -0
  100. package/dist/esm/root/card/getCardPreview/cache.js +6 -0
  101. package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +38 -0
  102. package/dist/esm/root/card/getCardPreview/helpers.js +13 -21
  103. package/dist/esm/root/card/getCardPreview/index.js +142 -95
  104. package/dist/esm/root/card/getCardStatus.js +3 -0
  105. package/dist/esm/root/card/index.js +370 -284
  106. package/dist/esm/root/cardView.js +109 -84
  107. package/dist/esm/root/index.js +2 -1
  108. package/dist/esm/root/inline/loader.js +23 -22
  109. package/dist/esm/root/inline/mediaInlineCard.js +156 -0
  110. package/dist/esm/root/inlinePlayer.js +3 -2
  111. package/dist/esm/root/styled.js +3 -2
  112. package/dist/esm/root/ui/common.js +7 -1
  113. package/dist/esm/root/ui/iconMessage/index.js +10 -5
  114. package/dist/esm/root/ui/imageRenderer/imageRenderer.js +27 -118
  115. package/dist/esm/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  116. package/dist/esm/root/ui/progressBar/progressBar.js +1 -1
  117. package/dist/esm/root/ui/progressBar/styled.js +1 -2
  118. package/dist/esm/root/ui/styled.js +61 -13
  119. package/dist/esm/root/ui/titleBox/failedTitleBox.js +7 -3
  120. package/dist/esm/root/ui/titleBox/styled.js +1 -2
  121. package/dist/esm/root/ui/titleBox/titleBox.js +1 -1
  122. package/dist/esm/utils/analytics.js +16 -35
  123. package/dist/esm/utils/cardActions/cardActionsDropdownMenu.js +16 -9
  124. package/dist/esm/utils/dimensionComparer.js +1 -1
  125. package/dist/esm/utils/getErrorMessage.js +1 -1
  126. package/dist/esm/utils/metadata.js +12 -4
  127. package/dist/esm/utils/objectURLCache.js +6 -0
  128. package/dist/esm/utils/shouldDisplayImageThumbnail.js +1 -1
  129. package/dist/esm/version.json +1 -1
  130. package/dist/types/errors.d.ts +15 -1
  131. package/dist/types/files/cardImageView/index.d.ts +4 -13
  132. package/dist/types/files/cardImageView/styled.d.ts +1 -1
  133. package/dist/types/files/index.d.ts +1 -1
  134. package/dist/types/index.d.ts +7 -5
  135. package/dist/types/root/card/cardAnalytics.d.ts +2 -6
  136. package/dist/types/root/card/cardLoader.d.ts +5 -19
  137. package/dist/types/root/card/cardState.d.ts +5 -0
  138. package/dist/types/root/card/getCardPreview/cache.d.ts +3 -1
  139. package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
  140. package/dist/types/root/card/getCardPreview/helpers.d.ts +3 -4
  141. package/dist/types/root/card/getCardPreview/index.d.ts +24 -14
  142. package/dist/types/root/card/getCardStatus.d.ts +1 -0
  143. package/dist/types/root/card/index.d.ts +19 -18
  144. package/dist/types/root/cardView.d.ts +13 -8
  145. package/dist/types/root/index.d.ts +1 -0
  146. package/dist/types/root/inline/loader.d.ts +8 -8
  147. package/dist/types/root/inline/{inlineMediaCard.d.ts → mediaInlineCard.d.ts} +4 -6
  148. package/dist/types/root/inlinePlayer.d.ts +1 -1
  149. package/dist/types/root/styled.d.ts +1 -0
  150. package/dist/types/root/ui/common.d.ts +4 -1
  151. package/dist/types/root/ui/iconMessage/index.d.ts +4 -3
  152. package/dist/types/root/ui/iconWrapper/styled.d.ts +1 -1
  153. package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +5 -15
  154. package/dist/types/root/ui/loadingRateLimited/loadingRateLimited.d.ts +2 -1
  155. package/dist/types/root/ui/loadingRateLimited/styled.d.ts +1 -1
  156. package/dist/types/root/ui/playButton/playButton.d.ts +1 -0
  157. package/dist/types/root/ui/progressBar/progressBar.d.ts +2 -1
  158. package/dist/types/root/ui/progressBar/styled.d.ts +1 -1
  159. package/dist/types/root/ui/styled.d.ts +10 -3
  160. package/dist/types/root/ui/tickBox/tickBox.d.ts +1 -0
  161. package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +3 -1
  162. package/dist/types/root/ui/titleBox/styled.d.ts +1 -1
  163. package/dist/types/root/ui/titleBox/titleBox.d.ts +2 -10
  164. package/dist/types/styles/mixins.d.ts +1 -1
  165. package/dist/types/types.d.ts +7 -1
  166. package/dist/types/utils/analytics.d.ts +14 -15
  167. package/dist/types/utils/cardDimensions.d.ts +4 -4
  168. package/dist/types/utils/dimensionComparer.d.ts +1 -1
  169. package/dist/types/utils/getErrorMessage.d.ts +1 -0
  170. package/dist/types/utils/metadata.d.ts +2 -2
  171. package/dist/types/utils/objectURLCache.d.ts +2 -1
  172. package/example-helpers/developmentUseMessage.tsx +14 -0
  173. package/example-helpers/index.tsx +55 -4
  174. package/example-helpers/selectableCard.tsx +2 -1
  175. package/package.json +20 -16
  176. package/dist/cjs/root/card/cardSSRView.js +0 -99
  177. package/dist/cjs/root/card/getCardPreview/types.js +0 -5
  178. package/dist/cjs/root/ui/Breakpoint.js +0 -13
  179. package/dist/cjs/root/ui/styledSSR.js +0 -108
  180. package/dist/cjs/utils/fileAttributesContext.js +0 -40
  181. package/dist/es2019/root/card/cardSSRView.js +0 -79
  182. package/dist/es2019/root/card/getCardPreview/types.js +0 -1
  183. package/dist/es2019/root/inline/inlineMediaCard.js +0 -92
  184. package/dist/es2019/root/ui/Breakpoint.js +0 -6
  185. package/dist/es2019/root/ui/styledSSR.js +0 -93
  186. package/dist/es2019/utils/fileAttributesContext.js +0 -19
  187. package/dist/esm/root/card/cardSSRView.js +0 -78
  188. package/dist/esm/root/card/getCardPreview/types.js +0 -1
  189. package/dist/esm/root/inline/inlineMediaCard.js +0 -100
  190. package/dist/esm/root/ui/Breakpoint.js +0 -6
  191. package/dist/esm/root/ui/styledSSR.js +0 -76
  192. package/dist/esm/utils/fileAttributesContext.js +0 -18
  193. package/dist/types/root/card/cardSSRView.d.ts +0 -12
  194. package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
  195. package/dist/types/root/ui/Breakpoint.d.ts +0 -4
  196. package/dist/types/root/ui/styledSSR.d.ts +0 -16
  197. package/dist/types/utils/fileAttributesContext.d.ts +0 -10
@@ -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.CardView = exports.CardViewBase = void 0;
8
+ exports.CardViewBase = exports.CardView = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
@@ -51,8 +51,6 @@ var _mediaUi = require("@atlaskit/media-ui");
51
51
 
52
52
  var _styled2 = require("./ui/styled");
53
53
 
54
- var _styledSSR = require("./ui/styledSSR");
55
-
56
54
  var _imageRenderer = require("./ui/imageRenderer/imageRenderer");
57
55
 
58
56
  var _titleBox = require("./ui/titleBox/titleBox");
@@ -79,12 +77,12 @@ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
79
77
 
80
78
  var _iconMessage = require("./ui/iconMessage");
81
79
 
82
- var _loadingRateLimited = require("./ui/loadingRateLimited/loadingRateLimited");
83
-
84
80
  var _mediaClient = require("@atlaskit/media-client");
85
81
 
86
82
  var _cardConstants = require("./card/cardConstants");
87
83
 
84
+ var _errors = require("../errors");
85
+
88
86
  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
87
 
90
88
  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 +111,33 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
113
111
 
114
112
  _this = _super.call.apply(_super, [this].concat(args));
115
113
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
116
- isImageFailedToLoad: false
114
+ didImageRender: false
117
115
  });
118
116
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "divRef", /*#__PURE__*/_react.default.createRef());
119
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageLoadError", function () {
117
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageLoad", function () {
118
+ var onImageLoad = _this.props.onImageLoad; // We render the icon & icon message always, even if there is dataURI available.
119
+ // If the image fails to load/render, the icon will remain, i.e. the user won't see a change until
120
+ // the root card decides to chage status to error.
121
+ // If the image renders successfully, we switch this variable to hide the icon & icon message
122
+ // behind the thumbnail in case the image has transparency.
123
+ // It is less likely that root component replaces a suceeded dataURI for a failed one
124
+ // than the opposite case. Therefore we prefer to hide the icon instead show when the image fails,
125
+ // for a smoother transition
126
+
127
+ _this.setState({
128
+ didImageRender: true
129
+ });
130
+
131
+ onImageLoad && onImageLoad();
132
+ });
133
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageError", function () {
134
+ var onImageError = _this.props.onImageError;
135
+
120
136
  _this.setState({
121
- isImageFailedToLoad: true
137
+ didImageRender: false
122
138
  });
139
+
140
+ onImageError && onImageError();
123
141
  });
124
142
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "saveElementWidth", function () {
125
143
  var dimensions = _this.props.dimensions;
@@ -156,13 +174,11 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
156
174
  name = _ref.name;
157
175
 
158
176
  var shouldUsePointerCursor = status !== 'error' && status !== 'failed-processing';
159
- var shouldDisplayBackground = !dataURI || !disableOverlay;
177
+ var shouldDisplayBackground = !dataURI || !disableOverlay || status === 'error' || status === 'failed-processing';
160
178
  var isPlayButtonClickable = !!(_this.shouldRenderPlayButton() && disableOverlay);
161
- var isTickBoxSelectable = !disableOverlay && !!selectable && !selected; // Make tooltip optional for media singles - images, videos.
162
- // Intention is to show full file name when it's truncate in titlebox,
163
- // and to hide it when no titlebox exists.
179
+ var isTickBoxSelectable = !disableOverlay && !!selectable && !selected; // Disable tooltip for Media Single
164
180
 
165
- var shouldDisplayTooltip = !!name && !disableOverlay;
181
+ var shouldDisplayTooltip = !disableOverlay;
166
182
  return /*#__PURE__*/_react.default.createElement(_styled2.NewFileExperienceWrapper, {
167
183
  className: _cardConstants.newFileExperienceClassName,
168
184
  "data-testid": testId || 'media-card-view',
@@ -200,8 +216,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
200
216
  previewOrientation = _this$props2.previewOrientation,
201
217
  alt = _this$props2.alt,
202
218
  onDisplayImage = _this$props2.onDisplayImage,
203
- actions = _this$props2.actions,
204
- timeElapsedTillCommenced = _this$props2.timeElapsedTillCommenced;
219
+ actions = _this$props2.actions;
205
220
 
206
221
  var _ref2 = metadata || {},
207
222
  name = _ref2.name,
@@ -231,7 +246,8 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
231
246
  disableOverlay: disableOverlay,
232
247
  previewOrientation: previewOrientation,
233
248
  alt: alt,
234
- timeElapsedTillCommenced: timeElapsedTillCommenced
249
+ onImageLoad: _this.onImageLoad,
250
+ onImageError: _this.onImageError
235
251
  });
236
252
  });
237
253
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getRenderConfigByStatus", function () {
@@ -248,15 +264,14 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
248
264
  name = _ref3.name,
249
265
  mediaType = _ref3.mediaType;
250
266
 
251
- var isImageFailedToLoad = _this.state.isImageFailedToLoad;
267
+ var didImageRender = _this.state.didImageRender;
252
268
  var isZeroSize = !!(metadata && metadata.size === 0);
253
269
  var defaultConfig = {
254
- renderTypeIcon: isImageFailedToLoad || !dataURI,
255
- renderImageRenderer: !!dataURI && !isImageFailedToLoad,
270
+ renderTypeIcon: !didImageRender,
271
+ renderImageRenderer: !!dataURI,
256
272
  renderPlayButton: !!dataURI && mediaType === 'video',
257
273
  renderBlanket: !disableOverlay,
258
- renderTitleBox: !!name && !disableOverlay,
259
- renderFailedTitleBox: !!isImageFailedToLoad && !metadata,
274
+ renderTitleBox: !disableOverlay && !!name,
260
275
  renderTickBox: !disableOverlay && !!selectable
261
276
  };
262
277
 
@@ -271,55 +286,60 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
271
286
  case 'processing':
272
287
  case 'loading-preview':
273
288
  return _objectSpread(_objectSpread({}, defaultConfig), {}, {
274
- iconMessage: (isImageFailedToLoad || !dataURI) && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.CreatingPreview, {
289
+ iconMessage: !didImageRender && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.CreatingPreview, {
275
290
  disableAnimation: disableAnimation
276
291
  }) : undefined
277
292
  });
278
293
 
279
294
  case 'complete':
280
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
281
- iconMessage: !!isImageFailedToLoad && !!metadata ? /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewUnavailable, null) : undefined
282
- });
295
+ return defaultConfig;
283
296
 
284
297
  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
292
- });
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
- };
298
+ case 'failed-processing':
299
+ var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
300
+ renderTypeIcon: true,
301
+ renderImageRenderer: false,
302
+ renderTitleBox: false,
303
+ renderPlayButton: false
304
+ });
305
+
306
+ var iconMessage;
307
+ var customTitleMessage;
308
+
309
+ var _ref4 = error || {},
310
+ secondaryError = _ref4.secondaryError;
311
+
312
+ if ((0, _mediaClient.isRateLimitedError)(secondaryError) || (0, _mediaClient.isPollingError)(secondaryError)) {
313
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewCurrentlyUnavailable, null);
314
+ } else if ((0, _errors.isUploadError)(error)) {
315
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.FailedToUpload, null);
316
+ customTitleMessage = _mediaUi.messages.failed_to_upload;
317
+ } else if (!metadata) {
318
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.FailedToLoad, null);
300
319
  } else {
301
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
302
- renderTypeIcon: true,
303
- renderImageRenderer: false,
304
- renderTitleBox: false,
305
- renderFailedTitleBox: true
320
+ iconMessage = /*#__PURE__*/_react.default.createElement(_iconMessage.PreviewUnavailable, null);
321
+ }
322
+
323
+ if (!disableOverlay) {
324
+ var renderFailedTitleBox = !name || !!customTitleMessage;
325
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
326
+ renderTitleBox: !!name && !customTitleMessage,
327
+ renderFailedTitleBox: renderFailedTitleBox,
328
+ iconMessage: !renderFailedTitleBox ? iconMessage : undefined,
329
+ customTitleMessage: customTitleMessage
306
330
  });
307
331
  }
308
332
 
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
333
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
334
+ iconMessage: iconMessage
316
335
  });
317
336
 
318
337
  case 'loading':
319
338
  default:
320
339
  return _objectSpread(_objectSpread({}, defaultConfig), {}, {
340
+ renderPlayButton: false,
321
341
  renderTypeIcon: false,
322
- renderSpinner: true
342
+ renderSpinner: !didImageRender
323
343
  });
324
344
  }
325
345
  });
@@ -336,7 +356,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
336
356
  renderFailedTitleBox = _this$getRenderConfig.renderFailedTitleBox,
337
357
  renderTickBox = _this$getRenderConfig.renderTickBox,
338
358
  isFixedBlanket = _this$getRenderConfig.isFixedBlanket,
339
- renderLoadingRateLimited = _this$getRenderConfig.renderLoadingRateLimited;
359
+ customTitleMessage = _this$getRenderConfig.customTitleMessage;
340
360
 
341
361
  var _this$props4 = _this.props,
342
362
  progress = _this$props4.progress,
@@ -344,18 +364,18 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
344
364
  status = _this$props4.status,
345
365
  metadata = _this$props4.metadata;
346
366
 
347
- var _ref4 = metadata || {},
348
- name = _ref4.name;
367
+ var _ref5 = metadata || {},
368
+ name = _ref5.name;
349
369
 
350
370
  var hasTitleBox = !!renderTitleBox || !!renderFailedTitleBox;
351
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styledSSR.CardImageContainer, {
371
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styled2.CardImageContainer, {
352
372
  className: "media-file-card-view",
353
373
  "data-testid": "media-file-card-view",
354
374
  "data-test-media-name": name,
355
375
  "data-test-status": status,
356
376
  "data-test-progress": progress,
357
377
  "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());
378
+ }, 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
379
  });
360
380
  return _this;
361
381
  }
@@ -369,15 +389,16 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
369
389
  }
370
390
  }, {
371
391
  key: "componentDidUpdate",
372
- value: function componentDidUpdate(_ref5) {
373
- var prevDataURI = _ref5.dataURI;
374
- var dataURI = this.props.dataURI;
375
-
376
- if (prevDataURI !== dataURI) {
377
- this.setState({
378
- isImageFailedToLoad: false
379
- });
380
- }
392
+ value: function componentDidUpdate(_ref6) {
393
+ var prevDataURI = _ref6.dataURI;
394
+ var dataURI = this.props.dataURI; // We should only switch didImageRender to false
395
+ // when dataURI goes undefined, not when it is updated.
396
+ // as this method could be triggered after onImageLoad callback,
397
+ // falling on a race condition
398
+
399
+ prevDataURI && !dataURI && this.setState({
400
+ didImageRender: false
401
+ });
381
402
  }
382
403
  }, {
383
404
  key: "width",
@@ -390,10 +411,10 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
390
411
  return elementWidth;
391
412
  }
392
413
 
393
- var _ref6 = this.props.dimensions || {
414
+ var _ref7 = this.props.dimensions || {
394
415
  width: undefined
395
416
  },
396
- width = _ref6.width;
417
+ width = _ref7.width;
397
418
 
398
419
  if (!width) {
399
420
  return _cardDimensions.defaultImageCardDimensions.width;
@@ -405,7 +426,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
405
426
  key: "breakpoint",
406
427
  get: function get() {
407
428
  var width = this.state.elementWidth || (this.props.dimensions ? this.props.dimensions.width : '') || _cardDimensions.defaultImageCardDimensions.width;
408
- return (0, _styledSSR.calcBreakpointSize)(parseInt("".concat(width), 10));
429
+ return (0, _styled2.calcBreakpointSize)(parseInt("".concat(width), 10));
409
430
  } // If the dimensions.width is a percentage, we need to transform it
410
431
  // into a pixel value in order to get the right breakpoints applied.
411
432
 
@@ -450,8 +471,8 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
450
471
  metadata = _this$props6.metadata,
451
472
  dataURI = _this$props6.dataURI;
452
473
 
453
- var _ref7 = metadata || {},
454
- mediaType = _ref7.mediaType;
474
+ var _ref8 = metadata || {},
475
+ mediaType = _ref8.mediaType;
455
476
 
456
477
  if (mediaType !== 'video' || !dataURI) {
457
478
  return false;
@@ -484,9 +505,9 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
484
505
  titleBoxBgColor = _this$props7.titleBoxBgColor,
485
506
  titleBoxIcon = _this$props7.titleBoxIcon;
486
507
 
487
- var _ref8 = metadata || {},
488
- name = _ref8.name,
489
- createdAt = _ref8.createdAt;
508
+ var _ref9 = metadata || {},
509
+ name = _ref9.name,
510
+ createdAt = _ref9.createdAt;
490
511
 
491
512
  return !!name && /*#__PURE__*/_react.default.createElement(_titleBox.TitleBox, {
492
513
  name: name,
@@ -498,9 +519,10 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
498
519
  }
499
520
  }, {
500
521
  key: "renderFailedTitleBox",
501
- value: function renderFailedTitleBox() {
522
+ value: function renderFailedTitleBox(customMessage) {
502
523
  return /*#__PURE__*/_react.default.createElement(_failedTitleBox.FailedTitleBox, {
503
- breakpoint: this.breakpoint
524
+ breakpoint: this.breakpoint,
525
+ customMessage: customMessage
504
526
  });
505
527
  }
506
528
  }, {
@@ -526,18 +548,19 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
526
548
  alt = _this$props8.alt,
527
549
  resizeMode = _this$props8.resizeMode,
528
550
  onDisplayImage = _this$props8.onDisplayImage,
529
- mediaItemType = _this$props8.mediaItemType,
530
- timeElapsedTillCommenced = _this$props8.timeElapsedTillCommenced;
551
+ nativeLazyLoad = _this$props8.nativeLazyLoad,
552
+ forceSyncDisplay = _this$props8.forceSyncDisplay;
531
553
  return !!dataURI && /*#__PURE__*/_react.default.createElement(_imageRenderer.ImageRenderer, {
532
554
  dataURI: dataURI,
533
555
  mediaType: mediaType,
534
- mediaItemType: mediaItemType,
535
556
  previewOrientation: previewOrientation,
536
557
  alt: alt,
537
558
  resizeMode: resizeMode,
538
559
  onDisplayImage: onDisplayImage,
539
- onImageError: this.onImageLoadError,
540
- timeElapsedTillCommenced: timeElapsedTillCommenced
560
+ onImageLoad: this.onImageLoad,
561
+ onImageError: this.onImageError,
562
+ nativeLazyLoad: nativeLazyLoad,
563
+ forceSyncDisplay: forceSyncDisplay
541
564
  });
542
565
  }
543
566
  }, {
@@ -553,10 +576,10 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
553
576
  value: function renderMediaTypeIcon(hasTitleBox, iconMessage) {
554
577
  var metadata = this.props.metadata;
555
578
 
556
- var _ref9 = metadata || {},
557
- mediaType = _ref9.mediaType,
558
- mimeType = _ref9.mimeType,
559
- name = _ref9.name;
579
+ var _ref10 = metadata || {},
580
+ mediaType = _ref10.mediaType,
581
+ mimeType = _ref10.mimeType,
582
+ name = _ref10.name;
560
583
 
561
584
  return /*#__PURE__*/_react.default.createElement(_styled4.IconWrapper, {
562
585
  breakpoint: this.breakpoint,
@@ -11,5 +11,13 @@ Object.defineProperty(exports, "Card", {
11
11
  return _cardLoader.default;
12
12
  }
13
13
  });
14
+ Object.defineProperty(exports, "MediaInlineCard", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _loader.default;
18
+ }
19
+ });
20
+
21
+ var _cardLoader = _interopRequireDefault(require("./card/cardLoader"));
14
22
 
15
- var _cardLoader = _interopRequireDefault(require("./card/cardLoader"));
23
+ var _loader = _interopRequireDefault(require("./inline/loader"));
@@ -41,15 +41,15 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
41
41
 
42
42
  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; } }
43
43
 
44
- var InlineMediaCardLoader = /*#__PURE__*/function (_React$PureComponent) {
45
- (0, _inherits2.default)(InlineMediaCardLoader, _React$PureComponent);
44
+ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
45
+ (0, _inherits2.default)(MediaInlineCardLoader, _React$PureComponent);
46
46
 
47
- var _super = _createSuper(InlineMediaCardLoader);
47
+ var _super = _createSuper(MediaInlineCardLoader);
48
48
 
49
- function InlineMediaCardLoader() {
49
+ function MediaInlineCardLoader() {
50
50
  var _this;
51
51
 
52
- (0, _classCallCheck2.default)(this, InlineMediaCardLoader);
52
+ (0, _classCallCheck2.default)(this, MediaInlineCardLoader);
53
53
 
54
54
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
55
55
  args[_key] = arguments[_key];
@@ -57,12 +57,13 @@ var InlineMediaCardLoader = /*#__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
- InlineMediaCard: InlineMediaCardLoader.InlineMediaCard
60
+ MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
61
+ ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
61
62
  });
62
63
  return _this;
63
64
  }
64
65
 
65
- (0, _createClass2.default)(InlineMediaCardLoader, [{
66
+ (0, _createClass2.default)(MediaInlineCardLoader, [{
66
67
  key: "componentDidMount",
67
68
  value: function () {
68
69
  var _componentDidMount = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
@@ -72,7 +73,7 @@ var InlineMediaCardLoader = /*#__PURE__*/function (_React$PureComponent) {
72
73
  while (1) {
73
74
  switch (_context.prev = _context.next) {
74
75
  case 0:
75
- if (this.state.InlineMediaCard) {
76
+ if (this.state.MediaInlineCard) {
76
77
  _context.next = 16;
77
78
  break;
78
79
  }
@@ -82,7 +83,7 @@ var InlineMediaCardLoader = /*#__PURE__*/function (_React$PureComponent) {
82
83
  return Promise.all([Promise.resolve().then(function () {
83
84
  return _interopRequireWildcard(require('@atlaskit/media-client'));
84
85
  }), Promise.resolve().then(function () {
85
- return _interopRequireWildcard(require('./inlineMediaCard'));
86
+ return _interopRequireWildcard(require('./mediaInlineCard'));
86
87
  }), Promise.resolve().then(function () {
87
88
  return _interopRequireWildcard(require('../media-card-analytics-error-boundary'));
88
89
  })]);
@@ -93,11 +94,11 @@ var InlineMediaCardLoader = /*#__PURE__*/function (_React$PureComponent) {
93
94
  mediaClient = _yield$Promise$all2[0];
94
95
  cardModule = _yield$Promise$all2[1];
95
96
  mediaCardErrorBoundaryModule = _yield$Promise$all2[2];
96
- InlineMediaCardLoader.InlineMediaCard = mediaClient.withMediaClient(cardModule.InlineMediaCard);
97
- InlineMediaCardLoader.ErrorBoundary = mediaCardErrorBoundaryModule.default;
97
+ MediaInlineCardLoader.MediaInlineCard = mediaClient.withMediaClient(cardModule.MediaInlineCard);
98
+ MediaInlineCardLoader.ErrorBoundary = mediaCardErrorBoundaryModule.default;
98
99
  this.setState({
99
- InlineMediaCard: InlineMediaCardLoader.InlineMediaCard,
100
- ErrorBoundary: InlineMediaCardLoader.ErrorBoundary
100
+ MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
101
+ ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
101
102
  });
102
103
  _context.next = 16;
103
104
  break;
@@ -124,20 +125,20 @@ var InlineMediaCardLoader = /*#__PURE__*/function (_React$PureComponent) {
124
125
  key: "render",
125
126
  value: function render() {
126
127
  var _this$state = this.state,
127
- InlineMediaCard = _this$state.InlineMediaCard,
128
+ MediaInlineCard = _this$state.MediaInlineCard,
128
129
  ErrorBoundary = _this$state.ErrorBoundary;
129
130
 
130
- if (!InlineMediaCard || !ErrorBoundary) {
131
- return /*#__PURE__*/_react.default.createElement(_mediaUi.InlineCardResolvingView, {
132
- url: ""
131
+ if (!MediaInlineCard || !ErrorBoundary) {
132
+ return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardLoadingView, {
133
+ message: ""
133
134
  });
134
135
  }
135
136
 
136
- return /*#__PURE__*/_react.default.createElement(ErrorBoundary, null, /*#__PURE__*/_react.default.createElement(InlineMediaCard, this.props));
137
+ return /*#__PURE__*/_react.default.createElement(ErrorBoundary, null, /*#__PURE__*/_react.default.createElement(MediaInlineCard, this.props));
137
138
  }
138
139
  }]);
139
- return InlineMediaCardLoader;
140
+ return MediaInlineCardLoader;
140
141
  }(_react.default.PureComponent);
141
142
 
142
- exports.default = InlineMediaCardLoader;
143
- (0, _defineProperty2.default)(InlineMediaCardLoader, "displayName", 'InlineMediaCardLoader');
143
+ exports.default = MediaInlineCardLoader;
144
+ (0, _defineProperty2.default)(MediaInlineCardLoader, "displayName", 'MediaInlineCardLoader');