@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,32 +5,41 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- Object.defineProperty(exports, "getCardPreviewFromFilePreview", {
8
+ Object.defineProperty(exports, "extractFilePreviewStatus", {
9
9
  enumerable: true,
10
10
  get: function get() {
11
- return _helpers.getCardPreviewFromFilePreview;
11
+ return _filePreviewStatus.extractFilePreviewStatus;
12
12
  }
13
13
  });
14
+ exports.getCardPreview = exports.fetchAndCacheRemotePreview = void 0;
14
15
  Object.defineProperty(exports, "getCardPreviewFromBackend", {
15
16
  enumerable: true,
16
17
  get: function get() {
17
18
  return _helpers.getCardPreviewFromBackend;
18
19
  }
19
20
  });
21
+ exports.getCardPreviewFromCache = void 0;
22
+ Object.defineProperty(exports, "getCardPreviewFromFilePreview", {
23
+ enumerable: true,
24
+ get: function get() {
25
+ return _helpers.getCardPreviewFromFilePreview;
26
+ }
27
+ });
28
+ exports.isSSRServerPreview = exports.isSSRPreview = exports.isSSRClientPreview = exports.isLocalPreview = exports.getSSRCardPreview = exports.getFilePreviewFromFileState = void 0;
20
29
  Object.defineProperty(exports, "isSupportedLocalPreview", {
21
30
  enumerable: true,
22
31
  get: function get() {
23
32
  return _helpers.isSupportedLocalPreview;
24
33
  }
25
34
  });
26
- exports.getCardPreview = exports.getFilePreviewFromFileState = exports.getCardPreviewFromCache = exports.shouldGetCardPreview = exports.extractFilePreviewStatus = void 0;
35
+ exports.shouldResolvePreview = exports.removeCardPreviewFromCache = void 0;
27
36
 
28
37
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
29
38
 
30
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
-
32
39
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
33
40
 
41
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
42
+
34
43
  var _mediaClient = require("@atlaskit/media-client");
35
44
 
36
45
  var _mediaCommon = require("@atlaskit/media-common");
@@ -41,57 +50,23 @@ var _helpers = require("./helpers");
41
50
 
42
51
  var _errors = require("../../../errors");
43
52
 
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
45
-
46
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
47
-
48
- // TODO: align these checks with helpers from Media Client
49
- // https://product-fabric.atlassian.net/browse/BMPT-1300
50
- var extractFilePreviewStatus = function extractFilePreviewStatus(fileState, featureFlags) {
51
- var hasFilesize = 'size' in fileState && !!fileState.size;
52
-
53
- var _ref = 'mediaType' in fileState && fileState || {},
54
- mediaType = _ref.mediaType;
55
-
56
- var _ref2 = 'mimeType' in fileState && fileState || {},
57
- mimeType = _ref2.mimeType;
58
-
59
- var isPreviewable = !!mediaType && (0, _mediaClient.isPreviewableType)(mediaType, featureFlags);
60
- /**
61
- * Local preview is available only if it's supported by browser and supported by Media Card (isSupportedLocalPreview)
62
- * For example, SVGs are mime type NOT supported by browser but media type supported by Media Card (image)
63
- * Then, local Preview NOT available
64
- */
65
-
66
- var hasLocalPreview = (0, _mediaClient.isPreviewableFileState)(fileState) && (0, _helpers.isSupportedLocalPreview)(mediaType) && !!mimeType && (0, _mediaCommon.isMimeTypeSupportedByBrowser)(mimeType);
67
- var hasRemotePreview = (0, _mediaClient.isImageRepresentationReady)(fileState);
68
- var hasPreview = hasLocalPreview || hasRemotePreview;
69
- var isSupportedByBrowser = !!mimeType && (0, _mediaCommon.isMimeTypeSupportedByBrowser)(mimeType);
70
- return {
71
- hasFilesize: hasFilesize,
72
- isPreviewable: isPreviewable,
73
- hasPreview: hasPreview,
74
- isSupportedByBrowser: isSupportedByBrowser
75
- };
76
- };
53
+ var _dimensionComparer = require("../../../utils/dimensionComparer");
77
54
 
78
- exports.extractFilePreviewStatus = extractFilePreviewStatus;
55
+ var _filePreviewStatus = require("./filePreviewStatus");
79
56
 
80
- var shouldGetCardPreview = function shouldGetCardPreview(cardStatus, _ref3) {
81
- var isPreviewable = _ref3.isPreviewable,
82
- hasPreview = _ref3.hasPreview,
83
- isSupportedByBrowser = _ref3.isSupportedByBrowser;
84
- return cardStatus === 'loading-preview' || cardStatus === 'uploading' && hasPreview && isPreviewable || cardStatus === 'processing' && hasPreview && isPreviewable && isSupportedByBrowser;
85
- };
57
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
58
+
59
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
86
60
 
87
- exports.shouldGetCardPreview = shouldGetCardPreview;
88
61
  var getCardPreviewFromCache = _cache.default.get;
62
+ exports.getCardPreviewFromCache = getCardPreviewFromCache;
63
+ var removeCardPreviewFromCache = _cache.default.remove;
89
64
  /**
90
65
  * Will return the preview if available and supported by the browser
91
66
  * See extractFilePreviewStatus "hasLocalPreview" logic
92
67
  */
93
68
 
94
- exports.getCardPreviewFromCache = getCardPreviewFromCache;
69
+ exports.removeCardPreviewFromCache = removeCardPreviewFromCache;
95
70
 
96
71
  var getFilePreviewFromFileState = function getFilePreviewFromFileState(fileState) {
97
72
  return 'mimeType' in fileState && (0, _mediaCommon.isMimeTypeSupportedByBrowser)(fileState.mimeType) && (0, _mediaClient.isPreviewableFileState)(fileState) ? fileState.preview : undefined;
@@ -99,6 +74,42 @@ var getFilePreviewFromFileState = function getFilePreviewFromFileState(fileState
99
74
 
100
75
  exports.getFilePreviewFromFileState = getFilePreviewFromFileState;
101
76
 
77
+ var extendAndCachePreview = function extendAndCachePreview(id, dimensions, preview, mediaBlobUrlAttrs) {
78
+ var source;
79
+
80
+ switch (preview.source) {
81
+ case 'local':
82
+ source = 'cache-local';
83
+ break;
84
+
85
+ case 'remote':
86
+ source = 'cache-remote';
87
+ break;
88
+
89
+ case 'ssr-server':
90
+ source = 'cache-ssr-server';
91
+ break;
92
+
93
+ case 'ssr-client':
94
+ source = 'cache-ssr-client';
95
+ break;
96
+
97
+ default:
98
+ source = preview.source;
99
+ } // We want to embed some meta context into dataURI for Copy/Paste to work.
100
+
101
+
102
+ var dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI; // We store new cardPreview into cache
103
+
104
+ _cache.default.set(id, dimensions, _objectSpread(_objectSpread({}, preview), {}, {
105
+ source: source,
106
+ dataURI: dataURI
107
+ }));
108
+
109
+ return _objectSpread(_objectSpread({}, preview), {}, {
110
+ dataURI: dataURI
111
+ });
112
+ };
102
113
  /**
103
114
  * This function will try to return a Card preview, either from cache, local preview or remote preview.
104
115
  * It should only be called if there is a chance to get either a remote or a local preview, or both.
@@ -109,49 +120,48 @@ exports.getFilePreviewFromFileState = getFilePreviewFromFileState;
109
120
  * In that case, we still want to report the local preview error to the caller, for feature realiability track.
110
121
  * hence the use of the optional callback onLocalPreviewError
111
122
  */
123
+
124
+
112
125
  var getCardPreview = /*#__PURE__*/function () {
113
- var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref4) {
114
- var mediaClient, id, collectionName, requestedDimensions, isRemotePreviewReady, addContextToDataURI, filePreview, _ref4$dimensions, dimensions, resizeMode, onLocalPreviewError, cardPreview;
126
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
127
+ var mediaClient, id, _ref$dimensions, dimensions, filePreview, onLocalPreviewError, isRemotePreviewReady, imageUrlParams, mediaBlobUrlAttrs, cachedPreview, localPreview;
115
128
 
116
129
  return _regenerator.default.wrap(function _callee$(_context) {
117
130
  while (1) {
118
131
  switch (_context.prev = _context.next) {
119
132
  case 0:
120
- mediaClient = _ref4.mediaClient, id = _ref4.id, collectionName = _ref4.collectionName, requestedDimensions = _ref4.requestedDimensions, isRemotePreviewReady = _ref4.isRemotePreviewReady, addContextToDataURI = _ref4.addContextToDataURI, filePreview = _ref4.filePreview, _ref4$dimensions = _ref4.dimensions, dimensions = _ref4$dimensions === void 0 ? {} : _ref4$dimensions, resizeMode = _ref4.resizeMode, onLocalPreviewError = _ref4.onLocalPreviewError;
121
- cardPreview = _cache.default.get(id, dimensions);
133
+ mediaClient = _ref.mediaClient, id = _ref.id, _ref$dimensions = _ref.dimensions, dimensions = _ref$dimensions === void 0 ? {} : _ref$dimensions, filePreview = _ref.filePreview, onLocalPreviewError = _ref.onLocalPreviewError, isRemotePreviewReady = _ref.isRemotePreviewReady, imageUrlParams = _ref.imageUrlParams, mediaBlobUrlAttrs = _ref.mediaBlobUrlAttrs;
134
+ cachedPreview = _cache.default.get(id, dimensions);
122
135
 
123
- if (!cardPreview) {
136
+ if (!cachedPreview) {
124
137
  _context.next = 4;
125
138
  break;
126
139
  }
127
140
 
128
- return _context.abrupt("return", _objectSpread(_objectSpread({}, cardPreview), {}, {
129
- source: 'cache'
130
- }));
141
+ return _context.abrupt("return", cachedPreview);
131
142
 
132
143
  case 4:
133
144
  _context.prev = 4;
134
- _context.t0 = filePreview;
135
145
 
136
- if (!_context.t0) {
146
+ if (!filePreview) {
137
147
  _context.next = 10;
138
148
  break;
139
149
  }
140
150
 
141
- _context.next = 9;
151
+ _context.next = 8;
142
152
  return (0, _helpers.getCardPreviewFromFilePreview)(filePreview);
143
153
 
144
- case 9:
145
- _context.t0 = _context.sent;
154
+ case 8:
155
+ localPreview = _context.sent;
156
+ return _context.abrupt("return", extendAndCachePreview(id, dimensions, localPreview, mediaBlobUrlAttrs));
146
157
 
147
158
  case 10:
148
- cardPreview = _context.t0;
149
- _context.next = 18;
159
+ _context.next = 17;
150
160
  break;
151
161
 
152
- case 13:
153
- _context.prev = 13;
154
- _context.t1 = _context["catch"](4);
162
+ case 12:
163
+ _context.prev = 12;
164
+ _context.t0 = _context["catch"](4);
155
165
 
156
166
  /**
157
167
  * We report the error if:
@@ -163,8 +173,8 @@ var getCardPreview = /*#__PURE__*/function () {
163
173
  * i.e. local preview is available and not supported,
164
174
  * but we are after the remote preview instead.
165
175
  */
166
- if (!(0, _errors.isUnsupportedLocalPreviewError)(_context.t1) || (0, _errors.isUnsupportedLocalPreviewError)(_context.t1) && !isRemotePreviewReady) {
167
- onLocalPreviewError && onLocalPreviewError(_context.t1);
176
+ if (!(0, _errors.isUnsupportedLocalPreviewError)(_context.t0) || (0, _errors.isUnsupportedLocalPreviewError)(_context.t0) && !isRemotePreviewReady) {
177
+ onLocalPreviewError && onLocalPreviewError(_context.t0);
168
178
  }
169
179
  /**
170
180
  * No matter the reason why the local preview failed, we break the process
@@ -173,56 +183,126 @@ var getCardPreview = /*#__PURE__*/function () {
173
183
 
174
184
 
175
185
  if (isRemotePreviewReady) {
176
- _context.next = 18;
186
+ _context.next = 17;
177
187
  break;
178
188
  }
179
189
 
180
- throw _context.t1;
181
-
182
- case 18:
183
- if (cardPreview) {
184
- _context.next = 24;
185
- break;
186
- }
190
+ throw _context.t0;
187
191
 
192
+ case 17:
188
193
  if (isRemotePreviewReady) {
189
- _context.next = 21;
194
+ _context.next = 19;
190
195
  break;
191
196
  }
192
197
 
193
198
  throw new _errors.MediaCardError('remote-preview-not-ready');
194
199
 
195
- case 21:
196
- _context.next = 23;
197
- return (0, _helpers.getCardPreviewFromBackend)(mediaClient, id, requestedDimensions, collectionName, resizeMode);
200
+ case 19:
201
+ return _context.abrupt("return", fetchAndCacheRemotePreview(mediaClient, id, dimensions, imageUrlParams, mediaBlobUrlAttrs));
202
+
203
+ case 20:
204
+ case "end":
205
+ return _context.stop();
206
+ }
207
+ }
208
+ }, _callee, null, [[4, 12]]);
209
+ }));
198
210
 
199
- case 23:
200
- cardPreview = _context.sent;
211
+ return function getCardPreview(_x) {
212
+ return _ref2.apply(this, arguments);
213
+ };
214
+ }();
201
215
 
202
- case 24:
203
- /**
204
- * In case we've retrieved cardPreview using one of the two methods above,
205
- * we want to embed some meta context into dataURI for Copy/Paste to work.
206
- */
207
- cardPreview = _objectSpread(_objectSpread({}, cardPreview), {}, {
208
- dataURI: addContextToDataURI(cardPreview.dataURI)
209
- }); // We store new cardPreview into cache
216
+ exports.getCardPreview = getCardPreview;
217
+
218
+ var shouldResolvePreview = function shouldResolvePreview(_ref3) {
219
+ var status = _ref3.status,
220
+ fileState = _ref3.fileState,
221
+ dimensions = _ref3.dimensions,
222
+ prevDimensions = _ref3.prevDimensions,
223
+ hasCardPreview = _ref3.hasCardPreview,
224
+ isBannedLocalPreview = _ref3.isBannedLocalPreview,
225
+ featureFlags = _ref3.featureFlags;
226
+ var statusIsPreviewable = (0, _filePreviewStatus.isPreviewableStatus)(status, (0, _filePreviewStatus.extractFilePreviewStatus)(fileState, isBannedLocalPreview, featureFlags));
227
+ var dimensionsAreBigger = (0, _dimensionComparer.isBigger)(prevDimensions, dimensions);
228
+ return statusIsPreviewable && (!hasCardPreview || dimensionsAreBigger);
229
+ };
230
+
231
+ exports.shouldResolvePreview = shouldResolvePreview;
210
232
 
211
- _cache.default.set(id, dimensions, cardPreview);
233
+ var getSSRCardPreview = function getSSRCardPreview(ssr, mediaClient, id, params, mediaBlobUrlAttrs) {
234
+ var dataURI;
212
235
 
213
- return _context.abrupt("return", cardPreview);
236
+ try {
237
+ var rawDataURI = mediaClient.getImageUrlSync(id, params); // We want to embed some meta context into dataURI for Copy/Paste to work.
238
+
239
+ dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(rawDataURI, mediaBlobUrlAttrs) : rawDataURI;
240
+ var source = ssr === 'client' ? 'ssr-client' : 'ssr-server';
241
+ return {
242
+ dataURI: dataURI,
243
+ source: source,
244
+ orientation: 1
245
+ };
246
+ } catch (e) {
247
+ var reason = ssr === 'server' ? 'ssr-server-uri' : 'ssr-client-uri';
248
+ throw new _errors.SsrPreviewError(reason, e);
249
+ }
250
+ };
251
+
252
+ exports.getSSRCardPreview = getSSRCardPreview;
253
+
254
+ var isLocalPreview = function isLocalPreview(preview) {
255
+ var localSources = ['local', 'cache-local'];
256
+ return localSources.includes(preview.source);
257
+ };
214
258
 
215
- case 27:
259
+ exports.isLocalPreview = isLocalPreview;
260
+
261
+ var isSSRPreview = function isSSRPreview(preview) {
262
+ return isSSRClientPreview(preview) || isSSRServerPreview(preview);
263
+ };
264
+
265
+ exports.isSSRPreview = isSSRPreview;
266
+
267
+ var isSSRServerPreview = function isSSRServerPreview(preview) {
268
+ var ssrClientSources = ['ssr-server', 'cache-ssr-server'];
269
+ return ssrClientSources.includes(preview.source);
270
+ };
271
+
272
+ exports.isSSRServerPreview = isSSRServerPreview;
273
+
274
+ var isSSRClientPreview = function isSSRClientPreview(preview) {
275
+ var ssrClientSources = ['ssr-client', 'cache-ssr-client'];
276
+ return ssrClientSources.includes(preview.source);
277
+ };
278
+
279
+ exports.isSSRClientPreview = isSSRClientPreview;
280
+
281
+ var fetchAndCacheRemotePreview = /*#__PURE__*/function () {
282
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(mediaClient, id, dimensions, params, mediaBlobUrlAttrs) {
283
+ var remotePreview;
284
+ return _regenerator.default.wrap(function _callee2$(_context2) {
285
+ while (1) {
286
+ switch (_context2.prev = _context2.next) {
287
+ case 0:
288
+ _context2.next = 2;
289
+ return (0, _helpers.getCardPreviewFromBackend)(mediaClient, id, params);
290
+
291
+ case 2:
292
+ remotePreview = _context2.sent;
293
+ return _context2.abrupt("return", extendAndCachePreview(id, dimensions, remotePreview, mediaBlobUrlAttrs));
294
+
295
+ case 4:
216
296
  case "end":
217
- return _context.stop();
297
+ return _context2.stop();
218
298
  }
219
299
  }
220
- }, _callee, null, [[4, 13]]);
300
+ }, _callee2);
221
301
  }));
222
302
 
223
- return function getCardPreview(_x) {
224
- return _ref5.apply(this, arguments);
303
+ return function fetchAndCacheRemotePreview(_x2, _x3, _x4, _x5, _x6) {
304
+ return _ref4.apply(this, arguments);
225
305
  };
226
306
  }();
227
307
 
228
- exports.getCardPreview = getCardPreview;
308
+ exports.fetchAndCacheRemotePreview = fetchAndCacheRemotePreview;
@@ -3,7 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getCardStatus = void 0;
6
+ exports.isFinalCardStatus = exports.getCardStatus = void 0;
7
+
8
+ var isFinalCardStatus = function isFinalCardStatus(status) {
9
+ return ['complete', 'error', 'failed-processing'].includes(status);
10
+ };
11
+
12
+ exports.isFinalCardStatus = isFinalCardStatus;
7
13
 
8
14
  var getCardStatus = function getCardStatus(fileStatus, _ref) {
9
15
  var hasFilesize = _ref.hasFilesize,