@atlaskit/media-card 77.12.4 → 78.0.1

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 (151) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/card/card.js +20 -1039
  3. package/dist/cjs/card/cardLoader.js +2 -2
  4. package/dist/cjs/card/cardView.js +255 -417
  5. package/dist/cjs/card/cardWithMediaClient.js +5 -9
  6. package/dist/cjs/card/{v2/cardviews → cardviews}/cardViewWrapper.js +8 -8
  7. package/dist/cjs/card/{v2/cardviews → cardviews}/errorCardView.js +6 -6
  8. package/dist/cjs/card/{v2/cardviews → cardviews}/iconCardView.js +5 -5
  9. package/dist/cjs/card/{v2/cardviews → cardviews}/imageCardView.js +5 -5
  10. package/dist/cjs/card/{v2/cardviews → cardviews}/index.js +2 -2
  11. package/dist/cjs/card/{v2/cardviews → cardviews}/loadingCardView.js +3 -3
  12. package/dist/cjs/card/{v2/cardviews → cardviews}/processingCardView.js +4 -4
  13. package/dist/cjs/card/{v2/cardviews → cardviews}/videoCardView.js +7 -7
  14. package/dist/cjs/card/{v2/externalImageCard.js → externalImageCard.js} +11 -11
  15. package/dist/cjs/card/{v2/fileCard.js → fileCard.js} +18 -18
  16. package/dist/cjs/card/index.js +2 -2
  17. package/dist/cjs/card/inlinePlayer.js +184 -267
  18. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  19. package/dist/cjs/card/{v2/svgView → svgView}/svgView.js +9 -9
  20. package/dist/cjs/inline/loader.js +1 -1
  21. package/dist/cjs/utils/ufoExperiences.js +1 -1
  22. package/dist/es2019/card/card.js +20 -1023
  23. package/dist/es2019/card/cardLoader.js +2 -2
  24. package/dist/es2019/card/cardView.js +252 -403
  25. package/dist/es2019/card/cardWithMediaClient.js +6 -10
  26. package/dist/es2019/card/{v2/cardviews → cardviews}/cardViewWrapper.js +8 -8
  27. package/dist/es2019/card/{v2/cardviews → cardviews}/errorCardView.js +6 -6
  28. package/dist/es2019/card/{v2/cardviews → cardviews}/iconCardView.js +5 -5
  29. package/dist/es2019/card/{v2/cardviews → cardviews}/imageCardView.js +5 -5
  30. package/dist/es2019/card/{v2/cardviews → cardviews}/index.js +2 -2
  31. package/dist/es2019/card/{v2/cardviews → cardviews}/loadingCardView.js +3 -3
  32. package/dist/es2019/card/{v2/cardviews → cardviews}/processingCardView.js +4 -4
  33. package/dist/es2019/card/{v2/cardviews → cardviews}/videoCardView.js +7 -7
  34. package/dist/es2019/card/{v2/externalImageCard.js → externalImageCard.js} +11 -11
  35. package/dist/es2019/card/{v2/fileCard.js → fileCard.js} +18 -18
  36. package/dist/es2019/card/index.js +1 -1
  37. package/dist/es2019/card/inlinePlayer.js +127 -208
  38. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  39. package/dist/es2019/card/{v2/svgView → svgView}/svgView.js +9 -9
  40. package/dist/es2019/inline/loader.js +1 -1
  41. package/dist/es2019/utils/ufoExperiences.js +1 -1
  42. package/dist/esm/card/card.js +21 -1040
  43. package/dist/esm/card/cardLoader.js +2 -2
  44. package/dist/esm/card/cardView.js +251 -416
  45. package/dist/esm/card/cardWithMediaClient.js +6 -10
  46. package/dist/esm/card/{v2/cardviews → cardviews}/cardViewWrapper.js +8 -8
  47. package/dist/esm/card/{v2/cardviews → cardviews}/errorCardView.js +6 -6
  48. package/dist/esm/card/{v2/cardviews → cardviews}/iconCardView.js +5 -5
  49. package/dist/esm/card/{v2/cardviews → cardviews}/imageCardView.js +5 -5
  50. package/dist/esm/card/{v2/cardviews → cardviews}/index.js +2 -2
  51. package/dist/esm/card/{v2/cardviews → cardviews}/loadingCardView.js +3 -3
  52. package/dist/esm/card/{v2/cardviews → cardviews}/processingCardView.js +4 -4
  53. package/dist/esm/card/{v2/cardviews → cardviews}/videoCardView.js +7 -7
  54. package/dist/esm/card/{v2/externalImageCard.js → externalImageCard.js} +11 -11
  55. package/dist/esm/card/{v2/fileCard.js → fileCard.js} +18 -18
  56. package/dist/esm/card/index.js +1 -1
  57. package/dist/esm/card/inlinePlayer.js +185 -269
  58. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  59. package/dist/esm/card/{v2/svgView → svgView}/svgView.js +9 -9
  60. package/dist/esm/inline/loader.js +1 -1
  61. package/dist/esm/utils/ufoExperiences.js +1 -1
  62. package/dist/types/card/card.d.ts +5 -66
  63. package/dist/types/card/cardLoader.d.ts +1 -1
  64. package/dist/types/card/cardView.d.ts +23 -45
  65. package/dist/types/card/cardWithMediaClient.d.ts +1 -1
  66. package/dist/types/card/{v2/cardviews → cardviews}/cardViewWrapper.d.ts +3 -3
  67. package/dist/types/card/{v2/cardviews → cardviews}/errorCardView.d.ts +1 -1
  68. package/dist/{types-ts4.5/card/v2 → types/card}/cardviews/iconCardView.d.ts +1 -1
  69. package/dist/{types-ts4.5/card/v2 → types/card}/cardviews/imageCardView.d.ts +1 -1
  70. package/dist/{types-ts4.5/card/v2 → types/card}/cardviews/index.d.ts +5 -5
  71. package/dist/types/card/{v2/cardviews → cardviews}/videoCardView.d.ts +1 -1
  72. package/dist/types/card/{v2/externalImageCard.d.ts → externalImageCard.d.ts} +1 -1
  73. package/dist/types/card/{v2/fileCard.d.ts → fileCard.d.ts} +2 -2
  74. package/dist/types/card/index.d.ts +1 -1
  75. package/dist/types/card/inlinePlayer.d.ts +2 -31
  76. package/dist/types/card/{v2/svgView → svgView}/errors.d.ts +1 -1
  77. package/dist/{types-ts4.5/card/v2 → types/card}/svgView/svgView.d.ts +2 -2
  78. package/dist/types-ts4.5/card/card.d.ts +5 -66
  79. package/dist/types-ts4.5/card/cardLoader.d.ts +1 -1
  80. package/dist/types-ts4.5/card/cardView.d.ts +23 -45
  81. package/dist/types-ts4.5/card/cardWithMediaClient.d.ts +1 -1
  82. package/dist/types-ts4.5/card/{v2/cardviews → cardviews}/cardViewWrapper.d.ts +3 -3
  83. package/dist/types-ts4.5/card/{v2/cardviews → cardviews}/errorCardView.d.ts +1 -1
  84. package/dist/{types/card/v2 → types-ts4.5/card}/cardviews/iconCardView.d.ts +1 -1
  85. package/dist/{types/card/v2 → types-ts4.5/card}/cardviews/imageCardView.d.ts +1 -1
  86. package/dist/{types/card/v2 → types-ts4.5/card}/cardviews/index.d.ts +5 -5
  87. package/dist/types-ts4.5/card/{v2/cardviews → cardviews}/videoCardView.d.ts +1 -1
  88. package/dist/types-ts4.5/card/{v2/externalImageCard.d.ts → externalImageCard.d.ts} +1 -1
  89. package/dist/types-ts4.5/card/{v2/fileCard.d.ts → fileCard.d.ts} +2 -2
  90. package/dist/types-ts4.5/card/index.d.ts +1 -1
  91. package/dist/types-ts4.5/card/inlinePlayer.d.ts +2 -31
  92. package/dist/types-ts4.5/card/{v2/svgView → svgView}/errors.d.ts +1 -1
  93. package/dist/{types/card/v2 → types-ts4.5/card}/svgView/svgView.d.ts +2 -2
  94. package/package.json +3 -6
  95. package/dist/cjs/card/cardSwitcher.js +0 -15
  96. package/dist/cjs/card/v2/cardV2.js +0 -41
  97. package/dist/cjs/card/v2/cardV2Loader.js +0 -36
  98. package/dist/cjs/card/v2/cardViewV2.js +0 -298
  99. package/dist/cjs/card/v2/cardWithMediaClientV2.js +0 -34
  100. package/dist/cjs/card/v2/inlinePlayerLazyV2.js +0 -35
  101. package/dist/cjs/card/v2/inlinePlayerV2.js +0 -224
  102. package/dist/es2019/card/cardSwitcher.js +0 -8
  103. package/dist/es2019/card/v2/cardV2.js +0 -33
  104. package/dist/es2019/card/v2/cardV2Loader.js +0 -18
  105. package/dist/es2019/card/v2/cardViewV2.js +0 -294
  106. package/dist/es2019/card/v2/cardWithMediaClientV2.js +0 -25
  107. package/dist/es2019/card/v2/inlinePlayerLazyV2.js +0 -10
  108. package/dist/es2019/card/v2/inlinePlayerV2.js +0 -166
  109. package/dist/esm/card/cardSwitcher.js +0 -8
  110. package/dist/esm/card/v2/cardV2.js +0 -34
  111. package/dist/esm/card/v2/cardV2Loader.js +0 -24
  112. package/dist/esm/card/v2/cardViewV2.js +0 -290
  113. package/dist/esm/card/v2/cardWithMediaClientV2.js +0 -27
  114. package/dist/esm/card/v2/inlinePlayerLazyV2.js +0 -23
  115. package/dist/esm/card/v2/inlinePlayerV2.js +0 -214
  116. package/dist/types/card/cardSwitcher.d.ts +0 -4
  117. package/dist/types/card/v2/cardV2.d.ts +0 -7
  118. package/dist/types/card/v2/cardV2Loader.d.ts +0 -4
  119. package/dist/types/card/v2/cardViewV2.d.ts +0 -59
  120. package/dist/types/card/v2/cardWithMediaClientV2.d.ts +0 -3
  121. package/dist/types/card/v2/inlinePlayerLazyV2.d.ts +0 -2
  122. package/dist/types/card/v2/inlinePlayerV2.d.ts +0 -24
  123. package/dist/types-ts4.5/card/cardSwitcher.d.ts +0 -4
  124. package/dist/types-ts4.5/card/v2/cardV2.d.ts +0 -7
  125. package/dist/types-ts4.5/card/v2/cardV2Loader.d.ts +0 -4
  126. package/dist/types-ts4.5/card/v2/cardViewV2.d.ts +0 -59
  127. package/dist/types-ts4.5/card/v2/cardWithMediaClientV2.d.ts +0 -3
  128. package/dist/types-ts4.5/card/v2/inlinePlayerLazyV2.d.ts +0 -2
  129. package/dist/types-ts4.5/card/v2/inlinePlayerV2.d.ts +0 -24
  130. /package/dist/cjs/card/{v2/performance.js → performance.js} +0 -0
  131. /package/dist/cjs/card/{v2/svgView → svgView}/errors.js +0 -0
  132. /package/dist/cjs/card/{v2/svgView → svgView}/helpers.js +0 -0
  133. /package/dist/cjs/card/{v2/svgView → svgView}/index.js +0 -0
  134. /package/dist/es2019/card/{v2/performance.js → performance.js} +0 -0
  135. /package/dist/es2019/card/{v2/svgView → svgView}/errors.js +0 -0
  136. /package/dist/es2019/card/{v2/svgView → svgView}/helpers.js +0 -0
  137. /package/dist/es2019/card/{v2/svgView → svgView}/index.js +0 -0
  138. /package/dist/esm/card/{v2/performance.js → performance.js} +0 -0
  139. /package/dist/esm/card/{v2/svgView → svgView}/errors.js +0 -0
  140. /package/dist/esm/card/{v2/svgView → svgView}/helpers.js +0 -0
  141. /package/dist/esm/card/{v2/svgView → svgView}/index.js +0 -0
  142. /package/dist/types/card/{v2/cardviews → cardviews}/loadingCardView.d.ts +0 -0
  143. /package/dist/types/card/{v2/cardviews → cardviews}/processingCardView.d.ts +0 -0
  144. /package/dist/types/card/{v2/performance.d.ts → performance.d.ts} +0 -0
  145. /package/dist/types/card/{v2/svgView → svgView}/helpers.d.ts +0 -0
  146. /package/dist/types/card/{v2/svgView → svgView}/index.d.ts +0 -0
  147. /package/dist/types-ts4.5/card/{v2/cardviews → cardviews}/loadingCardView.d.ts +0 -0
  148. /package/dist/types-ts4.5/card/{v2/cardviews → cardviews}/processingCardView.d.ts +0 -0
  149. /package/dist/types-ts4.5/card/{v2/performance.d.ts → performance.d.ts} +0 -0
  150. /package/dist/types-ts4.5/card/{v2/svgView → svgView}/helpers.d.ts +0 -0
  151. /package/dist/types-ts4.5/card/{v2/svgView → svgView}/index.d.ts +0 -0
@@ -1,30 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.CardViewBase = exports.CardView = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
11
  var _react = require("@emotion/react");
16
- var _react2 = _interopRequireDefault(require("react"));
12
+ var _react2 = _interopRequireWildcard(require("react"));
17
13
  var _analyticsNext = require("@atlaskit/analytics-next");
18
14
  var _mimeTypeIcon = require("@atlaskit/media-ui/mime-type-icon");
19
15
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
20
16
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
21
17
  var _mediaUi = require("@atlaskit/media-ui");
22
- var _cardDimensions = require("../utils/cardDimensions");
23
- var _isValidPercentageUnit = require("../utils/isValidPercentageUnit");
24
- var _getElementDimension = require("../utils/getElementDimension");
25
18
  var _analytics = require("../utils/analytics");
26
19
  var _actions = require("./actions");
27
- var _styles = require("./ui/styles");
28
20
  var _imageRenderer = require("./ui/imageRenderer/imageRenderer");
29
21
  var _titleBox = require("./ui/titleBox/titleBox");
30
22
  var _failedTitleBox = require("./ui/titleBox/failedTitleBox");
@@ -34,422 +26,268 @@ var _tickBox = require("./ui/tickBox/tickBox");
34
26
  var _blanket = require("./ui/blanket/blanket");
35
27
  var _actionsBar = require("./ui/actionsBar/actionsBar");
36
28
  var _iconWrapper = require("./ui/iconWrapper/iconWrapper");
37
- var _iconMessage = require("./ui/iconMessage");
29
+ var _iconMessage2 = require("./ui/iconMessage");
38
30
  var _errors = require("../errors");
39
31
  var _wrapper = require("./ui/wrapper");
40
32
  var _classnames = require("./classnames");
33
+ var _useBreakpoint = require("./useBreakpoint");
41
34
  var _openMediaViewerButton = _interopRequireDefault(require("./ui/openMediaViewerButton/openMediaViewerButton"));
35
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
36
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
42
37
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
43
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
44
- 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); }; }
45
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /** @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
46
- /**
47
- * This is classic vanilla CardView class. To create an instance of class one would need to supply
48
- * `createAnalyticsEvent` prop to satisfy it's Analytics Events needs.
49
- */
50
- var CardViewBase = exports.CardViewBase = /*#__PURE__*/function (_React$Component) {
51
- (0, _inherits2.default)(CardViewBase, _React$Component);
52
- var _super = _createSuper(CardViewBase);
53
- function CardViewBase() {
54
- var _this;
55
- (0, _classCallCheck2.default)(this, CardViewBase);
56
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
57
- args[_key] = arguments[_key];
38
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
39
+ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
40
+ var innerRef = _ref.innerRef,
41
+ onImageLoad = _ref.onImageLoad,
42
+ onImageError = _ref.onImageError,
43
+ dimensions = _ref.dimensions,
44
+ onClick = _ref.onClick,
45
+ onMouseEnter = _ref.onMouseEnter,
46
+ testId = _ref.testId,
47
+ metadata = _ref.metadata,
48
+ status = _ref.status,
49
+ selected = _ref.selected,
50
+ selectable = _ref.selectable,
51
+ cardPreview = _ref.cardPreview,
52
+ mediaCardCursor = _ref.mediaCardCursor,
53
+ shouldHideTooltip = _ref.shouldHideTooltip,
54
+ progress = _ref.progress,
55
+ alt = _ref.alt,
56
+ resizeMode = _ref.resizeMode,
57
+ onDisplayImage = _ref.onDisplayImage,
58
+ nativeLazyLoad = _ref.nativeLazyLoad,
59
+ forceSyncDisplay = _ref.forceSyncDisplay,
60
+ actions = _ref.actions,
61
+ disableOverlay = _ref.disableOverlay,
62
+ titleBoxBgColor = _ref.titleBoxBgColor,
63
+ titleBoxIcon = _ref.titleBoxIcon,
64
+ error = _ref.error,
65
+ disableAnimation = _ref.disableAnimation,
66
+ _ref$openMediaViewerB = _ref.openMediaViewerButtonRef,
67
+ openMediaViewerButtonRef = _ref$openMediaViewerB === void 0 ? null : _ref$openMediaViewerB,
68
+ shouldOpenMediaViewer = _ref.shouldOpenMediaViewer,
69
+ overriddenCreationDate = _ref.overriddenCreationDate;
70
+ var _useState = (0, _react2.useState)(false),
71
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
72
+ didImageRender = _useState2[0],
73
+ setDidImageRender = _useState2[1];
74
+ var divRef = (0, _react2.useRef)(null);
75
+ var prevCardPreviewRef = (0, _react2.useRef)();
76
+ var breakpoint = (0, _useBreakpoint.useBreakpoint)(dimensions === null || dimensions === void 0 ? void 0 : dimensions.width, divRef);
77
+ (0, _react2.useEffect)(function () {
78
+ innerRef && !!divRef.current && innerRef(divRef.current);
79
+ }, [innerRef]);
80
+ (0, _react2.useEffect)(function () {
81
+ // We should only switch didImageRender to false when cardPreview goes undefined, not when it is changed. as this method could be triggered after onImageLoad callback, falling on a race condition
82
+ if (prevCardPreviewRef.current && !cardPreview) {
83
+ setDidImageRender(false);
58
84
  }
59
- _this = _super.call.apply(_super, [this].concat(args));
60
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
61
- didImageRender: false
62
- });
63
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "divRef", /*#__PURE__*/_react2.default.createRef());
64
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageLoad", function (prevCardPreview) {
65
- var _this$props = _this.props,
66
- onImageLoad = _this$props.onImageLoad,
67
- cardPreview = _this$props.cardPreview;
68
- if (prevCardPreview.dataURI !== (cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI)) {
69
- return;
70
- }
71
- // We render the icon & icon message always, even if there is cardPreview available.
72
- // If the image fails to load/render, the icon will remain, i.e. the user won't see a change until
73
- // the root card decides to chage status to error.
74
- // If the image renders successfully, we switch this variable to hide the icon & icon message
75
- // behind the thumbnail in case the image has transparency.
76
- // It is less likely that root component replaces a suceeded cardPreview for a failed one
77
- // than the opposite case. Therefore we prefer to hide the icon instead show when the image fails,
78
- // for a smoother transition
79
- _this.setState({
80
- didImageRender: true
81
- });
82
- onImageLoad && onImageLoad(cardPreview);
83
- });
84
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageError", function (cardPreview) {
85
- var onImageError = _this.props.onImageError;
86
- _this.setState({
87
- didImageRender: false
88
- });
89
- onImageError && onImageError(cardPreview);
90
- });
91
- // If the dimensions.width is a percentage, we need to transform it
92
- // into a pixel value in order to get the right breakpoints applied.
93
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "saveElementWidth", function () {
94
- var dimensions = _this.props.dimensions;
95
- if (!dimensions) {
96
- return;
97
- }
98
- var width = dimensions.width;
99
- if (width && (0, _isValidPercentageUnit.isValidPercentageUnit)(width) && !!_this.divRef.current) {
100
- var elementWidth = (0, _getElementDimension.getElementDimension)(_this.divRef.current, 'width');
101
- _this.setState({
102
- elementWidth: elementWidth
103
- });
104
- }
105
- });
106
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getRenderConfigByStatus", function () {
107
- var _this$props2 = _this.props,
108
- cardPreview = _this$props2.cardPreview,
109
- status = _this$props2.status,
110
- metadata = _this$props2.metadata,
111
- disableOverlay = _this$props2.disableOverlay,
112
- error = _this$props2.error,
113
- selectable = _this$props2.selectable,
114
- disableAnimation = _this$props2.disableAnimation;
115
- var _ref = metadata || {},
116
- name = _ref.name,
117
- mediaType = _ref.mediaType;
118
- var didImageRender = _this.state.didImageRender;
119
- var isZeroSize = !!(metadata && metadata.size === 0);
120
- var defaultConfig = {
121
- renderTypeIcon: !didImageRender,
122
- renderImageRenderer: !!cardPreview,
123
- renderPlayButton: !!cardPreview && mediaType === 'video',
124
- renderBlanket: !disableOverlay,
125
- renderTitleBox: !disableOverlay && !!name,
126
- renderTickBox: !disableOverlay && !!selectable
127
- };
128
- switch (status) {
129
- case 'uploading':
130
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
131
- renderBlanket: !disableOverlay || mediaType !== 'video',
132
- isFixedBlanket: true,
133
- renderProgressBar: true
134
- });
135
- case 'processing':
136
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
137
- iconMessage: !didImageRender && !isZeroSize ? (0, _react.jsx)(_iconMessage.CreatingPreview, {
138
- disableAnimation: disableAnimation
139
- }) : undefined
140
- });
141
- case 'complete':
142
- return defaultConfig;
143
- case 'error':
144
- case 'failed-processing':
145
- var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
146
- renderTypeIcon: true,
147
- renderImageRenderer: false,
148
- renderTitleBox: false,
149
- renderPlayButton: false
150
- });
151
- var iconMessage;
152
- var customTitleMessage;
153
- var _ref2 = error || {},
154
- secondaryError = _ref2.secondaryError;
155
- if ((0, _errors.isRateLimitedError)(secondaryError) || (0, _errors.isPollingError)(secondaryError)) {
156
- iconMessage = (0, _react.jsx)(_iconMessage.PreviewCurrentlyUnavailable, null);
157
- } else if ((0, _errors.isUploadError)(error)) {
158
- iconMessage = (0, _react.jsx)(_iconMessage.FailedToUpload, null);
159
- customTitleMessage = _mediaUi.messages.failed_to_upload;
160
- } else if (!metadata) {
161
- iconMessage = (0, _react.jsx)(_iconMessage.FailedToLoad, null);
162
- } else {
163
- iconMessage = (0, _react.jsx)(_iconMessage.PreviewUnavailable, null);
164
- }
165
- if (!disableOverlay) {
166
- var renderFailedTitleBox = !name || !!customTitleMessage;
167
- return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
168
- renderTitleBox: !!name && !customTitleMessage,
169
- renderFailedTitleBox: renderFailedTitleBox,
170
- iconMessage: !renderFailedTitleBox ? iconMessage : undefined,
171
- customTitleMessage: customTitleMessage
172
- });
173
- }
174
- return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
175
- iconMessage: iconMessage
176
- });
177
- case 'loading-preview':
178
- case 'loading':
179
- default:
180
- return _objectSpread(_objectSpread({}, defaultConfig), {}, {
181
- renderPlayButton: false,
182
- renderTypeIcon: false,
183
- renderSpinner: !didImageRender
184
- });
185
- }
186
- });
187
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderContents", function () {
188
- var _this$getRenderConfig = _this.getRenderConfigByStatus(),
189
- renderTypeIcon = _this$getRenderConfig.renderTypeIcon,
190
- iconMessage = _this$getRenderConfig.iconMessage,
191
- renderImageRenderer = _this$getRenderConfig.renderImageRenderer,
192
- renderSpinner = _this$getRenderConfig.renderSpinner,
193
- renderPlayButton = _this$getRenderConfig.renderPlayButton,
194
- renderBlanket = _this$getRenderConfig.renderBlanket,
195
- renderProgressBar = _this$getRenderConfig.renderProgressBar,
196
- renderTitleBox = _this$getRenderConfig.renderTitleBox,
197
- renderFailedTitleBox = _this$getRenderConfig.renderFailedTitleBox,
198
- renderTickBox = _this$getRenderConfig.renderTickBox,
199
- isFixedBlanket = _this$getRenderConfig.isFixedBlanket,
200
- customTitleMessage = _this$getRenderConfig.customTitleMessage;
201
- var _this$props3 = _this.props,
202
- progress = _this$props3.progress,
203
- selected = _this$props3.selected,
204
- status = _this$props3.status,
205
- metadata = _this$props3.metadata;
206
- var _ref3 = metadata || {},
207
- name = _ref3.name;
208
- var hasTitleBox = !!renderTitleBox || !!renderFailedTitleBox;
209
- return (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)(_wrapper.ImageContainer, {
210
- testId: _classnames.fileCardImageViewSelector,
211
- mediaName: name,
212
- status: status,
213
- progress: progress,
214
- selected: selected ? true : undefined
215
- }, 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());
216
- });
217
- return _this;
218
- }
219
- (0, _createClass2.default)(CardViewBase, [{
220
- key: "componentDidMount",
221
- value: function componentDidMount() {
222
- this.saveElementWidth();
223
- var innerRef = this.props.innerRef;
224
- !!innerRef && !!this.divRef.current && innerRef(this.divRef.current);
225
- }
226
- }, {
227
- key: "componentDidUpdate",
228
- value: function componentDidUpdate(_ref4) {
229
- var prevCardPreview = _ref4.cardPreview;
230
- var cardPreview = this.props.cardPreview;
231
- // We should only switch didImageRender to false
232
- // when cardPreview goes undefined, not when it is updated.
233
- // as this method could be triggered after onImageLoad callback,
234
- // falling on a race condition
235
- !!prevCardPreview && !cardPreview && this.setState({
236
- didImageRender: false
237
- });
238
- }
239
- }, {
240
- key: "breakpoint",
241
- get: function get() {
242
- var width = this.state.elementWidth || (this.props.dimensions ? this.props.dimensions.width : '') || _cardDimensions.defaultImageCardDimensions.width;
243
- return (0, _styles.calcBreakpointSize)(parseInt("".concat(width), 10));
244
- }
245
- }, {
246
- key: "renderSpinner",
247
- value: function renderSpinner(hasTitleBox) {
248
- return (0, _react.jsx)(_iconWrapper.IconWrapper, {
249
- breakpoint: this.breakpoint,
250
- hasTitleBox: hasTitleBox
251
- }, (0, _react.jsx)(_spinner.default, {
252
- testId: 'media-card-loading',
253
- interactionName: 'media-card-loading'
254
- }));
255
- }
256
- }, {
257
- key: "shouldRenderPlayButton",
258
- value: function shouldRenderPlayButton() {
259
- var _this$props4 = this.props,
260
- metadata = _this$props4.metadata,
261
- cardPreview = _this$props4.cardPreview;
262
- var _ref5 = metadata || {},
263
- mediaType = _ref5.mediaType;
264
- if (mediaType !== 'video' || !cardPreview) {
265
- return false;
266
- }
267
- return true;
268
- }
269
- }, {
270
- key: "renderPlayButton",
271
- value: function renderPlayButton(hasTitleBox) {
272
- return (0, _react.jsx)(_iconWrapper.IconWrapper, {
273
- breakpoint: this.breakpoint,
274
- hasTitleBox: hasTitleBox
275
- }, (0, _react.jsx)(_playButton.PlayButton, null));
276
- }
277
-
278
- //This Blanket will provide a shadow backround for uploading status by
279
- //setting isFixed.
280
- }, {
281
- key: "renderBlanket",
282
- value: function renderBlanket(isFixed) {
283
- return (0, _react.jsx)(_blanket.Blanket, {
284
- isFixed: isFixed
285
- });
85
+ prevCardPreviewRef.current = cardPreview;
86
+ }, [cardPreview]);
87
+ var handleOnImageLoad = function handleOnImageLoad(prevCardPreview) {
88
+ if (prevCardPreview.dataURI !== (cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI)) {
89
+ return;
286
90
  }
287
- }, {
288
- key: "renderTitleBox",
289
- value: function renderTitleBox() {
290
- var _this$props5 = this.props,
291
- metadata = _this$props5.metadata,
292
- titleBoxBgColor = _this$props5.titleBoxBgColor,
293
- titleBoxIcon = _this$props5.titleBoxIcon,
294
- overriddenCreationDate = _this$props5.overriddenCreationDate;
295
- var _ref6 = metadata || {},
296
- name = _ref6.name,
297
- createdAt = _ref6.createdAt;
298
- return !!name && (0, _react.jsx)(_titleBox.TitleBox, {
299
- name: name,
300
- createdAt: overriddenCreationDate !== null && overriddenCreationDate !== void 0 ? overriddenCreationDate : createdAt,
301
- breakpoint: this.breakpoint,
302
- titleBoxIcon: titleBoxIcon,
303
- titleBoxBgColor: titleBoxBgColor
304
- });
91
+ /*
92
+ We render the icon & icon message always, even if there is cardPreview available.
93
+ If the image fails to load/render, the icon will remain, i.e. the user won't see a change until the root card decides to chage status to error.
94
+ If the image renders successfully, we switch this variable to hide the icon & icon message behind the thumbnail in case the image has transparency.
95
+ It is less likely that root component replaces a suceeded cardPreview for a failed one than the opposite case. Therefore we prefer to hide the icon instead show when the image fails, for a smoother transition
96
+ */
97
+ setDidImageRender(true);
98
+ onImageLoad === null || onImageLoad === void 0 || onImageLoad(cardPreview);
99
+ };
100
+ var handleOnImageError = function handleOnImageError(prevCardPreview) {
101
+ if (prevCardPreview.dataURI !== (cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI)) {
102
+ return;
305
103
  }
306
- }, {
307
- key: "renderFailedTitleBox",
308
- value: function renderFailedTitleBox(customMessage) {
309
- return (0, _react.jsx)(_failedTitleBox.FailedTitleBox, {
310
- breakpoint: this.breakpoint,
311
- customMessage: customMessage
312
- });
104
+ setDidImageRender(false);
105
+ onImageError === null || onImageError === void 0 || onImageError(cardPreview);
106
+ };
107
+ var shouldRenderPlayButton = function shouldRenderPlayButton() {
108
+ var _ref2 = metadata || {},
109
+ mediaType = _ref2.mediaType;
110
+ if (mediaType !== 'video' || !cardPreview) {
111
+ return false;
313
112
  }
314
- }, {
315
- key: "renderProgressBar",
316
- value: function renderProgressBar(positionBottom) {
317
- var progress = this.props.progress;
318
- return (0, _react.jsx)(_progressBar.ProgressBar, {
319
- progress: progress,
320
- breakpoint: this.breakpoint,
321
- positionBottom: positionBottom
322
- });
323
- }
324
- }, {
325
- key: "renderImageRenderer",
326
- value: function renderImageRenderer() {
327
- var _this$props6 = this.props,
328
- cardPreview = _this$props6.cardPreview,
329
- _this$props6$metadata = _this$props6.metadata,
330
- _this$props6$metadata2 = _this$props6$metadata === void 0 ? {} : _this$props6$metadata,
331
- _this$props6$metadata3 = _this$props6$metadata2.mediaType,
332
- mediaType = _this$props6$metadata3 === void 0 ? 'unknown' : _this$props6$metadata3,
333
- alt = _this$props6.alt,
334
- resizeMode = _this$props6.resizeMode,
335
- onDisplayImage = _this$props6.onDisplayImage,
336
- nativeLazyLoad = _this$props6.nativeLazyLoad,
337
- forceSyncDisplay = _this$props6.forceSyncDisplay;
338
- var _ref7 = this.props.metadata || {},
339
- name = _ref7.name;
340
- var altText = alt || name;
341
- return !!cardPreview && (0, _react.jsx)(_imageRenderer.ImageRenderer, {
342
- cardPreview: cardPreview,
343
- mediaType: mediaType,
344
- alt: altText,
345
- resizeMode: resizeMode,
346
- onDisplayImage: onDisplayImage,
347
- onImageLoad: this.onImageLoad,
348
- onImageError: this.onImageError,
349
- nativeLazyLoad: nativeLazyLoad,
350
- forceSyncDisplay: forceSyncDisplay
351
- });
352
- }
353
- }, {
354
- key: "renderTickBox",
355
- value: function renderTickBox() {
356
- var selected = this.props.selected;
357
- return (0, _react.jsx)(_tickBox.TickBox, {
358
- selected: selected
359
- });
360
- }
361
- }, {
362
- key: "renderMediaTypeIcon",
363
- value: function renderMediaTypeIcon(hasTitleBox, iconMessage) {
364
- var metadata = this.props.metadata;
365
- var _ref8 = metadata || {},
366
- mediaType = _ref8.mediaType,
367
- mimeType = _ref8.mimeType,
368
- name = _ref8.name;
369
- return (0, _react.jsx)(_iconWrapper.IconWrapper, {
370
- breakpoint: this.breakpoint,
371
- hasTitleBox: hasTitleBox
372
- }, (0, _react.jsx)(_mimeTypeIcon.MimeTypeIcon, {
373
- testId: 'media-card-file-type-icon',
374
- mediaType: mediaType,
375
- mimeType: mimeType,
376
- name: name
377
- }), iconMessage);
378
- }
379
- }, {
380
- key: "renderActionsBar",
381
- value: function renderActionsBar() {
382
- var _this$props7 = this.props,
383
- disableOverlay = _this$props7.disableOverlay,
384
- actions = _this$props7.actions,
385
- metadata = _this$props7.metadata;
386
- var actionsWithDetails = metadata && actions ? (0, _actions.attachDetailsToActions)(actions, metadata) : [];
387
- if (disableOverlay || !actions || actions.length === 0) {
388
- return null;
389
- }
390
- return (0, _react.jsx)(_actionsBar.ActionsBar, {
391
- filename: metadata === null || metadata === void 0 ? void 0 : metadata.name,
392
- actions: actionsWithDetails
393
- });
394
- }
395
- }, {
396
- key: "render",
397
- value: function render() {
398
- var _this$props8 = this.props,
399
- dimensions = _this$props8.dimensions,
400
- appearance = _this$props8.appearance,
401
- onClick = _this$props8.onClick,
402
- onMouseEnter = _this$props8.onMouseEnter,
403
- testId = _this$props8.testId,
404
- metadata = _this$props8.metadata,
405
- status = _this$props8.status,
406
- selected = _this$props8.selected,
407
- selectable = _this$props8.selectable,
408
- disableOverlay = _this$props8.disableOverlay,
409
- cardPreview = _this$props8.cardPreview,
410
- mediaCardCursor = _this$props8.mediaCardCursor,
411
- shouldHideTooltip = _this$props8.shouldHideTooltip,
412
- _this$props8$openMedi = _this$props8.openMediaViewerButtonRef,
413
- openMediaViewerButtonRef = _this$props8$openMedi === void 0 ? null : _this$props8$openMedi,
414
- shouldOpenMediaViewer = _this$props8.shouldOpenMediaViewer;
415
- var _ref9 = metadata || {},
416
- name = _ref9.name;
417
- var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
418
- var isPlayButtonClickable = !!(this.shouldRenderPlayButton() && disableOverlay);
419
- var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
420
- // Disable tooltip for Media Single
421
- var shouldDisplayTooltip = !disableOverlay && !shouldHideTooltip;
422
- return (0, _react.jsx)(_react2.default.Fragment, null, shouldOpenMediaViewer && (0, _react.jsx)(_openMediaViewerButton.default, {
423
- fileName: name !== null && name !== void 0 ? name : '',
424
- innerRef: openMediaViewerButtonRef,
425
- onClick: onClick
426
- }), (0, _react.jsx)(_wrapper.Wrapper, {
427
- testId: testId || 'media-card-view',
428
- dimensions: dimensions,
429
- appearance: appearance,
430
- onClick: onClick,
431
- onMouseEnter: onMouseEnter,
432
- innerRef: this.divRef,
433
- breakpoint: this.breakpoint,
434
- mediaCardCursor: mediaCardCursor,
435
- disableOverlay: !!disableOverlay,
436
- selected: !!selected,
437
- displayBackground: shouldDisplayBackground,
438
- isPlayButtonClickable: isPlayButtonClickable,
439
- isTickBoxSelectable: isTickBoxSelectable,
440
- shouldDisplayTooltip: shouldDisplayTooltip
441
- }, shouldDisplayTooltip ? (0, _react.jsx)(_tooltip.default, {
442
- content: name,
443
- position: "bottom",
444
- tag: 'div'
445
- }, this.renderContents()) : this.renderContents()));
113
+ return true;
114
+ };
115
+ var getRenderConfigByStatus = function getRenderConfigByStatus() {
116
+ var _ref3 = metadata || {},
117
+ name = _ref3.name,
118
+ mediaType = _ref3.mediaType;
119
+ var isZeroSize = metadata && metadata.size === 0;
120
+ var defaultConfig = {
121
+ renderTypeIcon: !didImageRender,
122
+ renderImageRenderer: !!cardPreview,
123
+ renderPlayButton: !!cardPreview && mediaType === 'video',
124
+ renderBlanket: !disableOverlay,
125
+ renderTitleBox: !disableOverlay && !!name,
126
+ renderTickBox: !disableOverlay && !!selectable
127
+ };
128
+ switch (status) {
129
+ case 'uploading':
130
+ return _objectSpread(_objectSpread({}, defaultConfig), {}, {
131
+ renderBlanket: !disableOverlay || mediaType !== 'video',
132
+ isFixedBlanket: true,
133
+ renderProgressBar: true
134
+ });
135
+ case 'processing':
136
+ return _objectSpread(_objectSpread({}, defaultConfig), {}, {
137
+ iconMessage: !didImageRender && !isZeroSize ? (0, _react.jsx)(_iconMessage2.CreatingPreview, {
138
+ disableAnimation: disableAnimation
139
+ }) : undefined
140
+ });
141
+ case 'complete':
142
+ return defaultConfig;
143
+ case 'error':
144
+ case 'failed-processing':
145
+ var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
146
+ renderTypeIcon: true,
147
+ renderImageRenderer: false,
148
+ renderTitleBox: false,
149
+ renderPlayButton: false
150
+ });
151
+ var _iconMessage;
152
+ var _customTitleMessage;
153
+ var _ref4 = error || {},
154
+ secondaryError = _ref4.secondaryError;
155
+ if ((0, _errors.isRateLimitedError)(secondaryError) || (0, _errors.isPollingError)(secondaryError)) {
156
+ _iconMessage = (0, _react.jsx)(_iconMessage2.PreviewCurrentlyUnavailable, null);
157
+ } else if ((0, _errors.isUploadError)(error)) {
158
+ _iconMessage = (0, _react.jsx)(_iconMessage2.FailedToUpload, null);
159
+ _customTitleMessage = _mediaUi.messages.failed_to_upload;
160
+ } else if (!metadata) {
161
+ _iconMessage = (0, _react.jsx)(_iconMessage2.FailedToLoad, null);
162
+ } else {
163
+ _iconMessage = (0, _react.jsx)(_iconMessage2.PreviewUnavailable, null);
164
+ }
165
+ if (!disableOverlay) {
166
+ var _renderFailedTitleBox = !name || !!_customTitleMessage;
167
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
168
+ renderTitleBox: !!name && !_customTitleMessage,
169
+ renderFailedTitleBox: _renderFailedTitleBox,
170
+ iconMessage: !_renderFailedTitleBox ? _iconMessage : undefined,
171
+ customTitleMessage: _customTitleMessage
172
+ });
173
+ }
174
+ return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
175
+ iconMessage: _iconMessage
176
+ });
177
+ case 'loading-preview':
178
+ case 'loading':
179
+ default:
180
+ return _objectSpread(_objectSpread({}, defaultConfig), {}, {
181
+ renderPlayButton: false,
182
+ renderTypeIcon: false,
183
+ renderSpinner: !didImageRender
184
+ });
446
185
  }
447
- }]);
448
- return CardViewBase;
449
- }(_react2.default.Component);
450
- (0, _defineProperty2.default)(CardViewBase, "defaultProps", {
451
- appearance: 'auto'
452
- });
186
+ };
187
+ var _getRenderConfigBySta = getRenderConfigByStatus(),
188
+ renderTypeIcon = _getRenderConfigBySta.renderTypeIcon,
189
+ iconMessage = _getRenderConfigBySta.iconMessage,
190
+ renderImageRenderer = _getRenderConfigBySta.renderImageRenderer,
191
+ renderSpinner = _getRenderConfigBySta.renderSpinner,
192
+ renderPlayButton = _getRenderConfigBySta.renderPlayButton,
193
+ renderBlanket = _getRenderConfigBySta.renderBlanket,
194
+ renderProgressBar = _getRenderConfigBySta.renderProgressBar,
195
+ renderTitleBox = _getRenderConfigBySta.renderTitleBox,
196
+ renderFailedTitleBox = _getRenderConfigBySta.renderFailedTitleBox,
197
+ renderTickBox = _getRenderConfigBySta.renderTickBox,
198
+ isFixedBlanket = _getRenderConfigBySta.isFixedBlanket,
199
+ customTitleMessage = _getRenderConfigBySta.customTitleMessage;
200
+ var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
201
+ var isPlayButtonClickable = shouldRenderPlayButton() && !!disableOverlay;
202
+ var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
203
+ // Disable tooltip for Media Single
204
+ var shouldDisplayTooltip = !disableOverlay && !shouldHideTooltip;
205
+ var hasTitleBox = !!(renderTitleBox || renderFailedTitleBox);
206
+ var _ref5 = metadata || {},
207
+ mediaType = _ref5.mediaType,
208
+ mimeType = _ref5.mimeType,
209
+ name = _ref5.name,
210
+ createdAt = _ref5.createdAt;
211
+ var actionsWithDetails = metadata && actions ? (0, _actions.attachDetailsToActions)(actions, metadata) : [];
212
+ var contents = (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)(_wrapper.ImageContainer, {
213
+ testId: _classnames.fileCardImageViewSelector,
214
+ mediaName: name,
215
+ status: status,
216
+ progress: progress,
217
+ selected: selected,
218
+ source: cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.source
219
+ }, renderTypeIcon && (0, _react.jsx)(_iconWrapper.IconWrapper, {
220
+ breakpoint: breakpoint,
221
+ hasTitleBox: hasTitleBox
222
+ }, (0, _react.jsx)(_mimeTypeIcon.MimeTypeIcon, {
223
+ testId: "media-card-file-type-icon",
224
+ mediaType: mediaType,
225
+ mimeType: mimeType,
226
+ name: name
227
+ }), iconMessage), renderSpinner && (0, _react.jsx)(_iconWrapper.IconWrapper, {
228
+ breakpoint: breakpoint,
229
+ hasTitleBox: hasTitleBox
230
+ }, (0, _react.jsx)(_spinner.default, {
231
+ testId: "media-card-loading",
232
+ interactionName: "media-card-loading"
233
+ })), renderImageRenderer && !!cardPreview && (0, _react.jsx)(_imageRenderer.ImageRenderer, {
234
+ cardPreview: cardPreview,
235
+ mediaType: (metadata === null || metadata === void 0 ? void 0 : metadata.mediaType) || 'unknown',
236
+ alt: alt || name,
237
+ resizeMode: resizeMode,
238
+ onDisplayImage: onDisplayImage,
239
+ onImageLoad: handleOnImageLoad,
240
+ onImageError: handleOnImageError,
241
+ nativeLazyLoad: nativeLazyLoad,
242
+ forceSyncDisplay: forceSyncDisplay
243
+ }), renderPlayButton && (0, _react.jsx)(_iconWrapper.IconWrapper, {
244
+ breakpoint: breakpoint,
245
+ hasTitleBox: hasTitleBox
246
+ }, (0, _react.jsx)(_playButton.PlayButton, null)), renderBlanket && (0, _react.jsx)(_blanket.Blanket, {
247
+ isFixed: isFixedBlanket
248
+ }), renderTitleBox && name && (0, _react.jsx)(_titleBox.TitleBox, {
249
+ name: name,
250
+ createdAt: overriddenCreationDate !== null && overriddenCreationDate !== void 0 ? overriddenCreationDate : createdAt,
251
+ breakpoint: breakpoint,
252
+ titleBoxIcon: titleBoxIcon,
253
+ titleBoxBgColor: titleBoxBgColor
254
+ }), renderFailedTitleBox && (0, _react.jsx)(_failedTitleBox.FailedTitleBox, {
255
+ breakpoint: breakpoint,
256
+ customMessage: customTitleMessage
257
+ }), renderProgressBar && (0, _react.jsx)(_progressBar.ProgressBar, {
258
+ progress: progress,
259
+ breakpoint: breakpoint,
260
+ positionBottom: !hasTitleBox
261
+ }), renderTickBox && (0, _react.jsx)(_tickBox.TickBox, {
262
+ selected: selected
263
+ })), disableOverlay || !actions || actions.length === 0 ? null : (0, _react.jsx)(_actionsBar.ActionsBar, {
264
+ filename: name,
265
+ actions: actionsWithDetails
266
+ }));
267
+ return (0, _react.jsx)(_react2.default.Fragment, null, shouldOpenMediaViewer && (0, _react.jsx)(_openMediaViewerButton.default, {
268
+ fileName: name !== null && name !== void 0 ? name : '',
269
+ innerRef: openMediaViewerButtonRef,
270
+ onClick: onClick
271
+ }), (0, _react.jsx)(_wrapper.Wrapper, {
272
+ testId: testId || 'media-card-view',
273
+ dimensions: dimensions,
274
+ onClick: onClick,
275
+ onMouseEnter: onMouseEnter,
276
+ innerRef: divRef,
277
+ breakpoint: breakpoint,
278
+ mediaCardCursor: mediaCardCursor,
279
+ disableOverlay: !!disableOverlay,
280
+ selected: !!selected,
281
+ displayBackground: shouldDisplayBackground,
282
+ isPlayButtonClickable: isPlayButtonClickable,
283
+ isTickBoxSelectable: isTickBoxSelectable,
284
+ shouldDisplayTooltip: shouldDisplayTooltip
285
+ }, shouldDisplayTooltip ? (0, _react.jsx)(_tooltip.default, {
286
+ content: name,
287
+ position: "bottom",
288
+ tag: "div"
289
+ }, contents) : contents));
290
+ };
453
291
  var CardView = exports.CardView = (0, _analyticsNext.withAnalyticsEvents)({
454
292
  onClick: (0, _analytics.createAndFireMediaCardEvent)({
455
293
  eventType: 'ui',