@atlaskit/media-card 77.5.0 → 77.5.2
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 +12 -0
- package/dist/cjs/card/card.js +1 -1
- package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/cjs/card/v2/cardV2.js +1 -1
- package/dist/cjs/card/v2/cardViewV2.js +7 -6
- package/dist/cjs/card/v2/useFilePreview/errors.js +132 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/cache.js +39 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/filePreviewStatus.js +45 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/getPreview.js +119 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/helpers.js +167 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/index.js +62 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/objectURLCache.js +85 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/videoSnapshot.js +58 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/getSSRData.js +14 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/globalScope.js +66 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/index.js +37 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/printScript.js +32 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/types.js +5 -0
- package/dist/cjs/card/v2/useFilePreview/helpers.js +64 -0
- package/dist/cjs/card/v2/useFilePreview/index.js +12 -0
- package/dist/cjs/card/v2/useFilePreview/types.js +5 -0
- package/dist/cjs/card/v2/{useFilePreview.js → useFilePreview/useFilePreview.js} +58 -194
- package/dist/cjs/inline/loader.js +1 -1
- package/dist/cjs/utils/ufoExperiences.js +1 -1
- package/dist/es2019/card/card.js +1 -1
- package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/es2019/card/v2/cardV2.js +1 -1
- package/dist/es2019/card/v2/cardViewV2.js +7 -6
- package/dist/es2019/card/v2/useFilePreview/errors.js +81 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/cache.js +30 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/filePreviewStatus.js +43 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/getPreview.js +75 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/helpers.js +76 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/index.js +3 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/objectURLCache.js +44 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/videoSnapshot.js +36 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/getSSRData.js +8 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/globalScope.js +48 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/index.js +2 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/printScript.js +16 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/types.js +1 -0
- package/dist/es2019/card/v2/useFilePreview/helpers.js +61 -0
- package/dist/es2019/card/v2/useFilePreview/index.js +1 -0
- package/dist/es2019/card/v2/useFilePreview/types.js +1 -0
- package/dist/es2019/card/v2/{useFilePreview.js → useFilePreview/useFilePreview.js} +18 -132
- package/dist/es2019/inline/loader.js +1 -1
- package/dist/es2019/utils/ufoExperiences.js +1 -1
- package/dist/esm/card/card.js +1 -1
- package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/esm/card/v2/cardV2.js +1 -1
- package/dist/esm/card/v2/cardViewV2.js +7 -6
- package/dist/esm/card/v2/useFilePreview/errors.js +124 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/cache.js +32 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/filePreviewStatus.js +40 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/getPreview.js +112 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/helpers.js +160 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/index.js +3 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/objectURLCache.js +78 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/videoSnapshot.js +51 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/getSSRData.js +8 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/globalScope.js +56 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/index.js +2 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/printScript.js +25 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/types.js +1 -0
- package/dist/esm/card/v2/useFilePreview/helpers.js +57 -0
- package/dist/esm/card/v2/useFilePreview/index.js +1 -0
- package/dist/esm/card/v2/useFilePreview/types.js +1 -0
- package/dist/esm/card/v2/{useFilePreview.js → useFilePreview/useFilePreview.js} +41 -177
- package/dist/esm/inline/loader.js +1 -1
- package/dist/esm/utils/ufoExperiences.js +1 -1
- package/dist/types/card/v2/cardViewV2.d.ts +5 -4
- package/dist/types/card/v2/useFilePreview/errors.d.ts +38 -0
- package/dist/types/card/v2/useFilePreview/getPreview/cache.d.ts +21 -0
- package/dist/types/card/v2/useFilePreview/getPreview/filePreviewStatus.d.ts +4 -0
- package/dist/types/card/v2/useFilePreview/getPreview/getPreview.d.ts +9 -0
- package/dist/types/card/v2/useFilePreview/getPreview/helpers.d.ts +10 -0
- package/dist/types/card/v2/useFilePreview/getPreview/index.d.ts +3 -0
- package/dist/types/card/v2/useFilePreview/getPreview/objectURLCache.d.ts +12 -0
- package/dist/types/card/v2/useFilePreview/getPreview/videoSnapshot.d.ts +1 -0
- package/dist/types/card/v2/useFilePreview/globalScope/getSSRData.d.ts +3 -0
- package/dist/types/card/v2/useFilePreview/globalScope/globalScope.d.ts +15 -0
- package/dist/types/card/v2/useFilePreview/globalScope/index.d.ts +4 -0
- package/dist/types/card/v2/useFilePreview/globalScope/printScript.d.ts +2 -0
- package/dist/types/card/v2/useFilePreview/globalScope/types.d.ts +8 -0
- package/dist/types/card/v2/useFilePreview/helpers.d.ts +11 -0
- package/dist/types/card/v2/useFilePreview/index.d.ts +2 -0
- package/dist/types/card/v2/useFilePreview/types.d.ts +18 -0
- package/dist/{types-ts4.5/card/v2 → types/card/v2/useFilePreview}/useFilePreview.d.ts +8 -8
- package/dist/types-ts4.5/card/v2/cardViewV2.d.ts +5 -4
- package/dist/types-ts4.5/card/v2/useFilePreview/errors.d.ts +38 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/cache.d.ts +21 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/filePreviewStatus.d.ts +4 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/getPreview.d.ts +9 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/helpers.d.ts +10 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/index.d.ts +3 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/objectURLCache.d.ts +12 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/videoSnapshot.d.ts +1 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/getSSRData.d.ts +3 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/globalScope.d.ts +15 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/index.d.ts +4 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/printScript.d.ts +2 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/types.d.ts +8 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/helpers.d.ts +11 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/index.d.ts +2 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/types.d.ts +18 -0
- package/dist/{types/card/v2 → types-ts4.5/card/v2/useFilePreview}/useFilePreview.d.ts +8 -8
- package/package.json +2 -2
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
export var takeSnapshot = /*#__PURE__*/function () {
|
|
4
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(blob) {
|
|
5
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
6
|
+
while (1) switch (_context.prev = _context.next) {
|
|
7
|
+
case 0:
|
|
8
|
+
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|
9
|
+
var url = URL.createObjectURL(blob);
|
|
10
|
+
var video = document.createElement('video');
|
|
11
|
+
video.preload = 'metadata';
|
|
12
|
+
video.src = url;
|
|
13
|
+
video.muted = true;
|
|
14
|
+
video.play().catch(function () {
|
|
15
|
+
return reject(new Error('failed to play video'));
|
|
16
|
+
});
|
|
17
|
+
video.addEventListener('timeupdate', function timeUpdateHandler() {
|
|
18
|
+
video.removeEventListener('timeupdate', timeUpdateHandler);
|
|
19
|
+
video.pause();
|
|
20
|
+
URL.revokeObjectURL(url);
|
|
21
|
+
//create canvas to draw our first frame on.
|
|
22
|
+
|
|
23
|
+
if (!video.videoWidth && !video.videoHeight) {
|
|
24
|
+
return reject(new Error('error retrieving video dimensions'));
|
|
25
|
+
}
|
|
26
|
+
var canvas = document.createElement('canvas');
|
|
27
|
+
canvas.width = video.videoWidth;
|
|
28
|
+
canvas.height = video.videoHeight;
|
|
29
|
+
var context = canvas.getContext('2d');
|
|
30
|
+
if (!context) {
|
|
31
|
+
return reject(new Error('error creating canvas context'));
|
|
32
|
+
}
|
|
33
|
+
context.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
34
|
+
var dataURL = canvas.toDataURL('image/jpeg', 0.85);
|
|
35
|
+
resolve(dataURL);
|
|
36
|
+
});
|
|
37
|
+
video.addEventListener('error', function () {
|
|
38
|
+
reject(new Error('failed to load video'));
|
|
39
|
+
URL.revokeObjectURL(url);
|
|
40
|
+
});
|
|
41
|
+
}));
|
|
42
|
+
case 1:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context.stop();
|
|
45
|
+
}
|
|
46
|
+
}, _callee);
|
|
47
|
+
}));
|
|
48
|
+
return function takeSnapshot(_x) {
|
|
49
|
+
return _ref.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { printFunctionCall, printScript } from './printScript';
|
|
2
|
+
// ----- WARNING -----
|
|
3
|
+
// This is a very sensitive fraction of code.
|
|
4
|
+
// Any changes to this file must be tested directly in product before merging.
|
|
5
|
+
// The scripts printed here might differ from what we observe in our internal tests
|
|
6
|
+
// due to minimification, for example.
|
|
7
|
+
export var GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
|
|
8
|
+
export var GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
|
|
9
|
+
export function getMediaGlobalScope() {
|
|
10
|
+
var globalScope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
|
|
11
|
+
// Must match GLOBAL_MEDIA_NAMESPACE. Can't reference the constant from here.
|
|
12
|
+
var namespace = '__MEDIA_INTERNAL';
|
|
13
|
+
if (!globalScope[namespace]) {
|
|
14
|
+
globalScope[namespace] = {};
|
|
15
|
+
}
|
|
16
|
+
return globalScope[namespace];
|
|
17
|
+
}
|
|
18
|
+
export function getMediaCardSSR() {
|
|
19
|
+
var globalScope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
|
|
20
|
+
var globalMedia = getMediaGlobalScope(globalScope);
|
|
21
|
+
// Must match GLOBAL_MEDIA_CARD_SSR. Can't reference the constant from here.
|
|
22
|
+
var key = 'mediaCardSsr';
|
|
23
|
+
if (!globalMedia[key]) {
|
|
24
|
+
globalMedia[key] = {};
|
|
25
|
+
}
|
|
26
|
+
return globalMedia[key];
|
|
27
|
+
}
|
|
28
|
+
var dashed = function dashed(param) {
|
|
29
|
+
return param ? "-".concat(param) : '';
|
|
30
|
+
};
|
|
31
|
+
export var getKey = function getKey(_ref) {
|
|
32
|
+
var id = _ref.id,
|
|
33
|
+
collectionName = _ref.collectionName,
|
|
34
|
+
occurrenceKey = _ref.occurrenceKey;
|
|
35
|
+
return "".concat(id).concat(dashed(collectionName)).concat(dashed(occurrenceKey));
|
|
36
|
+
};
|
|
37
|
+
export var storeDataURI = function storeDataURI(key, dataURI, dimensions, error) {
|
|
38
|
+
var globalScope = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : window;
|
|
39
|
+
var mediaCardSsr = getMediaCardSSR(globalScope);
|
|
40
|
+
mediaCardSsr[key] = {
|
|
41
|
+
dataURI: dataURI,
|
|
42
|
+
dimensions: dimensions,
|
|
43
|
+
error: error
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
var generateScript = function generateScript(identifier, dataURI, dimensions, error) {
|
|
47
|
+
var functionCall = printFunctionCall(storeDataURI, getKey(identifier), dataURI, dimensions, error);
|
|
48
|
+
return printScript([getMediaCardSSR.toString(), getMediaGlobalScope.toString(), functionCall]);
|
|
49
|
+
};
|
|
50
|
+
export var generateScriptProps = function generateScriptProps(identifier, dataURI, dimensions, error) {
|
|
51
|
+
return {
|
|
52
|
+
dangerouslySetInnerHTML: {
|
|
53
|
+
__html: generateScript(identifier, dataURI, dimensions, error)
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
|
2
|
+
var printParam = function printParam(param) {
|
|
3
|
+
if (typeof param === 'string') {
|
|
4
|
+
return "'".concat(param, "'");
|
|
5
|
+
} else if (_typeof(param) === 'object') {
|
|
6
|
+
return JSON.stringify(param);
|
|
7
|
+
} else if (param === undefined) {
|
|
8
|
+
return 'undefined';
|
|
9
|
+
}
|
|
10
|
+
return param;
|
|
11
|
+
};
|
|
12
|
+
var printParams = function printParams(args) {
|
|
13
|
+
return args.map(function (arg) {
|
|
14
|
+
return printParam(arg);
|
|
15
|
+
}).join(',');
|
|
16
|
+
};
|
|
17
|
+
export var printFunctionCall = function printFunctionCall(fn) {
|
|
18
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
19
|
+
args[_key - 1] = arguments[_key];
|
|
20
|
+
}
|
|
21
|
+
return "(".concat(fn.toString(), ")(").concat(printParams(args), ");");
|
|
22
|
+
};
|
|
23
|
+
export var printScript = function printScript(statements) {
|
|
24
|
+
return "(function(){\n ".concat(statements.join(';'), "\n})();\n");
|
|
25
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Checks if at least one of next dimensions is bigger than current
|
|
5
|
+
* If a single dimension is undefined, returns false
|
|
6
|
+
*/
|
|
7
|
+
export var isBigger = function isBigger(current, next) {
|
|
8
|
+
var _ref = current || {},
|
|
9
|
+
currentWidth = _ref.width,
|
|
10
|
+
currentHeight = _ref.height;
|
|
11
|
+
var _ref2 = next || {},
|
|
12
|
+
nextWidth = _ref2.width,
|
|
13
|
+
nextHeight = _ref2.height;
|
|
14
|
+
if (!!currentWidth && !!currentHeight && !!nextWidth && !!nextHeight) {
|
|
15
|
+
var nextIsWider = currentWidth < nextWidth;
|
|
16
|
+
var nextIsHigher = currentHeight < nextHeight;
|
|
17
|
+
return nextIsHigher || nextIsWider;
|
|
18
|
+
} else {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/** Verifies if the current screen is retina display */
|
|
24
|
+
function isRetina() {
|
|
25
|
+
var mediaQuery = '(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)';
|
|
26
|
+
return window.devicePixelRatio > 1 || window.matchMedia && window.matchMedia(mediaQuery).matches;
|
|
27
|
+
}
|
|
28
|
+
export var createRequestDimensions = function createRequestDimensions(dimensions) {
|
|
29
|
+
if (!dimensions) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
var retinaFactor = isRetina() ? 2 : 1;
|
|
33
|
+
var width = dimensions.width,
|
|
34
|
+
height = dimensions.height;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (width) {
|
|
37
|
+
result.width = width * retinaFactor;
|
|
38
|
+
}
|
|
39
|
+
if (height) {
|
|
40
|
+
result.height = height * retinaFactor;
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/** Stores the provided value in a */
|
|
46
|
+
export function useCurrentValueRef(value) {
|
|
47
|
+
var ref = useRef(value);
|
|
48
|
+
ref.current = value;
|
|
49
|
+
return ref;
|
|
50
|
+
}
|
|
51
|
+
export function usePrevious(value) {
|
|
52
|
+
var ref = useRef();
|
|
53
|
+
useEffect(function () {
|
|
54
|
+
ref.current = value;
|
|
55
|
+
}, [value]);
|
|
56
|
+
return ref.current;
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useFilePreview } from './useFilePreview';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -4,21 +4,15 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
4
4
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
-
import {
|
|
7
|
+
import { imageResizeModeToFileImageMode, isImageRepresentationReady } from '@atlaskit/media-client';
|
|
8
8
|
import { MediaFileStateError, useFileState, useMediaClient } from '@atlaskit/media-client-react';
|
|
9
|
-
import {
|
|
10
|
-
import { getOrientation } from '@atlaskit/media-ui';
|
|
9
|
+
import { isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
|
|
11
10
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
12
|
-
import {
|
|
13
|
-
import { extractErrorInfo } from '
|
|
14
|
-
import { isBigger } from '
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { useCurrentValueRef } from '../../utils/useCurrentValueRef';
|
|
18
|
-
import { usePrevious } from '../../utils/usePrevious';
|
|
19
|
-
import { takeSnapshot } from '../../utils/videoSnapshot';
|
|
20
|
-
import { fetchAndCacheRemotePreview, getCardPreviewFromCache, getSSRCardPreview, isLocalPreview, isSSRClientPreview, isSSRDataPreview, removeCardPreviewFromCache, shouldResolvePreview } from '../getCardPreview';
|
|
21
|
-
import cardPreviewCache from '../getCardPreview/cache';
|
|
11
|
+
import { ensureMediaFilePreviewError, ImageLoadError, isLocalPreviewError, isUnsupportedLocalPreviewError, MediaFilePreviewError } from './errors';
|
|
12
|
+
import { extractErrorInfo } from '../../../utils/analytics';
|
|
13
|
+
import { isBigger, createRequestDimensions, useCurrentValueRef, usePrevious } from './helpers';
|
|
14
|
+
import { generateScriptProps, getSSRData } from './globalScope';
|
|
15
|
+
import { getAndCacheRemotePreview, getSSRCardPreview, isLocalPreview, isSSRClientPreview, isSSRDataPreview, isPreviewableStatus, extractFilePreviewStatus, mediaFilePreviewCache, getAndCacheLocalPreview } from './getPreview';
|
|
22
16
|
export var useFilePreview = function useFilePreview(_ref) {
|
|
23
17
|
var _ref$resizeMode = _ref.resizeMode,
|
|
24
18
|
resizeMode = _ref$resizeMode === void 0 ? 'crop' : _ref$resizeMode,
|
|
@@ -88,7 +82,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
88
82
|
var cardPreview;
|
|
89
83
|
var id = identifier.id;
|
|
90
84
|
var fileImageMode = imageResizeModeToFileImageMode(resizeMode);
|
|
91
|
-
cardPreview =
|
|
85
|
+
cardPreview = mediaFilePreviewCache.get(id, fileImageMode);
|
|
92
86
|
if (!cardPreview && ssr) {
|
|
93
87
|
cardPreview = getSSRPreview(ssr, identifier, mediaClient);
|
|
94
88
|
}
|
|
@@ -113,11 +107,11 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
113
107
|
//----------------------------------------------------------------//
|
|
114
108
|
|
|
115
109
|
var fetchRemotePreviewRef = useCurrentValueRef(function (identifier) {
|
|
116
|
-
return
|
|
110
|
+
return getAndCacheRemotePreview(mediaClient, identifier.id, requestDimensions || {}, imageURLParams, mediaBlobUrlAttrs, traceContext);
|
|
117
111
|
});
|
|
118
112
|
var resolvePreviewRef = useCurrentValueRef( /*#__PURE__*/function () {
|
|
119
113
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(identifier, fileState) {
|
|
120
|
-
var filePreview, isRemotePreviewReady, mode, cachedPreview, dimensionsAreBigger, localPreview,
|
|
114
|
+
var filePreview, isRemotePreviewReady, mode, cachedPreview, dimensionsAreBigger, localPreview, remotePreview, wrappedError;
|
|
121
115
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
122
116
|
while (1) switch (_context.prev = _context.next) {
|
|
123
117
|
case 0:
|
|
@@ -125,7 +119,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
125
119
|
isRemotePreviewReady = isImageRepresentationReady(fileState);
|
|
126
120
|
_context.prev = 2;
|
|
127
121
|
mode = imageURLParams.mode;
|
|
128
|
-
cachedPreview =
|
|
122
|
+
cachedPreview = mediaFilePreviewCache.get(identifier.id, mode);
|
|
129
123
|
dimensionsAreBigger = isBigger(cachedPreview === null || cachedPreview === void 0 ? void 0 : cachedPreview.dimensions, requestDimensions);
|
|
130
124
|
if (!(cachedPreview && !dimensionsAreBigger)) {
|
|
131
125
|
_context.next = 8;
|
|
@@ -135,127 +129,21 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
135
129
|
case 8:
|
|
136
130
|
_context.prev = 8;
|
|
137
131
|
if (!filePreview) {
|
|
138
|
-
_context.next =
|
|
132
|
+
_context.next = 15;
|
|
139
133
|
break;
|
|
140
134
|
}
|
|
141
|
-
_context.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
135
|
+
_context.next = 12;
|
|
136
|
+
return getAndCacheLocalPreview(identifier.id, filePreview, requestDimensions || {}, mode, mediaBlobUrlAttrs);
|
|
137
|
+
case 12:
|
|
138
|
+
localPreview = _context.sent;
|
|
139
|
+
setCardPreview(localPreview);
|
|
140
|
+
return _context.abrupt("return");
|
|
141
|
+
case 15:
|
|
142
|
+
_context.next = 22;
|
|
148
143
|
break;
|
|
149
144
|
case 17:
|
|
150
145
|
_context.prev = 17;
|
|
151
|
-
_context.t0 = _context["catch"](
|
|
152
|
-
throw new LocalPreviewError('local-preview-rejected', _context.t0 instanceof Error ? _context.t0 : undefined);
|
|
153
|
-
case 20:
|
|
154
|
-
if (!(typeof value === 'string')) {
|
|
155
|
-
_context.next = 24;
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
localPreview = {
|
|
159
|
-
dataURI: value,
|
|
160
|
-
orientation: 1,
|
|
161
|
-
source: 'local'
|
|
162
|
-
};
|
|
163
|
-
_context.next = 57;
|
|
164
|
-
break;
|
|
165
|
-
case 24:
|
|
166
|
-
if (!(value instanceof Blob)) {
|
|
167
|
-
_context.next = 56;
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
_value = value, type = _value.type;
|
|
171
|
-
mediaType = getMediaTypeFromMimeType(type);
|
|
172
|
-
_context.t1 = mediaType;
|
|
173
|
-
_context.next = _context.t1 === 'image' ? 30 : _context.t1 === 'video' ? 42 : 53;
|
|
174
|
-
break;
|
|
175
|
-
case 30:
|
|
176
|
-
_context.prev = 30;
|
|
177
|
-
_context.next = 33;
|
|
178
|
-
return getOrientation(value);
|
|
179
|
-
case 33:
|
|
180
|
-
orientation = _context.sent;
|
|
181
|
-
_dataURI = URL.createObjectURL(value);
|
|
182
|
-
localPreview = {
|
|
183
|
-
dataURI: _dataURI,
|
|
184
|
-
orientation: orientation,
|
|
185
|
-
source: 'local'
|
|
186
|
-
};
|
|
187
|
-
_context.next = 41;
|
|
188
|
-
break;
|
|
189
|
-
case 38:
|
|
190
|
-
_context.prev = 38;
|
|
191
|
-
_context.t2 = _context["catch"](30);
|
|
192
|
-
throw new LocalPreviewError('local-preview-image', _context.t2 instanceof Error ? _context.t2 : undefined);
|
|
193
|
-
case 41:
|
|
194
|
-
return _context.abrupt("break", 54);
|
|
195
|
-
case 42:
|
|
196
|
-
_context.prev = 42;
|
|
197
|
-
_context.next = 45;
|
|
198
|
-
return takeSnapshot(value);
|
|
199
|
-
case 45:
|
|
200
|
-
_dataURI2 = _context.sent;
|
|
201
|
-
localPreview = {
|
|
202
|
-
dataURI: _dataURI2,
|
|
203
|
-
orientation: 1,
|
|
204
|
-
source: 'local'
|
|
205
|
-
};
|
|
206
|
-
_context.next = 52;
|
|
207
|
-
break;
|
|
208
|
-
case 49:
|
|
209
|
-
_context.prev = 49;
|
|
210
|
-
_context.t3 = _context["catch"](42);
|
|
211
|
-
throw new LocalPreviewError('local-preview-video', _context.t3 instanceof Error ? _context.t3 : undefined);
|
|
212
|
-
case 52:
|
|
213
|
-
return _context.abrupt("break", 54);
|
|
214
|
-
case 53:
|
|
215
|
-
throw new LocalPreviewError('local-preview-unsupported');
|
|
216
|
-
case 54:
|
|
217
|
-
_context.next = 57;
|
|
218
|
-
break;
|
|
219
|
-
case 56:
|
|
220
|
-
throw new LocalPreviewError('local-preview-unsupported');
|
|
221
|
-
case 57:
|
|
222
|
-
preview = _objectSpread(_objectSpread({}, localPreview), {}, {
|
|
223
|
-
dimensions: requestDimensions
|
|
224
|
-
});
|
|
225
|
-
_context.t4 = preview.source;
|
|
226
|
-
_context.next = _context.t4 === 'local' ? 61 : _context.t4 === 'remote' ? 63 : _context.t4 === 'ssr-server' ? 65 : _context.t4 === 'ssr-client' ? 67 : 69;
|
|
227
|
-
break;
|
|
228
|
-
case 61:
|
|
229
|
-
source = 'cache-local';
|
|
230
|
-
return _context.abrupt("break", 70);
|
|
231
|
-
case 63:
|
|
232
|
-
source = 'cache-remote';
|
|
233
|
-
return _context.abrupt("break", 70);
|
|
234
|
-
case 65:
|
|
235
|
-
source = 'cache-ssr-server';
|
|
236
|
-
return _context.abrupt("break", 70);
|
|
237
|
-
case 67:
|
|
238
|
-
source = 'cache-ssr-client';
|
|
239
|
-
return _context.abrupt("break", 70);
|
|
240
|
-
case 69:
|
|
241
|
-
source = preview.source;
|
|
242
|
-
case 70:
|
|
243
|
-
// We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
244
|
-
dataURI = mediaBlobUrlAttrs ? addFileAttrsToUrl(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI; // We store new cardPreview into cache
|
|
245
|
-
cardPreviewCache.set(identifier.id, mode, _objectSpread(_objectSpread({}, preview), {}, {
|
|
246
|
-
source: source,
|
|
247
|
-
dataURI: dataURI
|
|
248
|
-
}));
|
|
249
|
-
setCardPreview(_objectSpread(_objectSpread({}, preview), {}, {
|
|
250
|
-
dataURI: dataURI
|
|
251
|
-
}));
|
|
252
|
-
return _context.abrupt("return");
|
|
253
|
-
case 74:
|
|
254
|
-
_context.next = 81;
|
|
255
|
-
break;
|
|
256
|
-
case 76:
|
|
257
|
-
_context.prev = 76;
|
|
258
|
-
_context.t5 = _context["catch"](8);
|
|
146
|
+
_context.t0 = _context["catch"](8);
|
|
259
147
|
/**
|
|
260
148
|
* We report the error if:
|
|
261
149
|
* - local preview is supported and fails
|
|
@@ -266,36 +154,36 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
266
154
|
* i.e. local preview is available and not supported,
|
|
267
155
|
* but we are after the remote preview instead.
|
|
268
156
|
*/
|
|
269
|
-
if (!isUnsupportedLocalPreviewError(_context.
|
|
157
|
+
if (!isUnsupportedLocalPreviewError(_context.t0) || isUnsupportedLocalPreviewError(_context.t0) && !isRemotePreviewReady) {
|
|
270
158
|
// CXP-2723 TODO: We might have to wrap this error in MediaCardError
|
|
271
|
-
setNonCriticalError(_context.
|
|
159
|
+
setNonCriticalError(_context.t0);
|
|
272
160
|
}
|
|
273
161
|
/**
|
|
274
162
|
* No matter the reason why the local preview failed, we break the process
|
|
275
163
|
* if there is no remote preview available
|
|
276
164
|
*/
|
|
277
165
|
if (isRemotePreviewReady) {
|
|
278
|
-
_context.next =
|
|
166
|
+
_context.next = 22;
|
|
279
167
|
break;
|
|
280
168
|
}
|
|
281
|
-
throw _context.
|
|
282
|
-
case
|
|
169
|
+
throw _context.t0;
|
|
170
|
+
case 22:
|
|
283
171
|
if (isRemotePreviewReady) {
|
|
284
|
-
_context.next =
|
|
172
|
+
_context.next = 24;
|
|
285
173
|
break;
|
|
286
174
|
}
|
|
287
|
-
throw new
|
|
288
|
-
case
|
|
289
|
-
_context.next =
|
|
175
|
+
throw new MediaFilePreviewError('remote-preview-not-ready');
|
|
176
|
+
case 24:
|
|
177
|
+
_context.next = 26;
|
|
290
178
|
return fetchRemotePreviewRef.current(identifier);
|
|
291
|
-
case
|
|
179
|
+
case 26:
|
|
292
180
|
remotePreview = _context.sent;
|
|
293
181
|
setCardPreview(remotePreview);
|
|
294
182
|
return _context.abrupt("return");
|
|
295
|
-
case
|
|
296
|
-
_context.prev =
|
|
297
|
-
_context.
|
|
298
|
-
wrappedError =
|
|
183
|
+
case 31:
|
|
184
|
+
_context.prev = 31;
|
|
185
|
+
_context.t1 = _context["catch"](2);
|
|
186
|
+
wrappedError = ensureMediaFilePreviewError('preview-fetch', _context.t1); // If remote preview fails, we set status 'error'
|
|
299
187
|
// If local preview fails (i.e, no remote preview available),
|
|
300
188
|
// we can stay in the same status until there is a remote preview available
|
|
301
189
|
// If it's any other error we set status 'error'
|
|
@@ -308,11 +196,11 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
308
196
|
setError(wrappedError);
|
|
309
197
|
}
|
|
310
198
|
}
|
|
311
|
-
case
|
|
199
|
+
case 35:
|
|
312
200
|
case "end":
|
|
313
201
|
return _context.stop();
|
|
314
202
|
}
|
|
315
|
-
}, _callee, null, [[2,
|
|
203
|
+
}, _callee, null, [[2, 31], [8, 17]]);
|
|
316
204
|
}));
|
|
317
205
|
return function (_x, _x2) {
|
|
318
206
|
return _ref2.apply(this, arguments);
|
|
@@ -379,7 +267,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
379
267
|
// refetchSRRPreview: If dimensions from Server have changed and are bigger,
|
|
380
268
|
// we need to refetch
|
|
381
269
|
fetchRemotePreviewRef.current(identifier).then(setCardPreview).catch(function (e) {
|
|
382
|
-
var wrappedError =
|
|
270
|
+
var wrappedError = ensureMediaFilePreviewError('remote-preview-fetch-ssr', e, true);
|
|
383
271
|
setNonCriticalError(wrappedError);
|
|
384
272
|
});
|
|
385
273
|
}
|
|
@@ -387,15 +275,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
387
275
|
// Both compare dimensions, but the above is only for SSR in order to refetchSRRPreview and
|
|
388
276
|
// will swallow any errors. Below logic only applies when there is no card preview or the dimensions
|
|
389
277
|
// are bigger.
|
|
390
|
-
if (fileState &&
|
|
391
|
-
status: status,
|
|
392
|
-
fileState: fileState,
|
|
393
|
-
prevDimensions: prevRequestDimensions,
|
|
394
|
-
dimensions: requestDimensions,
|
|
395
|
-
hasCardPreview: !!cardPreview,
|
|
396
|
-
isBannedLocalPreview: isBannedLocalPreview,
|
|
397
|
-
wasResolvedUpfrontPreview: wasResolvedUpfrontPreviewRef.current
|
|
398
|
-
})) {
|
|
278
|
+
if (fileState && wasResolvedUpfrontPreviewRef.current && isPreviewableStatus(status, extractFilePreviewStatus(fileState, isBannedLocalPreview)) && (!cardPreview || isBigger(prevRequestDimensions, requestDimensions))) {
|
|
399
279
|
resolvePreviewRef.current(identifier, fileState);
|
|
400
280
|
}
|
|
401
281
|
if (!skipRemote && ssr && !!cardPreview && isSSRClientPreview(cardPreview)) {
|
|
@@ -465,7 +345,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
465
345
|
} else {
|
|
466
346
|
var e = new MediaFileStateError(fileState.id, fileState.reason, fileState.message, fileState.details);
|
|
467
347
|
var errorReason = status === 'uploading' ? 'upload' : 'metadata-fetch';
|
|
468
|
-
setError(new
|
|
348
|
+
setError(new MediaFilePreviewError(errorReason, e));
|
|
469
349
|
setStatus('error');
|
|
470
350
|
}
|
|
471
351
|
}
|
|
@@ -505,7 +385,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
505
385
|
setNonCriticalError(error);
|
|
506
386
|
}
|
|
507
387
|
var fileImageMode = imageResizeModeToFileImageMode(resizeMode);
|
|
508
|
-
|
|
388
|
+
mediaFilePreviewCache.remove(identifier.id, fileImageMode);
|
|
509
389
|
setCardPreview(undefined);
|
|
510
390
|
} else {
|
|
511
391
|
if (!['complete', 'error', 'failed-processing'].includes(status)) {
|
|
@@ -564,22 +444,6 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
564
444
|
getScriptProps: getScriptProps
|
|
565
445
|
};
|
|
566
446
|
};
|
|
567
|
-
var createRequestDimensions = function createRequestDimensions(dimensions) {
|
|
568
|
-
if (!dimensions) {
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
var retinaFactor = isRetina() ? 2 : 1;
|
|
572
|
-
var width = dimensions.width,
|
|
573
|
-
height = dimensions.height;
|
|
574
|
-
var result = {};
|
|
575
|
-
if (width) {
|
|
576
|
-
result.width = width * retinaFactor;
|
|
577
|
-
}
|
|
578
|
-
if (height) {
|
|
579
|
-
result.height = height * retinaFactor;
|
|
580
|
-
}
|
|
581
|
-
return result;
|
|
582
|
-
};
|
|
583
447
|
var initialSsrReliability = {
|
|
584
448
|
server: {
|
|
585
449
|
status: 'unknown'
|
|
@@ -103,7 +103,7 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
103
103
|
ErrorBoundary = _this$state.ErrorBoundary;
|
|
104
104
|
var analyticsContext = {
|
|
105
105
|
packageVersion: "@atlaskit/media-card",
|
|
106
|
-
packageName: "77.5.
|
|
106
|
+
packageName: "77.5.2",
|
|
107
107
|
componentName: 'mediaInlineCard',
|
|
108
108
|
component: 'mediaInlineCard'
|
|
109
109
|
};
|
|
@@ -7,7 +7,7 @@ import { extractErrorInfo, getRenderErrorRequestMetadata } from './analytics';
|
|
|
7
7
|
import { MediaCardError } from '../errors';
|
|
8
8
|
import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
|
|
9
9
|
var packageName = "@atlaskit/media-card";
|
|
10
|
-
var packageVersion = "77.5.
|
|
10
|
+
var packageVersion = "77.5.2";
|
|
11
11
|
var concurrentExperience;
|
|
12
12
|
var getExperience = function getExperience(id) {
|
|
13
13
|
if (!concurrentExperience) {
|
|
@@ -4,7 +4,8 @@ import React, { MouseEvent } from 'react';
|
|
|
4
4
|
import { MessageDescriptor } from 'react-intl-next';
|
|
5
5
|
import { MediaItemType, FileDetails, ImageResizeMode } from '@atlaskit/media-client';
|
|
6
6
|
import { WithAnalyticsEventsProps, UIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
7
|
-
import { CardStatus,
|
|
7
|
+
import { CardStatus, MediaCardCursor, CardDimensions, TitleBoxIcon } from '../../types';
|
|
8
|
+
import { MediaFilePreview } from './useFilePreview';
|
|
8
9
|
import { CardAction } from '../actions';
|
|
9
10
|
import { MediaCardError } from '../../errors';
|
|
10
11
|
export interface CardViewV2Props {
|
|
@@ -26,11 +27,11 @@ export interface CardViewV2Props {
|
|
|
26
27
|
readonly onClick?: (event: React.MouseEvent<HTMLDivElement>, analyticsEvent?: UIAnalyticsEvent) => void;
|
|
27
28
|
readonly onMouseEnter?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
28
29
|
readonly onDisplayImage?: () => void;
|
|
29
|
-
readonly cardPreview?:
|
|
30
|
+
readonly cardPreview?: MediaFilePreview;
|
|
30
31
|
readonly progress?: number;
|
|
31
32
|
readonly innerRef?: (instance: HTMLDivElement | null) => void;
|
|
32
|
-
readonly onImageLoad?: (cardPreview:
|
|
33
|
-
readonly onImageError?: (cardPreview:
|
|
33
|
+
readonly onImageLoad?: (cardPreview: MediaFilePreview) => void;
|
|
34
|
+
readonly onImageError?: (cardPreview: MediaFilePreview) => void;
|
|
34
35
|
readonly nativeLazyLoad?: boolean;
|
|
35
36
|
readonly forceSyncDisplay?: boolean;
|
|
36
37
|
disableAnimation?: boolean;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MediaFilePreview } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Primary reason is logged through Data Portal.
|
|
4
|
+
* Make sure all the values are whitelisted in Measure -> Event Regitry -> "mediaCardRender failed" event
|
|
5
|
+
*/
|
|
6
|
+
export type MediaFilePreviewErrorPrimaryReason = 'upload' | 'metadata-fetch' | 'error-file-state' | RemotePreviewPrimaryReason | LocalPreviewPrimaryReason | ImageLoadPrimaryReason | SsrPreviewPrimaryReason | 'missing-error-data' | 'preview-fetch';
|
|
7
|
+
export type ImageLoadPrimaryReason = 'cache-remote-uri' | 'cache-local-uri' | 'local-uri' | 'remote-uri' | 'external-uri' | 'unknown-uri';
|
|
8
|
+
export type RemotePreviewPrimaryReason = 'remote-preview-fetch' | 'remote-preview-not-ready' | 'remote-preview-fetch-ssr';
|
|
9
|
+
export type LocalPreviewPrimaryReason = 'local-preview-get' | 'local-preview-unsupported' | 'local-preview-rejected' | 'local-preview-image' | 'local-preview-video';
|
|
10
|
+
export type SsrPreviewPrimaryReason = 'ssr-client-uri' | 'ssr-client-load' | 'ssr-server-uri' | 'ssr-server-load';
|
|
11
|
+
export declare class MediaFilePreviewError extends Error {
|
|
12
|
+
readonly primaryReason: MediaFilePreviewErrorPrimaryReason;
|
|
13
|
+
readonly secondaryError?: Error | undefined;
|
|
14
|
+
constructor(primaryReason: MediaFilePreviewErrorPrimaryReason, secondaryError?: Error | undefined);
|
|
15
|
+
}
|
|
16
|
+
export declare class LocalPreviewError extends MediaFilePreviewError {
|
|
17
|
+
readonly primaryReason: LocalPreviewPrimaryReason;
|
|
18
|
+
readonly secondaryError?: Error | undefined;
|
|
19
|
+
constructor(primaryReason: LocalPreviewPrimaryReason, secondaryError?: Error | undefined);
|
|
20
|
+
}
|
|
21
|
+
export declare class RemotePreviewError extends MediaFilePreviewError {
|
|
22
|
+
readonly primaryReason: RemotePreviewPrimaryReason;
|
|
23
|
+
readonly secondaryError?: Error | undefined;
|
|
24
|
+
constructor(primaryReason: RemotePreviewPrimaryReason, secondaryError?: Error | undefined);
|
|
25
|
+
}
|
|
26
|
+
export declare class SsrPreviewError extends MediaFilePreviewError {
|
|
27
|
+
readonly primaryReason: SsrPreviewPrimaryReason;
|
|
28
|
+
readonly secondaryError?: Error | undefined;
|
|
29
|
+
constructor(primaryReason: SsrPreviewPrimaryReason, secondaryError?: Error | undefined);
|
|
30
|
+
}
|
|
31
|
+
export declare class ImageLoadError extends MediaFilePreviewError {
|
|
32
|
+
constructor(source?: MediaFilePreview['source']);
|
|
33
|
+
}
|
|
34
|
+
export declare function isMediaFilePreviewError(err: Error): err is MediaFilePreviewError;
|
|
35
|
+
export declare const isLocalPreviewError: (err: Error) => err is LocalPreviewError;
|
|
36
|
+
export declare const isRemotePreviewError: (err: Error) => err is RemotePreviewError;
|
|
37
|
+
export declare const isUnsupportedLocalPreviewError: (err: Error) => boolean;
|
|
38
|
+
export declare const ensureMediaFilePreviewError: (primaryReason: MediaFilePreviewErrorPrimaryReason, error: Error, updatePrimaryReason?: boolean) => MediaFilePreviewError;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ImageResizeMode } from '@atlaskit/media-client';
|
|
2
|
+
import { ObjectURLCache } from './objectURLCache';
|
|
3
|
+
import { MediaFilePreview } from '../types';
|
|
4
|
+
type Mode = ImageResizeMode | undefined;
|
|
5
|
+
export declare const getCacheKey: (id: string, mode: Mode) => string;
|
|
6
|
+
export interface MediaFilePreviewCache {
|
|
7
|
+
get(id: string, mode: Mode): MediaFilePreview | undefined;
|
|
8
|
+
set(id: string, mode: Mode, cardPreview: MediaFilePreview): void;
|
|
9
|
+
remove(id: string, mode: Mode): void;
|
|
10
|
+
clear(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare class CardPreviewCacheImpl implements MediaFilePreviewCache {
|
|
13
|
+
private previewCache;
|
|
14
|
+
constructor(previewCache: ObjectURLCache);
|
|
15
|
+
get: (id: string, mode: Mode) => MediaFilePreview | undefined;
|
|
16
|
+
set: (id: string, mode: Mode, cardPreview: MediaFilePreview) => void;
|
|
17
|
+
remove: (id: string, mode: Mode) => void;
|
|
18
|
+
clear: () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare const mediaFilePreviewCache: CardPreviewCacheImpl;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { MediaFilePreviewStatus, FilePreviewStatus } from '../types';
|
|
2
|
+
import { FileState } from '@atlaskit/media-client';
|
|
3
|
+
export declare const extractFilePreviewStatus: (fileState: FileState, isBannedLocalPreview: boolean) => FilePreviewStatus;
|
|
4
|
+
export declare const isPreviewableStatus: (cardStatus: MediaFilePreviewStatus, { isPreviewable, hasPreview, isSupportedByBrowser }: FilePreviewStatus) => boolean;
|