@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.
- package/CHANGELOG.md +104 -0
- package/dist/cjs/actions.js +2 -2
- package/dist/cjs/errors.js +83 -8
- package/dist/cjs/files/cardImageView/cardOverlay/styled.js +1 -1
- package/dist/cjs/files/cardImageView/index.js +53 -104
- package/dist/cjs/files/cardImageView/styled.js +1 -1
- package/dist/cjs/files/index.js +0 -6
- package/dist/cjs/index.js +8 -8
- package/dist/cjs/root/card/cardAnalytics.js +4 -16
- package/dist/cjs/root/card/cardLoader.js +66 -124
- package/dist/cjs/root/card/cardState.js +50 -0
- package/dist/cjs/root/card/getCardPreview/cache.js +10 -5
- package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +53 -0
- package/dist/cjs/root/card/getCardPreview/helpers.js +14 -22
- package/dist/cjs/root/card/getCardPreview/index.js +177 -97
- package/dist/cjs/root/card/getCardStatus.js +7 -1
- package/dist/cjs/root/card/index.js +384 -285
- package/dist/cjs/root/cardView.js +113 -88
- package/dist/cjs/root/inline/loader.js +47 -15
- package/dist/cjs/root/inline/mediaInlineCard.js +33 -12
- package/dist/cjs/root/inlinePlayer.js +77 -24
- package/dist/cjs/root/styled.js +7 -3
- package/dist/cjs/root/ui/actionsBar/styled.js +1 -1
- package/dist/cjs/root/ui/blanket/styled.js +1 -1
- package/dist/cjs/root/ui/common.js +11 -5
- package/dist/cjs/root/ui/iconMessage/index.js +16 -7
- package/dist/cjs/root/ui/iconWrapper/styled.js +1 -1
- package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +47 -123
- package/dist/cjs/root/ui/loadingRateLimited/loadingRateLimited.js +6 -4
- package/dist/cjs/root/ui/loadingRateLimited/styled.js +2 -2
- package/dist/cjs/root/ui/playButton/styled.js +1 -1
- package/dist/cjs/root/ui/progressBar/progressBar.js +7 -4
- package/dist/cjs/root/ui/progressBar/styled.js +8 -9
- package/dist/cjs/root/ui/styled.js +80 -17
- package/dist/cjs/root/ui/tickBox/styled.js +1 -1
- package/dist/cjs/root/ui/titleBox/failedTitleBox.js +9 -3
- package/dist/cjs/root/ui/titleBox/styled.js +2 -4
- package/dist/cjs/root/ui/titleBox/titleBox.js +2 -2
- package/dist/cjs/styles/index.js +25 -23
- package/dist/cjs/styles/mixins.js +1 -1
- package/dist/cjs/utils/analytics.js +7 -44
- package/dist/cjs/utils/breakpoint.js +1 -1
- package/dist/cjs/utils/cardActions/cardActionsDropdownMenu.js +18 -9
- package/dist/cjs/utils/cardActions/index.js +10 -10
- package/dist/cjs/utils/cardActions/styled.js +1 -1
- package/dist/cjs/utils/cardDimensions.js +1 -1
- package/dist/cjs/utils/dimensionComparer.js +1 -1
- package/dist/cjs/utils/getErrorMessage.js +2 -2
- package/dist/cjs/utils/index.js +46 -46
- package/dist/cjs/utils/lightCards/styled.js +1 -1
- package/dist/cjs/utils/metadata.js +11 -3
- package/dist/cjs/utils/objectURLCache.js +7 -1
- package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/cjs/utils/viewportDetector.js +49 -22
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/errors.js +42 -2
- package/dist/es2019/files/cardImageView/index.js +8 -61
- package/dist/es2019/files/index.js +1 -1
- package/dist/es2019/root/card/cardAnalytics.js +3 -14
- package/dist/es2019/root/card/cardLoader.js +47 -53
- package/dist/es2019/root/card/cardState.js +26 -0
- package/dist/es2019/root/card/getCardPreview/cache.js +5 -0
- package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +38 -0
- package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
- package/dist/es2019/root/card/getCardPreview/index.js +112 -73
- package/dist/es2019/root/card/getCardStatus.js +1 -0
- package/dist/es2019/root/card/index.js +308 -190
- package/dist/es2019/root/cardView.js +97 -68
- package/dist/es2019/root/inline/loader.js +17 -5
- package/dist/es2019/root/inline/mediaInlineCard.js +32 -11
- package/dist/es2019/root/inlinePlayer.js +56 -4
- package/dist/es2019/root/styled.js +2 -1
- package/dist/es2019/root/ui/common.js +7 -1
- package/dist/es2019/root/ui/iconMessage/index.js +8 -5
- package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +35 -88
- package/dist/es2019/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
- package/dist/es2019/root/ui/loadingRateLimited/styled.js +1 -1
- package/dist/es2019/root/ui/progressBar/progressBar.js +5 -3
- package/dist/es2019/root/ui/progressBar/styled.js +7 -6
- package/dist/es2019/root/ui/styled.js +65 -4
- package/dist/es2019/root/ui/titleBox/failedTitleBox.js +6 -3
- package/dist/es2019/root/ui/titleBox/styled.js +1 -2
- package/dist/es2019/root/ui/titleBox/titleBox.js +1 -1
- package/dist/es2019/utils/analytics.js +5 -34
- package/dist/es2019/utils/cardActions/cardActionsDropdownMenu.js +8 -4
- package/dist/es2019/utils/dimensionComparer.js +1 -1
- package/dist/es2019/utils/getErrorMessage.js +1 -1
- package/dist/es2019/utils/metadata.js +12 -4
- package/dist/es2019/utils/objectURLCache.js +5 -0
- package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/es2019/utils/viewportDetector.js +48 -18
- package/dist/es2019/version.json +1 -1
- package/dist/esm/actions.js +2 -2
- package/dist/esm/errors.js +64 -4
- package/dist/esm/files/cardImageView/index.js +51 -102
- package/dist/esm/files/index.js +1 -1
- package/dist/esm/root/card/cardAnalytics.js +3 -15
- package/dist/esm/root/card/cardLoader.js +66 -126
- package/dist/esm/root/card/cardState.js +32 -0
- package/dist/esm/root/card/getCardPreview/cache.js +9 -2
- package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +38 -0
- package/dist/esm/root/card/getCardPreview/helpers.js +13 -21
- package/dist/esm/root/card/getCardPreview/index.js +144 -91
- package/dist/esm/root/card/getCardStatus.js +3 -0
- package/dist/esm/root/card/index.js +396 -288
- package/dist/esm/root/cardView.js +113 -86
- package/dist/esm/root/inline/loader.js +48 -15
- package/dist/esm/root/inline/mediaInlineCard.js +32 -11
- package/dist/esm/root/inlinePlayer.js +74 -23
- package/dist/esm/root/styled.js +3 -2
- package/dist/esm/root/ui/common.js +7 -1
- package/dist/esm/root/ui/iconMessage/index.js +10 -5
- package/dist/esm/root/ui/imageRenderer/imageRenderer.js +37 -116
- package/dist/esm/root/ui/loadingRateLimited/loadingRateLimited.js +4 -3
- package/dist/esm/root/ui/loadingRateLimited/styled.js +1 -1
- package/dist/esm/root/ui/progressBar/progressBar.js +6 -3
- package/dist/esm/root/ui/progressBar/styled.js +7 -7
- package/dist/esm/root/ui/styled.js +61 -13
- package/dist/esm/root/ui/titleBox/failedTitleBox.js +7 -3
- package/dist/esm/root/ui/titleBox/styled.js +1 -2
- package/dist/esm/root/ui/titleBox/titleBox.js +1 -1
- package/dist/esm/utils/analytics.js +5 -36
- package/dist/esm/utils/cardActions/cardActionsDropdownMenu.js +17 -9
- package/dist/esm/utils/dimensionComparer.js +1 -1
- package/dist/esm/utils/getErrorMessage.js +1 -1
- package/dist/esm/utils/metadata.js +12 -4
- package/dist/esm/utils/objectURLCache.js +6 -0
- package/dist/esm/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/esm/utils/viewportDetector.js +48 -21
- package/dist/esm/version.json +1 -1
- package/dist/types/errors.d.ts +15 -1
- package/dist/types/files/cardImageView/index.d.ts +4 -13
- package/dist/types/files/cardImageView/styled.d.ts +1 -1
- package/dist/types/files/index.d.ts +1 -1
- package/dist/types/index.d.ts +7 -4
- package/dist/types/root/card/cardAnalytics.d.ts +1 -6
- package/dist/types/root/card/cardLoader.d.ts +5 -19
- package/dist/types/root/card/cardState.d.ts +5 -0
- package/dist/types/root/card/getCardPreview/cache.d.ts +3 -1
- package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
- package/dist/types/root/card/getCardPreview/helpers.d.ts +3 -4
- package/dist/types/root/card/getCardPreview/index.d.ts +24 -14
- package/dist/types/root/card/getCardStatus.d.ts +1 -0
- package/dist/types/root/card/index.d.ts +20 -18
- package/dist/types/root/cardView.d.ts +13 -8
- package/dist/types/root/inline/loader.d.ts +2 -0
- package/dist/types/root/inline/mediaInlineCard.d.ts +3 -5
- package/dist/types/root/inlinePlayer.d.ts +8 -1
- package/dist/types/root/styled.d.ts +1 -0
- package/dist/types/root/ui/common.d.ts +4 -1
- package/dist/types/root/ui/iconMessage/index.d.ts +4 -3
- package/dist/types/root/ui/iconWrapper/styled.d.ts +1 -1
- package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +14 -15
- package/dist/types/root/ui/loadingRateLimited/loadingRateLimited.d.ts +2 -1
- package/dist/types/root/ui/loadingRateLimited/styled.d.ts +1 -1
- package/dist/types/root/ui/playButton/playButton.d.ts +1 -0
- package/dist/types/root/ui/progressBar/progressBar.d.ts +4 -2
- package/dist/types/root/ui/progressBar/styled.d.ts +3 -2
- package/dist/types/root/ui/styled.d.ts +10 -3
- package/dist/types/root/ui/tickBox/tickBox.d.ts +1 -0
- package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +3 -1
- package/dist/types/root/ui/titleBox/styled.d.ts +1 -1
- package/dist/types/root/ui/titleBox/titleBox.d.ts +2 -10
- package/dist/types/styles/mixins.d.ts +1 -1
- package/dist/types/types.d.ts +7 -1
- package/dist/types/utils/analytics.d.ts +6 -15
- package/dist/types/utils/cardDimensions.d.ts +4 -4
- package/dist/types/utils/dimensionComparer.d.ts +1 -1
- package/dist/types/utils/getErrorMessage.d.ts +1 -0
- package/dist/types/utils/metadata.d.ts +2 -2
- package/dist/types/utils/objectURLCache.d.ts +2 -1
- package/dist/types/utils/viewportDetector.d.ts +13 -5
- package/example-helpers/developmentUseMessage.tsx +14 -0
- package/example-helpers/index.tsx +55 -4
- package/example-helpers/selectableCard.tsx +2 -1
- package/package.json +18 -16
- package/dist/cjs/root/card/cardSSRView.js +0 -112
- package/dist/cjs/root/card/getCardPreview/types.js +0 -5
- package/dist/cjs/root/ui/Breakpoint.js +0 -13
- package/dist/cjs/root/ui/styledSSR.js +0 -108
- package/dist/cjs/utils/fileAttributesContext.js +0 -40
- package/dist/cjs/utils/lazyContent/index.js +0 -56
- package/dist/cjs/utils/lazyContent/styled.js +0 -23
- package/dist/es2019/root/card/cardSSRView.js +0 -92
- package/dist/es2019/root/card/getCardPreview/types.js +0 -1
- package/dist/es2019/root/ui/Breakpoint.js +0 -6
- package/dist/es2019/root/ui/styledSSR.js +0 -93
- package/dist/es2019/utils/fileAttributesContext.js +0 -19
- package/dist/es2019/utils/lazyContent/index.js +0 -18
- package/dist/es2019/utils/lazyContent/styled.js +0 -12
- package/dist/esm/root/card/cardSSRView.js +0 -91
- package/dist/esm/root/card/getCardPreview/types.js +0 -1
- package/dist/esm/root/ui/Breakpoint.js +0 -6
- package/dist/esm/root/ui/styledSSR.js +0 -76
- package/dist/esm/utils/fileAttributesContext.js +0 -18
- package/dist/esm/utils/lazyContent/index.js +0 -41
- package/dist/esm/utils/lazyContent/styled.js +0 -14
- package/dist/types/root/card/cardSSRView.d.ts +0 -13
- package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
- package/dist/types/root/ui/Breakpoint.d.ts +0 -4
- package/dist/types/root/ui/styledSSR.d.ts +0 -16
- package/dist/types/utils/fileAttributesContext.d.ts +0 -10
- package/dist/types/utils/lazyContent/index.d.ts +0 -11
- package/dist/types/utils/lazyContent/styled.d.ts +0 -5
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
|
|
2
|
+
import { isPreviewableFileState, isPreviewableType, isImageRepresentationReady } from '@atlaskit/media-client';
|
|
3
|
+
import { isSupportedLocalPreview } from './helpers'; // TODO: align these checks with helpers from Media Client
|
|
4
|
+
// https://product-fabric.atlassian.net/browse/BMPT-1300
|
|
5
|
+
|
|
6
|
+
export var extractFilePreviewStatus = function extractFilePreviewStatus(fileState, isBannedLocalPreview, featureFlags) {
|
|
7
|
+
var hasFilesize = 'size' in fileState && !!fileState.size;
|
|
8
|
+
|
|
9
|
+
var _ref = 'mediaType' in fileState && fileState || {},
|
|
10
|
+
mediaType = _ref.mediaType;
|
|
11
|
+
|
|
12
|
+
var _ref2 = 'mimeType' in fileState && fileState || {},
|
|
13
|
+
mimeType = _ref2.mimeType;
|
|
14
|
+
|
|
15
|
+
var isPreviewable = !!mediaType && isPreviewableType(mediaType, featureFlags); // Local preview is available only if it's supported by browser and supported by Media Card (isSupportedLocalPreview)
|
|
16
|
+
// For example, SVGs are mime type NOT supported by browser but media type supported by Media Card (image)
|
|
17
|
+
// Then, local Preview NOT available
|
|
18
|
+
|
|
19
|
+
var hasLocalPreview = !isBannedLocalPreview && isPreviewableFileState(fileState) && isSupportedLocalPreview(mediaType) && !!mimeType && isMimeTypeSupportedByBrowser(mimeType);
|
|
20
|
+
var hasRemotePreview = isImageRepresentationReady(fileState);
|
|
21
|
+
var hasPreview = hasLocalPreview || hasRemotePreview;
|
|
22
|
+
var isSupportedByBrowser = !!mimeType && isMimeTypeSupportedByBrowser(mimeType);
|
|
23
|
+
return {
|
|
24
|
+
hasFilesize: hasFilesize,
|
|
25
|
+
isPreviewable: isPreviewable,
|
|
26
|
+
hasPreview: hasPreview,
|
|
27
|
+
isSupportedByBrowser: isSupportedByBrowser
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export var isPreviewableStatus = function isPreviewableStatus(cardStatus, _ref3) {
|
|
31
|
+
var isPreviewable = _ref3.isPreviewable,
|
|
32
|
+
hasPreview = _ref3.hasPreview,
|
|
33
|
+
isSupportedByBrowser = _ref3.isSupportedByBrowser;
|
|
34
|
+
return hasPreview && isPreviewable && (cardStatus === 'complete' || cardStatus === 'loading-preview' || cardStatus === 'uploading' || // For Video, we can have local or remote preview while processing.
|
|
35
|
+
// Then, we only want to show the thumbnail if the file is supported by the browser,
|
|
36
|
+
// this way we prevent playing unsupported videos that are not procesed
|
|
37
|
+
cardStatus === 'processing' && isSupportedByBrowser);
|
|
38
|
+
};
|
|
@@ -157,25 +157,17 @@ export var getCardPreviewFromFilePreview = /*#__PURE__*/function () {
|
|
|
157
157
|
};
|
|
158
158
|
}();
|
|
159
159
|
export var getCardPreviewFromBackend = /*#__PURE__*/function () {
|
|
160
|
-
var
|
|
161
|
-
var
|
|
160
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(mediaClient, id, params) {
|
|
161
|
+
var blob;
|
|
162
162
|
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
163
163
|
while (1) {
|
|
164
164
|
switch (_context4.prev = _context4.next) {
|
|
165
165
|
case 0:
|
|
166
|
-
|
|
167
|
-
_context4.
|
|
168
|
-
|
|
169
|
-
_context4.next = 5;
|
|
170
|
-
return mediaClient.getImage(id, {
|
|
171
|
-
collection: collectionName,
|
|
172
|
-
mode: mode,
|
|
173
|
-
width: width,
|
|
174
|
-
height: height,
|
|
175
|
-
allowAnimated: true
|
|
176
|
-
});
|
|
166
|
+
_context4.prev = 0;
|
|
167
|
+
_context4.next = 3;
|
|
168
|
+
return mediaClient.getImage(id, params);
|
|
177
169
|
|
|
178
|
-
case
|
|
170
|
+
case 3:
|
|
179
171
|
blob = _context4.sent;
|
|
180
172
|
return _context4.abrupt("return", {
|
|
181
173
|
dataURI: URL.createObjectURL(blob),
|
|
@@ -183,20 +175,20 @@ export var getCardPreviewFromBackend = /*#__PURE__*/function () {
|
|
|
183
175
|
source: 'remote'
|
|
184
176
|
});
|
|
185
177
|
|
|
186
|
-
case
|
|
187
|
-
_context4.prev =
|
|
188
|
-
_context4.t0 = _context4["catch"](
|
|
178
|
+
case 7:
|
|
179
|
+
_context4.prev = 7;
|
|
180
|
+
_context4.t0 = _context4["catch"](0);
|
|
189
181
|
throw new RemotePreviewError('remote-preview-fetch', _context4.t0);
|
|
190
182
|
|
|
191
|
-
case
|
|
183
|
+
case 10:
|
|
192
184
|
case "end":
|
|
193
185
|
return _context4.stop();
|
|
194
186
|
}
|
|
195
187
|
}
|
|
196
|
-
}, _callee4, null, [[
|
|
188
|
+
}, _callee4, null, [[0, 7]]);
|
|
197
189
|
}));
|
|
198
190
|
|
|
199
|
-
return function getCardPreviewFromBackend(_x4, _x5, _x6
|
|
200
|
-
return
|
|
191
|
+
return function getCardPreviewFromBackend(_x4, _x5, _x6) {
|
|
192
|
+
return _ref4.apply(this, arguments);
|
|
201
193
|
};
|
|
202
194
|
}();
|
|
@@ -1,53 +1,22 @@
|
|
|
1
1
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
4
|
|
|
5
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
5
|
+
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; }
|
|
6
6
|
|
|
7
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
7
|
+
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) { _defineProperty(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; }
|
|
8
8
|
|
|
9
|
-
import { isPreviewableFileState,
|
|
9
|
+
import { isPreviewableFileState, addFileAttrsToUrl } from '@atlaskit/media-client';
|
|
10
10
|
import { isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
|
|
11
11
|
import cardPreviewCache from './cache';
|
|
12
|
-
import { getCardPreviewFromFilePreview, getCardPreviewFromBackend
|
|
13
|
-
import { MediaCardError, isUnsupportedLocalPreviewError } from '../../../errors';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export
|
|
18
|
-
var hasFilesize = 'size' in fileState && !!fileState.size;
|
|
19
|
-
|
|
20
|
-
var _ref = 'mediaType' in fileState && fileState || {},
|
|
21
|
-
mediaType = _ref.mediaType;
|
|
22
|
-
|
|
23
|
-
var _ref2 = 'mimeType' in fileState && fileState || {},
|
|
24
|
-
mimeType = _ref2.mimeType;
|
|
25
|
-
|
|
26
|
-
var isPreviewable = !!mediaType && isPreviewableType(mediaType, featureFlags);
|
|
27
|
-
/**
|
|
28
|
-
* Local preview is available only if it's supported by browser and supported by Media Card (isSupportedLocalPreview)
|
|
29
|
-
* For example, SVGs are mime type NOT supported by browser but media type supported by Media Card (image)
|
|
30
|
-
* Then, local Preview NOT available
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
var hasLocalPreview = isPreviewableFileState(fileState) && isSupportedLocalPreview(mediaType) && !!mimeType && isMimeTypeSupportedByBrowser(mimeType);
|
|
34
|
-
var hasRemotePreview = isImageRepresentationReady(fileState);
|
|
35
|
-
var hasPreview = hasLocalPreview || hasRemotePreview;
|
|
36
|
-
var isSupportedByBrowser = !!mimeType && isMimeTypeSupportedByBrowser(mimeType);
|
|
37
|
-
return {
|
|
38
|
-
hasFilesize: hasFilesize,
|
|
39
|
-
isPreviewable: isPreviewable,
|
|
40
|
-
hasPreview: hasPreview,
|
|
41
|
-
isSupportedByBrowser: isSupportedByBrowser
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
export var shouldGetCardPreview = function shouldGetCardPreview(cardStatus, _ref3) {
|
|
45
|
-
var isPreviewable = _ref3.isPreviewable,
|
|
46
|
-
hasPreview = _ref3.hasPreview,
|
|
47
|
-
isSupportedByBrowser = _ref3.isSupportedByBrowser;
|
|
48
|
-
return cardStatus === 'loading-preview' || cardStatus === 'uploading' && hasPreview && isPreviewable || cardStatus === 'processing' && hasPreview && isPreviewable && isSupportedByBrowser;
|
|
49
|
-
};
|
|
12
|
+
import { getCardPreviewFromFilePreview, getCardPreviewFromBackend } from './helpers';
|
|
13
|
+
import { MediaCardError, SsrPreviewError, isUnsupportedLocalPreviewError } from '../../../errors';
|
|
14
|
+
import { isBigger } from '../../../utils/dimensionComparer';
|
|
15
|
+
import { extractFilePreviewStatus, isPreviewableStatus } from './filePreviewStatus';
|
|
16
|
+
export { getCardPreviewFromFilePreview, getCardPreviewFromBackend, isSupportedLocalPreview } from './helpers';
|
|
17
|
+
export { extractFilePreviewStatus } from './filePreviewStatus';
|
|
50
18
|
export var getCardPreviewFromCache = cardPreviewCache.get;
|
|
19
|
+
export var removeCardPreviewFromCache = cardPreviewCache.remove;
|
|
51
20
|
/**
|
|
52
21
|
* Will return the preview if available and supported by the browser
|
|
53
22
|
* See extractFilePreviewStatus "hasLocalPreview" logic
|
|
@@ -57,6 +26,41 @@ export var getFilePreviewFromFileState = function getFilePreviewFromFileState(fi
|
|
|
57
26
|
return 'mimeType' in fileState && isMimeTypeSupportedByBrowser(fileState.mimeType) && isPreviewableFileState(fileState) ? fileState.preview : undefined;
|
|
58
27
|
};
|
|
59
28
|
|
|
29
|
+
var extendAndCachePreview = function extendAndCachePreview(id, dimensions, preview, mediaBlobUrlAttrs) {
|
|
30
|
+
var source;
|
|
31
|
+
|
|
32
|
+
switch (preview.source) {
|
|
33
|
+
case 'local':
|
|
34
|
+
source = 'cache-local';
|
|
35
|
+
break;
|
|
36
|
+
|
|
37
|
+
case 'remote':
|
|
38
|
+
source = 'cache-remote';
|
|
39
|
+
break;
|
|
40
|
+
|
|
41
|
+
case 'ssr-server':
|
|
42
|
+
source = 'cache-ssr-server';
|
|
43
|
+
break;
|
|
44
|
+
|
|
45
|
+
case 'ssr-client':
|
|
46
|
+
source = 'cache-ssr-client';
|
|
47
|
+
break;
|
|
48
|
+
|
|
49
|
+
default:
|
|
50
|
+
source = preview.source;
|
|
51
|
+
} // We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
var dataURI = mediaBlobUrlAttrs ? addFileAttrsToUrl(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI; // We store new cardPreview into cache
|
|
55
|
+
|
|
56
|
+
cardPreviewCache.set(id, dimensions, _objectSpread(_objectSpread({}, preview), {}, {
|
|
57
|
+
source: source,
|
|
58
|
+
dataURI: dataURI
|
|
59
|
+
}));
|
|
60
|
+
return _objectSpread(_objectSpread({}, preview), {}, {
|
|
61
|
+
dataURI: dataURI
|
|
62
|
+
});
|
|
63
|
+
};
|
|
60
64
|
/**
|
|
61
65
|
* This function will try to return a Card preview, either from cache, local preview or remote preview.
|
|
62
66
|
* It should only be called if there is a chance to get either a remote or a local preview, or both.
|
|
@@ -67,49 +71,48 @@ export var getFilePreviewFromFileState = function getFilePreviewFromFileState(fi
|
|
|
67
71
|
* In that case, we still want to report the local preview error to the caller, for feature realiability track.
|
|
68
72
|
* hence the use of the optional callback onLocalPreviewError
|
|
69
73
|
*/
|
|
74
|
+
|
|
75
|
+
|
|
70
76
|
export var getCardPreview = /*#__PURE__*/function () {
|
|
71
|
-
var
|
|
72
|
-
var mediaClient, id,
|
|
77
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
78
|
+
var mediaClient, id, _ref$dimensions, dimensions, filePreview, onLocalPreviewError, isRemotePreviewReady, imageUrlParams, mediaBlobUrlAttrs, cachedPreview, localPreview;
|
|
73
79
|
|
|
74
80
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
75
81
|
while (1) {
|
|
76
82
|
switch (_context.prev = _context.next) {
|
|
77
83
|
case 0:
|
|
78
|
-
mediaClient =
|
|
79
|
-
|
|
84
|
+
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;
|
|
85
|
+
cachedPreview = cardPreviewCache.get(id, dimensions);
|
|
80
86
|
|
|
81
|
-
if (!
|
|
87
|
+
if (!cachedPreview) {
|
|
82
88
|
_context.next = 4;
|
|
83
89
|
break;
|
|
84
90
|
}
|
|
85
91
|
|
|
86
|
-
return _context.abrupt("return",
|
|
87
|
-
source: 'cache'
|
|
88
|
-
}));
|
|
92
|
+
return _context.abrupt("return", cachedPreview);
|
|
89
93
|
|
|
90
94
|
case 4:
|
|
91
95
|
_context.prev = 4;
|
|
92
|
-
_context.t0 = filePreview;
|
|
93
96
|
|
|
94
|
-
if (!
|
|
97
|
+
if (!filePreview) {
|
|
95
98
|
_context.next = 10;
|
|
96
99
|
break;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
|
-
_context.next =
|
|
102
|
+
_context.next = 8;
|
|
100
103
|
return getCardPreviewFromFilePreview(filePreview);
|
|
101
104
|
|
|
102
|
-
case
|
|
103
|
-
|
|
105
|
+
case 8:
|
|
106
|
+
localPreview = _context.sent;
|
|
107
|
+
return _context.abrupt("return", extendAndCachePreview(id, dimensions, localPreview, mediaBlobUrlAttrs));
|
|
104
108
|
|
|
105
109
|
case 10:
|
|
106
|
-
|
|
107
|
-
_context.next = 18;
|
|
110
|
+
_context.next = 17;
|
|
108
111
|
break;
|
|
109
112
|
|
|
110
|
-
case
|
|
111
|
-
_context.prev =
|
|
112
|
-
_context.
|
|
113
|
+
case 12:
|
|
114
|
+
_context.prev = 12;
|
|
115
|
+
_context.t0 = _context["catch"](4);
|
|
113
116
|
|
|
114
117
|
/**
|
|
115
118
|
* We report the error if:
|
|
@@ -121,8 +124,8 @@ export var getCardPreview = /*#__PURE__*/function () {
|
|
|
121
124
|
* i.e. local preview is available and not supported,
|
|
122
125
|
* but we are after the remote preview instead.
|
|
123
126
|
*/
|
|
124
|
-
if (!isUnsupportedLocalPreviewError(_context.
|
|
125
|
-
onLocalPreviewError && onLocalPreviewError(_context.
|
|
127
|
+
if (!isUnsupportedLocalPreviewError(_context.t0) || isUnsupportedLocalPreviewError(_context.t0) && !isRemotePreviewReady) {
|
|
128
|
+
onLocalPreviewError && onLocalPreviewError(_context.t0);
|
|
126
129
|
}
|
|
127
130
|
/**
|
|
128
131
|
* No matter the reason why the local preview failed, we break the process
|
|
@@ -131,53 +134,103 @@ export var getCardPreview = /*#__PURE__*/function () {
|
|
|
131
134
|
|
|
132
135
|
|
|
133
136
|
if (isRemotePreviewReady) {
|
|
134
|
-
_context.next =
|
|
137
|
+
_context.next = 17;
|
|
135
138
|
break;
|
|
136
139
|
}
|
|
137
140
|
|
|
138
|
-
throw _context.
|
|
139
|
-
|
|
140
|
-
case 18:
|
|
141
|
-
if (cardPreview) {
|
|
142
|
-
_context.next = 24;
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
141
|
+
throw _context.t0;
|
|
145
142
|
|
|
143
|
+
case 17:
|
|
146
144
|
if (isRemotePreviewReady) {
|
|
147
|
-
_context.next =
|
|
145
|
+
_context.next = 19;
|
|
148
146
|
break;
|
|
149
147
|
}
|
|
150
148
|
|
|
151
149
|
throw new MediaCardError('remote-preview-not-ready');
|
|
152
150
|
|
|
153
|
-
case
|
|
154
|
-
_context.
|
|
155
|
-
return getCardPreviewFromBackend(mediaClient, id, requestedDimensions, collectionName, resizeMode);
|
|
151
|
+
case 19:
|
|
152
|
+
return _context.abrupt("return", fetchAndCacheRemotePreview(mediaClient, id, dimensions, imageUrlParams, mediaBlobUrlAttrs));
|
|
156
153
|
|
|
157
|
-
case
|
|
158
|
-
|
|
154
|
+
case 20:
|
|
155
|
+
case "end":
|
|
156
|
+
return _context.stop();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}, _callee, null, [[4, 12]]);
|
|
160
|
+
}));
|
|
159
161
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
162
|
+
return function getCardPreview(_x) {
|
|
163
|
+
return _ref2.apply(this, arguments);
|
|
164
|
+
};
|
|
165
|
+
}();
|
|
166
|
+
export var shouldResolvePreview = function shouldResolvePreview(_ref3) {
|
|
167
|
+
var status = _ref3.status,
|
|
168
|
+
fileState = _ref3.fileState,
|
|
169
|
+
dimensions = _ref3.dimensions,
|
|
170
|
+
prevDimensions = _ref3.prevDimensions,
|
|
171
|
+
hasCardPreview = _ref3.hasCardPreview,
|
|
172
|
+
isBannedLocalPreview = _ref3.isBannedLocalPreview,
|
|
173
|
+
featureFlags = _ref3.featureFlags;
|
|
174
|
+
var statusIsPreviewable = isPreviewableStatus(status, extractFilePreviewStatus(fileState, isBannedLocalPreview, featureFlags));
|
|
175
|
+
var dimensionsAreBigger = isBigger(prevDimensions, dimensions);
|
|
176
|
+
return statusIsPreviewable && (!hasCardPreview || dimensionsAreBigger);
|
|
177
|
+
};
|
|
178
|
+
export var getSSRCardPreview = function getSSRCardPreview(ssr, mediaClient, id, params, mediaBlobUrlAttrs) {
|
|
179
|
+
var dataURI;
|
|
180
|
+
|
|
181
|
+
try {
|
|
182
|
+
var rawDataURI = mediaClient.getImageUrlSync(id, params); // We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
183
|
+
|
|
184
|
+
dataURI = mediaBlobUrlAttrs ? addFileAttrsToUrl(rawDataURI, mediaBlobUrlAttrs) : rawDataURI;
|
|
185
|
+
var source = ssr === 'client' ? 'ssr-client' : 'ssr-server';
|
|
186
|
+
return {
|
|
187
|
+
dataURI: dataURI,
|
|
188
|
+
source: source,
|
|
189
|
+
orientation: 1
|
|
190
|
+
};
|
|
191
|
+
} catch (e) {
|
|
192
|
+
var reason = ssr === 'server' ? 'ssr-server-uri' : 'ssr-client-uri';
|
|
193
|
+
throw new SsrPreviewError(reason, e);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
export var isLocalPreview = function isLocalPreview(preview) {
|
|
197
|
+
var localSources = ['local', 'cache-local'];
|
|
198
|
+
return localSources.includes(preview.source);
|
|
199
|
+
};
|
|
200
|
+
export var isSSRPreview = function isSSRPreview(preview) {
|
|
201
|
+
return isSSRClientPreview(preview) || isSSRServerPreview(preview);
|
|
202
|
+
};
|
|
203
|
+
export var isSSRServerPreview = function isSSRServerPreview(preview) {
|
|
204
|
+
var ssrClientSources = ['ssr-server', 'cache-ssr-server'];
|
|
205
|
+
return ssrClientSources.includes(preview.source);
|
|
206
|
+
};
|
|
207
|
+
export var isSSRClientPreview = function isSSRClientPreview(preview) {
|
|
208
|
+
var ssrClientSources = ['ssr-client', 'cache-ssr-client'];
|
|
209
|
+
return ssrClientSources.includes(preview.source);
|
|
210
|
+
};
|
|
211
|
+
export var fetchAndCacheRemotePreview = /*#__PURE__*/function () {
|
|
212
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(mediaClient, id, dimensions, params, mediaBlobUrlAttrs) {
|
|
213
|
+
var remotePreview;
|
|
214
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
215
|
+
while (1) {
|
|
216
|
+
switch (_context2.prev = _context2.next) {
|
|
217
|
+
case 0:
|
|
218
|
+
_context2.next = 2;
|
|
219
|
+
return getCardPreviewFromBackend(mediaClient, id, params);
|
|
168
220
|
|
|
169
|
-
|
|
170
|
-
|
|
221
|
+
case 2:
|
|
222
|
+
remotePreview = _context2.sent;
|
|
223
|
+
return _context2.abrupt("return", extendAndCachePreview(id, dimensions, remotePreview, mediaBlobUrlAttrs));
|
|
171
224
|
|
|
172
|
-
case
|
|
225
|
+
case 4:
|
|
173
226
|
case "end":
|
|
174
|
-
return
|
|
227
|
+
return _context2.stop();
|
|
175
228
|
}
|
|
176
229
|
}
|
|
177
|
-
},
|
|
230
|
+
}, _callee2);
|
|
178
231
|
}));
|
|
179
232
|
|
|
180
|
-
return function
|
|
181
|
-
return
|
|
233
|
+
return function fetchAndCacheRemotePreview(_x2, _x3, _x4, _x5, _x6) {
|
|
234
|
+
return _ref4.apply(this, arguments);
|
|
182
235
|
};
|
|
183
236
|
}();
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export var isFinalCardStatus = function isFinalCardStatus(status) {
|
|
2
|
+
return ['complete', 'error', 'failed-processing'].includes(status);
|
|
3
|
+
};
|
|
1
4
|
export var getCardStatus = function getCardStatus(fileStatus, _ref) {
|
|
2
5
|
var hasFilesize = _ref.hasFilesize,
|
|
3
6
|
isPreviewable = _ref.isPreviewable,
|