@atlaskit/media-card 71.0.0 → 73.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/dist/cjs/actions.js +2 -2
  3. package/dist/cjs/errors.js +83 -8
  4. package/dist/cjs/files/cardImageView/cardOverlay/styled.js +1 -1
  5. package/dist/cjs/files/cardImageView/index.js +53 -104
  6. package/dist/cjs/files/cardImageView/styled.js +1 -1
  7. package/dist/cjs/files/index.js +0 -6
  8. package/dist/cjs/index.js +8 -8
  9. package/dist/cjs/root/card/cardAnalytics.js +4 -16
  10. package/dist/cjs/root/card/cardLoader.js +66 -124
  11. package/dist/cjs/root/card/cardState.js +50 -0
  12. package/dist/cjs/root/card/getCardPreview/cache.js +10 -5
  13. package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +53 -0
  14. package/dist/cjs/root/card/getCardPreview/helpers.js +14 -22
  15. package/dist/cjs/root/card/getCardPreview/index.js +177 -97
  16. package/dist/cjs/root/card/getCardStatus.js +7 -1
  17. package/dist/cjs/root/card/index.js +384 -285
  18. package/dist/cjs/root/cardView.js +113 -88
  19. package/dist/cjs/root/inline/loader.js +47 -15
  20. package/dist/cjs/root/inline/mediaInlineCard.js +33 -12
  21. package/dist/cjs/root/inlinePlayer.js +77 -24
  22. package/dist/cjs/root/styled.js +7 -3
  23. package/dist/cjs/root/ui/actionsBar/styled.js +1 -1
  24. package/dist/cjs/root/ui/blanket/styled.js +1 -1
  25. package/dist/cjs/root/ui/common.js +11 -5
  26. package/dist/cjs/root/ui/iconMessage/index.js +16 -7
  27. package/dist/cjs/root/ui/iconWrapper/styled.js +1 -1
  28. package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +47 -123
  29. package/dist/cjs/root/ui/loadingRateLimited/loadingRateLimited.js +6 -4
  30. package/dist/cjs/root/ui/loadingRateLimited/styled.js +2 -2
  31. package/dist/cjs/root/ui/playButton/styled.js +1 -1
  32. package/dist/cjs/root/ui/progressBar/progressBar.js +7 -4
  33. package/dist/cjs/root/ui/progressBar/styled.js +8 -9
  34. package/dist/cjs/root/ui/styled.js +80 -17
  35. package/dist/cjs/root/ui/tickBox/styled.js +1 -1
  36. package/dist/cjs/root/ui/titleBox/failedTitleBox.js +9 -3
  37. package/dist/cjs/root/ui/titleBox/styled.js +2 -4
  38. package/dist/cjs/root/ui/titleBox/titleBox.js +2 -2
  39. package/dist/cjs/styles/index.js +25 -23
  40. package/dist/cjs/styles/mixins.js +1 -1
  41. package/dist/cjs/utils/analytics.js +7 -44
  42. package/dist/cjs/utils/breakpoint.js +1 -1
  43. package/dist/cjs/utils/cardActions/cardActionsDropdownMenu.js +18 -9
  44. package/dist/cjs/utils/cardActions/index.js +10 -10
  45. package/dist/cjs/utils/cardActions/styled.js +1 -1
  46. package/dist/cjs/utils/cardDimensions.js +1 -1
  47. package/dist/cjs/utils/dimensionComparer.js +1 -1
  48. package/dist/cjs/utils/getErrorMessage.js +2 -2
  49. package/dist/cjs/utils/index.js +46 -46
  50. package/dist/cjs/utils/lightCards/styled.js +1 -1
  51. package/dist/cjs/utils/metadata.js +11 -3
  52. package/dist/cjs/utils/objectURLCache.js +7 -1
  53. package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
  54. package/dist/cjs/utils/viewportDetector.js +49 -22
  55. package/dist/cjs/version.json +1 -1
  56. package/dist/es2019/errors.js +42 -2
  57. package/dist/es2019/files/cardImageView/index.js +8 -61
  58. package/dist/es2019/files/index.js +1 -1
  59. package/dist/es2019/root/card/cardAnalytics.js +3 -14
  60. package/dist/es2019/root/card/cardLoader.js +47 -53
  61. package/dist/es2019/root/card/cardState.js +26 -0
  62. package/dist/es2019/root/card/getCardPreview/cache.js +5 -0
  63. package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +38 -0
  64. package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
  65. package/dist/es2019/root/card/getCardPreview/index.js +112 -73
  66. package/dist/es2019/root/card/getCardStatus.js +1 -0
  67. package/dist/es2019/root/card/index.js +308 -190
  68. package/dist/es2019/root/cardView.js +97 -68
  69. package/dist/es2019/root/inline/loader.js +17 -5
  70. package/dist/es2019/root/inline/mediaInlineCard.js +32 -11
  71. package/dist/es2019/root/inlinePlayer.js +56 -4
  72. package/dist/es2019/root/styled.js +2 -1
  73. package/dist/es2019/root/ui/common.js +7 -1
  74. package/dist/es2019/root/ui/iconMessage/index.js +8 -5
  75. package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +35 -88
  76. package/dist/es2019/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  77. package/dist/es2019/root/ui/loadingRateLimited/styled.js +1 -1
  78. package/dist/es2019/root/ui/progressBar/progressBar.js +5 -3
  79. package/dist/es2019/root/ui/progressBar/styled.js +7 -6
  80. package/dist/es2019/root/ui/styled.js +65 -4
  81. package/dist/es2019/root/ui/titleBox/failedTitleBox.js +6 -3
  82. package/dist/es2019/root/ui/titleBox/styled.js +1 -2
  83. package/dist/es2019/root/ui/titleBox/titleBox.js +1 -1
  84. package/dist/es2019/utils/analytics.js +5 -34
  85. package/dist/es2019/utils/cardActions/cardActionsDropdownMenu.js +8 -4
  86. package/dist/es2019/utils/dimensionComparer.js +1 -1
  87. package/dist/es2019/utils/getErrorMessage.js +1 -1
  88. package/dist/es2019/utils/metadata.js +12 -4
  89. package/dist/es2019/utils/objectURLCache.js +5 -0
  90. package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
  91. package/dist/es2019/utils/viewportDetector.js +48 -18
  92. package/dist/es2019/version.json +1 -1
  93. package/dist/esm/actions.js +2 -2
  94. package/dist/esm/errors.js +64 -4
  95. package/dist/esm/files/cardImageView/index.js +51 -102
  96. package/dist/esm/files/index.js +1 -1
  97. package/dist/esm/root/card/cardAnalytics.js +3 -15
  98. package/dist/esm/root/card/cardLoader.js +66 -126
  99. package/dist/esm/root/card/cardState.js +32 -0
  100. package/dist/esm/root/card/getCardPreview/cache.js +9 -2
  101. package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +38 -0
  102. package/dist/esm/root/card/getCardPreview/helpers.js +13 -21
  103. package/dist/esm/root/card/getCardPreview/index.js +144 -91
  104. package/dist/esm/root/card/getCardStatus.js +3 -0
  105. package/dist/esm/root/card/index.js +396 -288
  106. package/dist/esm/root/cardView.js +113 -86
  107. package/dist/esm/root/inline/loader.js +48 -15
  108. package/dist/esm/root/inline/mediaInlineCard.js +32 -11
  109. package/dist/esm/root/inlinePlayer.js +74 -23
  110. package/dist/esm/root/styled.js +3 -2
  111. package/dist/esm/root/ui/common.js +7 -1
  112. package/dist/esm/root/ui/iconMessage/index.js +10 -5
  113. package/dist/esm/root/ui/imageRenderer/imageRenderer.js +37 -116
  114. package/dist/esm/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
  115. package/dist/esm/root/ui/loadingRateLimited/styled.js +1 -1
  116. package/dist/esm/root/ui/progressBar/progressBar.js +6 -3
  117. package/dist/esm/root/ui/progressBar/styled.js +7 -7
  118. package/dist/esm/root/ui/styled.js +61 -13
  119. package/dist/esm/root/ui/titleBox/failedTitleBox.js +7 -3
  120. package/dist/esm/root/ui/titleBox/styled.js +1 -2
  121. package/dist/esm/root/ui/titleBox/titleBox.js +1 -1
  122. package/dist/esm/utils/analytics.js +5 -36
  123. package/dist/esm/utils/cardActions/cardActionsDropdownMenu.js +17 -9
  124. package/dist/esm/utils/dimensionComparer.js +1 -1
  125. package/dist/esm/utils/getErrorMessage.js +1 -1
  126. package/dist/esm/utils/metadata.js +12 -4
  127. package/dist/esm/utils/objectURLCache.js +6 -0
  128. package/dist/esm/utils/shouldDisplayImageThumbnail.js +1 -1
  129. package/dist/esm/utils/viewportDetector.js +48 -21
  130. package/dist/esm/version.json +1 -1
  131. package/dist/types/errors.d.ts +15 -1
  132. package/dist/types/files/cardImageView/index.d.ts +4 -13
  133. package/dist/types/files/cardImageView/styled.d.ts +1 -1
  134. package/dist/types/files/index.d.ts +1 -1
  135. package/dist/types/index.d.ts +7 -4
  136. package/dist/types/root/card/cardAnalytics.d.ts +1 -6
  137. package/dist/types/root/card/cardLoader.d.ts +5 -19
  138. package/dist/types/root/card/cardState.d.ts +5 -0
  139. package/dist/types/root/card/getCardPreview/cache.d.ts +3 -1
  140. package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
  141. package/dist/types/root/card/getCardPreview/helpers.d.ts +3 -4
  142. package/dist/types/root/card/getCardPreview/index.d.ts +24 -14
  143. package/dist/types/root/card/getCardStatus.d.ts +1 -0
  144. package/dist/types/root/card/index.d.ts +20 -18
  145. package/dist/types/root/cardView.d.ts +13 -8
  146. package/dist/types/root/inline/loader.d.ts +2 -0
  147. package/dist/types/root/inline/mediaInlineCard.d.ts +3 -5
  148. package/dist/types/root/inlinePlayer.d.ts +8 -1
  149. package/dist/types/root/styled.d.ts +1 -0
  150. package/dist/types/root/ui/common.d.ts +4 -1
  151. package/dist/types/root/ui/iconMessage/index.d.ts +4 -3
  152. package/dist/types/root/ui/iconWrapper/styled.d.ts +1 -1
  153. package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +14 -15
  154. package/dist/types/root/ui/loadingRateLimited/loadingRateLimited.d.ts +2 -1
  155. package/dist/types/root/ui/loadingRateLimited/styled.d.ts +1 -1
  156. package/dist/types/root/ui/playButton/playButton.d.ts +1 -0
  157. package/dist/types/root/ui/progressBar/progressBar.d.ts +4 -2
  158. package/dist/types/root/ui/progressBar/styled.d.ts +3 -2
  159. package/dist/types/root/ui/styled.d.ts +10 -3
  160. package/dist/types/root/ui/tickBox/tickBox.d.ts +1 -0
  161. package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +3 -1
  162. package/dist/types/root/ui/titleBox/styled.d.ts +1 -1
  163. package/dist/types/root/ui/titleBox/titleBox.d.ts +2 -10
  164. package/dist/types/styles/mixins.d.ts +1 -1
  165. package/dist/types/types.d.ts +7 -1
  166. package/dist/types/utils/analytics.d.ts +6 -15
  167. package/dist/types/utils/cardDimensions.d.ts +4 -4
  168. package/dist/types/utils/dimensionComparer.d.ts +1 -1
  169. package/dist/types/utils/getErrorMessage.d.ts +1 -0
  170. package/dist/types/utils/metadata.d.ts +2 -2
  171. package/dist/types/utils/objectURLCache.d.ts +2 -1
  172. package/dist/types/utils/viewportDetector.d.ts +13 -5
  173. package/example-helpers/developmentUseMessage.tsx +14 -0
  174. package/example-helpers/index.tsx +55 -4
  175. package/example-helpers/selectableCard.tsx +2 -1
  176. package/package.json +18 -16
  177. package/dist/cjs/root/card/cardSSRView.js +0 -112
  178. package/dist/cjs/root/card/getCardPreview/types.js +0 -5
  179. package/dist/cjs/root/ui/Breakpoint.js +0 -13
  180. package/dist/cjs/root/ui/styledSSR.js +0 -108
  181. package/dist/cjs/utils/fileAttributesContext.js +0 -40
  182. package/dist/cjs/utils/lazyContent/index.js +0 -56
  183. package/dist/cjs/utils/lazyContent/styled.js +0 -23
  184. package/dist/es2019/root/card/cardSSRView.js +0 -92
  185. package/dist/es2019/root/card/getCardPreview/types.js +0 -1
  186. package/dist/es2019/root/ui/Breakpoint.js +0 -6
  187. package/dist/es2019/root/ui/styledSSR.js +0 -93
  188. package/dist/es2019/utils/fileAttributesContext.js +0 -19
  189. package/dist/es2019/utils/lazyContent/index.js +0 -18
  190. package/dist/es2019/utils/lazyContent/styled.js +0 -12
  191. package/dist/esm/root/card/cardSSRView.js +0 -91
  192. package/dist/esm/root/card/getCardPreview/types.js +0 -1
  193. package/dist/esm/root/ui/Breakpoint.js +0 -6
  194. package/dist/esm/root/ui/styledSSR.js +0 -76
  195. package/dist/esm/utils/fileAttributesContext.js +0 -18
  196. package/dist/esm/utils/lazyContent/index.js +0 -41
  197. package/dist/esm/utils/lazyContent/styled.js +0 -14
  198. package/dist/types/root/card/cardSSRView.d.ts +0 -13
  199. package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
  200. package/dist/types/root/ui/Breakpoint.d.ts +0 -4
  201. package/dist/types/root/ui/styledSSR.d.ts +0 -16
  202. package/dist/types/utils/fileAttributesContext.d.ts +0 -10
  203. package/dist/types/utils/lazyContent/index.d.ts +0 -11
  204. package/dist/types/utils/lazyContent/styled.d.ts +0 -5
@@ -5,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
 
@@ -20,8 +20,8 @@ var getProcessingStatusFromFileState = function getProcessingStatusFromFileState
20
20
  }
21
21
  };
22
22
 
23
- var getFileDetails = function getFileDetails(state) {
24
- return !(0, _mediaClient.isErrorFileState)(state) ? {
23
+ var getFileDetailsFromFileState = function getFileDetailsFromFileState(state) {
24
+ return {
25
25
  id: state.id,
26
26
  name: state.name,
27
27
  size: state.size,
@@ -29,8 +29,16 @@ var getFileDetails = function getFileDetails(state) {
29
29
  createdAt: state.createdAt,
30
30
  mediaType: state.mediaType,
31
31
  processingStatus: getProcessingStatusFromFileState(state.status)
32
+ };
33
+ };
34
+
35
+ var getFileDetails = function getFileDetails(identifier, fileState) {
36
+ return (0, _mediaClient.isFileIdentifier)(identifier) ? fileState && !(0, _mediaClient.isErrorFileState)(fileState) ? getFileDetailsFromFileState(fileState) : {
37
+ id: identifier.id
32
38
  } : {
33
- id: state.id
39
+ id: identifier.mediaItemType,
40
+ name: identifier.name || identifier.dataURI,
41
+ mediaType: 'image'
34
42
  };
35
43
  };
36
44
 
@@ -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
 
@@ -86,6 +86,12 @@ var ObjectURLCache = /*#__PURE__*/function () {
86
86
  value: function set(key, value) {
87
87
  this.cache.set(key, value);
88
88
  }
89
+ }, {
90
+ key: "remove",
91
+ value: function remove(key) {
92
+ var removed = this.cache.remove(key);
93
+ removed && URL.revokeObjectURL(removed.dataURI);
94
+ }
89
95
  }]);
90
96
  return ObjectURLCache;
91
97
  }();
@@ -13,7 +13,7 @@ var shouldDisplayImageThumbnail = function shouldDisplayImageThumbnail(cardStatu
13
13
  }
14
14
 
15
15
  if (dataURI) {
16
- return mediaItemType === 'external-image' || mimeType && (0, _mediaClient.isMimeTypeSupportedByBrowser)(mimeType) || cardStatus === 'complete';
16
+ return mediaItemType === 'external-image' || mimeType && (0, _mediaClient.isMimeTypeSupportedByBrowser)(mimeType) || cardStatus === 'complete' || cardStatus === 'loading-preview';
17
17
  }
18
18
 
19
19
  return false;
@@ -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": "71.0.0",
3
+ "version": "73.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -27,13 +27,53 @@ 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
+
38
+ }
39
+ export const getImageLoadPrimaryReason = source => {
40
+ switch (source) {
41
+ case 'cache-remote':
42
+ return 'cache-remote-uri';
43
+
44
+ case 'cache-local':
45
+ return 'cache-local-uri';
46
+
47
+ case 'external':
48
+ return 'external-uri';
49
+
50
+ case 'local':
51
+ return 'local-uri';
52
+
53
+ case 'remote':
54
+ return 'remote-uri';
55
+ // This fail reason will come from a bug, most likely.
56
+
57
+ default:
58
+ return `unknown-uri`;
59
+ }
60
+ };
61
+ export class ImageLoadError extends MediaCardError {
62
+ constructor(source) {
63
+ super(getImageLoadPrimaryReason(source));
64
+ }
65
+
30
66
  }
31
67
  export function isMediaCardError(err) {
32
68
  return err instanceof MediaCardError;
33
69
  }
34
70
  export const isLocalPreviewError = err => err instanceof LocalPreviewError;
35
71
  export const isRemotePreviewError = err => err instanceof RemotePreviewError;
36
- export const isUnsupportedLocalPreviewError = err => isMediaCardError(err) && err.primaryReason === 'local-preview-unsupported'; // In a try/catch statement, the error caught is the type of any.
72
+ export const isUnsupportedLocalPreviewError = err => isMediaCardError(err) && err.primaryReason === 'local-preview-unsupported';
73
+ export function isImageLoadError(err) {
74
+ return err instanceof ImageLoadError;
75
+ } // In a try/catch statement, the error caught is the type of any.
37
76
  // We can use this helper to ensure that the error handled is the type of MediaCardError if unsure
38
77
 
39
- export const ensureMediaCardError = (primaryReason, error) => isMediaCardError(error) ? error : new MediaCardError(primaryReason, error);
78
+ export const ensureMediaCardError = (primaryReason, error) => isMediaCardError(error) ? error : new MediaCardError(primaryReason, error);
79
+ export const isUploadError = error => error && error.primaryReason === 'upload';
@@ -9,12 +9,9 @@ import { CardLoading } from '../../utils/lightCards/cardLoading';
9
9
  import { shouldDisplayImageThumbnail } from '../../utils/shouldDisplayImageThumbnail';
10
10
  import { ProgressBar } from '../../utils/progressBar';
11
11
  import CardActions from '../../utils/cardActions';
12
- import { withAnalyticsEvents } from '@atlaskit/analytics-next';
13
- import { fireMediaCardEvent, RenderEventAction, getRenderSucceededEventPayload, getRenderFailedFileUriPayload, getRenderFailedExternalUriPayload } from '../../utils/analytics';
14
- import { withFileAttributes } from '../../utils/fileAttributesContext';
15
12
  export const fileCardImageViewSelector = 'media-file-card-view';
16
13
  export const fileCardImageViewSelectedSelector = 'media-file-card-view-selected';
17
- export class FileCardImageViewBase extends Component {
14
+ export class FileCardImageView extends Component {
18
15
  constructor(...args) {
19
16
  super(...args);
20
17
 
@@ -141,54 +138,6 @@ export class FileCardImageViewBase extends Component {
141
138
  })));
142
139
  });
143
140
 
144
- _defineProperty(this, "onImageLoad", () => {
145
- const {
146
- createAnalyticsEvent,
147
- fileAttributes,
148
- timeElapsedTillCommenced
149
- } = this.props;
150
-
151
- if (fileAttributes && this.shouldFireEvent(RenderEventAction.SUCCEEDED)) {
152
- const timeElapsedTillSucceeded = performance.now();
153
- const durationSinceCommenced = timeElapsedTillCommenced && timeElapsedTillSucceeded - timeElapsedTillCommenced;
154
- const performanceAttributes = {
155
- overall: {
156
- durationSincePageStart: timeElapsedTillSucceeded,
157
- durationSinceCommenced
158
- }
159
- };
160
- fireMediaCardEvent(getRenderSucceededEventPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
161
- }
162
- });
163
-
164
- _defineProperty(this, "onImageError", () => {
165
- const {
166
- fileAttributes
167
- } = this.props;
168
-
169
- if (fileAttributes && this.shouldFireEvent(RenderEventAction.FAILED)) {
170
- const {
171
- createAnalyticsEvent,
172
- mediaItemType,
173
- timeElapsedTillCommenced
174
- } = this.props;
175
- const timeElapsedTillFailed = performance.now();
176
- const durationSinceCommenced = timeElapsedTillCommenced && timeElapsedTillFailed - timeElapsedTillCommenced;
177
- const performanceAttributes = {
178
- overall: {
179
- durationSincePageStart: timeElapsedTillFailed,
180
- durationSinceCommenced
181
- }
182
- };
183
-
184
- if (mediaItemType === 'file') {
185
- fireMediaCardEvent(getRenderFailedFileUriPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
186
- } else if (mediaItemType === 'external-image') {
187
- fireMediaCardEvent(getRenderFailedExternalUriPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
188
- }
189
- }
190
- });
191
-
192
141
  _defineProperty(this, "renderMediaImage", () => {
193
142
  const {
194
143
  status,
@@ -198,7 +147,9 @@ export class FileCardImageViewBase extends Component {
198
147
  mimeType,
199
148
  previewOrientation,
200
149
  onDisplayImage,
201
- alt
150
+ alt,
151
+ onImageLoad,
152
+ onImageError
202
153
  } = this.props;
203
154
 
204
155
  if (!shouldDisplayImageThumbnail(status, mediaItemType, dataURI, mediaType, mimeType)) {
@@ -216,13 +167,11 @@ export class FileCardImageViewBase extends Component {
216
167
  crop: this.isCropped,
217
168
  stretch: this.isStretched,
218
169
  previewOrientation: previewOrientation,
219
- onImageLoad: this.onImageLoad,
220
- onImageError: this.onImageError
170
+ onImageLoad: onImageLoad,
171
+ onImageError: onImageError
221
172
  });
222
173
  });
223
174
 
224
- _defineProperty(this, "shouldFireEvent", action => !this.lastAnalyticsAction || this.lastAnalyticsAction !== action);
225
-
226
175
  _defineProperty(this, "renderProgressBar", () => {
227
176
  const {
228
177
  mediaName,
@@ -345,9 +294,7 @@ export class FileCardImageViewBase extends Component {
345
294
 
346
295
  }
347
296
 
348
- _defineProperty(FileCardImageViewBase, "defaultProps", {
297
+ _defineProperty(FileCardImageView, "defaultProps", {
349
298
  resizeMode: 'crop',
350
299
  disableOverlay: false
351
- });
352
-
353
- export const FileCardImageView = withAnalyticsEvents()(withFileAttributes(FileCardImageViewBase));
300
+ });
@@ -1 +1 @@
1
- export { FileCardImageView, FileCardImageViewBase } from './cardImageView';
1
+ export { FileCardImageView } from './cardImageView';
@@ -1,22 +1,11 @@
1
1
  import { fireMediaCardEvent, getRenderSucceededEventPayload, getRenderErrorEventPayload, getRenderFailedFileStatusPayload, getCopiedFilePayload, getRenderCommencedEventPayload, getRenderPreviewableCardPayload } from '../../utils/analytics';
2
- export const relevantFeatureFlagNames = ['newCardExperience', 'poll_intervalMs', 'poll_maxAttempts', 'poll_backoffFactor', 'poll_maxIntervalMs', 'captions'];
3
- export const fireOperationalEvent = (createAnalyticsEvent, status, fileAttributes, performanceAttributes, {
4
- cardPreview,
5
- error
6
- } = {}) => {
2
+ export const relevantFeatureFlagNames = ['newCardExperience', 'captions', 'timestampOnVideo'];
3
+ export const fireOperationalEvent = (createAnalyticsEvent, status, fileAttributes, performanceAttributes, error) => {
7
4
  const fireEvent = payload => fireMediaCardEvent(payload, createAnalyticsEvent);
8
5
 
9
6
  switch (status) {
10
7
  case 'complete':
11
- /**
12
- * A Card that is considered Complete and has no preview,
13
- * reflects an expected behaviour, and thus a legitimate
14
- * success case to be logged.
15
- */
16
- if (!(cardPreview !== null && cardPreview !== void 0 && cardPreview.dataURI)) {
17
- fireEvent(getRenderSucceededEventPayload(fileAttributes, performanceAttributes));
18
- }
19
-
8
+ fireEvent(getRenderSucceededEventPayload(fileAttributes, performanceAttributes));
20
9
  break;
21
10
 
22
11
  case 'failed-processing':
@@ -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;
@@ -0,0 +1,26 @@
1
+ import { isErrorFileState } from '@atlaskit/media-client';
2
+ import { MediaCardError } from '../../errors';
3
+ import { getCardStatus, isFinalCardStatus } from './getCardStatus';
4
+ import { extractFilePreviewStatus } from './getCardPreview';
5
+ export const createStateUpdater = newState => prevState => {
6
+ // Only override if previous status is non-final
7
+ // or new status is 'complete'
8
+ if (isFinalCardStatus(prevState.status) && newState.status !== 'complete') {
9
+ return prevState;
10
+ }
11
+
12
+ return { ...prevState,
13
+ ...newState
14
+ };
15
+ };
16
+ export const getCardStateFromFileState = (fileState, isBannedLocalPreview, featureFlags) => {
17
+ const status = getCardStatus(fileState.status, extractFilePreviewStatus(fileState, isBannedLocalPreview, featureFlags));
18
+ const error = status === 'error' && isErrorFileState(fileState) ? new MediaCardError('error-file-state', new Error(fileState.message)) : undefined;
19
+ const progress = status === 'uploading' && fileState.status === 'uploading' ? fileState.progress : 1;
20
+ return {
21
+ fileState,
22
+ status,
23
+ progress,
24
+ error
25
+ };
26
+ };
@@ -17,6 +17,11 @@ export class CardPreviewCacheImpl {
17
17
  this.previewCache.set(cacheKey, cardPreview);
18
18
  });
19
19
 
20
+ _defineProperty(this, "remove", (id, dimensions) => {
21
+ const cacheKey = getCacheKey(id, dimensions);
22
+ this.previewCache.remove(cacheKey);
23
+ });
24
+
20
25
  this.previewCache = previewCache;
21
26
  }
22
27