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