@atlaskit/media-card 77.4.7 → 77.4.9

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 (77) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/card/card.js +1 -1
  3. package/dist/cjs/card/cardView.js +11 -7
  4. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  5. package/dist/cjs/card/ui/titleBox/styles.js +2 -18
  6. package/dist/cjs/card/ui/titleBox/titleBoxComponents.js +1 -4
  7. package/dist/cjs/card/ui/wrapper/styles.js +2 -10
  8. package/dist/cjs/card/ui/wrapper/wrapper.js +1 -4
  9. package/dist/cjs/card/v2/cardV2.js +1 -1
  10. package/dist/cjs/card/v2/cardViewV2.js +0 -3
  11. package/dist/cjs/card/v2/externalImageCard.js +3 -3
  12. package/dist/cjs/card/v2/fileCard.js +16 -15
  13. package/dist/cjs/card/v2/useFilePreview.js +44 -20
  14. package/dist/cjs/inline/loader.js +1 -1
  15. package/dist/cjs/utils/getDataURIDimension.js +38 -1
  16. package/dist/cjs/utils/lightCards/lightCardWrappers.js +1 -4
  17. package/dist/cjs/utils/lightCards/styles.js +2 -14
  18. package/dist/cjs/utils/ufoExperiences.js +1 -1
  19. package/dist/es2019/card/card.js +1 -1
  20. package/dist/es2019/card/cardView.js +6 -1
  21. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  22. package/dist/es2019/card/ui/titleBox/styles.js +3 -19
  23. package/dist/es2019/card/ui/titleBox/titleBoxComponents.js +1 -4
  24. package/dist/es2019/card/ui/wrapper/styles.js +2 -10
  25. package/dist/es2019/card/ui/wrapper/wrapper.js +1 -4
  26. package/dist/es2019/card/v2/cardV2.js +1 -1
  27. package/dist/es2019/card/v2/cardViewV2.js +0 -2
  28. package/dist/es2019/card/v2/externalImageCard.js +3 -3
  29. package/dist/es2019/card/v2/fileCard.js +18 -17
  30. package/dist/es2019/card/v2/useFilePreview.js +46 -21
  31. package/dist/es2019/inline/loader.js +1 -1
  32. package/dist/es2019/utils/getDataURIDimension.js +39 -0
  33. package/dist/es2019/utils/lightCards/lightCardWrappers.js +1 -4
  34. package/dist/es2019/utils/lightCards/styles.js +4 -16
  35. package/dist/es2019/utils/ufoExperiences.js +1 -1
  36. package/dist/esm/card/card.js +1 -1
  37. package/dist/esm/card/cardView.js +11 -7
  38. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  39. package/dist/esm/card/ui/titleBox/styles.js +2 -18
  40. package/dist/esm/card/ui/titleBox/titleBoxComponents.js +1 -4
  41. package/dist/esm/card/ui/wrapper/styles.js +2 -10
  42. package/dist/esm/card/ui/wrapper/wrapper.js +1 -4
  43. package/dist/esm/card/v2/cardV2.js +1 -1
  44. package/dist/esm/card/v2/cardViewV2.js +0 -3
  45. package/dist/esm/card/v2/externalImageCard.js +3 -3
  46. package/dist/esm/card/v2/fileCard.js +18 -17
  47. package/dist/esm/card/v2/useFilePreview.js +45 -21
  48. package/dist/esm/inline/loader.js +1 -1
  49. package/dist/esm/utils/getDataURIDimension.js +38 -0
  50. package/dist/esm/utils/lightCards/lightCardWrappers.js +1 -4
  51. package/dist/esm/utils/lightCards/styles.js +3 -15
  52. package/dist/esm/utils/ufoExperiences.js +1 -1
  53. package/dist/types/card/ui/titleBox/styles.d.ts +1 -1
  54. package/dist/types/card/ui/titleBox/types.d.ts +0 -2
  55. package/dist/types/card/ui/wrapper/styles.d.ts +1 -1
  56. package/dist/types/card/ui/wrapper/types.d.ts +0 -2
  57. package/dist/types/card/v2/cardViewV2.d.ts +17 -6
  58. package/dist/types/card/v2/fileCard.d.ts +40 -6
  59. package/dist/types/card/v2/useFilePreview.d.ts +5 -9
  60. package/dist/types/utils/getDataURIDimension.d.ts +17 -0
  61. package/dist/types/utils/globalScope/globalScope.d.ts +2 -2
  62. package/dist/types/utils/globalScope/types.d.ts +1 -1
  63. package/dist/types/utils/lightCards/styles.d.ts +1 -1
  64. package/dist/types/utils/lightCards/types.d.ts +0 -2
  65. package/dist/types-ts4.5/card/ui/titleBox/styles.d.ts +1 -1
  66. package/dist/types-ts4.5/card/ui/titleBox/types.d.ts +0 -2
  67. package/dist/types-ts4.5/card/ui/wrapper/styles.d.ts +1 -1
  68. package/dist/types-ts4.5/card/ui/wrapper/types.d.ts +0 -2
  69. package/dist/types-ts4.5/card/v2/cardViewV2.d.ts +17 -6
  70. package/dist/types-ts4.5/card/v2/fileCard.d.ts +40 -6
  71. package/dist/types-ts4.5/card/v2/useFilePreview.d.ts +5 -9
  72. package/dist/types-ts4.5/utils/getDataURIDimension.d.ts +17 -0
  73. package/dist/types-ts4.5/utils/globalScope/globalScope.d.ts +2 -2
  74. package/dist/types-ts4.5/utils/globalScope/types.d.ts +1 -1
  75. package/dist/types-ts4.5/utils/lightCards/styles.d.ts +1 -1
  76. package/dist/types-ts4.5/utils/lightCards/types.d.ts +0 -2
  77. package/package.json +5 -2
@@ -1,24 +1,12 @@
1
1
  import { css } from '@emotion/react';
2
2
  import { center, borderRadius } from '@atlaskit/media-ui';
3
- import { themed } from '@atlaskit/theme/components';
4
- import { N20, DN50, N50, DN100 } from '@atlaskit/theme/colors';
3
+ import { N20, N50 } from '@atlaskit/theme/colors';
5
4
  export const wrapperStyles = ({
6
- dimensions,
7
- theme
5
+ dimensions
8
6
  }) => css`
9
7
  ${center}
10
- background: ${themed({
11
- light: `var(--ds-background-neutral, ${N20})`,
12
- dark: `var(--ds-background-neutral, ${DN50})`
13
- })({
14
- theme
15
- })};
16
- color: ${themed({
17
- light: `var(--ds-icon, ${N50})`,
18
- dark: `var(--ds-icon, ${DN100})`
19
- })({
20
- theme
21
- })};
8
+ background: ${`var(--ds-background-neutral, ${N20})`};
9
+ color: ${`var(--ds-icon, ${N50})`};
22
10
  ${borderRadius}
23
11
  max-height: 100%;
24
12
  max-width: 100%;
@@ -4,7 +4,7 @@ import { extractErrorInfo, getRenderErrorRequestMetadata } from './analytics';
4
4
  import { MediaCardError } from '../errors';
5
5
  import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
6
6
  const packageName = "@atlaskit/media-card";
7
- const packageVersion = "77.4.7";
7
+ const packageVersion = "77.4.9";
8
8
  let concurrentExperience;
9
9
  const getExperience = id => {
10
10
  if (!concurrentExperience) {
@@ -40,7 +40,7 @@ import { getMediaCardCursor } from '../utils/getMediaCardCursor';
40
40
  import { completeUfoExperience, startUfoExperience, abortUfoExperience } from '../utils/ufoExperiences';
41
41
  import { generateUniqueId } from '../utils/generateUniqueId';
42
42
  var packageName = "@atlaskit/media-card";
43
- var packageVersion = "77.4.7";
43
+ var packageVersion = "77.4.9";
44
44
  export var CardBase = /*#__PURE__*/function (_Component) {
45
45
  _inherits(CardBase, _Component);
46
46
  var _super = _createSuper(CardBase);
@@ -36,6 +36,7 @@ import { PreviewUnavailable, CreatingPreview, FailedToUpload, PreviewCurrentlyUn
36
36
  import { isUploadError, isRateLimitedError, isPollingError } from '../errors';
37
37
  import { Wrapper } from './ui/wrapper';
38
38
  import { fileCardImageViewSelector } from './classnames';
39
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
39
40
  /**
40
41
  * This is classic vanilla CardView class. To create an instance of class one would need to supply
41
42
  * `createAnalyticsEvent` prop to satisfy it's Analytics Events needs.
@@ -328,10 +329,13 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
328
329
  onDisplayImage = _this$props6.onDisplayImage,
329
330
  nativeLazyLoad = _this$props6.nativeLazyLoad,
330
331
  forceSyncDisplay = _this$props6.forceSyncDisplay;
332
+ var _ref7 = this.props.metadata || {},
333
+ name = _ref7.name;
334
+ var altText = getBooleanFF('platform.editor.a11y-media_er96o') ? alt || name : alt;
331
335
  return !!cardPreview && jsx(ImageRenderer, {
332
336
  cardPreview: cardPreview,
333
337
  mediaType: mediaType,
334
- alt: alt,
338
+ alt: altText,
335
339
  resizeMode: resizeMode,
336
340
  onDisplayImage: onDisplayImage,
337
341
  onImageLoad: this.onImageLoad,
@@ -352,10 +356,10 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
352
356
  key: "renderMediaTypeIcon",
353
357
  value: function renderMediaTypeIcon(hasTitleBox, iconMessage) {
354
358
  var metadata = this.props.metadata;
355
- var _ref7 = metadata || {},
356
- mediaType = _ref7.mediaType,
357
- mimeType = _ref7.mimeType,
358
- name = _ref7.name;
359
+ var _ref8 = metadata || {},
360
+ mediaType = _ref8.mediaType,
361
+ mimeType = _ref8.mimeType,
362
+ name = _ref8.name;
359
363
  return jsx(IconWrapper, {
360
364
  breakpoint: this.breakpoint,
361
365
  hasTitleBox: hasTitleBox
@@ -398,8 +402,8 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
398
402
  cardPreview = _this$props8.cardPreview,
399
403
  mediaCardCursor = _this$props8.mediaCardCursor,
400
404
  shouldHideTooltip = _this$props8.shouldHideTooltip;
401
- var _ref8 = metadata || {},
402
- name = _ref8.name;
405
+ var _ref9 = metadata || {},
406
+ name = _ref9.name;
403
407
  var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
404
408
  var isPlayButtonClickable = !!(this.shouldRenderPlayButton() && disableOverlay);
405
409
  var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
@@ -83,7 +83,7 @@ var WrappedMediaCardAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Compo
83
83
  }(React.Component);
84
84
  _defineProperty(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
85
85
  var packageName = "@atlaskit/media-card";
86
- var packageVersion = "77.4.7";
86
+ var packageVersion = "77.4.9";
87
87
  var MediaCardAnalyticsErrorBoundary = withMediaAnalyticsContext({
88
88
  packageVersion: packageVersion,
89
89
  packageName: packageName,
@@ -4,7 +4,6 @@ import { css } from '@emotion/react';
4
4
  import { responsiveSettings, getTitleBoxHeight, Breakpoint } from '../common';
5
5
  import { N0, N800 } from '@atlaskit/theme/colors';
6
6
  import { rgba } from '../styles';
7
- import { themed } from '@atlaskit/theme/components';
8
7
  var generateResponsiveStyles = function generateResponsiveStyles() {
9
8
  var breakpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Breakpoint.SMALL;
10
9
  var setting = responsiveSettings[breakpoint];
@@ -14,25 +13,10 @@ var generateResponsiveStyles = function generateResponsiveStyles() {
14
13
  return "height: ".concat(height, "px;\n padding: ").concat(verticalPadding, "px ").concat(horizontalPadding, "px;");
15
14
  };
16
15
  var HEX_REGEX = /^#[0-9A-F]{6}$/i;
17
- var BACKGROUND_COLOR_DARK = '#161a1d';
18
- var TEXT_COLOR_DARK = '#C7D1DB';
19
16
  export var titleBoxWrapperStyles = function titleBoxWrapperStyles(_ref) {
20
17
  var breakpoint = _ref.breakpoint,
21
- titleBoxBgColor = _ref.titleBoxBgColor,
22
- theme = _ref.theme;
23
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n bottom: 0;\n width: 100%;\n background-color: ", ";\n color: ", ";\n cursor: inherit;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n justify-content: center;\n ", "\n"])), themed({
24
- light: "var(--ds-surface, ".concat(rgba(titleBoxBgColor && HEX_REGEX.test(titleBoxBgColor) ? titleBoxBgColor : N0, 1), ")"),
25
- dark: "var(--ds-surface, ".concat(rgba(
26
- // theme does not contain this color, use constant instead
27
- titleBoxBgColor && HEX_REGEX.test(titleBoxBgColor) ? titleBoxBgColor : BACKGROUND_COLOR_DARK, 1), ")")
28
- })({
29
- theme: theme
30
- }), themed({
31
- light: "var(--ds-text, ".concat(N800, ")"),
32
- dark: "var(--ds-text, ".concat(TEXT_COLOR_DARK, ")")
33
- })({
34
- theme: theme
35
- }), generateResponsiveStyles(breakpoint));
18
+ titleBoxBgColor = _ref.titleBoxBgColor;
19
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: absolute;\n bottom: 0;\n width: 100%;\n background-color: ", ";\n color: ", ";\n cursor: inherit;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n justify-content: center;\n ", "\n"])), "var(--ds-surface, ".concat(rgba(titleBoxBgColor && HEX_REGEX.test(titleBoxBgColor) ? titleBoxBgColor : N0, 1), ")"), "var(--ds-text, ".concat(N800, ")"), generateResponsiveStyles(breakpoint));
36
20
  };
37
21
  titleBoxWrapperStyles.displayName = 'TitleBoxWrapper';
38
22
  var infoStyles = "white-space: nowrap;overflow: hidden;";
@@ -1,18 +1,15 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/react';
3
3
  import { errorMessageWrapperStyles, titleBoxFooterStyles, titleBoxHeaderStyles, titleBoxIconStyles, titleBoxWrapperStyles } from './styles';
4
- import { useGlobalTheme } from '@atlaskit/theme/components';
5
4
  export var TitleBoxWrapper = function TitleBoxWrapper(props) {
6
5
  var breakpoint = props.breakpoint,
7
6
  titleBoxBgColor = props.titleBoxBgColor;
8
- var theme = useGlobalTheme();
9
7
  return jsx("div", {
10
8
  id: "titleBoxWrapper",
11
9
  "data-testid": "media-title-box",
12
10
  css: titleBoxWrapperStyles({
13
11
  breakpoint: breakpoint,
14
- titleBoxBgColor: titleBoxBgColor,
15
- theme: theme
12
+ titleBoxBgColor: titleBoxBgColor
16
13
  })
17
14
  }, props.children);
18
15
  };
@@ -5,12 +5,10 @@ import { fontFamily } from '@atlaskit/theme/constants';
5
5
  import { borderRadius } from '@atlaskit/media-ui';
6
6
  import { N20 } from '@atlaskit/theme/colors';
7
7
  import { hideNativeBrowserTextSelectionStyles } from '@atlaskit/editor-shared-styles/selection';
8
- import { themed } from '@atlaskit/theme/components';
9
8
  import { transition } from '../styles';
10
9
  import { fixedBlanketStyles, blanketClassName } from '../blanket/styles';
11
10
  import { fixedActionBarStyles, actionsBarClassName } from '../actionsBar/styles';
12
11
  import { generateResponsiveStyles, getClickablePlayButtonStyles, getCursorStyle, getSelectableTickBoxStyles, getWrapperDimensions, getWrapperShadow } from '../styles';
13
- var BACKGROUND_COLOR_DARK = '#22272C';
14
12
  export var wrapperStyles = function wrapperStyles(_ref) {
15
13
  var breakpoint = _ref.breakpoint,
16
14
  dimensions = _ref.dimensions,
@@ -21,13 +19,7 @@ export var wrapperStyles = function wrapperStyles(_ref) {
21
19
  isPlayButtonClickable = _ref.isPlayButtonClickable,
22
20
  isTickBoxSelectable = _ref.isTickBoxSelectable,
23
21
  shouldDisplayTooltip = _ref.shouldDisplayTooltip,
24
- mediaCardCursor = _ref.mediaCardCursor,
25
- theme = _ref.theme;
26
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n position: relative;\n font-family: ", ";\n ", "\n ", "\n ", "\n ", "\n ", "\n ", ";\n ", "\n\n /* We use classnames from here exceptionally to be able to handle styles when the Card is on hover */\n ", "\n ", "\n &:hover .", " {\n ", "\n }\n &:hover .", " {\n ", "\n }\n\n /* Tooltip does not support percentage dimensions. We enforce them here */\n ", "\n"])), transition(), fontFamily(), getWrapperDimensions(dimensions, appearance), displayBackground && "background: ".concat(themed({
27
- light: "var(--ds-background-neutral, ".concat(N20, ")"),
28
- dark: "var(--ds-background-neutral, ".concat(BACKGROUND_COLOR_DARK, ")")
29
- })({
30
- theme: theme
31
- }), ";"), borderRadius, getCursorStyle(mediaCardCursor), getWrapperShadow(disableOverlay, selected), generateResponsiveStyles(breakpoint), hideNativeBrowserTextSelectionStyles, getClickablePlayButtonStyles(isPlayButtonClickable), getSelectableTickBoxStyles(isTickBoxSelectable), blanketClassName, fixedBlanketStyles, actionsBarClassName, fixedActionBarStyles, shouldDisplayTooltip && "> div { width: 100%; height: 100%; }");
22
+ mediaCardCursor = _ref.mediaCardCursor;
23
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n position: relative;\n font-family: ", ";\n ", "\n ", "\n ", "\n ", "\n ", "\n ", ";\n ", "\n\n /* We use classnames from here exceptionally to be able to handle styles when the Card is on hover */\n ", "\n ", "\n &:hover .", " {\n ", "\n }\n &:hover .", " {\n ", "\n }\n\n /* Tooltip does not support percentage dimensions. We enforce them here */\n ", "\n"])), transition(), fontFamily(), getWrapperDimensions(dimensions, appearance), displayBackground && "background: ".concat("var(--ds-background-neutral, ".concat(N20, ")"), ";"), borderRadius, getCursorStyle(mediaCardCursor), getWrapperShadow(disableOverlay, selected), generateResponsiveStyles(breakpoint), hideNativeBrowserTextSelectionStyles, getClickablePlayButtonStyles(isPlayButtonClickable), getSelectableTickBoxStyles(isTickBoxSelectable), blanketClassName, fixedBlanketStyles, actionsBarClassName, fixedActionBarStyles, shouldDisplayTooltip && "> div { width: 100%; height: 100%; }");
32
24
  };
33
25
  wrapperStyles.displayName = 'NewFileExperienceWrapper';
@@ -2,7 +2,6 @@
2
2
  import { jsx } from '@emotion/react';
3
3
  import { newFileExperienceClassName } from '../../cardConstants';
4
4
  import { wrapperStyles } from './styles';
5
- import { useGlobalTheme } from '@atlaskit/theme/components';
6
5
  export var Wrapper = function Wrapper(props) {
7
6
  var testId = props.testId,
8
7
  dimensions = props.dimensions,
@@ -18,7 +17,6 @@ export var Wrapper = function Wrapper(props) {
18
17
  isPlayButtonClickable = props.isPlayButtonClickable,
19
18
  isTickBoxSelectable = props.isTickBoxSelectable,
20
19
  shouldDisplayTooltip = props.shouldDisplayTooltip;
21
- var theme = useGlobalTheme();
22
20
  return jsx("div", {
23
21
  id: "newFileExperienceWrapper",
24
22
  className: newFileExperienceClassName,
@@ -33,8 +31,7 @@ export var Wrapper = function Wrapper(props) {
33
31
  isPlayButtonClickable: isPlayButtonClickable,
34
32
  isTickBoxSelectable: isTickBoxSelectable,
35
33
  shouldDisplayTooltip: shouldDisplayTooltip,
36
- mediaCardCursor: mediaCardCursor,
37
- theme: theme
34
+ mediaCardCursor: mediaCardCursor
38
35
  }),
39
36
  ref: innerRef,
40
37
  onClick: onClick,
@@ -9,7 +9,7 @@ import { IntlProvider, injectIntl } from 'react-intl-next';
9
9
  import { ExternalImageCard } from './externalImageCard';
10
10
  import { FileCard } from './fileCard';
11
11
  var packageName = "@atlaskit/media-card";
12
- var packageVersion = "77.4.7";
12
+ var packageVersion = "77.4.9";
13
13
  export var CardV2Base = function CardV2Base(_ref) {
14
14
  var identifier = _ref.identifier,
15
15
  otherProps = _objectWithoutProperties(_ref, _excluded);
@@ -32,8 +32,6 @@ export var CardViewV2Base = function CardViewV2Base(_ref) {
32
32
  onImageLoad = _ref.onImageLoad,
33
33
  onImageError = _ref.onImageError,
34
34
  dimensions = _ref.dimensions,
35
- _ref$appearance = _ref.appearance,
36
- appearance = _ref$appearance === void 0 ? 'auto' : _ref$appearance,
37
35
  onClick = _ref.onClick,
38
36
  onMouseEnter = _ref.onMouseEnter,
39
37
  testId = _ref.testId,
@@ -254,7 +252,6 @@ export var CardViewV2Base = function CardViewV2Base(_ref) {
254
252
  return jsx(Wrapper, {
255
253
  testId: testId || 'media-card-view',
256
254
  dimensions: dimensions,
257
- appearance: appearance,
258
255
  onClick: onClick,
259
256
  onMouseEnter: onMouseEnter,
260
257
  innerRef: divRef,
@@ -13,6 +13,7 @@ import { generateUniqueId } from '../../utils/generateUniqueId';
13
13
  import { getMediaCardCursor } from '../../utils/getMediaCardCursor';
14
14
  import { abortUfoExperience, completeUfoExperience, startUfoExperience } from '../../utils/ufoExperiences';
15
15
  import { useCurrentValueRef } from '../../utils/useCurrentValueRef';
16
+ import { getDefaultCardDimensions } from '../../utils/cardDimensions';
16
17
  import { usePrevious } from '../../utils/usePrevious';
17
18
  import { fireCommencedEvent, fireCopiedEvent, fireOperationalEvent, fireScreenEvent } from '../cardAnalytics';
18
19
  import { CardViewV2 } from './cardViewV2';
@@ -42,6 +43,7 @@ export var ExternalImageCard = function ExternalImageCard(_ref) {
42
43
  _onClick = _ref.onClick,
43
44
  _onMouseEnter = _ref.onMouseEnter,
44
45
  createAnalyticsEvent = _ref.createAnalyticsEvent;
46
+ var cardDimensions = dimensions || getDefaultCardDimensions(appearance);
45
47
  var internalOccurrenceKey = useMemo(function () {
46
48
  return generateUniqueId();
47
49
  }, []);
@@ -223,9 +225,8 @@ export var ExternalImageCard = function ExternalImageCard(_ref) {
223
225
  metadata: metadata,
224
226
  cardPreview: cardPreview,
225
227
  alt: alt,
226
- appearance: appearance,
227
228
  resizeMode: resizeMode,
228
- dimensions: dimensions,
229
+ dimensions: cardDimensions,
229
230
  actions: actions,
230
231
  selectable: selectable,
231
232
  selected: selected,
@@ -263,7 +264,6 @@ export var ExternalImageCard = function ExternalImageCard(_ref) {
263
264
  },
264
265
  innerRef: setCardElement,
265
266
  testId: testId,
266
- featureFlags: featureFlags,
267
267
  titleBoxBgColor: titleBoxBgColor,
268
268
  titleBoxIcon: titleBoxIcon,
269
269
  onImageError: function onImageError(newCardPreview) {
@@ -5,7 +5,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
5
5
  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; }
6
6
  import DownloadIcon from '@atlaskit/icon/glyph/download';
7
7
  import { globalMediaEventEmitter, isImageRepresentationReady, RECENTS_COLLECTION } from '@atlaskit/media-client';
8
- import { MediaFileStateError, useFileState } from '@atlaskit/media-client-react';
8
+ import { MediaFileStateError, useFileState, useMediaClient } from '@atlaskit/media-client-react';
9
9
  import { getRandomHex, isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
10
10
  import { MediaViewer } from '@atlaskit/media-viewer';
11
11
  import React, { Suspense, useEffect, useMemo, useRef, useState } from 'react';
@@ -13,7 +13,7 @@ import ReactDOM from 'react-dom';
13
13
  import { MediaCardError } from '../../errors';
14
14
  import getDocument from '../../utils/document';
15
15
  import { generateUniqueId } from '../../utils/generateUniqueId';
16
- import { getRequestedDimensions } from '../../utils/getDataURIDimension';
16
+ import { resolveCardPreviewDimensions } from '../../utils/getDataURIDimension';
17
17
  import { getMediaCardCursor } from '../../utils/getMediaCardCursor';
18
18
  import { getFileDetails } from '../../utils/metadata';
19
19
  import { abortUfoExperience, completeUfoExperience, startUfoExperience } from '../../utils/ufoExperiences';
@@ -21,6 +21,7 @@ import { useCurrentValueRef } from '../../utils/useCurrentValueRef';
21
21
  import { usePrevious } from '../../utils/usePrevious';
22
22
  import { videoIsPlayable } from '../../utils/videoIsPlayable';
23
23
  import { ViewportDetector } from '../../utils/viewportDetector';
24
+ import { getDefaultCardDimensions } from '../../utils/cardDimensions';
24
25
  import { fireCommencedEvent, fireCopiedEvent, fireNonCriticalErrorEvent, fireOperationalEvent, fireScreenEvent } from '../cardAnalytics';
25
26
  import { isSSRPreview } from '../getCardPreview';
26
27
  import { CardViewV2 } from './cardViewV2';
@@ -39,7 +40,6 @@ export var FileCard = function FileCard(_ref) {
39
40
  featureFlags = _ref$featureFlags === void 0 ? {} : _ref$featureFlags,
40
41
  identifier = _ref.identifier,
41
42
  ssr = _ref.ssr,
42
- mediaClient = _ref.mediaClient,
43
43
  dimensions = _ref.dimensions,
44
44
  originalDimensions = _ref.originalDimensions,
45
45
  contextId = _ref.contextId,
@@ -63,19 +63,24 @@ export var FileCard = function FileCard(_ref) {
63
63
  //------------ State, Refs & Initial Values ----------------------//
64
64
  //----------------------------------------------------------------//
65
65
 
66
+ var mediaClient = useMediaClient();
66
67
  var _useState = useState(null),
67
68
  _useState2 = _slicedToArray(_useState, 2),
68
69
  cardElement = _useState2[0],
69
70
  setCardElement = _useState2[1];
70
- var requestedDimensions = useMemo(function () {
71
+ var cardDimensions = dimensions || getDefaultCardDimensions(appearance);
72
+
73
+ // Calculate the preview dimensions if card dimensions are "percentage" based
74
+ var previewDimensions = useMemo(function () {
71
75
  return (
72
- // requested dimensions is eventually an expensive operation if the dimensions are a percentage
73
- getRequestedDimensions({
74
- dimensions: dimensions,
76
+ // resolving dimensions is eventually an expensive operation if the dimensions are a percentage
77
+ // thus needs to be memoized
78
+ resolveCardPreviewDimensions({
79
+ dimensions: cardDimensions,
75
80
  element: cardElement
76
81
  })
77
82
  );
78
- }, [dimensions, cardElement]);
83
+ }, [cardDimensions, cardElement]);
79
84
  var _useState3 = useState(!isLazy),
80
85
  _useState4 = _slicedToArray(_useState3, 2),
81
86
  isCardVisible = _useState4[0],
@@ -154,18 +159,16 @@ export var FileCard = function FileCard(_ref) {
154
159
  mimeType: mimeType,
155
160
  name: name,
156
161
  size: size
157
- }, originalDimensions || requestedDimensions), {}, {
162
+ }, originalDimensions || previewDimensions), {}, {
158
163
  alt: alt
159
164
  }) : undefined;
160
- }, [alt, requestedDimensions, contextId, fileStateValue, identifier, originalDimensions]);
165
+ }, [alt, previewDimensions, contextId, fileStateValue, identifier, originalDimensions]);
161
166
  var _useFilePreview = useFilePreview({
162
167
  mediaBlobUrlAttrs: mediaBlobUrlAttrs,
163
168
  resizeMode: resizeMode,
164
169
  identifier: identifier,
165
170
  ssr: ssr,
166
- mediaClient: mediaClient,
167
- dimensions: dimensions,
168
- requestedDimensions: requestedDimensions,
171
+ dimensions: previewDimensions,
169
172
  traceContext: traceContext,
170
173
  previewDidRender: previewDidRender,
171
174
  skipRemote: !isCardVisible
@@ -513,9 +516,8 @@ export var FileCard = function FileCard(_ref) {
513
516
  metadata: metadata,
514
517
  cardPreview: cardPreview,
515
518
  alt: alt,
516
- appearance: appearance,
517
519
  resizeMode: resizeMode,
518
- dimensions: dimensions,
520
+ dimensions: cardDimensions,
519
521
  actions: computedActions,
520
522
  selectable: selectable,
521
523
  selected: selected,
@@ -539,7 +541,6 @@ export var FileCard = function FileCard(_ref) {
539
541
  } : undefined,
540
542
  innerRef: setCardElement,
541
543
  testId: testId,
542
- featureFlags: featureFlags,
543
544
  titleBoxBgColor: titleBoxBgColor,
544
545
  titleBoxIcon: titleBoxIcon,
545
546
  onImageError: withCallbacks ? onImageError : undefined,
@@ -566,7 +567,7 @@ export var FileCard = function FileCard(_ref) {
566
567
  return /*#__PURE__*/React.createElement(React.Fragment, null, isPlayingFile ? /*#__PURE__*/React.createElement(Suspense, {
567
568
  fallback: inlinePlayerFallback
568
569
  }, /*#__PURE__*/React.createElement(InlinePlayerLazyV2, {
569
- dimensions: dimensions,
570
+ dimensions: cardDimensions,
570
571
  originalDimensions: originalDimensions,
571
572
  identifier: identifier,
572
573
  autoplay: !!shouldAutoplay,
@@ -5,13 +5,14 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
5
  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; }
6
6
  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; }
7
7
  import { addFileAttrsToUrl, imageResizeModeToFileImageMode, isImageRepresentationReady } from '@atlaskit/media-client';
8
- import { MediaFileStateError, useFileState } from '@atlaskit/media-client-react';
8
+ import { MediaFileStateError, useFileState, useMediaClient } from '@atlaskit/media-client-react';
9
9
  import { getMediaTypeFromMimeType, isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
10
10
  import { getOrientation } from '@atlaskit/media-ui';
11
11
  import { useEffect, useMemo, useRef, useState } from 'react';
12
12
  import { ensureMediaCardError, ImageLoadError, isLocalPreviewError, isUnsupportedLocalPreviewError, LocalPreviewError, MediaCardError } from '../../errors';
13
13
  import { extractErrorInfo } from '../../utils/analytics';
14
14
  import { isBigger } from '../../utils/dimensionComparer';
15
+ import { isRetina } from '../../utils/isRetina';
15
16
  import { generateScriptProps, getSSRData } from '../../utils/globalScope';
16
17
  import { useCurrentValueRef } from '../../utils/useCurrentValueRef';
17
18
  import { usePrevious } from '../../utils/usePrevious';
@@ -23,13 +24,12 @@ export var useFilePreview = function useFilePreview(_ref) {
23
24
  resizeMode = _ref$resizeMode === void 0 ? 'crop' : _ref$resizeMode,
24
25
  identifier = _ref.identifier,
25
26
  ssr = _ref.ssr,
26
- mediaClient = _ref.mediaClient,
27
27
  dimensions = _ref.dimensions,
28
- requestedDimensions = _ref.requestedDimensions,
29
28
  traceContext = _ref.traceContext,
30
29
  previewDidRender = _ref.previewDidRender,
31
30
  skipRemote = _ref.skipRemote,
32
31
  mediaBlobUrlAttrs = _ref.mediaBlobUrlAttrs;
32
+ var mediaClient = useMediaClient();
33
33
  var _useState = useState(),
34
34
  _useState2 = _slicedToArray(_useState, 2),
35
35
  error = _useState2[0],
@@ -38,6 +38,10 @@ export var useFilePreview = function useFilePreview(_ref) {
38
38
  _useState4 = _slicedToArray(_useState3, 2),
39
39
  nonCriticalError = _useState4[0],
40
40
  setNonCriticalError = _useState4[1];
41
+ var requestDimensions = useMemo(function () {
42
+ return dimensions ? createRequestDimensions(dimensions) : undefined;
43
+ }, [dimensions]);
44
+
41
45
  //----------------------------------------------------------------//
42
46
  //---------------- State Initializer Functions -------------------//
43
47
  //----------------------------------------------------------------//
@@ -55,10 +59,10 @@ export var useFilePreview = function useFilePreview(_ref) {
55
59
  return _objectSpread(_objectSpread({
56
60
  collection: identifier.collectionName,
57
61
  mode: resizeMode === 'stretchy-fit' ? 'full-fit' : resizeMode
58
- }, requestedDimensions), {}, {
62
+ }, requestDimensions), {}, {
59
63
  allowAnimated: true
60
64
  });
61
- }, [requestedDimensions, identifier.collectionName, resizeMode]);
65
+ }, [requestDimensions, identifier.collectionName, resizeMode]);
62
66
  var getSSRPreview = function getSSRPreview(ssr, identifier, mediaClient) {
63
67
  var _ssrDataRef$current, _ssrDataRef$current2;
64
68
  ssrDataRef.current = getSSRData(identifier);
@@ -76,8 +80,12 @@ export var useFilePreview = function useFilePreview(_ref) {
76
80
  }, extractErrorInfo(e));
77
81
  }
78
82
  } else {
83
+ var _ssrDataRef$current3 = ssrDataRef.current,
84
+ _dimensions = _ssrDataRef$current3.dimensions,
85
+ dataURI = _ssrDataRef$current3.dataURI;
79
86
  return {
80
- dataURI: ssrDataRef.current.dataURI,
87
+ dataURI: dataURI,
88
+ dimensions: _dimensions,
81
89
  source: 'ssr-data'
82
90
  };
83
91
  }
@@ -125,7 +133,7 @@ export var useFilePreview = function useFilePreview(_ref) {
125
133
  //----------------------------------------------------------------//
126
134
 
127
135
  var fetchRemotePreviewRef = useCurrentValueRef(function (identifier) {
128
- return fetchAndCacheRemotePreview(mediaClient, identifier.id, dimensions !== null && dimensions !== void 0 ? dimensions : {}, imageURLParams, mediaBlobUrlAttrs);
136
+ return fetchAndCacheRemotePreview(mediaClient, identifier.id, requestDimensions || {}, imageURLParams, mediaBlobUrlAttrs, traceContext);
129
137
  });
130
138
  var resolvePreviewRef = useCurrentValueRef( /*#__PURE__*/function () {
131
139
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(identifier, fileState) {
@@ -138,7 +146,7 @@ export var useFilePreview = function useFilePreview(_ref) {
138
146
  _context.prev = 2;
139
147
  mode = imageURLParams.mode;
140
148
  cachedPreview = cardPreviewCache.get(identifier.id, mode);
141
- dimensionsAreBigger = isBigger(cachedPreview === null || cachedPreview === void 0 ? void 0 : cachedPreview.dimensions, dimensions);
149
+ dimensionsAreBigger = isBigger(cachedPreview === null || cachedPreview === void 0 ? void 0 : cachedPreview.dimensions, requestDimensions);
142
150
  if (!(cachedPreview && !dimensionsAreBigger)) {
143
151
  _context.next = 8;
144
152
  break;
@@ -232,7 +240,7 @@ export var useFilePreview = function useFilePreview(_ref) {
232
240
  throw new LocalPreviewError('local-preview-unsupported');
233
241
  case 57:
234
242
  preview = _objectSpread(_objectSpread({}, localPreview), {}, {
235
- dimensions: dimensions
243
+ dimensions: requestDimensions
236
244
  });
237
245
  _context.t4 = preview.source;
238
246
  _context.next = _context.t4 === 'local' ? 61 : _context.t4 === 'remote' ? 63 : _context.t4 === 'ssr-server' ? 65 : _context.t4 === 'ssr-client' ? 67 : 69;
@@ -299,7 +307,7 @@ export var useFilePreview = function useFilePreview(_ref) {
299
307
  throw new MediaCardError('remote-preview-not-ready');
300
308
  case 83:
301
309
  _context.next = 85;
302
- return fetchAndCacheRemotePreview(mediaClient, identifier.id, dimensions !== null && dimensions !== void 0 ? dimensions : {}, imageURLParams, mediaBlobUrlAttrs, traceContext);
310
+ return fetchRemotePreviewRef.current(identifier);
303
311
  case 85:
304
312
  remotePreview = _context.sent;
305
313
  setCardPreview(remotePreview);
@@ -335,7 +343,7 @@ export var useFilePreview = function useFilePreview(_ref) {
335
343
  //------------ resolveUpfrontPreview useEffect -------------------//
336
344
  //----------------------------------------------------------------//
337
345
  var prevCardPreview = usePrevious(cardPreview);
338
- var dimensionsRef = useCurrentValueRef(dimensions);
346
+ var requestDimensionsRef = useCurrentValueRef(requestDimensions);
339
347
  useEffect(function () {
340
348
  var resolveUpfrontPreview = /*#__PURE__*/function () {
341
349
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(identifier) {
@@ -347,12 +355,12 @@ export var useFilePreview = function useFilePreview(_ref) {
347
355
  // If it fails, the normal preview fetch should occur after the file state is fetched anyways
348
356
  wasResolvedUpfrontPreviewRef.current = true;
349
357
  _context2.prev = 1;
350
- fetchedDimensions = _objectSpread({}, dimensions);
358
+ fetchedDimensions = _objectSpread({}, requestDimensions);
351
359
  _context2.next = 5;
352
360
  return fetchRemotePreviewRef.current(identifier);
353
361
  case 5:
354
362
  newCardPreview = _context2.sent;
355
- areValidFetchedDimensions = !isBigger(fetchedDimensions, dimensionsRef.current); // If there are new and bigger dimensions in the props, and the upfront preview is still resolving,
363
+ areValidFetchedDimensions = !isBigger(fetchedDimensions, requestDimensionsRef.current); // If there are new and bigger dimensions in the props, and the upfront preview is still resolving,
356
364
  // the fetched preview is no longer valid, and thus, we dismiss it
357
365
  if (areValidFetchedDimensions) {
358
366
  setCardPreview(newCardPreview);
@@ -378,16 +386,16 @@ export var useFilePreview = function useFilePreview(_ref) {
378
386
  if (!wasResolvedUpfrontPreviewRef.current && (!skipRemote || hadSSRCardPreview) && !cardPreview) {
379
387
  resolveUpfrontPreview(identifier);
380
388
  }
381
- }, [cardPreview, dimensions, dimensionsRef, fetchRemotePreviewRef, identifier, skipRemote, prevCardPreview, ssr]);
389
+ }, [cardPreview, requestDimensions, requestDimensionsRef, fetchRemotePreviewRef, identifier, skipRemote, prevCardPreview, ssr]);
382
390
 
383
391
  //----------------------------------------------------------------//
384
392
  //---------------- fetch and resolve card preview ----------------//
385
393
  //----------------------------------------------------------------//
386
394
 
387
- var prevDimensions = usePrevious(dimensions);
395
+ var prevRequestDimensions = usePrevious(requestDimensions);
388
396
  useEffect(function () {
389
- var _ssrDataRef$current3;
390
- if (cardPreview && !skipRemote && isSSRDataPreview(cardPreview) && isBigger((_ssrDataRef$current3 = ssrDataRef.current) === null || _ssrDataRef$current3 === void 0 ? void 0 : _ssrDataRef$current3.dimensions, dimensions)) {
397
+ // CXP-2813 TODO: This is called too many times if the refetch failed. Should be called only once
398
+ if (cardPreview && !skipRemote && isSSRDataPreview(cardPreview) && isBigger(cardPreview.dimensions, requestDimensions)) {
391
399
  // refetchSRRPreview: If dimensions from Server have changed and are bigger,
392
400
  // we need to refetch
393
401
  fetchRemotePreviewRef.current(identifier).then(setCardPreview).catch(function (e) {
@@ -402,8 +410,8 @@ export var useFilePreview = function useFilePreview(_ref) {
402
410
  if (fileState && shouldResolvePreview({
403
411
  status: status,
404
412
  fileState: fileState,
405
- prevDimensions: prevDimensions,
406
- dimensions: dimensions,
413
+ prevDimensions: prevRequestDimensions,
414
+ dimensions: requestDimensions,
407
415
  hasCardPreview: !!cardPreview,
408
416
  isBannedLocalPreview: isBannedLocalPreview,
409
417
  wasResolvedUpfrontPreview: wasResolvedUpfrontPreviewRef.current
@@ -420,7 +428,7 @@ export var useFilePreview = function useFilePreview(_ref) {
420
428
  // https://product-fabric.atlassian.net/browse/MEX-1071
421
429
  });
422
430
  }
423
- }, [cardPreview, dimensions, fetchRemotePreviewRef, fileState, identifier, isBannedLocalPreview, prevDimensions, resolvePreviewRef, skipRemote, ssr, status]);
431
+ }, [cardPreview, requestDimensions, fetchRemotePreviewRef, fileState, identifier, isBannedLocalPreview, prevRequestDimensions, resolvePreviewRef, skipRemote, ssr, status]);
424
432
 
425
433
  //----------------------------------------------------------------//
426
434
  //----------------- set complete status --------------------------//
@@ -561,7 +569,7 @@ export var useFilePreview = function useFilePreview(_ref) {
561
569
  // FOR SSR
562
570
  var getScriptProps = function getScriptProps() {
563
571
  var _ssrReliabilityRef$cu;
564
- return generateScriptProps(identifier, cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI, requestedDimensions, ((_ssrReliabilityRef$cu = ssrReliabilityRef.current.server) === null || _ssrReliabilityRef$cu === void 0 ? void 0 : _ssrReliabilityRef$cu.status) === 'fail' ? ssrReliabilityRef.current.server : undefined);
572
+ return generateScriptProps(identifier, cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI, requestDimensions, ((_ssrReliabilityRef$cu = ssrReliabilityRef.current.server) === null || _ssrReliabilityRef$cu === void 0 ? void 0 : _ssrReliabilityRef$cu.status) === 'fail' ? ssrReliabilityRef.current.server : undefined);
565
573
  };
566
574
 
567
575
  // CXP-2723 TODO: should consider simplifying our analytics, and how
@@ -575,4 +583,20 @@ export var useFilePreview = function useFilePreview(_ref) {
575
583
  onImageLoad: onImageLoad,
576
584
  getScriptProps: getScriptProps
577
585
  };
586
+ };
587
+ var createRequestDimensions = function createRequestDimensions(dimensions) {
588
+ if (!dimensions) {
589
+ return;
590
+ }
591
+ var retinaFactor = isRetina() ? 2 : 1;
592
+ var width = dimensions.width,
593
+ height = dimensions.height;
594
+ var result = {};
595
+ if (width) {
596
+ result.width = width * retinaFactor;
597
+ }
598
+ if (height) {
599
+ result.height = height * retinaFactor;
600
+ }
601
+ return result;
578
602
  };
@@ -103,7 +103,7 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
103
103
  ErrorBoundary = _this$state.ErrorBoundary;
104
104
  var analyticsContext = {
105
105
  packageVersion: "@atlaskit/media-card",
106
- packageName: "77.4.7",
106
+ packageName: "77.4.9",
107
107
  componentName: 'mediaInlineCard',
108
108
  component: 'mediaInlineCard'
109
109
  };