@atlaskit/media-card 71.0.0 → 73.1.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 (204) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/dist/cjs/actions.js +2 -2
  3. package/dist/cjs/errors.js +83 -8
  4. package/dist/cjs/files/cardImageView/cardOverlay/styled.js +1 -1
  5. package/dist/cjs/files/cardImageView/index.js +53 -104
  6. package/dist/cjs/files/cardImageView/styled.js +1 -1
  7. package/dist/cjs/files/index.js +0 -6
  8. package/dist/cjs/index.js +8 -8
  9. package/dist/cjs/root/card/cardAnalytics.js +4 -16
  10. package/dist/cjs/root/card/cardLoader.js +66 -124
  11. package/dist/cjs/root/card/cardState.js +50 -0
  12. package/dist/cjs/root/card/getCardPreview/cache.js +10 -5
  13. package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +53 -0
  14. package/dist/cjs/root/card/getCardPreview/helpers.js +14 -22
  15. package/dist/cjs/root/card/getCardPreview/index.js +177 -97
  16. package/dist/cjs/root/card/getCardStatus.js +7 -1
  17. package/dist/cjs/root/card/index.js +384 -285
  18. package/dist/cjs/root/cardView.js +113 -88
  19. package/dist/cjs/root/inline/loader.js +47 -15
  20. package/dist/cjs/root/inline/mediaInlineCard.js +33 -12
  21. package/dist/cjs/root/inlinePlayer.js +77 -24
  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 +47 -123
  29. package/dist/cjs/root/ui/loadingRateLimited/loadingRateLimited.js +6 -4
  30. package/dist/cjs/root/ui/loadingRateLimited/styled.js +2 -2
  31. package/dist/cjs/root/ui/playButton/styled.js +1 -1
  32. package/dist/cjs/root/ui/progressBar/progressBar.js +7 -4
  33. package/dist/cjs/root/ui/progressBar/styled.js +8 -9
  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 +7 -44
  42. package/dist/cjs/utils/breakpoint.js +1 -1
  43. package/dist/cjs/utils/cardActions/cardActionsDropdownMenu.js +18 -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 +49 -22
  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/root/card/cardAnalytics.js +3 -14
  60. package/dist/es2019/root/card/cardLoader.js +47 -53
  61. package/dist/es2019/root/card/cardState.js +26 -0
  62. package/dist/es2019/root/card/getCardPreview/cache.js +5 -0
  63. package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +38 -0
  64. package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
  65. package/dist/es2019/root/card/getCardPreview/index.js +112 -73
  66. package/dist/es2019/root/card/getCardStatus.js +1 -0
  67. package/dist/es2019/root/card/index.js +308 -190
  68. package/dist/es2019/root/cardView.js +97 -68
  69. package/dist/es2019/root/inline/loader.js +17 -5
  70. package/dist/es2019/root/inline/mediaInlineCard.js +32 -11
  71. package/dist/es2019/root/inlinePlayer.js +56 -4
  72. package/dist/es2019/root/styled.js +2 -1
  73. package/dist/es2019/root/ui/common.js +7 -1
  74. package/dist/es2019/root/ui/iconMessage/index.js +8 -5
  75. package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +35 -88
  76. package/dist/es2019/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  77. package/dist/es2019/root/ui/loadingRateLimited/styled.js +1 -1
  78. package/dist/es2019/root/ui/progressBar/progressBar.js +5 -3
  79. package/dist/es2019/root/ui/progressBar/styled.js +7 -6
  80. package/dist/es2019/root/ui/styled.js +65 -4
  81. package/dist/es2019/root/ui/titleBox/failedTitleBox.js +6 -3
  82. package/dist/es2019/root/ui/titleBox/styled.js +1 -2
  83. package/dist/es2019/root/ui/titleBox/titleBox.js +1 -1
  84. package/dist/es2019/utils/analytics.js +5 -34
  85. package/dist/es2019/utils/cardActions/cardActionsDropdownMenu.js +8 -4
  86. package/dist/es2019/utils/dimensionComparer.js +1 -1
  87. package/dist/es2019/utils/getErrorMessage.js +1 -1
  88. package/dist/es2019/utils/metadata.js +12 -4
  89. package/dist/es2019/utils/objectURLCache.js +5 -0
  90. package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
  91. package/dist/es2019/utils/viewportDetector.js +48 -18
  92. package/dist/es2019/version.json +1 -1
  93. package/dist/esm/actions.js +2 -2
  94. package/dist/esm/errors.js +64 -4
  95. package/dist/esm/files/cardImageView/index.js +51 -102
  96. package/dist/esm/files/index.js +1 -1
  97. package/dist/esm/root/card/cardAnalytics.js +3 -15
  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 +9 -2
  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 +144 -91
  104. package/dist/esm/root/card/getCardStatus.js +3 -0
  105. package/dist/esm/root/card/index.js +396 -288
  106. package/dist/esm/root/cardView.js +113 -86
  107. package/dist/esm/root/inline/loader.js +48 -15
  108. package/dist/esm/root/inline/mediaInlineCard.js +32 -11
  109. package/dist/esm/root/inlinePlayer.js +74 -23
  110. package/dist/esm/root/styled.js +3 -2
  111. package/dist/esm/root/ui/common.js +7 -1
  112. package/dist/esm/root/ui/iconMessage/index.js +10 -5
  113. package/dist/esm/root/ui/imageRenderer/imageRenderer.js +37 -116
  114. package/dist/esm/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  115. package/dist/esm/root/ui/loadingRateLimited/styled.js +1 -1
  116. package/dist/esm/root/ui/progressBar/progressBar.js +6 -3
  117. package/dist/esm/root/ui/progressBar/styled.js +7 -7
  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 +5 -36
  123. package/dist/esm/utils/cardActions/cardActionsDropdownMenu.js +17 -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/utils/viewportDetector.js +48 -21
  130. package/dist/esm/version.json +1 -1
  131. package/dist/types/errors.d.ts +15 -1
  132. package/dist/types/files/cardImageView/index.d.ts +4 -13
  133. package/dist/types/files/cardImageView/styled.d.ts +1 -1
  134. package/dist/types/files/index.d.ts +1 -1
  135. package/dist/types/index.d.ts +7 -4
  136. package/dist/types/root/card/cardAnalytics.d.ts +1 -6
  137. package/dist/types/root/card/cardLoader.d.ts +5 -19
  138. package/dist/types/root/card/cardState.d.ts +5 -0
  139. package/dist/types/root/card/getCardPreview/cache.d.ts +3 -1
  140. package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
  141. package/dist/types/root/card/getCardPreview/helpers.d.ts +3 -4
  142. package/dist/types/root/card/getCardPreview/index.d.ts +24 -14
  143. package/dist/types/root/card/getCardStatus.d.ts +1 -0
  144. package/dist/types/root/card/index.d.ts +20 -18
  145. package/dist/types/root/cardView.d.ts +13 -8
  146. package/dist/types/root/inline/loader.d.ts +2 -0
  147. package/dist/types/root/inline/mediaInlineCard.d.ts +3 -5
  148. package/dist/types/root/inlinePlayer.d.ts +8 -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 +14 -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 +4 -2
  158. package/dist/types/root/ui/progressBar/styled.d.ts +3 -2
  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 +6 -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/dist/types/utils/viewportDetector.d.ts +13 -5
  173. package/example-helpers/developmentUseMessage.tsx +14 -0
  174. package/example-helpers/index.tsx +55 -4
  175. package/example-helpers/selectableCard.tsx +2 -1
  176. package/package.json +18 -16
  177. package/dist/cjs/root/card/cardSSRView.js +0 -112
  178. package/dist/cjs/root/card/getCardPreview/types.js +0 -5
  179. package/dist/cjs/root/ui/Breakpoint.js +0 -13
  180. package/dist/cjs/root/ui/styledSSR.js +0 -108
  181. package/dist/cjs/utils/fileAttributesContext.js +0 -40
  182. package/dist/cjs/utils/lazyContent/index.js +0 -56
  183. package/dist/cjs/utils/lazyContent/styled.js +0 -23
  184. package/dist/es2019/root/card/cardSSRView.js +0 -92
  185. package/dist/es2019/root/card/getCardPreview/types.js +0 -1
  186. package/dist/es2019/root/ui/Breakpoint.js +0 -6
  187. package/dist/es2019/root/ui/styledSSR.js +0 -93
  188. package/dist/es2019/utils/fileAttributesContext.js +0 -19
  189. package/dist/es2019/utils/lazyContent/index.js +0 -18
  190. package/dist/es2019/utils/lazyContent/styled.js +0 -12
  191. package/dist/esm/root/card/cardSSRView.js +0 -91
  192. package/dist/esm/root/card/getCardPreview/types.js +0 -1
  193. package/dist/esm/root/ui/Breakpoint.js +0 -6
  194. package/dist/esm/root/ui/styledSSR.js +0 -76
  195. package/dist/esm/utils/fileAttributesContext.js +0 -18
  196. package/dist/esm/utils/lazyContent/index.js +0 -41
  197. package/dist/esm/utils/lazyContent/styled.js +0 -14
  198. package/dist/types/root/card/cardSSRView.d.ts +0 -13
  199. package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
  200. package/dist/types/root/ui/Breakpoint.d.ts +0 -4
  201. package/dist/types/root/ui/styledSSR.d.ts +0 -16
  202. package/dist/types/utils/fileAttributesContext.d.ts +0 -10
  203. package/dist/types/utils/lazyContent/index.d.ts +0 -11
  204. package/dist/types/utils/lazyContent/styled.d.ts +0 -5
@@ -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,15 +77,15 @@ 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
 
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; }
84
+ var _errors = require("../errors");
85
+
86
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
89
87
 
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; }
88
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
91
89
 
92
90
  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); }; }
93
91
 
@@ -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,21 @@ 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;
553
+ var didImageRender = this.state.didImageRender;
531
554
  return !!dataURI && /*#__PURE__*/_react.default.createElement(_imageRenderer.ImageRenderer, {
532
555
  dataURI: dataURI,
533
556
  mediaType: mediaType,
534
- mediaItemType: mediaItemType,
535
557
  previewOrientation: previewOrientation,
536
558
  alt: alt,
537
559
  resizeMode: resizeMode,
538
560
  onDisplayImage: onDisplayImage,
539
- onImageError: this.onImageLoadError,
540
- timeElapsedTillCommenced: timeElapsedTillCommenced
561
+ onImageLoad: this.onImageLoad,
562
+ onImageError: this.onImageError,
563
+ nativeLazyLoad: nativeLazyLoad,
564
+ forceSyncDisplay: forceSyncDisplay,
565
+ isImageVisible: forceSyncDisplay || didImageRender
541
566
  });
542
567
  }
543
568
  }, {
@@ -553,10 +578,10 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
553
578
  value: function renderMediaTypeIcon(hasTitleBox, iconMessage) {
554
579
  var metadata = this.props.metadata;
555
580
 
556
- var _ref9 = metadata || {},
557
- mediaType = _ref9.mediaType,
558
- mimeType = _ref9.mimeType,
559
- name = _ref9.name;
581
+ var _ref10 = metadata || {},
582
+ mediaType = _ref10.mediaType,
583
+ mimeType = _ref10.mimeType,
584
+ name = _ref10.name;
560
585
 
561
586
  return /*#__PURE__*/_react.default.createElement(_styled4.IconWrapper, {
562
587
  breakpoint: this.breakpoint,
@@ -56,8 +56,10 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
56
56
  }
57
57
 
58
58
  _this = _super.call.apply(_super, [this].concat(args));
59
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isMounted", false);
59
60
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
60
- MediaInlineCard: MediaInlineCardLoader.MediaInlineCard
61
+ MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
62
+ ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
61
63
  });
62
64
  return _this;
63
65
  }
@@ -72,13 +74,15 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
72
74
  while (1) {
73
75
  switch (_context.prev = _context.next) {
74
76
  case 0:
77
+ this.isMounted = true;
78
+
75
79
  if (this.state.MediaInlineCard) {
76
- _context.next = 16;
80
+ _context.next = 17;
77
81
  break;
78
82
  }
79
83
 
80
- _context.prev = 1;
81
- _context.next = 4;
84
+ _context.prev = 2;
85
+ _context.next = 5;
82
86
  return Promise.all([Promise.resolve().then(function () {
83
87
  return _interopRequireWildcard(require('@atlaskit/media-client'));
84
88
  }), Promise.resolve().then(function () {
@@ -87,7 +91,7 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
87
91
  return _interopRequireWildcard(require('../media-card-analytics-error-boundary'));
88
92
  })]);
89
93
 
90
- case 4:
94
+ case 5:
91
95
  _yield$Promise$all = _context.sent;
92
96
  _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 3);
93
97
  mediaClient = _yield$Promise$all2[0];
@@ -95,23 +99,27 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
95
99
  mediaCardErrorBoundaryModule = _yield$Promise$all2[2];
96
100
  MediaInlineCardLoader.MediaInlineCard = mediaClient.withMediaClient(cardModule.MediaInlineCard);
97
101
  MediaInlineCardLoader.ErrorBoundary = mediaCardErrorBoundaryModule.default;
98
- this.setState({
99
- MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
100
- ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
101
- });
102
- _context.next = 16;
102
+
103
+ if (this.isMounted) {
104
+ this.setState({
105
+ MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
106
+ ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
107
+ });
108
+ }
109
+
110
+ _context.next = 17;
103
111
  break;
104
112
 
105
- case 14:
106
- _context.prev = 14;
107
- _context.t0 = _context["catch"](1);
113
+ case 15:
114
+ _context.prev = 15;
115
+ _context.t0 = _context["catch"](2);
108
116
 
109
- case 16:
117
+ case 17:
110
118
  case "end":
111
119
  return _context.stop();
112
120
  }
113
121
  }
114
- }, _callee, this, [[1, 14]]);
122
+ }, _callee, this, [[2, 15]]);
115
123
  }));
116
124
 
117
125
  function componentDidMount() {
@@ -120,6 +128,30 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
120
128
 
121
129
  return componentDidMount;
122
130
  }()
131
+ }, {
132
+ key: "componentWillUnmount",
133
+ value: function () {
134
+ var _componentWillUnmount = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
135
+ return _regenerator.default.wrap(function _callee2$(_context2) {
136
+ while (1) {
137
+ switch (_context2.prev = _context2.next) {
138
+ case 0:
139
+ this.isMounted = false;
140
+
141
+ case 1:
142
+ case "end":
143
+ return _context2.stop();
144
+ }
145
+ }
146
+ }, _callee2, this);
147
+ }));
148
+
149
+ function componentWillUnmount() {
150
+ return _componentWillUnmount.apply(this, arguments);
151
+ }
152
+
153
+ return componentWillUnmount;
154
+ }()
123
155
  }, {
124
156
  key: "render",
125
157
  value: function render() {
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.MediaInlineCard = exports.MediaInlineCardInternal = void 0;
10
+ exports.MediaInlineCardInternal = exports.MediaInlineCard = void 0;
11
11
 
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
 
@@ -15,7 +15,7 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _reactDom = _interopRequireDefault(require("react-dom"));
17
17
 
18
- var _reactIntl = require("react-intl");
18
+ var _reactIntlNext = require("react-intl-next");
19
19
 
20
20
  var _mediaUi = require("@atlaskit/media-ui");
21
21
 
@@ -87,46 +87,64 @@ var MediaInlineCardInternal = function MediaInlineCardInternal(_ref) {
87
87
  return null;
88
88
  };
89
89
 
90
+ var renderContent = function renderContent(children) {
91
+ return intl ? children : /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
92
+ locale: "en"
93
+ }, children);
94
+ };
95
+
96
+ var defaultIntl = (0, _reactIntlNext.createIntl)({
97
+ locale: 'en'
98
+ });
90
99
  (0, _react.useEffect)(function () {
91
- mediaClient.file.getFileState(identifier.id, {
100
+ var subscription = mediaClient.file.getFileState(identifier.id, {
92
101
  collectionName: identifier.collectionName
93
102
  }).subscribe({
94
103
  next: function next(fileState) {
95
104
  setFileState(fileState);
105
+ setIsErrored(false);
96
106
  },
97
107
  error: function error() {
98
108
  setIsErrored(true);
99
109
  }
100
110
  });
111
+ return function () {
112
+ subscription.unsubscribe();
113
+ };
101
114
  }, [identifier.collectionName, identifier.id, mediaClient.file]);
102
115
 
103
116
  if (!fileState) {
104
117
  return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardLoadingView, {
105
- message: intl.formatMessage(_mediaUi.messages.loading_file)
118
+ message: (intl || defaultIntl).formatMessage(_mediaUi.messages.loading_file),
119
+ isSelected: isSelected
106
120
  });
107
121
  }
108
122
 
109
123
  if (isErrored) {
110
124
  return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardErroredView, {
111
- message: intl.formatMessage(_mediaUi.messages.couldnt_load_file)
125
+ message: (intl || defaultIntl).formatMessage(_mediaUi.messages.couldnt_load_file),
126
+ isSelected: isSelected
112
127
  });
113
128
  }
114
129
 
115
130
  if (fileState.status === 'error') {
116
131
  return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardErroredView, {
117
- message: fileState.message || ''
132
+ message: fileState.message || '',
133
+ isSelected: isSelected
118
134
  });
119
135
  }
120
136
 
121
137
  if (fileState.status === 'failed-processing') {
122
138
  return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardErroredView, {
123
- message: intl.formatMessage(_mediaUi.messages.couldnt_load_file)
139
+ message: (intl || defaultIntl).formatMessage(_mediaUi.messages.couldnt_load_file),
140
+ isSelected: isSelected
124
141
  });
125
142
  }
126
143
 
127
144
  if (fileState.status === 'uploading') {
128
145
  return /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardLoadingView, {
129
- message: fileState.name
146
+ message: fileState.name,
147
+ isSelected: isSelected
130
148
  });
131
149
  }
132
150
 
@@ -152,17 +170,20 @@ var MediaInlineCardInternal = function MediaInlineCardInternal(_ref) {
152
170
  formattedDate = (0, _formatDate.formatDate)(fileState.createdAt, locale);
153
171
  }
154
172
 
155
- return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
173
+ return renderContent( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_tooltip.default, {
156
174
  position: "bottom",
157
- content: formattedDate
175
+ content: formattedDate,
176
+ tag: "span"
158
177
  }, /*#__PURE__*/_react.default.createElement(_mediaUi.MediaInlineCardLoadedView, {
159
178
  icon: linkIcon,
160
179
  title: name,
161
180
  onClick: onMediaInlineCardClick,
162
181
  isSelected: isSelected
163
- }), mediaViewer);
182
+ })), mediaViewer));
164
183
  };
165
184
 
166
185
  exports.MediaInlineCardInternal = MediaInlineCardInternal;
167
- var MediaInlineCard = (0, _reactIntl.injectIntl)(MediaInlineCardInternal);
186
+ var MediaInlineCard = (0, _reactIntlNext.injectIntl)(MediaInlineCardInternal, {
187
+ enforceContext: false
188
+ });
168
189
  exports.MediaInlineCard = MediaInlineCard;