@atlaskit/media-card 78.0.7 → 78.0.9

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 (60) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/card/card.js +3 -4
  3. package/dist/cjs/card/externalImageCard.js +4 -2
  4. package/dist/cjs/card/fileCard.js +5 -3
  5. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  6. package/dist/cjs/card/svgView/svgView.js +2 -1
  7. package/dist/cjs/inline/loader.js +1 -1
  8. package/dist/cjs/types.js +16 -1
  9. package/dist/cjs/utils/ufoExperiences.js +1 -1
  10. package/dist/es2019/card/card.js +3 -4
  11. package/dist/es2019/card/externalImageCard.js +5 -2
  12. package/dist/es2019/card/fileCard.js +5 -2
  13. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  14. package/dist/es2019/card/svgView/svgView.js +2 -1
  15. package/dist/es2019/inline/loader.js +1 -1
  16. package/dist/es2019/types.js +10 -0
  17. package/dist/es2019/utils/ufoExperiences.js +1 -1
  18. package/dist/esm/card/card.js +3 -4
  19. package/dist/esm/card/externalImageCard.js +4 -2
  20. package/dist/esm/card/fileCard.js +4 -2
  21. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  22. package/dist/esm/card/svgView/svgView.js +2 -1
  23. package/dist/esm/inline/loader.js +1 -1
  24. package/dist/esm/types.js +14 -0
  25. package/dist/esm/utils/ufoExperiences.js +1 -1
  26. package/dist/types/card/card.d.ts +1 -2
  27. package/dist/types/card/externalImageCard.d.ts +1 -3
  28. package/dist/types/card/fileCard.d.ts +1 -3
  29. package/dist/types/types.d.ts +4 -0
  30. package/dist/types-ts4.5/card/card.d.ts +1 -2
  31. package/dist/types-ts4.5/card/externalImageCard.d.ts +1 -3
  32. package/dist/types-ts4.5/card/fileCard.d.ts +1 -3
  33. package/dist/types-ts4.5/types.d.ts +4 -0
  34. package/example-helpers/index.tsx +4 -2
  35. package/package.json +3 -3
  36. package/dist/cjs/card/cardState.js +0 -37
  37. package/dist/cjs/card/getCardPreview/cache.js +0 -39
  38. package/dist/cjs/card/getCardPreview/filePreviewStatus.js +0 -45
  39. package/dist/cjs/card/getCardPreview/helpers.js +0 -165
  40. package/dist/cjs/card/getCardPreview/index.js +0 -245
  41. package/dist/es2019/card/cardState.js +0 -30
  42. package/dist/es2019/card/getCardPreview/cache.js +0 -33
  43. package/dist/es2019/card/getCardPreview/filePreviewStatus.js +0 -43
  44. package/dist/es2019/card/getCardPreview/helpers.js +0 -74
  45. package/dist/es2019/card/getCardPreview/index.js +0 -170
  46. package/dist/esm/card/cardState.js +0 -32
  47. package/dist/esm/card/getCardPreview/cache.js +0 -35
  48. package/dist/esm/card/getCardPreview/filePreviewStatus.js +0 -40
  49. package/dist/esm/card/getCardPreview/helpers.js +0 -158
  50. package/dist/esm/card/getCardPreview/index.js +0 -213
  51. package/dist/types/card/cardState.d.ts +0 -9
  52. package/dist/types/card/getCardPreview/cache.d.ts +0 -21
  53. package/dist/types/card/getCardPreview/filePreviewStatus.d.ts +0 -4
  54. package/dist/types/card/getCardPreview/helpers.d.ts +0 -10
  55. package/dist/types/card/getCardPreview/index.d.ts +0 -53
  56. package/dist/types-ts4.5/card/cardState.d.ts +0 -9
  57. package/dist/types-ts4.5/card/getCardPreview/cache.d.ts +0 -21
  58. package/dist/types-ts4.5/card/getCardPreview/filePreviewStatus.d.ts +0 -4
  59. package/dist/types-ts4.5/card/getCardPreview/helpers.d.ts +0 -10
  60. package/dist/types-ts4.5/card/getCardPreview/index.d.ts +0 -53
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-card",
3
- "version": "78.0.7",
3
+ "version": "78.0.9",
4
4
  "description": "Includes all media card related components, CardView, CardViewSmall, Card...",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -51,7 +51,7 @@
51
51
  "@atlaskit/primitives": "^11.0.0",
52
52
  "@atlaskit/spinner": "^16.2.0",
53
53
  "@atlaskit/theme": "^12.11.0",
54
- "@atlaskit/tokens": "^1.55.0",
54
+ "@atlaskit/tokens": "^1.56.0",
55
55
  "@atlaskit/tooltip": "^18.5.0",
56
56
  "@atlaskit/ufo": "^0.2.0",
57
57
  "@atlaskit/ufo-interaction-ignore": "^1.1.0",
@@ -79,7 +79,7 @@
79
79
  "@atlaskit/media-picker": "^66.4.0",
80
80
  "@atlaskit/media-state": "^1.1.0",
81
81
  "@atlaskit/media-test-data": "^2.3.0",
82
- "@atlaskit/media-test-helpers": "^33.0.0",
82
+ "@atlaskit/media-test-helpers": "^34.0.0",
83
83
  "@atlaskit/radio": "^6.4.0",
84
84
  "@atlaskit/range": "^7.3.0",
85
85
  "@atlaskit/ssr": "*",
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getCardStateFromFileState = exports.createStateUpdater = void 0;
7
- var _mediaClient = require("@atlaskit/media-client");
8
- var _errors = require("../errors");
9
- var _getCardStatus = require("./getCardStatus");
10
- var _getCardPreview = require("./getCardPreview");
11
- /**
12
- * From docs: "Both state and props received by the updater function are guaranteed to be up-to-date.
13
- * The output of the updater is shallowly merged with state."
14
- */
15
- var createStateUpdater = exports.createStateUpdater = function createStateUpdater(newState, fireErrorEvent) {
16
- return function (prevState) {
17
- // Only override if previous status is non-final or new status is 'complete'
18
- if (!!newState.status && (0, _getCardStatus.isFinalCardStatus)(prevState.status) && newState.status !== 'complete') {
19
- // Log the error if the new state is not going to store it.
20
- // i.e. this is a non critical error
21
- !!newState.error && fireErrorEvent(newState.error);
22
- return prevState;
23
- }
24
- return newState;
25
- };
26
- };
27
- var getCardStateFromFileState = exports.getCardStateFromFileState = function getCardStateFromFileState(fileState, isBannedLocalPreview) {
28
- var status = (0, _getCardStatus.getCardStatus)(fileState.status, (0, _getCardPreview.extractFilePreviewStatus)(fileState, isBannedLocalPreview));
29
- var error = status === 'error' && (0, _mediaClient.isErrorFileState)(fileState) ? new _errors.MediaCardError('error-file-state', new Error(fileState.message)) : undefined;
30
- var progress = status === 'uploading' && fileState.status === 'uploading' ? fileState.progress : 1;
31
- return {
32
- fileState: fileState,
33
- status: status,
34
- progress: progress,
35
- error: error
36
- };
37
- };
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getCacheKey = exports.default = exports.CardPreviewCacheImpl = void 0;
8
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _objectURLCache = require("../../utils/objectURLCache");
12
- // Dimensions are used to create a key.
13
- // Cache is invalidated when different dimensions are provided.
14
-
15
- var getCacheKey = exports.getCacheKey = function getCacheKey(id, mode) {
16
- var resizeMode = mode || 'crop';
17
- return [id, resizeMode].join('-');
18
- };
19
- var CardPreviewCacheImpl = exports.CardPreviewCacheImpl = /*#__PURE__*/(0, _createClass2.default)(function CardPreviewCacheImpl(previewCache) {
20
- var _this = this;
21
- (0, _classCallCheck2.default)(this, CardPreviewCacheImpl);
22
- (0, _defineProperty2.default)(this, "get", function (id, mode) {
23
- var cacheKey = getCacheKey(id, mode);
24
- return _this.previewCache.get(cacheKey);
25
- });
26
- (0, _defineProperty2.default)(this, "set", function (id, mode, cardPreview) {
27
- var cacheKey = getCacheKey(id, mode);
28
- _this.previewCache.set(cacheKey, cardPreview);
29
- });
30
- (0, _defineProperty2.default)(this, "remove", function (id, mode) {
31
- var cacheKey = getCacheKey(id, mode);
32
- _this.previewCache.remove(cacheKey);
33
- });
34
- (0, _defineProperty2.default)(this, "clear", function () {
35
- _this.previewCache.clear();
36
- });
37
- this.previewCache = previewCache;
38
- }); // eslint-disable-next-line import/no-anonymous-default-export
39
- var _default = exports.default = new CardPreviewCacheImpl((0, _objectURLCache.createObjectURLCache)());
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isPreviewableStatus = exports.extractFilePreviewStatus = void 0;
7
- var _mediaCommon = require("@atlaskit/media-common");
8
- var _mediaClient = require("@atlaskit/media-client");
9
- var _helpers = require("./helpers");
10
- // TODO: align these checks with helpers from Media Client
11
- // https://product-fabric.atlassian.net/browse/BMPT-1300
12
- var extractFilePreviewStatus = exports.extractFilePreviewStatus = function extractFilePreviewStatus(fileState, isBannedLocalPreview) {
13
- var hasFilesize = 'size' in fileState && !!fileState.size;
14
- var _ref = 'mediaType' in fileState && fileState || {},
15
- mediaType = _ref.mediaType;
16
- var _ref2 = 'mimeType' in fileState && fileState || {},
17
- mimeType = _ref2.mimeType;
18
- var isPreviewable = !!mediaType && (0, _mediaClient.isPreviewableType)(mediaType);
19
-
20
- // Local preview is available only if it's supported by browser and supported by Media Card (isSupportedLocalPreview)
21
- // For example, SVGs are mime type NOT supported by browser but media type supported by Media Card (image)
22
- // Then, local Preview NOT available
23
- var hasLocalPreview = !isBannedLocalPreview && (0, _mediaClient.isPreviewableFileState)(fileState) && (0, _helpers.isSupportedLocalPreview)(mediaType) && !!mimeType && (0, _mediaCommon.isMimeTypeSupportedByBrowser)(mimeType);
24
- var hasRemotePreview = (0, _mediaClient.isImageRepresentationReady)(fileState);
25
- var hasPreview = hasLocalPreview || hasRemotePreview;
26
- var isSupportedByBrowser = !!mimeType && (0, _mediaCommon.isMimeTypeSupportedByBrowser)(mimeType);
27
- return {
28
- hasFilesize: hasFilesize,
29
- isPreviewable: isPreviewable,
30
- hasPreview: hasPreview,
31
- isSupportedByBrowser: isSupportedByBrowser
32
- };
33
- };
34
-
35
- // CXP-2723 TODO: Review this in relation to removing status from the hook
36
- var isPreviewableStatus = exports.isPreviewableStatus = function isPreviewableStatus(cardStatus, _ref3) {
37
- var isPreviewable = _ref3.isPreviewable,
38
- hasPreview = _ref3.hasPreview,
39
- isSupportedByBrowser = _ref3.isSupportedByBrowser;
40
- return hasPreview && isPreviewable && (cardStatus === 'complete' || cardStatus === 'loading-preview' || cardStatus === 'uploading' ||
41
- // For Video, we can have local or remote preview while processing.
42
- // Then, we only want to show the thumbnail if the file is supported by the browser,
43
- // this way we prevent playing unsupported videos that are not procesed
44
- cardStatus === 'processing' && isSupportedByBrowser);
45
- };
@@ -1,165 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.isSupportedLocalPreview = exports.getCardPreviewFromFilePreview = exports.getCardPreviewFromBackend = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _videoSnapshot = require("../../utils/videoSnapshot");
11
- var _mediaCommon = require("@atlaskit/media-common");
12
- var _mediaUi = require("@atlaskit/media-ui");
13
- var _errors = require("../../errors");
14
- /**
15
- * This method tells the support for the media
16
- * types covered in getCardPreviewFromFilePreview
17
- */
18
- var isSupportedLocalPreview = exports.isSupportedLocalPreview = function isSupportedLocalPreview(mediaType) {
19
- return mediaType === 'image' || mediaType === 'video';
20
- };
21
- var getImageLocalPreview = /*#__PURE__*/function () {
22
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(value) {
23
- var orientation, dataURI;
24
- return _regenerator.default.wrap(function _callee$(_context) {
25
- while (1) switch (_context.prev = _context.next) {
26
- case 0:
27
- _context.prev = 0;
28
- _context.next = 3;
29
- return (0, _mediaUi.getOrientation)(value);
30
- case 3:
31
- orientation = _context.sent;
32
- dataURI = URL.createObjectURL(value);
33
- return _context.abrupt("return", {
34
- dataURI: dataURI,
35
- orientation: orientation,
36
- source: 'local'
37
- });
38
- case 8:
39
- _context.prev = 8;
40
- _context.t0 = _context["catch"](0);
41
- throw new _errors.LocalPreviewError('local-preview-image', _context.t0 instanceof Error ? _context.t0 : undefined);
42
- case 11:
43
- case "end":
44
- return _context.stop();
45
- }
46
- }, _callee, null, [[0, 8]]);
47
- }));
48
- return function getImageLocalPreview(_x) {
49
- return _ref.apply(this, arguments);
50
- };
51
- }();
52
- var getVideoLocalPreview = /*#__PURE__*/function () {
53
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(value) {
54
- var dataURI;
55
- return _regenerator.default.wrap(function _callee2$(_context2) {
56
- while (1) switch (_context2.prev = _context2.next) {
57
- case 0:
58
- _context2.prev = 0;
59
- _context2.next = 3;
60
- return (0, _videoSnapshot.takeSnapshot)(value);
61
- case 3:
62
- dataURI = _context2.sent;
63
- return _context2.abrupt("return", {
64
- dataURI: dataURI,
65
- orientation: 1,
66
- source: 'local'
67
- });
68
- case 7:
69
- _context2.prev = 7;
70
- _context2.t0 = _context2["catch"](0);
71
- throw new _errors.LocalPreviewError('local-preview-video', _context2.t0 instanceof Error ? _context2.t0 : undefined);
72
- case 10:
73
- case "end":
74
- return _context2.stop();
75
- }
76
- }, _callee2, null, [[0, 7]]);
77
- }));
78
- return function getVideoLocalPreview(_x2) {
79
- return _ref2.apply(this, arguments);
80
- };
81
- }();
82
- var getCardPreviewFromFilePreview = exports.getCardPreviewFromFilePreview = /*#__PURE__*/function () {
83
- var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(filePreview) {
84
- var value, resolvedFilePreview, _value, type, mediaType;
85
- return _regenerator.default.wrap(function _callee3$(_context3) {
86
- while (1) switch (_context3.prev = _context3.next) {
87
- case 0:
88
- _context3.prev = 0;
89
- _context3.next = 3;
90
- return filePreview;
91
- case 3:
92
- resolvedFilePreview = _context3.sent;
93
- value = resolvedFilePreview.value;
94
- _context3.next = 10;
95
- break;
96
- case 7:
97
- _context3.prev = 7;
98
- _context3.t0 = _context3["catch"](0);
99
- throw new _errors.LocalPreviewError('local-preview-rejected', _context3.t0 instanceof Error ? _context3.t0 : undefined);
100
- case 10:
101
- if (!(typeof value === 'string')) {
102
- _context3.next = 14;
103
- break;
104
- }
105
- return _context3.abrupt("return", {
106
- dataURI: value,
107
- orientation: 1,
108
- source: 'local'
109
- });
110
- case 14:
111
- if (!(value instanceof Blob)) {
112
- _context3.next = 22;
113
- break;
114
- }
115
- _value = value, type = _value.type;
116
- mediaType = (0, _mediaCommon.getMediaTypeFromMimeType)(type);
117
- _context3.t1 = mediaType;
118
- _context3.next = _context3.t1 === 'image' ? 20 : _context3.t1 === 'video' ? 21 : 22;
119
- break;
120
- case 20:
121
- return _context3.abrupt("return", getImageLocalPreview(value));
122
- case 21:
123
- return _context3.abrupt("return", getVideoLocalPreview(value));
124
- case 22:
125
- throw new _errors.LocalPreviewError('local-preview-unsupported');
126
- case 23:
127
- case "end":
128
- return _context3.stop();
129
- }
130
- }, _callee3, null, [[0, 7]]);
131
- }));
132
- return function getCardPreviewFromFilePreview(_x3) {
133
- return _ref3.apply(this, arguments);
134
- };
135
- }();
136
- var getCardPreviewFromBackend = exports.getCardPreviewFromBackend = /*#__PURE__*/function () {
137
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(mediaClient, id, params, traceContext) {
138
- var blob;
139
- return _regenerator.default.wrap(function _callee4$(_context4) {
140
- while (1) switch (_context4.prev = _context4.next) {
141
- case 0:
142
- _context4.prev = 0;
143
- _context4.next = 3;
144
- return mediaClient.getImage(id, params, undefined, undefined, traceContext);
145
- case 3:
146
- blob = _context4.sent;
147
- return _context4.abrupt("return", {
148
- dataURI: URL.createObjectURL(blob),
149
- orientation: 1,
150
- source: 'remote'
151
- });
152
- case 7:
153
- _context4.prev = 7;
154
- _context4.t0 = _context4["catch"](0);
155
- throw new _errors.RemotePreviewError('remote-preview-fetch', _context4.t0 instanceof Error ? _context4.t0 : undefined);
156
- case 10:
157
- case "end":
158
- return _context4.stop();
159
- }
160
- }, _callee4, null, [[0, 7]]);
161
- }));
162
- return function getCardPreviewFromBackend(_x4, _x5, _x6, _x7) {
163
- return _ref4.apply(this, arguments);
164
- };
165
- }();
@@ -1,245 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- Object.defineProperty(exports, "extractFilePreviewStatus", {
8
- enumerable: true,
9
- get: function get() {
10
- return _filePreviewStatus.extractFilePreviewStatus;
11
- }
12
- });
13
- exports.getCardPreview = exports.fetchAndCacheRemotePreview = void 0;
14
- Object.defineProperty(exports, "getCardPreviewFromBackend", {
15
- enumerable: true,
16
- get: function get() {
17
- return _helpers.getCardPreviewFromBackend;
18
- }
19
- });
20
- exports.getCardPreviewFromCache = void 0;
21
- Object.defineProperty(exports, "getCardPreviewFromFilePreview", {
22
- enumerable: true,
23
- get: function get() {
24
- return _helpers.getCardPreviewFromFilePreview;
25
- }
26
- });
27
- exports.isSSRServerPreview = exports.isSSRPreview = exports.isSSRDataPreview = exports.isSSRClientPreview = exports.isLocalPreview = exports.getSSRCardPreview = exports.getFilePreviewFromFileState = void 0;
28
- Object.defineProperty(exports, "isSupportedLocalPreview", {
29
- enumerable: true,
30
- get: function get() {
31
- return _helpers.isSupportedLocalPreview;
32
- }
33
- });
34
- exports.shouldResolvePreview = exports.removeCardPreviewFromCache = void 0;
35
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
36
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
37
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
38
- var _mediaClient = require("@atlaskit/media-client");
39
- var _mediaCommon = require("@atlaskit/media-common");
40
- var _cache = _interopRequireDefault(require("./cache"));
41
- var _helpers = require("./helpers");
42
- var _errors = require("../../errors");
43
- var _dimensionComparer = require("../../utils/dimensionComparer");
44
- var _filePreviewStatus = require("./filePreviewStatus");
45
- 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; }
46
- 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) { (0, _defineProperty2.default)(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; }
47
- var getCardPreviewFromCache = exports.getCardPreviewFromCache = _cache.default.get;
48
- var removeCardPreviewFromCache = exports.removeCardPreviewFromCache = _cache.default.remove;
49
-
50
- /**
51
- * Will return the preview if available and supported by the browser
52
- * See extractFilePreviewStatus "hasLocalPreview" logic
53
- */
54
- var getFilePreviewFromFileState = exports.getFilePreviewFromFileState = function getFilePreviewFromFileState(fileState) {
55
- return 'mimeType' in fileState && (0, _mediaCommon.isMimeTypeSupportedByBrowser)(fileState.mimeType) && (0, _mediaClient.isPreviewableFileState)(fileState) ? fileState.preview : undefined;
56
- };
57
- var extendAndCachePreview = function extendAndCachePreview(id, mode, preview, mediaBlobUrlAttrs) {
58
- var source;
59
- switch (preview.source) {
60
- case 'local':
61
- source = 'cache-local';
62
- break;
63
- case 'remote':
64
- source = 'cache-remote';
65
- break;
66
- case 'ssr-server':
67
- source = 'cache-ssr-server';
68
- break;
69
- case 'ssr-client':
70
- source = 'cache-ssr-client';
71
- break;
72
- default:
73
- source = preview.source;
74
- }
75
- // We want to embed some meta context into dataURI for Copy/Paste to work.
76
- var dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI;
77
- // We store new cardPreview into cache
78
- _cache.default.set(id, mode, _objectSpread(_objectSpread({}, preview), {}, {
79
- source: source,
80
- dataURI: dataURI
81
- }));
82
- return _objectSpread(_objectSpread({}, preview), {}, {
83
- dataURI: dataURI
84
- });
85
- };
86
-
87
- /**
88
- * This function will try to return a Card preview, either from cache, local preview or remote preview.
89
- * It should only be called if there is a chance to get either a remote or a local preview, or both.
90
- * This, in order to ensure there is always going to be a valid return value OR throw an error if the process fails.
91
- * It is worth noting that local preview failures break the process if there is no remote preview available.
92
- * In that case we throw an error immediately.
93
- * Otherwise, if the local preview fails but there is a remote preview available, the failure does not break the process.
94
- * In that case, we still want to report the local preview error to the caller, for feature realiability track.
95
- * hence the use of the optional callback onLocalPreviewError
96
- */
97
- var getCardPreview = exports.getCardPreview = /*#__PURE__*/function () {
98
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
99
- var mediaClient, id, _ref$dimensions, dimensions, filePreview, onLocalPreviewError, isRemotePreviewReady, imageUrlParams, mediaBlobUrlAttrs, traceContext, mode, cachedPreview, dimensionsAreBigger, localPreview, remotePreview;
100
- return _regenerator.default.wrap(function _callee$(_context) {
101
- while (1) switch (_context.prev = _context.next) {
102
- case 0:
103
- 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, traceContext = _ref.traceContext;
104
- mode = imageUrlParams.mode;
105
- cachedPreview = _cache.default.get(id, mode);
106
- dimensionsAreBigger = (0, _dimensionComparer.isBigger)(cachedPreview === null || cachedPreview === void 0 ? void 0 : cachedPreview.dimensions, dimensions);
107
- if (!(cachedPreview && !dimensionsAreBigger)) {
108
- _context.next = 6;
109
- break;
110
- }
111
- return _context.abrupt("return", cachedPreview);
112
- case 6:
113
- _context.prev = 6;
114
- if (!filePreview) {
115
- _context.next = 12;
116
- break;
117
- }
118
- _context.next = 10;
119
- return (0, _helpers.getCardPreviewFromFilePreview)(filePreview);
120
- case 10:
121
- localPreview = _context.sent;
122
- return _context.abrupt("return", extendAndCachePreview(id, mode, _objectSpread(_objectSpread({}, localPreview), {}, {
123
- dimensions: dimensions
124
- }), mediaBlobUrlAttrs));
125
- case 12:
126
- _context.next = 19;
127
- break;
128
- case 14:
129
- _context.prev = 14;
130
- _context.t0 = _context["catch"](6);
131
- /**
132
- * We report the error if:
133
- * - local preview is supported and fails
134
- * - local preview is unsupported and remote preview is NOT READY
135
- * i.e. the function was called for "no reason".
136
- * We DON'T report the error if:
137
- * - local preview is unsupported and remote preview IS READY
138
- * i.e. local preview is available and not supported,
139
- * but we are after the remote preview instead.
140
- */
141
- if (!(0, _errors.isUnsupportedLocalPreviewError)(_context.t0) || (0, _errors.isUnsupportedLocalPreviewError)(_context.t0) && !isRemotePreviewReady) {
142
- onLocalPreviewError && onLocalPreviewError(_context.t0);
143
- }
144
- /**
145
- * No matter the reason why the local preview failed, we break the process
146
- * if there is no remote preview available
147
- */
148
- if (isRemotePreviewReady) {
149
- _context.next = 19;
150
- break;
151
- }
152
- throw _context.t0;
153
- case 19:
154
- if (isRemotePreviewReady) {
155
- _context.next = 21;
156
- break;
157
- }
158
- throw new _errors.MediaCardError('remote-preview-not-ready');
159
- case 21:
160
- _context.next = 23;
161
- return fetchAndCacheRemotePreview(mediaClient, id, dimensions, imageUrlParams, mediaBlobUrlAttrs, traceContext);
162
- case 23:
163
- remotePreview = _context.sent;
164
- return _context.abrupt("return", remotePreview);
165
- case 25:
166
- case "end":
167
- return _context.stop();
168
- }
169
- }, _callee, null, [[6, 14]]);
170
- }));
171
- return function getCardPreview(_x) {
172
- return _ref2.apply(this, arguments);
173
- };
174
- }();
175
- var shouldResolvePreview = exports.shouldResolvePreview = function shouldResolvePreview(_ref3) {
176
- var status = _ref3.status,
177
- fileState = _ref3.fileState,
178
- prevDimensions = _ref3.prevDimensions,
179
- dimensions = _ref3.dimensions,
180
- hasCardPreview = _ref3.hasCardPreview,
181
- isBannedLocalPreview = _ref3.isBannedLocalPreview,
182
- wasResolvedUpfrontPreview = _ref3.wasResolvedUpfrontPreview;
183
- var statusIsPreviewable = (0, _filePreviewStatus.isPreviewableStatus)(status, (0, _filePreviewStatus.extractFilePreviewStatus)(fileState, isBannedLocalPreview));
184
- var dimensionsAreBigger = (0, _dimensionComparer.isBigger)(prevDimensions, dimensions);
185
- // We should not fetch the preview if the upfront one hasn't been resolved yet (it could be resolving now), even if there are new dimensions.
186
- return wasResolvedUpfrontPreview && statusIsPreviewable && (!hasCardPreview || dimensionsAreBigger);
187
- };
188
- var getSSRCardPreview = exports.getSSRCardPreview = function getSSRCardPreview(ssr, mediaClient, id, params, mediaBlobUrlAttrs) {
189
- var dataURI;
190
- try {
191
- var rawDataURI = mediaClient.getImageUrlSync(id, params);
192
- // We want to embed some meta context into dataURI for Copy/Paste to work.
193
- dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(rawDataURI, mediaBlobUrlAttrs) : rawDataURI;
194
- var source = ssr === 'client' ? 'ssr-client' : 'ssr-server';
195
- return {
196
- dataURI: dataURI,
197
- source: source,
198
- orientation: 1
199
- };
200
- } catch (e) {
201
- var reason = ssr === 'server' ? 'ssr-server-uri' : 'ssr-client-uri';
202
- throw new _errors.SsrPreviewError(reason, e instanceof Error ? e : undefined);
203
- }
204
- };
205
- var isLocalPreview = exports.isLocalPreview = function isLocalPreview(preview) {
206
- var localSources = ['local', 'cache-local'];
207
- return localSources.includes(preview.source);
208
- };
209
- var isSSRPreview = exports.isSSRPreview = function isSSRPreview(preview) {
210
- return isSSRClientPreview(preview) || isSSRServerPreview(preview) || isSSRDataPreview(preview);
211
- };
212
- var isSSRServerPreview = exports.isSSRServerPreview = function isSSRServerPreview(preview) {
213
- var ssrClientSources = ['ssr-server', 'cache-ssr-server'];
214
- return ssrClientSources.includes(preview.source);
215
- };
216
- var isSSRClientPreview = exports.isSSRClientPreview = function isSSRClientPreview(preview) {
217
- var ssrClientSources = ['ssr-client', 'cache-ssr-client'];
218
- return ssrClientSources.includes(preview.source);
219
- };
220
- var isSSRDataPreview = exports.isSSRDataPreview = function isSSRDataPreview(preview) {
221
- return preview.source === 'ssr-data';
222
- };
223
- var fetchAndCacheRemotePreview = exports.fetchAndCacheRemotePreview = /*#__PURE__*/function () {
224
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(mediaClient, id, dimensions, params, mediaBlobUrlAttrs, traceContext) {
225
- var remotePreview;
226
- return _regenerator.default.wrap(function _callee2$(_context2) {
227
- while (1) switch (_context2.prev = _context2.next) {
228
- case 0:
229
- _context2.next = 2;
230
- return (0, _helpers.getCardPreviewFromBackend)(mediaClient, id, params, traceContext);
231
- case 2:
232
- remotePreview = _context2.sent;
233
- return _context2.abrupt("return", extendAndCachePreview(id, params.mode, _objectSpread(_objectSpread({}, remotePreview), {}, {
234
- dimensions: dimensions
235
- }), mediaBlobUrlAttrs));
236
- case 4:
237
- case "end":
238
- return _context2.stop();
239
- }
240
- }, _callee2);
241
- }));
242
- return function fetchAndCacheRemotePreview(_x2, _x3, _x4, _x5, _x6, _x7) {
243
- return _ref4.apply(this, arguments);
244
- };
245
- }();
@@ -1,30 +0,0 @@
1
- import { isErrorFileState } from '@atlaskit/media-client';
2
- import { MediaCardError } from '../errors';
3
- import { getCardStatus, isFinalCardStatus } from './getCardStatus';
4
- import { extractFilePreviewStatus } from './getCardPreview';
5
-
6
- /**
7
- * From docs: "Both state and props received by the updater function are guaranteed to be up-to-date.
8
- * The output of the updater is shallowly merged with state."
9
- */
10
- export const createStateUpdater = (newState, fireErrorEvent) => prevState => {
11
- // Only override if previous status is non-final or new status is 'complete'
12
- if (!!newState.status && isFinalCardStatus(prevState.status) && newState.status !== 'complete') {
13
- // Log the error if the new state is not going to store it.
14
- // i.e. this is a non critical error
15
- !!newState.error && fireErrorEvent(newState.error);
16
- return prevState;
17
- }
18
- return newState;
19
- };
20
- export const getCardStateFromFileState = (fileState, isBannedLocalPreview) => {
21
- const status = getCardStatus(fileState.status, extractFilePreviewStatus(fileState, isBannedLocalPreview));
22
- const error = status === 'error' && isErrorFileState(fileState) ? new MediaCardError('error-file-state', new Error(fileState.message)) : undefined;
23
- const progress = status === 'uploading' && fileState.status === 'uploading' ? fileState.progress : 1;
24
- return {
25
- fileState,
26
- status,
27
- progress,
28
- error
29
- };
30
- };
@@ -1,33 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import { createObjectURLCache } from '../../utils/objectURLCache';
3
-
4
- // Dimensions are used to create a key.
5
- // Cache is invalidated when different dimensions are provided.
6
-
7
- export const getCacheKey = (id, mode) => {
8
- const resizeMode = mode || 'crop';
9
- return [id, resizeMode].join('-');
10
- };
11
- export class CardPreviewCacheImpl {
12
- constructor(previewCache) {
13
- _defineProperty(this, "get", (id, mode) => {
14
- const cacheKey = getCacheKey(id, mode);
15
- return this.previewCache.get(cacheKey);
16
- });
17
- _defineProperty(this, "set", (id, mode, cardPreview) => {
18
- const cacheKey = getCacheKey(id, mode);
19
- this.previewCache.set(cacheKey, cardPreview);
20
- });
21
- _defineProperty(this, "remove", (id, mode) => {
22
- const cacheKey = getCacheKey(id, mode);
23
- this.previewCache.remove(cacheKey);
24
- });
25
- _defineProperty(this, "clear", () => {
26
- this.previewCache.clear();
27
- });
28
- this.previewCache = previewCache;
29
- }
30
- }
31
-
32
- // eslint-disable-next-line import/no-anonymous-default-export
33
- export default new CardPreviewCacheImpl(createObjectURLCache());
@@ -1,43 +0,0 @@
1
- import { isMimeTypeSupportedByBrowser } from '@atlaskit/media-common';
2
- import { isPreviewableFileState, isPreviewableType, isImageRepresentationReady } from '@atlaskit/media-client';
3
- import { isSupportedLocalPreview } from './helpers';
4
-
5
- // TODO: align these checks with helpers from Media Client
6
- // https://product-fabric.atlassian.net/browse/BMPT-1300
7
- export const extractFilePreviewStatus = (fileState, isBannedLocalPreview) => {
8
- const hasFilesize = 'size' in fileState && !!fileState.size;
9
- const {
10
- mediaType
11
- } = 'mediaType' in fileState && fileState || {};
12
- const {
13
- mimeType
14
- } = 'mimeType' in fileState && fileState || {};
15
- const isPreviewable = !!mediaType && isPreviewableType(mediaType);
16
-
17
- // Local preview is available only if it's supported by browser and supported by Media Card (isSupportedLocalPreview)
18
- // For example, SVGs are mime type NOT supported by browser but media type supported by Media Card (image)
19
- // Then, local Preview NOT available
20
- const hasLocalPreview = !isBannedLocalPreview && isPreviewableFileState(fileState) && isSupportedLocalPreview(mediaType) && !!mimeType && isMimeTypeSupportedByBrowser(mimeType);
21
- const hasRemotePreview = isImageRepresentationReady(fileState);
22
- const hasPreview = hasLocalPreview || hasRemotePreview;
23
- const isSupportedByBrowser = !!mimeType && isMimeTypeSupportedByBrowser(mimeType);
24
- return {
25
- hasFilesize,
26
- isPreviewable,
27
- hasPreview,
28
- isSupportedByBrowser
29
- };
30
- };
31
-
32
- // CXP-2723 TODO: Review this in relation to removing status from the hook
33
- export const isPreviewableStatus = (cardStatus, {
34
- isPreviewable,
35
- hasPreview,
36
- isSupportedByBrowser
37
- }) => {
38
- return hasPreview && isPreviewable && (cardStatus === 'complete' || cardStatus === 'loading-preview' || cardStatus === 'uploading' ||
39
- // For Video, we can have local or remote preview while processing.
40
- // Then, we only want to show the thumbnail if the file is supported by the browser,
41
- // this way we prevent playing unsupported videos that are not procesed
42
- cardStatus === 'processing' && isSupportedByBrowser);
43
- };