@atlaskit/media-card 72.0.0 → 73.1.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 (157) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/dist/cjs/actions.js +2 -2
  3. package/dist/cjs/errors.js +35 -11
  4. package/dist/cjs/files/cardImageView/cardOverlay/styled.js +1 -1
  5. package/dist/cjs/files/cardImageView/index.js +1 -1
  6. package/dist/cjs/files/cardImageView/styled.js +1 -1
  7. package/dist/cjs/index.js +8 -8
  8. package/dist/cjs/root/card/cardAnalytics.js +2 -2
  9. package/dist/cjs/root/card/cardLoader.js +66 -124
  10. package/dist/cjs/root/card/cardState.js +2 -2
  11. package/dist/cjs/root/card/getCardPreview/cache.js +5 -5
  12. package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +4 -1
  13. package/dist/cjs/root/card/getCardPreview/helpers.js +1 -1
  14. package/dist/cjs/root/card/getCardPreview/index.js +101 -18
  15. package/dist/cjs/root/card/getCardStatus.js +1 -1
  16. package/dist/cjs/root/card/index.js +191 -97
  17. package/dist/cjs/root/cardView.js +44 -57
  18. package/dist/cjs/root/inline/loader.js +45 -14
  19. package/dist/cjs/root/inline/mediaInlineCard.js +31 -11
  20. package/dist/cjs/root/inlinePlayer.js +77 -24
  21. package/dist/cjs/root/styled.js +7 -3
  22. package/dist/cjs/root/ui/actionsBar/styled.js +1 -1
  23. package/dist/cjs/root/ui/blanket/styled.js +1 -1
  24. package/dist/cjs/root/ui/common.js +11 -5
  25. package/dist/cjs/root/ui/iconMessage/index.js +5 -3
  26. package/dist/cjs/root/ui/iconWrapper/styled.js +1 -1
  27. package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +6 -2
  28. package/dist/cjs/root/ui/loadingRateLimited/loadingRateLimited.js +6 -4
  29. package/dist/cjs/root/ui/loadingRateLimited/styled.js +2 -2
  30. package/dist/cjs/root/ui/playButton/styled.js +1 -1
  31. package/dist/cjs/root/ui/progressBar/progressBar.js +7 -4
  32. package/dist/cjs/root/ui/progressBar/styled.js +8 -9
  33. package/dist/cjs/root/ui/styled.js +80 -17
  34. package/dist/cjs/root/ui/tickBox/styled.js +1 -1
  35. package/dist/cjs/root/ui/titleBox/failedTitleBox.js +4 -2
  36. package/dist/cjs/root/ui/titleBox/styled.js +2 -4
  37. package/dist/cjs/root/ui/titleBox/titleBox.js +2 -2
  38. package/dist/cjs/styles/index.js +25 -23
  39. package/dist/cjs/styles/mixins.js +1 -1
  40. package/dist/cjs/utils/analytics.js +2 -1
  41. package/dist/cjs/utils/breakpoint.js +1 -1
  42. package/dist/cjs/utils/cardActions/cardActionsDropdownMenu.js +18 -9
  43. package/dist/cjs/utils/cardActions/index.js +10 -10
  44. package/dist/cjs/utils/cardActions/styled.js +1 -1
  45. package/dist/cjs/utils/cardDimensions.js +1 -1
  46. package/dist/cjs/utils/getErrorMessage.js +2 -2
  47. package/dist/cjs/utils/index.js +46 -46
  48. package/dist/cjs/utils/lightCards/styled.js +1 -1
  49. package/dist/cjs/utils/objectURLCache.js +1 -1
  50. package/dist/cjs/utils/viewportDetector.js +49 -22
  51. package/dist/cjs/version.json +1 -1
  52. package/dist/es2019/errors.js +9 -1
  53. package/dist/es2019/root/card/cardAnalytics.js +1 -1
  54. package/dist/es2019/root/card/cardLoader.js +47 -53
  55. package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +4 -1
  56. package/dist/es2019/root/card/getCardPreview/index.js +45 -3
  57. package/dist/es2019/root/card/index.js +131 -35
  58. package/dist/es2019/root/cardView.js +26 -40
  59. package/dist/es2019/root/inline/loader.js +15 -4
  60. package/dist/es2019/root/inline/mediaInlineCard.js +30 -10
  61. package/dist/es2019/root/inlinePlayer.js +56 -4
  62. package/dist/es2019/root/styled.js +2 -1
  63. package/dist/es2019/root/ui/common.js +7 -1
  64. package/dist/es2019/root/ui/iconMessage/index.js +3 -2
  65. package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +6 -2
  66. package/dist/es2019/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  67. package/dist/es2019/root/ui/loadingRateLimited/styled.js +1 -1
  68. package/dist/es2019/root/ui/progressBar/progressBar.js +5 -3
  69. package/dist/es2019/root/ui/progressBar/styled.js +7 -6
  70. package/dist/es2019/root/ui/styled.js +65 -4
  71. package/dist/es2019/root/ui/titleBox/failedTitleBox.js +3 -2
  72. package/dist/es2019/root/ui/titleBox/styled.js +1 -2
  73. package/dist/es2019/root/ui/titleBox/titleBox.js +1 -1
  74. package/dist/es2019/utils/cardActions/cardActionsDropdownMenu.js +8 -4
  75. package/dist/es2019/utils/getErrorMessage.js +1 -1
  76. package/dist/es2019/utils/viewportDetector.js +48 -18
  77. package/dist/es2019/version.json +1 -1
  78. package/dist/esm/actions.js +2 -2
  79. package/dist/esm/errors.js +28 -9
  80. package/dist/esm/root/card/cardAnalytics.js +1 -1
  81. package/dist/esm/root/card/cardLoader.js +66 -126
  82. package/dist/esm/root/card/cardState.js +2 -2
  83. package/dist/esm/root/card/getCardPreview/cache.js +3 -2
  84. package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +4 -1
  85. package/dist/esm/root/card/getCardPreview/index.js +74 -12
  86. package/dist/esm/root/card/index.js +198 -100
  87. package/dist/esm/root/cardView.js +42 -54
  88. package/dist/esm/root/inline/loader.js +46 -14
  89. package/dist/esm/root/inline/mediaInlineCard.js +30 -10
  90. package/dist/esm/root/inlinePlayer.js +74 -23
  91. package/dist/esm/root/styled.js +3 -2
  92. package/dist/esm/root/ui/common.js +7 -1
  93. package/dist/esm/root/ui/iconMessage/index.js +3 -2
  94. package/dist/esm/root/ui/imageRenderer/imageRenderer.js +6 -2
  95. package/dist/esm/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  96. package/dist/esm/root/ui/loadingRateLimited/styled.js +1 -1
  97. package/dist/esm/root/ui/progressBar/progressBar.js +6 -3
  98. package/dist/esm/root/ui/progressBar/styled.js +7 -7
  99. package/dist/esm/root/ui/styled.js +61 -13
  100. package/dist/esm/root/ui/titleBox/failedTitleBox.js +3 -2
  101. package/dist/esm/root/ui/titleBox/styled.js +1 -2
  102. package/dist/esm/root/ui/titleBox/titleBox.js +1 -1
  103. package/dist/esm/utils/cardActions/cardActionsDropdownMenu.js +17 -9
  104. package/dist/esm/utils/getErrorMessage.js +1 -1
  105. package/dist/esm/utils/viewportDetector.js +48 -21
  106. package/dist/esm/version.json +1 -1
  107. package/dist/types/errors.d.ts +9 -3
  108. package/dist/types/index.d.ts +3 -1
  109. package/dist/types/root/card/cardLoader.d.ts +5 -19
  110. package/dist/types/root/card/getCardPreview/index.d.ts +7 -1
  111. package/dist/types/root/card/index.d.ts +9 -8
  112. package/dist/types/root/cardView.d.ts +5 -3
  113. package/dist/types/root/inline/loader.d.ts +2 -0
  114. package/dist/types/root/inline/mediaInlineCard.d.ts +3 -5
  115. package/dist/types/root/inlinePlayer.d.ts +8 -1
  116. package/dist/types/root/styled.d.ts +1 -0
  117. package/dist/types/root/ui/common.d.ts +4 -1
  118. package/dist/types/root/ui/iconMessage/index.d.ts +2 -2
  119. package/dist/types/root/ui/iconWrapper/styled.d.ts +1 -1
  120. package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +3 -2
  121. package/dist/types/root/ui/loadingRateLimited/loadingRateLimited.d.ts +2 -1
  122. package/dist/types/root/ui/loadingRateLimited/styled.d.ts +1 -1
  123. package/dist/types/root/ui/playButton/playButton.d.ts +1 -0
  124. package/dist/types/root/ui/progressBar/progressBar.d.ts +4 -2
  125. package/dist/types/root/ui/progressBar/styled.d.ts +3 -2
  126. package/dist/types/root/ui/styled.d.ts +10 -3
  127. package/dist/types/root/ui/tickBox/tickBox.d.ts +1 -0
  128. package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +3 -3
  129. package/dist/types/root/ui/titleBox/styled.d.ts +1 -1
  130. package/dist/types/root/ui/titleBox/titleBox.d.ts +2 -10
  131. package/dist/types/types.d.ts +1 -1
  132. package/dist/types/utils/getErrorMessage.d.ts +1 -0
  133. package/dist/types/utils/viewportDetector.d.ts +13 -5
  134. package/example-helpers/developmentUseMessage.tsx +14 -0
  135. package/example-helpers/index.tsx +34 -4
  136. package/example-helpers/selectableCard.tsx +2 -1
  137. package/package.json +16 -15
  138. package/dist/cjs/root/card/cardSSRView.js +0 -114
  139. package/dist/cjs/root/ui/Breakpoint.js +0 -13
  140. package/dist/cjs/root/ui/styledSSR.js +0 -108
  141. package/dist/cjs/utils/lazyContent/index.js +0 -56
  142. package/dist/cjs/utils/lazyContent/styled.js +0 -23
  143. package/dist/es2019/root/card/cardSSRView.js +0 -93
  144. package/dist/es2019/root/ui/Breakpoint.js +0 -6
  145. package/dist/es2019/root/ui/styledSSR.js +0 -93
  146. package/dist/es2019/utils/lazyContent/index.js +0 -18
  147. package/dist/es2019/utils/lazyContent/styled.js +0 -12
  148. package/dist/esm/root/card/cardSSRView.js +0 -92
  149. package/dist/esm/root/ui/Breakpoint.js +0 -6
  150. package/dist/esm/root/ui/styledSSR.js +0 -76
  151. package/dist/esm/utils/lazyContent/index.js +0 -41
  152. package/dist/esm/utils/lazyContent/styled.js +0 -14
  153. package/dist/types/root/card/cardSSRView.d.ts +0 -13
  154. package/dist/types/root/ui/Breakpoint.d.ts +0 -4
  155. package/dist/types/root/ui/styledSSR.d.ts +0 -16
  156. package/dist/types/utils/lazyContent/index.d.ts +0 -11
  157. package/dist/types/utils/lazyContent/styled.d.ts +0 -5
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.CardActionsDropdownMenu = void 0;
11
11
 
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
12
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
15
 
14
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -33,6 +35,8 @@ var _analyticsNext = require("@atlaskit/analytics-next");
33
35
 
34
36
  var _analytics = require("../analytics");
35
37
 
38
+ var _excluded = ["triggerRef"];
39
+
36
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
41
 
38
42
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -103,16 +107,21 @@ var CardActionsDropdownMenu = /*#__PURE__*/function (_Component) {
103
107
 
104
108
  if (actions.length > 0) {
105
109
  return /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
106
- "data-testid": "media-card-actions-menu",
110
+ testId: "media-card-actions-menu",
107
111
  onOpenChange: onOpenChange,
108
- trigger: /*#__PURE__*/_react.default.createElement(CardActionButtonWithAnalytics, {
109
- variant: triggerVariant,
110
- style: {
111
- color: triggerColor
112
- }
113
- }, /*#__PURE__*/_react.default.createElement(_more.default, {
114
- label: "more"
115
- }))
112
+ trigger: function trigger(_ref) {
113
+ var triggerRef = _ref.triggerRef,
114
+ providedProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
115
+ return /*#__PURE__*/_react.default.createElement(CardActionButtonWithAnalytics, (0, _extends2.default)({
116
+ variant: triggerVariant,
117
+ style: {
118
+ color: triggerColor
119
+ },
120
+ ref: triggerRef
121
+ }, providedProps), /*#__PURE__*/_react.default.createElement(_more.default, {
122
+ label: "more"
123
+ }));
124
+ }
116
125
  }, /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItemGroup, null, actions.map(createDropdownItemWithAnalytics)));
117
126
  } else {
118
127
  return null;
@@ -3,34 +3,34 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "default", {
6
+ Object.defineProperty(exports, "CardActionIconButton", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _cardActionsView.CardActionsView;
9
+ return _cardActionIconButton.CardActionIconButton;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "CardActionsView", {
12
+ Object.defineProperty(exports, "CardActionIconButtonVariant", {
13
13
  enumerable: true,
14
14
  get: function get() {
15
- return _cardActionsView.CardActionsView;
15
+ return _styled.CardActionIconButtonVariant;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "CardActionIconButton", {
18
+ Object.defineProperty(exports, "CardActionsDropdownMenu", {
19
19
  enumerable: true,
20
20
  get: function get() {
21
- return _cardActionIconButton.CardActionIconButton;
21
+ return _cardActionsDropdownMenu.CardActionsDropdownMenu;
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "CardActionsDropdownMenu", {
24
+ Object.defineProperty(exports, "CardActionsView", {
25
25
  enumerable: true,
26
26
  get: function get() {
27
- return _cardActionsDropdownMenu.CardActionsDropdownMenu;
27
+ return _cardActionsView.CardActionsView;
28
28
  }
29
29
  });
30
- Object.defineProperty(exports, "CardActionIconButtonVariant", {
30
+ Object.defineProperty(exports, "default", {
31
31
  enumerable: true,
32
32
  get: function get() {
33
- return _styled.CardActionIconButtonVariant;
33
+ return _cardActionsView.CardActionsView;
34
34
  }
35
35
  });
36
36
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.CardActionButton = exports.CardActionIconButtonVariant = exports.Wrapper = void 0;
8
+ exports.Wrapper = exports.CardActionIconButtonVariant = exports.CardActionButton = void 0;
9
9
 
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
11
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getDefaultCardDimensions = exports.getCardMaxWidth = exports.getCardMinWidth = exports.getCardMaxHeight = exports.maxSquareCardDimensions = exports.maxHorizontalCardDimensions = exports.maxImageCardDimensions = exports.minHorizontalCardDimensions = exports.minSquareCardDimensions = exports.minImageCardDimensions = exports.minSmallCardDimensions = exports.defaultSquareCardDimensions = exports.defaultHorizontalCardDimensions = exports.defaultImageCardDimensions = exports.defaultSmallCardDimensions = void 0;
6
+ exports.minSquareCardDimensions = exports.minSmallCardDimensions = exports.minImageCardDimensions = exports.minHorizontalCardDimensions = exports.maxSquareCardDimensions = exports.maxImageCardDimensions = exports.maxHorizontalCardDimensions = exports.getDefaultCardDimensions = exports.getCardMinWidth = exports.getCardMaxWidth = exports.getCardMaxHeight = exports.defaultSquareCardDimensions = exports.defaultSmallCardDimensions = exports.defaultImageCardDimensions = exports.defaultHorizontalCardDimensions = void 0;
7
7
  // Default dimensions
8
8
  var defaultSmallCardDimensions = {
9
9
  width: '100%',
@@ -9,12 +9,12 @@ exports.getErrorMessage = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
- var _reactIntl = require("react-intl");
12
+ var _reactIntlNext = require("react-intl-next");
13
13
 
14
14
  var _mediaUi = require("@atlaskit/media-ui");
15
15
 
16
16
  var getErrorMessage = function getErrorMessage(status) {
17
- return status === 'error' && /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _mediaUi.messages.failed_to_load);
17
+ return status === 'error' && /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.failed_to_load);
18
18
  };
19
19
 
20
20
  exports.getErrorMessage = getErrorMessage;
@@ -5,6 +5,24 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ Object.defineProperty(exports, "CardActionIconButton", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _cardActions.CardActionIconButton;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "CardActionsDropdownMenu", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _cardActions.CardActionsDropdownMenu;
18
+ }
19
+ });
20
+ Object.defineProperty(exports, "CardActionsView", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _cardActions.CardActionsView;
24
+ }
25
+ });
8
26
  Object.defineProperty(exports, "ErrorIcon", {
9
27
  enumerable: true,
10
28
  get: function get() {
@@ -17,34 +35,34 @@ Object.defineProperty(exports, "FileIcon", {
17
35
  return _fileIcon.FileIcon;
18
36
  }
19
37
  });
20
- Object.defineProperty(exports, "CardActionIconButton", {
38
+ Object.defineProperty(exports, "breakpointSize", {
21
39
  enumerable: true,
22
40
  get: function get() {
23
- return _cardActions.CardActionIconButton;
41
+ return _breakpoint.breakpointSize;
24
42
  }
25
43
  });
26
- Object.defineProperty(exports, "CardActionsDropdownMenu", {
44
+ Object.defineProperty(exports, "breakpointStyles", {
27
45
  enumerable: true,
28
46
  get: function get() {
29
- return _cardActions.CardActionsDropdownMenu;
47
+ return _breakpoint.breakpointStyles;
30
48
  }
31
49
  });
32
- Object.defineProperty(exports, "CardActionsView", {
50
+ Object.defineProperty(exports, "cardBreakpointSizes", {
33
51
  enumerable: true,
34
52
  get: function get() {
35
- return _cardActions.CardActionsView;
53
+ return _breakpoint.cardBreakpointSizes;
36
54
  }
37
55
  });
38
- Object.defineProperty(exports, "default", {
56
+ Object.defineProperty(exports, "containsPixelUnit", {
39
57
  enumerable: true,
40
58
  get: function get() {
41
- return _cardActions.default;
59
+ return _containsPixelUnit.containsPixelUnit;
42
60
  }
43
61
  });
44
- Object.defineProperty(exports, "isRetina", {
62
+ Object.defineProperty(exports, "default", {
45
63
  enumerable: true,
46
64
  get: function get() {
47
- return _isRetina.isRetina;
65
+ return _cardActions.default;
48
66
  }
49
67
  });
50
68
  Object.defineProperty(exports, "defaultHorizontalCardDimensions", {
@@ -95,6 +113,24 @@ Object.defineProperty(exports, "getDefaultCardDimensions", {
95
113
  return _cardDimensions.getDefaultCardDimensions;
96
114
  }
97
115
  });
116
+ Object.defineProperty(exports, "getElementDimension", {
117
+ enumerable: true,
118
+ get: function get() {
119
+ return _getElementDimension.getElementDimension;
120
+ }
121
+ });
122
+ Object.defineProperty(exports, "isRetina", {
123
+ enumerable: true,
124
+ get: function get() {
125
+ return _isRetina.isRetina;
126
+ }
127
+ });
128
+ Object.defineProperty(exports, "isValidPercentageUnit", {
129
+ enumerable: true,
130
+ get: function get() {
131
+ return _isValidPercentageUnit.isValidPercentageUnit;
132
+ }
133
+ });
98
134
  Object.defineProperty(exports, "maxHorizontalCardDimensions", {
99
135
  enumerable: true,
100
136
  get: function get() {
@@ -137,42 +173,6 @@ Object.defineProperty(exports, "minSquareCardDimensions", {
137
173
  return _cardDimensions.minSquareCardDimensions;
138
174
  }
139
175
  });
140
- Object.defineProperty(exports, "breakpointSize", {
141
- enumerable: true,
142
- get: function get() {
143
- return _breakpoint.breakpointSize;
144
- }
145
- });
146
- Object.defineProperty(exports, "breakpointStyles", {
147
- enumerable: true,
148
- get: function get() {
149
- return _breakpoint.breakpointStyles;
150
- }
151
- });
152
- Object.defineProperty(exports, "cardBreakpointSizes", {
153
- enumerable: true,
154
- get: function get() {
155
- return _breakpoint.cardBreakpointSizes;
156
- }
157
- });
158
- Object.defineProperty(exports, "isValidPercentageUnit", {
159
- enumerable: true,
160
- get: function get() {
161
- return _isValidPercentageUnit.isValidPercentageUnit;
162
- }
163
- });
164
- Object.defineProperty(exports, "getElementDimension", {
165
- enumerable: true,
166
- get: function get() {
167
- return _getElementDimension.getElementDimension;
168
- }
169
- });
170
- Object.defineProperty(exports, "containsPixelUnit", {
171
- enumerable: true,
172
- get: function get() {
173
- return _containsPixelUnit.containsPixelUnit;
174
- }
175
- });
176
176
 
177
177
  var _errorIcon = require("./errorIcon");
178
178
 
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.AnimatedWrapper = exports.Wrapper = exports.blinkLoadingAnimation = void 0;
10
+ exports.blinkLoadingAnimation = exports.Wrapper = exports.AnimatedWrapper = void 0;
11
11
 
12
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
13
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createObjectURLCache = exports.ObjectURLCache = exports.PREVIEW_CACHE_LRU_SIZE = void 0;
8
+ exports.createObjectURLCache = exports.PREVIEW_CACHE_LRU_SIZE = exports.ObjectURLCache = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
@@ -5,12 +5,10 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.ViewportDetector = exports.createViewportDetector = void 0;
8
+ exports.ViewportDetector = exports.ViewportAnchor = exports.ABS_VIEWPORT_ANCHOR_OFFSET_TOP = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var _lazyContent = require("./lazyContent");
13
-
14
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
13
 
16
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -21,6 +19,29 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
21
19
 
22
20
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
21
 
22
+ /**
23
+ * As IntersectionObserver::rootMargin doesn't work within IFrames, we use an empty div + dynamic offsetTop to eagerly detect cards entering viewport.
24
+ * Using this approach, we can lazy load cards ABS_VIEWPORT_ANCHOR_OFFSET_TOP px before they enter viewport.
25
+ */
26
+ var ABS_VIEWPORT_ANCHOR_OFFSET_TOP = 900; //px
27
+
28
+ exports.ABS_VIEWPORT_ANCHOR_OFFSET_TOP = ABS_VIEWPORT_ANCHOR_OFFSET_TOP;
29
+ var ViewportAnchor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
30
+ if (typeof IntersectionObserver === 'undefined') {
31
+ return null;
32
+ }
33
+
34
+ return /*#__PURE__*/_react.default.createElement("div", {
35
+ ref: ref,
36
+ className: "media-card-viewport-anchor",
37
+ style: {
38
+ position: 'absolute',
39
+ top: "".concat(props.offsetTop, "px")
40
+ }
41
+ });
42
+ });
43
+ exports.ViewportAnchor = ViewportAnchor;
44
+
24
45
  var createIntersectionObserverCallback = function createIntersectionObserverCallback(onVisible) {
25
46
  return function (entries, observer) {
26
47
  var _iterator = _createForOfIteratorHelper(entries),
@@ -44,36 +65,42 @@ var createIntersectionObserverCallback = function createIntersectionObserverCall
44
65
  };
45
66
  };
46
67
 
47
- var Observer = function Observer(_ref) {
68
+ var ViewportObserver = function ViewportObserver(_ref) {
48
69
  var onVisible = _ref.onVisible,
70
+ cardEl = _ref.cardEl,
49
71
  children = _ref.children,
50
- targetRef = _ref.targetRef;
72
+ preAnchorRef = _ref.preAnchorRef,
73
+ postAnchorRef = _ref.postAnchorRef;
51
74
  (0, _react.useEffect)(function () {
52
75
  // IntersectionObserver uses root and target elements to detect intersections, defaulting root to the viewport
53
76
  var intersectionObserver = new IntersectionObserver(createIntersectionObserverCallback(onVisible));
54
- targetRef && intersectionObserver.observe(targetRef);
77
+ (preAnchorRef === null || preAnchorRef === void 0 ? void 0 : preAnchorRef.current) && intersectionObserver.observe(preAnchorRef.current);
78
+ (postAnchorRef === null || postAnchorRef === void 0 ? void 0 : postAnchorRef.current) && intersectionObserver.observe(postAnchorRef.current);
79
+ cardEl && intersectionObserver.observe(cardEl);
55
80
  return function () {
56
81
  intersectionObserver.disconnect();
57
82
  };
58
- }, [targetRef, onVisible]);
83
+ }, [cardEl, preAnchorRef, postAnchorRef, onVisible]);
59
84
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
60
85
  };
61
86
 
62
- var createViewportDetector = function createViewportDetector(isIntersectionObserverSupported) {
63
- return function (_ref2) {
64
- var children = _ref2.children,
65
- targetRef = _ref2.targetRef,
66
- onVisible = _ref2.onVisible;
67
- return isIntersectionObserverSupported ? /*#__PURE__*/_react.default.createElement(Observer, {
68
- targetRef: targetRef,
69
- onVisible: onVisible
70
- }, children) : /*#__PURE__*/_react.default.createElement(_lazyContent.LazyContent, {
71
- placeholder: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children),
72
- onRender: onVisible
73
- }, children);
74
- };
87
+ var ViewportDetector = function ViewportDetector(_ref2) {
88
+ var cardEl = _ref2.cardEl,
89
+ preAnchorRef = _ref2.preAnchorRef,
90
+ postAnchorRef = _ref2.postAnchorRef,
91
+ onVisible = _ref2.onVisible,
92
+ children = _ref2.children;
93
+
94
+ if (typeof IntersectionObserver === 'undefined') {
95
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
96
+ }
97
+
98
+ return /*#__PURE__*/_react.default.createElement(ViewportObserver, {
99
+ cardEl: cardEl,
100
+ preAnchorRef: preAnchorRef,
101
+ postAnchorRef: postAnchorRef,
102
+ onVisible: onVisible
103
+ }, children);
75
104
  };
76
105
 
77
- exports.createViewportDetector = createViewportDetector;
78
- var ViewportDetector = createViewportDetector(typeof IntersectionObserver !== 'undefined');
79
106
  exports.ViewportDetector = ViewportDetector;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-card",
3
- "version": "72.0.0",
3
+ "version": "73.1.1",
4
4
  "sideEffects": false
5
5
  }
@@ -27,6 +27,14 @@ export class RemotePreviewError extends MediaCardError {
27
27
  this.secondaryError = secondaryError;
28
28
  }
29
29
 
30
+ }
31
+ export class SsrPreviewError extends MediaCardError {
32
+ constructor(primaryReason, secondaryError) {
33
+ super(primaryReason, secondaryError);
34
+ this.primaryReason = primaryReason;
35
+ this.secondaryError = secondaryError;
36
+ }
37
+
30
38
  }
31
39
  export const getImageLoadPrimaryReason = source => {
32
40
  switch (source) {
@@ -68,4 +76,4 @@ export function isImageLoadError(err) {
68
76
  // We can use this helper to ensure that the error handled is the type of MediaCardError if unsure
69
77
 
70
78
  export const ensureMediaCardError = (primaryReason, error) => isMediaCardError(error) ? error : new MediaCardError(primaryReason, error);
71
- export const isUploadError = error => error.primaryReason === 'upload';
79
+ export const isUploadError = error => error && error.primaryReason === 'upload';
@@ -1,5 +1,5 @@
1
1
  import { fireMediaCardEvent, getRenderSucceededEventPayload, getRenderErrorEventPayload, getRenderFailedFileStatusPayload, getCopiedFilePayload, getRenderCommencedEventPayload, getRenderPreviewableCardPayload } from '../../utils/analytics';
2
- export const relevantFeatureFlagNames = ['newCardExperience', 'captions'];
2
+ export const relevantFeatureFlagNames = ['newCardExperience', 'captions', 'timestampOnVideo'];
3
3
  export const fireOperationalEvent = (createAnalyticsEvent, status, fileAttributes, performanceAttributes, error) => {
4
4
  const fireEvent = payload => fireMediaCardEvent(payload, createAnalyticsEvent);
5
5
 
@@ -1,59 +1,53 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import React from 'react';
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useContext } from 'react';
3
+ import { useMemoizeFeatureFlags } from '@atlaskit/media-common';
4
+ import Loadable from 'react-loadable';
3
5
  import { CardLoading } from '../..';
4
- export default class CardLoader extends React.PureComponent {
5
- constructor(...args) {
6
- super(...args);
6
+ const MediaCardContext = /*#__PURE__*/React.createContext({});
7
7
 
8
- _defineProperty(this, "state", {
9
- Card: CardLoader.Card,
10
- MediaCardErrorBoundary: CardLoader.MediaCardErrorBoundary
11
- });
12
- }
8
+ const CardLoadingWithContext = () => {
9
+ const props = useContext(MediaCardContext);
10
+ return /*#__PURE__*/React.createElement(CardLoading, props);
11
+ };
13
12
 
14
- async componentDidMount() {
15
- if (!this.state.Card) {
16
- try {
17
- const [mediaClient, cardModule, mediaCardErrorBoundaryModule] = await Promise.all([import(
18
- /* webpackChunkName: "@atlaskit-internal_media-client" */
19
- '@atlaskit/media-client'), import(
20
- /* webpackChunkName: "@atlaskit-internal_media-card" */
21
- './index'), import(
22
- /* webpackChunkName: "@atlaskit-internal_media-card-error-boundary" */
23
- '../media-card-analytics-error-boundary')]);
24
- CardLoader.Card = mediaClient.withMediaClient(cardModule.Card, this.props.featureFlags);
25
- CardLoader.MediaCardErrorBoundary = mediaCardErrorBoundaryModule.default;
26
- this.setState({
27
- Card: CardLoader.Card,
28
- MediaCardErrorBoundary: CardLoader.MediaCardErrorBoundary
29
- });
30
- } catch (error) {// TODO [MS-2278]: Add operational error to catch async import error
31
- }
32
- }
33
- }
13
+ const MediaCard = Loadable({
14
+ loader: () => import(
15
+ /* webpackChunkName: "@atlaskit-internal_media-card" */
16
+ './index').then(mod => mod.Card),
17
+ loading: () => /*#__PURE__*/React.createElement(CardLoadingWithContext, null)
18
+ });
19
+ const MediaCardErrorBoundary = Loadable({
20
+ loader: () => import(
21
+ /* webpackChunkName: "@atlaskit-internal_media-card-error-boundary" */
22
+ '../media-card-analytics-error-boundary').then(mod => mod.default),
23
+ loading: () => /*#__PURE__*/React.createElement(CardLoadingWithContext, null)
24
+ });
25
+ const MediaCardWithMediaClient = Loadable({
26
+ loader: () => import(
27
+ /* webpackChunkName: "@atlaskit-internal_media-client" */
28
+ '@atlaskit/media-client'),
29
+ loading: () => /*#__PURE__*/React.createElement(CardLoadingWithContext, null),
30
+ render: (loaded, props) => /*#__PURE__*/React.createElement(CardWithMediaClient, _extends({}, props, {
31
+ withMediaClient: loaded.withMediaClient
32
+ }))
33
+ });
34
34
 
35
- render() {
36
- const {
37
- dimensions,
38
- testId,
39
- featureFlags
40
- } = this.props;
41
- const {
42
- Card,
43
- MediaCardErrorBoundary
44
- } = this.state;
35
+ const CardWithMediaClient = props => {
36
+ const {
37
+ withMediaClient,
38
+ featureFlags
39
+ } = props;
40
+ const memoizedFeatureFlags = useMemoizeFeatureFlags(featureFlags);
41
+ const Card = React.useMemo(() => {
42
+ return withMediaClient(MediaCard, memoizedFeatureFlags);
43
+ }, [withMediaClient, memoizedFeatureFlags]);
44
+ return /*#__PURE__*/React.createElement(MediaCardErrorBoundary, null, /*#__PURE__*/React.createElement(Card, props));
45
+ };
45
46
 
46
- if (!Card || !MediaCardErrorBoundary) {
47
- return /*#__PURE__*/React.createElement(CardLoading, {
48
- testId: testId,
49
- dimensions: dimensions,
50
- featureFlags: featureFlags
51
- });
52
- }
47
+ const CardLoader = props => {
48
+ return /*#__PURE__*/React.createElement(MediaCardContext.Provider, {
49
+ value: props
50
+ }, /*#__PURE__*/React.createElement(MediaCardWithMediaClient, props));
51
+ };
53
52
 
54
- return /*#__PURE__*/React.createElement(MediaCardErrorBoundary, null, /*#__PURE__*/React.createElement(Card, this.props));
55
- }
56
-
57
- }
58
-
59
- _defineProperty(CardLoader, "displayName", 'AsyncCard');
53
+ export default CardLoader;
@@ -31,5 +31,8 @@ export const isPreviewableStatus = (cardStatus, {
31
31
  hasPreview,
32
32
  isSupportedByBrowser
33
33
  }) => {
34
- return hasPreview && isPreviewable && (cardStatus === 'complete' || cardStatus === 'loading-preview' || cardStatus === 'uploading' || cardStatus === 'processing' && isSupportedByBrowser);
34
+ return hasPreview && isPreviewable && (cardStatus === 'complete' || cardStatus === 'loading-preview' || cardStatus === 'uploading' || // For Video, we can have local or remote preview while processing.
35
+ // Then, we only want to show the thumbnail if the file is supported by the browser,
36
+ // this way we prevent playing unsupported videos that are not procesed
37
+ cardStatus === 'processing' && isSupportedByBrowser);
35
38
  };
@@ -2,7 +2,7 @@ import { isPreviewableFileState, addFileAttrsToUrl } from '@atlaskit/media-clien
2
2
  import { isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
3
3
  import cardPreviewCache from './cache';
4
4
  import { getCardPreviewFromFilePreview, getCardPreviewFromBackend } from './helpers';
5
- import { MediaCardError, isUnsupportedLocalPreviewError } from '../../../errors';
5
+ import { MediaCardError, SsrPreviewError, isUnsupportedLocalPreviewError } from '../../../errors';
6
6
  import { isBigger } from '../../../utils/dimensionComparer';
7
7
  import { extractFilePreviewStatus, isPreviewableStatus } from './filePreviewStatus';
8
8
  export { getCardPreviewFromFilePreview, getCardPreviewFromBackend, isSupportedLocalPreview } from './helpers';
@@ -28,6 +28,14 @@ const extendAndCachePreview = (id, dimensions, preview, mediaBlobUrlAttrs) => {
28
28
  source = 'cache-remote';
29
29
  break;
30
30
 
31
+ case 'ssr-server':
32
+ source = 'cache-ssr-server';
33
+ break;
34
+
35
+ case 'ssr-client':
36
+ source = 'cache-ssr-client';
37
+ break;
38
+
31
39
  default:
32
40
  source = preview.source;
33
41
  } // We want to embed some meta context into dataURI for Copy/Paste to work.
@@ -111,8 +119,7 @@ export const getCardPreview = async ({
111
119
  throw new MediaCardError('remote-preview-not-ready');
112
120
  }
113
121
 
114
- const remotePreview = await getCardPreviewFromBackend(mediaClient, id, imageUrlParams);
115
- return extendAndCachePreview(id, dimensions, remotePreview, mediaBlobUrlAttrs);
122
+ return fetchAndCacheRemotePreview(mediaClient, id, dimensions, imageUrlParams, mediaBlobUrlAttrs);
116
123
  };
117
124
  export const shouldResolvePreview = ({
118
125
  status,
@@ -126,4 +133,39 @@ export const shouldResolvePreview = ({
126
133
  const statusIsPreviewable = isPreviewableStatus(status, extractFilePreviewStatus(fileState, isBannedLocalPreview, featureFlags));
127
134
  const dimensionsAreBigger = isBigger(prevDimensions, dimensions);
128
135
  return statusIsPreviewable && (!hasCardPreview || dimensionsAreBigger);
136
+ };
137
+ export const getSSRCardPreview = (ssr, mediaClient, id, params, mediaBlobUrlAttrs) => {
138
+ let dataURI;
139
+
140
+ try {
141
+ const rawDataURI = mediaClient.getImageUrlSync(id, params); // We want to embed some meta context into dataURI for Copy/Paste to work.
142
+
143
+ dataURI = mediaBlobUrlAttrs ? addFileAttrsToUrl(rawDataURI, mediaBlobUrlAttrs) : rawDataURI;
144
+ const source = ssr === 'client' ? 'ssr-client' : 'ssr-server';
145
+ return {
146
+ dataURI,
147
+ source,
148
+ orientation: 1
149
+ };
150
+ } catch (e) {
151
+ const reason = ssr === 'server' ? 'ssr-server-uri' : 'ssr-client-uri';
152
+ throw new SsrPreviewError(reason, e);
153
+ }
154
+ };
155
+ export const isLocalPreview = preview => {
156
+ const localSources = ['local', 'cache-local'];
157
+ return localSources.includes(preview.source);
158
+ };
159
+ export const isSSRPreview = preview => isSSRClientPreview(preview) || isSSRServerPreview(preview);
160
+ export const isSSRServerPreview = preview => {
161
+ const ssrClientSources = ['ssr-server', 'cache-ssr-server'];
162
+ return ssrClientSources.includes(preview.source);
163
+ };
164
+ export const isSSRClientPreview = preview => {
165
+ const ssrClientSources = ['ssr-client', 'cache-ssr-client'];
166
+ return ssrClientSources.includes(preview.source);
167
+ };
168
+ export const fetchAndCacheRemotePreview = async (mediaClient, id, dimensions, params, mediaBlobUrlAttrs) => {
169
+ const remotePreview = await getCardPreviewFromBackend(mediaClient, id, params);
170
+ return extendAndCachePreview(id, dimensions, remotePreview, mediaBlobUrlAttrs);
129
171
  };