@atlaskit/media-card 71.0.0 → 72.0.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 +18 -0
- package/dist/cjs/errors.js +56 -5
- package/dist/cjs/files/cardImageView/index.js +53 -104
- package/dist/cjs/files/index.js +0 -6
- package/dist/cjs/root/card/cardAnalytics.js +3 -15
- package/dist/cjs/root/card/cardSSRView.js +4 -2
- package/dist/cjs/root/card/cardState.js +50 -0
- package/dist/cjs/root/card/getCardPreview/cache.js +5 -0
- package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +50 -0
- package/dist/cjs/root/card/getCardPreview/helpers.js +13 -21
- package/dist/cjs/root/card/getCardPreview/index.js +91 -94
- package/dist/cjs/root/card/getCardStatus.js +7 -1
- package/dist/cjs/root/card/index.js +271 -266
- package/dist/cjs/root/cardView.js +96 -60
- package/dist/cjs/root/inline/loader.js +2 -1
- package/dist/cjs/root/inline/mediaInlineCard.js +4 -3
- package/dist/cjs/root/ui/iconMessage/index.js +12 -5
- package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +30 -124
- package/dist/cjs/root/ui/titleBox/failedTitleBox.js +7 -3
- package/dist/cjs/utils/analytics.js +6 -44
- package/dist/cjs/utils/dimensionComparer.js +1 -1
- package/dist/cjs/utils/metadata.js +11 -3
- package/dist/cjs/utils/objectURLCache.js +6 -0
- package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/errors.js +34 -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/cardSSRView.js +3 -2
- 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 +35 -0
- package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
- package/dist/es2019/root/card/getCardPreview/index.js +71 -74
- package/dist/es2019/root/card/getCardStatus.js +1 -0
- package/dist/es2019/root/card/index.js +193 -171
- package/dist/es2019/root/cardView.js +100 -61
- package/dist/es2019/root/inline/loader.js +2 -1
- package/dist/es2019/root/inline/mediaInlineCard.js +4 -3
- package/dist/es2019/root/ui/iconMessage/index.js +5 -3
- package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +21 -88
- package/dist/es2019/root/ui/titleBox/failedTitleBox.js +5 -3
- package/dist/es2019/utils/analytics.js +5 -34
- package/dist/es2019/utils/dimensionComparer.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/version.json +1 -1
- package/dist/esm/errors.js +42 -1
- 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/cardSSRView.js +3 -2
- package/dist/esm/root/card/cardState.js +32 -0
- package/dist/esm/root/card/getCardPreview/cache.js +6 -0
- package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +35 -0
- package/dist/esm/root/card/getCardPreview/helpers.js +13 -21
- package/dist/esm/root/card/getCardPreview/index.js +79 -88
- package/dist/esm/root/card/getCardStatus.js +3 -0
- package/dist/esm/root/card/index.js +278 -268
- package/dist/esm/root/cardView.js +98 -61
- package/dist/esm/root/inline/loader.js +2 -1
- package/dist/esm/root/inline/mediaInlineCard.js +4 -3
- package/dist/esm/root/ui/iconMessage/index.js +7 -3
- package/dist/esm/root/ui/imageRenderer/imageRenderer.js +23 -118
- package/dist/esm/root/ui/titleBox/failedTitleBox.js +6 -3
- package/dist/esm/utils/analytics.js +5 -36
- package/dist/esm/utils/dimensionComparer.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/version.json +1 -1
- package/dist/types/errors.d.ts +9 -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 +4 -3
- package/dist/types/root/card/cardAnalytics.d.ts +1 -6
- package/dist/types/root/card/cardSSRView.d.ts +1 -1
- 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 +17 -13
- package/dist/types/root/card/getCardStatus.d.ts +1 -0
- package/dist/types/root/card/index.d.ts +11 -10
- package/dist/types/root/cardView.d.ts +11 -8
- package/dist/types/root/inlinePlayer.d.ts +1 -1
- package/dist/types/root/ui/iconMessage/index.d.ts +2 -1
- package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +2 -13
- package/dist/types/root/ui/styledSSR.d.ts +1 -1
- package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +2 -0
- 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/metadata.d.ts +2 -2
- package/dist/types/utils/objectURLCache.d.ts +2 -1
- package/example-helpers/index.tsx +21 -0
- package/package.json +6 -5
- package/dist/cjs/root/card/getCardPreview/types.js +0 -5
- package/dist/cjs/utils/fileAttributesContext.js +0 -40
- package/dist/es2019/root/card/getCardPreview/types.js +0 -1
- package/dist/es2019/utils/fileAttributesContext.js +0 -19
- package/dist/esm/root/card/getCardPreview/types.js +0 -1
- package/dist/esm/utils/fileAttributesContext.js +0 -18
- package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
- package/dist/types/utils/fileAttributesContext.d.ts +0 -10
|
@@ -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
5
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
6
6
|
|
|
7
7
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
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
|
|
12
|
+
import { getCardPreviewFromFilePreview, getCardPreviewFromBackend } from './helpers';
|
|
13
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
|
-
};
|
|
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,33 @@ 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
|
+
default:
|
|
42
|
+
source = preview.source;
|
|
43
|
+
} // We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
var dataURI = mediaBlobUrlAttrs ? addFileAttrsToUrl(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI; // We store new cardPreview into cache
|
|
47
|
+
|
|
48
|
+
cardPreviewCache.set(id, dimensions, _objectSpread(_objectSpread({}, preview), {}, {
|
|
49
|
+
source: source,
|
|
50
|
+
dataURI: dataURI
|
|
51
|
+
}));
|
|
52
|
+
return _objectSpread(_objectSpread({}, preview), {}, {
|
|
53
|
+
dataURI: dataURI
|
|
54
|
+
});
|
|
55
|
+
};
|
|
60
56
|
/**
|
|
61
57
|
* This function will try to return a Card preview, either from cache, local preview or remote preview.
|
|
62
58
|
* It should only be called if there is a chance to get either a remote or a local preview, or both.
|
|
@@ -67,49 +63,48 @@ export var getFilePreviewFromFileState = function getFilePreviewFromFileState(fi
|
|
|
67
63
|
* In that case, we still want to report the local preview error to the caller, for feature realiability track.
|
|
68
64
|
* hence the use of the optional callback onLocalPreviewError
|
|
69
65
|
*/
|
|
66
|
+
|
|
67
|
+
|
|
70
68
|
export var getCardPreview = /*#__PURE__*/function () {
|
|
71
|
-
var
|
|
72
|
-
var mediaClient, id,
|
|
69
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
70
|
+
var mediaClient, id, _ref$dimensions, dimensions, filePreview, onLocalPreviewError, isRemotePreviewReady, imageUrlParams, mediaBlobUrlAttrs, cachedPreview, localPreview, remotePreview;
|
|
73
71
|
|
|
74
72
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
75
73
|
while (1) {
|
|
76
74
|
switch (_context.prev = _context.next) {
|
|
77
75
|
case 0:
|
|
78
|
-
mediaClient =
|
|
79
|
-
|
|
76
|
+
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;
|
|
77
|
+
cachedPreview = cardPreviewCache.get(id, dimensions);
|
|
80
78
|
|
|
81
|
-
if (!
|
|
79
|
+
if (!cachedPreview) {
|
|
82
80
|
_context.next = 4;
|
|
83
81
|
break;
|
|
84
82
|
}
|
|
85
83
|
|
|
86
|
-
return _context.abrupt("return",
|
|
87
|
-
source: 'cache'
|
|
88
|
-
}));
|
|
84
|
+
return _context.abrupt("return", cachedPreview);
|
|
89
85
|
|
|
90
86
|
case 4:
|
|
91
87
|
_context.prev = 4;
|
|
92
|
-
_context.t0 = filePreview;
|
|
93
88
|
|
|
94
|
-
if (!
|
|
89
|
+
if (!filePreview) {
|
|
95
90
|
_context.next = 10;
|
|
96
91
|
break;
|
|
97
92
|
}
|
|
98
93
|
|
|
99
|
-
_context.next =
|
|
94
|
+
_context.next = 8;
|
|
100
95
|
return getCardPreviewFromFilePreview(filePreview);
|
|
101
96
|
|
|
102
|
-
case
|
|
103
|
-
|
|
97
|
+
case 8:
|
|
98
|
+
localPreview = _context.sent;
|
|
99
|
+
return _context.abrupt("return", extendAndCachePreview(id, dimensions, localPreview, mediaBlobUrlAttrs));
|
|
104
100
|
|
|
105
101
|
case 10:
|
|
106
|
-
|
|
107
|
-
_context.next = 18;
|
|
102
|
+
_context.next = 17;
|
|
108
103
|
break;
|
|
109
104
|
|
|
110
|
-
case
|
|
111
|
-
_context.prev =
|
|
112
|
-
_context.
|
|
105
|
+
case 12:
|
|
106
|
+
_context.prev = 12;
|
|
107
|
+
_context.t0 = _context["catch"](4);
|
|
113
108
|
|
|
114
109
|
/**
|
|
115
110
|
* We report the error if:
|
|
@@ -121,8 +116,8 @@ export var getCardPreview = /*#__PURE__*/function () {
|
|
|
121
116
|
* i.e. local preview is available and not supported,
|
|
122
117
|
* but we are after the remote preview instead.
|
|
123
118
|
*/
|
|
124
|
-
if (!isUnsupportedLocalPreviewError(_context.
|
|
125
|
-
onLocalPreviewError && onLocalPreviewError(_context.
|
|
119
|
+
if (!isUnsupportedLocalPreviewError(_context.t0) || isUnsupportedLocalPreviewError(_context.t0) && !isRemotePreviewReady) {
|
|
120
|
+
onLocalPreviewError && onLocalPreviewError(_context.t0);
|
|
126
121
|
}
|
|
127
122
|
/**
|
|
128
123
|
* No matter the reason why the local preview failed, we break the process
|
|
@@ -131,53 +126,49 @@ export var getCardPreview = /*#__PURE__*/function () {
|
|
|
131
126
|
|
|
132
127
|
|
|
133
128
|
if (isRemotePreviewReady) {
|
|
134
|
-
_context.next =
|
|
129
|
+
_context.next = 17;
|
|
135
130
|
break;
|
|
136
131
|
}
|
|
137
132
|
|
|
138
|
-
throw _context.
|
|
139
|
-
|
|
140
|
-
case 18:
|
|
141
|
-
if (cardPreview) {
|
|
142
|
-
_context.next = 24;
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
133
|
+
throw _context.t0;
|
|
145
134
|
|
|
135
|
+
case 17:
|
|
146
136
|
if (isRemotePreviewReady) {
|
|
147
|
-
_context.next =
|
|
137
|
+
_context.next = 19;
|
|
148
138
|
break;
|
|
149
139
|
}
|
|
150
140
|
|
|
151
141
|
throw new MediaCardError('remote-preview-not-ready');
|
|
152
142
|
|
|
143
|
+
case 19:
|
|
144
|
+
_context.next = 21;
|
|
145
|
+
return getCardPreviewFromBackend(mediaClient, id, imageUrlParams);
|
|
146
|
+
|
|
153
147
|
case 21:
|
|
154
|
-
|
|
155
|
-
return
|
|
148
|
+
remotePreview = _context.sent;
|
|
149
|
+
return _context.abrupt("return", extendAndCachePreview(id, dimensions, remotePreview, mediaBlobUrlAttrs));
|
|
156
150
|
|
|
157
151
|
case 23:
|
|
158
|
-
cardPreview = _context.sent;
|
|
159
|
-
|
|
160
|
-
case 24:
|
|
161
|
-
/**
|
|
162
|
-
* In case we've retrieved cardPreview using one of the two methods above,
|
|
163
|
-
* we want to embed some meta context into dataURI for Copy/Paste to work.
|
|
164
|
-
*/
|
|
165
|
-
cardPreview = _objectSpread(_objectSpread({}, cardPreview), {}, {
|
|
166
|
-
dataURI: addContextToDataURI(cardPreview.dataURI)
|
|
167
|
-
}); // We store new cardPreview into cache
|
|
168
|
-
|
|
169
|
-
cardPreviewCache.set(id, dimensions, cardPreview);
|
|
170
|
-
return _context.abrupt("return", cardPreview);
|
|
171
|
-
|
|
172
|
-
case 27:
|
|
173
152
|
case "end":
|
|
174
153
|
return _context.stop();
|
|
175
154
|
}
|
|
176
155
|
}
|
|
177
|
-
}, _callee, null, [[4,
|
|
156
|
+
}, _callee, null, [[4, 12]]);
|
|
178
157
|
}));
|
|
179
158
|
|
|
180
159
|
return function getCardPreview(_x) {
|
|
181
|
-
return
|
|
160
|
+
return _ref2.apply(this, arguments);
|
|
182
161
|
};
|
|
183
|
-
}();
|
|
162
|
+
}();
|
|
163
|
+
export var shouldResolvePreview = function shouldResolvePreview(_ref3) {
|
|
164
|
+
var status = _ref3.status,
|
|
165
|
+
fileState = _ref3.fileState,
|
|
166
|
+
dimensions = _ref3.dimensions,
|
|
167
|
+
prevDimensions = _ref3.prevDimensions,
|
|
168
|
+
hasCardPreview = _ref3.hasCardPreview,
|
|
169
|
+
isBannedLocalPreview = _ref3.isBannedLocalPreview,
|
|
170
|
+
featureFlags = _ref3.featureFlags;
|
|
171
|
+
var statusIsPreviewable = isPreviewableStatus(status, extractFilePreviewStatus(fileState, isBannedLocalPreview, featureFlags));
|
|
172
|
+
var dimensionsAreBigger = isBigger(prevDimensions, dimensions);
|
|
173
|
+
return statusIsPreviewable && (!hasCardPreview || dimensionsAreBigger);
|
|
174
|
+
};
|
|
@@ -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,
|