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