@atlaskit/media-file-preview 0.0.1
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 +1 -0
- package/LICENSE.md +13 -0
- package/README.md +9 -0
- package/dist/cjs/analytics.js +50 -0
- package/dist/cjs/errors.js +143 -0
- package/dist/cjs/getPreview/cache.js +39 -0
- package/dist/cjs/getPreview/getPreview.js +119 -0
- package/dist/cjs/getPreview/helpers.js +167 -0
- package/dist/cjs/getPreview/index.js +56 -0
- package/dist/cjs/getPreview/objectURLCache.js +85 -0
- package/dist/cjs/getPreview/videoSnapshot.js +63 -0
- package/dist/cjs/globalScope/getSSRData.js +14 -0
- package/dist/cjs/globalScope/globalScope.js +66 -0
- package/dist/cjs/globalScope/index.js +37 -0
- package/dist/cjs/globalScope/printScript.js +32 -0
- package/dist/cjs/globalScope/types.js +5 -0
- package/dist/cjs/helpers.js +56 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/useFilePreview.js +355 -0
- package/dist/es2019/analytics.js +44 -0
- package/dist/es2019/errors.js +90 -0
- package/dist/es2019/getPreview/cache.js +30 -0
- package/dist/es2019/getPreview/getPreview.js +75 -0
- package/dist/es2019/getPreview/helpers.js +77 -0
- package/dist/es2019/getPreview/index.js +3 -0
- package/dist/es2019/getPreview/objectURLCache.js +44 -0
- package/dist/es2019/getPreview/videoSnapshot.js +41 -0
- package/dist/es2019/globalScope/getSSRData.js +8 -0
- package/dist/es2019/globalScope/globalScope.js +48 -0
- package/dist/es2019/globalScope/index.js +2 -0
- package/dist/es2019/globalScope/printScript.js +16 -0
- package/dist/es2019/globalScope/types.js +1 -0
- package/dist/es2019/helpers.js +53 -0
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/useFilePreview.js +333 -0
- package/dist/esm/analytics.js +44 -0
- package/dist/esm/errors.js +133 -0
- package/dist/esm/getPreview/cache.js +32 -0
- package/dist/esm/getPreview/getPreview.js +112 -0
- package/dist/esm/getPreview/helpers.js +161 -0
- package/dist/esm/getPreview/index.js +3 -0
- package/dist/esm/getPreview/objectURLCache.js +78 -0
- package/dist/esm/getPreview/videoSnapshot.js +56 -0
- package/dist/esm/globalScope/getSSRData.js +8 -0
- package/dist/esm/globalScope/globalScope.js +56 -0
- package/dist/esm/globalScope/index.js +2 -0
- package/dist/esm/globalScope/printScript.js +25 -0
- package/dist/esm/globalScope/types.js +1 -0
- package/dist/esm/helpers.js +49 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/useFilePreview.js +348 -0
- package/dist/types/analytics.d.ts +28 -0
- package/dist/types/errors.d.ts +42 -0
- package/dist/types/getPreview/cache.d.ts +21 -0
- package/dist/types/getPreview/getPreview.d.ts +9 -0
- package/dist/types/getPreview/helpers.d.ts +10 -0
- package/dist/types/getPreview/index.d.ts +3 -0
- package/dist/types/getPreview/objectURLCache.d.ts +12 -0
- package/dist/types/getPreview/videoSnapshot.d.ts +1 -0
- package/dist/types/globalScope/getSSRData.d.ts +3 -0
- package/dist/types/globalScope/globalScope.d.ts +15 -0
- package/dist/types/globalScope/index.d.ts +4 -0
- package/dist/types/globalScope/printScript.d.ts +2 -0
- package/dist/types/globalScope/types.d.ts +8 -0
- package/dist/types/helpers.d.ts +10 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/types.d.ts +12 -0
- package/dist/types/useFilePreview.d.ts +33 -0
- package/dist/types-ts4.5/analytics.d.ts +28 -0
- package/dist/types-ts4.5/errors.d.ts +42 -0
- package/dist/types-ts4.5/getPreview/cache.d.ts +21 -0
- package/dist/types-ts4.5/getPreview/getPreview.d.ts +9 -0
- package/dist/types-ts4.5/getPreview/helpers.d.ts +10 -0
- package/dist/types-ts4.5/getPreview/index.d.ts +3 -0
- package/dist/types-ts4.5/getPreview/objectURLCache.d.ts +12 -0
- package/dist/types-ts4.5/getPreview/videoSnapshot.d.ts +1 -0
- package/dist/types-ts4.5/globalScope/getSSRData.d.ts +3 -0
- package/dist/types-ts4.5/globalScope/globalScope.d.ts +15 -0
- package/dist/types-ts4.5/globalScope/index.d.ts +4 -0
- package/dist/types-ts4.5/globalScope/printScript.d.ts +2 -0
- package/dist/types-ts4.5/globalScope/types.d.ts +8 -0
- package/dist/types-ts4.5/helpers.d.ts +10 -0
- package/dist/types-ts4.5/index.d.ts +2 -0
- package/dist/types-ts4.5/types.d.ts +12 -0
- package/dist/types-ts4.5/useFilePreview.d.ts +33 -0
- package/package.json +98 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @atlaskit/media-file-preview
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2023 Atlassian Pty Ltd
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# MediaFilePreview
|
|
2
|
+
|
|
3
|
+
A React Hook to fetch and render file previews. It's overloaded with fancy features like SSR, lazy loading, memory cache and local preview.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`import MediaFilePreview from '@atlaskit/media-file-preview';`
|
|
8
|
+
|
|
9
|
+
Detailed docs and example usage can be found [here](https://atlaskit.atlassian.com/packages/media/media-file-preview).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getRenderErrorFailReason = exports.getRenderErrorErrorReason = exports.getRenderErrorErrorDetail = exports.getErrorTraceContext = exports.extractErrorInfo = void 0;
|
|
7
|
+
var _mediaClient = require("@atlaskit/media-client");
|
|
8
|
+
var _errors = require("./errors");
|
|
9
|
+
var getErrorTraceContext = exports.getErrorTraceContext = function getErrorTraceContext(error) {
|
|
10
|
+
if ((0, _errors.isMediaFilePreviewError)(error) && !!error.secondaryError) {
|
|
11
|
+
if ((0, _mediaClient.isRequestError)(error.secondaryError)) {
|
|
12
|
+
var _error$secondaryError;
|
|
13
|
+
return (_error$secondaryError = error.secondaryError.metadata) === null || _error$secondaryError === void 0 ? void 0 : _error$secondaryError.traceContext;
|
|
14
|
+
} else if ((0, _errors.isMediaFileStateError)(error.secondaryError)) {
|
|
15
|
+
var _error$secondaryError2;
|
|
16
|
+
return (_error$secondaryError2 = error.secondaryError.details) === null || _error$secondaryError2 === void 0 || (_error$secondaryError2 = _error$secondaryError2.metadata) === null || _error$secondaryError2 === void 0 ? void 0 : _error$secondaryError2.traceContext;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var getRenderErrorFailReason = exports.getRenderErrorFailReason = function getRenderErrorFailReason(error) {
|
|
21
|
+
if ((0, _errors.isMediaFilePreviewError)(error)) {
|
|
22
|
+
return error.primaryReason;
|
|
23
|
+
} else {
|
|
24
|
+
return 'nativeError';
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var getRenderErrorErrorReason = exports.getRenderErrorErrorReason = function getRenderErrorErrorReason(error) {
|
|
28
|
+
if ((0, _errors.isMediaFilePreviewError)(error) && error.secondaryError) {
|
|
29
|
+
var mediaClientReason = (0, _errors.isMediaFileStateError)(error.secondaryError) ? (0, _errors.getFileStateErrorReason)(error.secondaryError) : (0, _mediaClient.getMediaClientErrorReason)(error.secondaryError);
|
|
30
|
+
if (mediaClientReason !== 'unknown') {
|
|
31
|
+
return mediaClientReason;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return 'nativeError';
|
|
35
|
+
};
|
|
36
|
+
var getRenderErrorErrorDetail = exports.getRenderErrorErrorDetail = function getRenderErrorErrorDetail(error) {
|
|
37
|
+
if ((0, _errors.isMediaFilePreviewError)(error) && error.secondaryError) {
|
|
38
|
+
return error.secondaryError.message;
|
|
39
|
+
} else {
|
|
40
|
+
return error.message;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
var extractErrorInfo = exports.extractErrorInfo = function extractErrorInfo(error, metadataTraceContext) {
|
|
44
|
+
return {
|
|
45
|
+
failReason: getRenderErrorFailReason(error),
|
|
46
|
+
error: getRenderErrorErrorReason(error),
|
|
47
|
+
errorDetail: getRenderErrorErrorDetail(error),
|
|
48
|
+
metadataTraceContext: metadataTraceContext !== null && metadataTraceContext !== void 0 ? metadataTraceContext : getErrorTraceContext(error)
|
|
49
|
+
};
|
|
50
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ensureMediaFilePreviewError = exports.SsrPreviewError = exports.RemotePreviewError = exports.MediaFilePreviewError = exports.LocalPreviewError = exports.ImageLoadError = void 0;
|
|
8
|
+
exports.getFileStateErrorReason = getFileStateErrorReason;
|
|
9
|
+
exports.isLocalPreviewError = void 0;
|
|
10
|
+
exports.isMediaFilePreviewError = isMediaFilePreviewError;
|
|
11
|
+
exports.isMediaFileStateError = isMediaFileStateError;
|
|
12
|
+
exports.isUnsupportedLocalPreviewError = exports.isRemotePreviewError = void 0;
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
20
|
+
var _mediaClientReact = require("@atlaskit/media-client-react");
|
|
21
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
22
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
23
|
+
/**
|
|
24
|
+
* Primary reason is logged through Data Portal.
|
|
25
|
+
* Make sure all the values are whitelisted in Measure -> Event Regitry -> "mediaCardRender failed" event
|
|
26
|
+
*/
|
|
27
|
+
var MediaFilePreviewError = exports.MediaFilePreviewError = /*#__PURE__*/function (_Error) {
|
|
28
|
+
(0, _inherits2.default)(MediaFilePreviewError, _Error);
|
|
29
|
+
var _super = _createSuper(MediaFilePreviewError);
|
|
30
|
+
function MediaFilePreviewError(primaryReason, secondaryError) {
|
|
31
|
+
var _this;
|
|
32
|
+
(0, _classCallCheck2.default)(this, MediaFilePreviewError);
|
|
33
|
+
_this = _super.call(this, primaryReason);
|
|
34
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
35
|
+
_this.primaryReason = primaryReason;
|
|
36
|
+
_this.secondaryError = secondaryError;
|
|
37
|
+
Object.setPrototypeOf((0, _assertThisInitialized2.default)(_this), (this instanceof MediaFilePreviewError ? this.constructor : void 0).prototype);
|
|
38
|
+
|
|
39
|
+
// https://v8.dev/docs/stack-trace-api
|
|
40
|
+
if ('captureStackTrace' in Error) {
|
|
41
|
+
Error.captureStackTrace((0, _assertThisInitialized2.default)(_this), this instanceof MediaFilePreviewError ? this.constructor : void 0);
|
|
42
|
+
}
|
|
43
|
+
return _this;
|
|
44
|
+
}
|
|
45
|
+
return (0, _createClass2.default)(MediaFilePreviewError);
|
|
46
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
47
|
+
var LocalPreviewError = exports.LocalPreviewError = /*#__PURE__*/function (_MediaFilePreviewErro) {
|
|
48
|
+
(0, _inherits2.default)(LocalPreviewError, _MediaFilePreviewErro);
|
|
49
|
+
var _super2 = _createSuper(LocalPreviewError);
|
|
50
|
+
function LocalPreviewError(primaryReason, secondaryError) {
|
|
51
|
+
var _this2;
|
|
52
|
+
(0, _classCallCheck2.default)(this, LocalPreviewError);
|
|
53
|
+
_this2 = _super2.call(this, primaryReason, secondaryError);
|
|
54
|
+
_this2.primaryReason = primaryReason;
|
|
55
|
+
_this2.secondaryError = secondaryError;
|
|
56
|
+
return _this2;
|
|
57
|
+
}
|
|
58
|
+
return (0, _createClass2.default)(LocalPreviewError);
|
|
59
|
+
}(MediaFilePreviewError);
|
|
60
|
+
var RemotePreviewError = exports.RemotePreviewError = /*#__PURE__*/function (_MediaFilePreviewErro2) {
|
|
61
|
+
(0, _inherits2.default)(RemotePreviewError, _MediaFilePreviewErro2);
|
|
62
|
+
var _super3 = _createSuper(RemotePreviewError);
|
|
63
|
+
function RemotePreviewError(primaryReason, secondaryError) {
|
|
64
|
+
var _this3;
|
|
65
|
+
(0, _classCallCheck2.default)(this, RemotePreviewError);
|
|
66
|
+
_this3 = _super3.call(this, primaryReason, secondaryError);
|
|
67
|
+
_this3.primaryReason = primaryReason;
|
|
68
|
+
_this3.secondaryError = secondaryError;
|
|
69
|
+
return _this3;
|
|
70
|
+
}
|
|
71
|
+
return (0, _createClass2.default)(RemotePreviewError);
|
|
72
|
+
}(MediaFilePreviewError);
|
|
73
|
+
var SsrPreviewError = exports.SsrPreviewError = /*#__PURE__*/function (_MediaFilePreviewErro3) {
|
|
74
|
+
(0, _inherits2.default)(SsrPreviewError, _MediaFilePreviewErro3);
|
|
75
|
+
var _super4 = _createSuper(SsrPreviewError);
|
|
76
|
+
function SsrPreviewError(primaryReason, secondaryError) {
|
|
77
|
+
var _this4;
|
|
78
|
+
(0, _classCallCheck2.default)(this, SsrPreviewError);
|
|
79
|
+
_this4 = _super4.call(this, primaryReason, secondaryError);
|
|
80
|
+
_this4.primaryReason = primaryReason;
|
|
81
|
+
_this4.secondaryError = secondaryError;
|
|
82
|
+
return _this4;
|
|
83
|
+
}
|
|
84
|
+
return (0, _createClass2.default)(SsrPreviewError);
|
|
85
|
+
}(MediaFilePreviewError);
|
|
86
|
+
var getImageLoadPrimaryReason = function getImageLoadPrimaryReason(source) {
|
|
87
|
+
switch (source) {
|
|
88
|
+
case 'cache-remote':
|
|
89
|
+
return 'cache-remote-uri';
|
|
90
|
+
case 'cache-local':
|
|
91
|
+
return 'cache-local-uri';
|
|
92
|
+
case 'external':
|
|
93
|
+
return 'external-uri';
|
|
94
|
+
case 'local':
|
|
95
|
+
return 'local-uri';
|
|
96
|
+
case 'remote':
|
|
97
|
+
return 'remote-uri';
|
|
98
|
+
// This fail reason will come from a bug, most likely.
|
|
99
|
+
default:
|
|
100
|
+
return "unknown-uri";
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
var ImageLoadError = exports.ImageLoadError = /*#__PURE__*/function (_MediaFilePreviewErro4) {
|
|
104
|
+
(0, _inherits2.default)(ImageLoadError, _MediaFilePreviewErro4);
|
|
105
|
+
var _super5 = _createSuper(ImageLoadError);
|
|
106
|
+
function ImageLoadError(source) {
|
|
107
|
+
(0, _classCallCheck2.default)(this, ImageLoadError);
|
|
108
|
+
return _super5.call(this, getImageLoadPrimaryReason(source));
|
|
109
|
+
}
|
|
110
|
+
return (0, _createClass2.default)(ImageLoadError);
|
|
111
|
+
}(MediaFilePreviewError);
|
|
112
|
+
function isMediaFilePreviewError(err) {
|
|
113
|
+
return err instanceof MediaFilePreviewError;
|
|
114
|
+
}
|
|
115
|
+
var isLocalPreviewError = exports.isLocalPreviewError = function isLocalPreviewError(err) {
|
|
116
|
+
return err instanceof LocalPreviewError;
|
|
117
|
+
};
|
|
118
|
+
var isRemotePreviewError = exports.isRemotePreviewError = function isRemotePreviewError(err) {
|
|
119
|
+
return err instanceof RemotePreviewError;
|
|
120
|
+
};
|
|
121
|
+
var isUnsupportedLocalPreviewError = exports.isUnsupportedLocalPreviewError = function isUnsupportedLocalPreviewError(err) {
|
|
122
|
+
return isMediaFilePreviewError(err) && err.primaryReason === 'local-preview-unsupported';
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// In a try/catch statement, the error caught is the type of unknown.
|
|
126
|
+
// We can use this helper to ensure that the error handled is the type of MediaFilePreviewError if unsure
|
|
127
|
+
// If updatePrimaryReason is true, if it's a MediaFilePreviewError already, it will update it's primary reason
|
|
128
|
+
var ensureMediaFilePreviewError = exports.ensureMediaFilePreviewError = function ensureMediaFilePreviewError(primaryReason, error, updatePrimaryReason) {
|
|
129
|
+
if (isMediaFilePreviewError(error)) {
|
|
130
|
+
if (updatePrimaryReason && error.primaryReason !== primaryReason) {
|
|
131
|
+
return new MediaFilePreviewError(primaryReason, error.secondaryError);
|
|
132
|
+
}
|
|
133
|
+
return error;
|
|
134
|
+
}
|
|
135
|
+
return new MediaFilePreviewError(primaryReason, error);
|
|
136
|
+
};
|
|
137
|
+
function isMediaFileStateError(err) {
|
|
138
|
+
return err instanceof _mediaClientReact.MediaFileStateError;
|
|
139
|
+
}
|
|
140
|
+
function getFileStateErrorReason(err) {
|
|
141
|
+
var _err$details$reason, _err$details;
|
|
142
|
+
return (_err$details$reason = (_err$details = err.details) === null || _err$details === void 0 ? void 0 : _err$details.reason) !== null && _err$details$reason !== void 0 ? _err$details$reason : 'unknown';
|
|
143
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.mediaFilePreviewCache = exports.getCacheKey = 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("./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
|
+
});
|
|
39
|
+
var mediaFilePreviewCache = exports.mediaFilePreviewCache = new CardPreviewCacheImpl((0, _objectURLCache.createObjectURLCache)());
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.isSSRDataPreview = exports.isSSRClientPreview = exports.isLocalPreview = exports.getSSRPreview = exports.getAndCacheRemotePreview = exports.getAndCacheLocalPreview = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _mediaClient = require("@atlaskit/media-client");
|
|
12
|
+
var _errors = require("../errors");
|
|
13
|
+
var _cache = require("./cache");
|
|
14
|
+
var _helpers = require("./helpers");
|
|
15
|
+
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; }
|
|
16
|
+
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; }
|
|
17
|
+
var extendAndCachePreview = function extendAndCachePreview(id, mode, preview, mediaBlobUrlAttrs) {
|
|
18
|
+
var source;
|
|
19
|
+
switch (preview.source) {
|
|
20
|
+
case 'local':
|
|
21
|
+
source = 'cache-local';
|
|
22
|
+
break;
|
|
23
|
+
case 'remote':
|
|
24
|
+
source = 'cache-remote';
|
|
25
|
+
break;
|
|
26
|
+
case 'ssr-server':
|
|
27
|
+
source = 'cache-ssr-server';
|
|
28
|
+
break;
|
|
29
|
+
case 'ssr-client':
|
|
30
|
+
source = 'cache-ssr-client';
|
|
31
|
+
break;
|
|
32
|
+
default:
|
|
33
|
+
source = preview.source;
|
|
34
|
+
}
|
|
35
|
+
// We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
36
|
+
var dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI;
|
|
37
|
+
// We store new cardPreview into cache
|
|
38
|
+
_cache.mediaFilePreviewCache.set(id, mode, _objectSpread(_objectSpread({}, preview), {}, {
|
|
39
|
+
source: source,
|
|
40
|
+
dataURI: dataURI
|
|
41
|
+
}));
|
|
42
|
+
return _objectSpread(_objectSpread({}, preview), {}, {
|
|
43
|
+
dataURI: dataURI
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
var getSSRPreview = exports.getSSRPreview = function getSSRPreview(ssr, mediaClient, id, params, mediaBlobUrlAttrs) {
|
|
47
|
+
var dataURI;
|
|
48
|
+
try {
|
|
49
|
+
var rawDataURI = mediaClient.getImageUrlSync(id, params);
|
|
50
|
+
// We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
51
|
+
dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(rawDataURI, mediaBlobUrlAttrs) : rawDataURI;
|
|
52
|
+
var source = ssr === 'client' ? 'ssr-client' : 'ssr-server';
|
|
53
|
+
return {
|
|
54
|
+
dataURI: dataURI,
|
|
55
|
+
source: source,
|
|
56
|
+
orientation: 1
|
|
57
|
+
};
|
|
58
|
+
} catch (e) {
|
|
59
|
+
var reason = ssr === 'server' ? 'ssr-server-uri' : 'ssr-client-uri';
|
|
60
|
+
throw new _errors.SsrPreviewError(reason, e instanceof Error ? e : undefined);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
var isLocalPreview = exports.isLocalPreview = function isLocalPreview(preview) {
|
|
64
|
+
var localSources = ['local', 'cache-local'];
|
|
65
|
+
return localSources.includes(preview.source);
|
|
66
|
+
};
|
|
67
|
+
var isSSRClientPreview = exports.isSSRClientPreview = function isSSRClientPreview(preview) {
|
|
68
|
+
var ssrClientSources = ['ssr-client', 'cache-ssr-client'];
|
|
69
|
+
return ssrClientSources.includes(preview.source);
|
|
70
|
+
};
|
|
71
|
+
var isSSRDataPreview = exports.isSSRDataPreview = function isSSRDataPreview(preview) {
|
|
72
|
+
return preview.source === 'ssr-data';
|
|
73
|
+
};
|
|
74
|
+
var getAndCacheRemotePreview = exports.getAndCacheRemotePreview = /*#__PURE__*/function () {
|
|
75
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mediaClient, id, dimensions, params, mediaBlobUrlAttrs, traceContext) {
|
|
76
|
+
var remotePreview;
|
|
77
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
78
|
+
while (1) switch (_context.prev = _context.next) {
|
|
79
|
+
case 0:
|
|
80
|
+
_context.next = 2;
|
|
81
|
+
return (0, _helpers.getRemotePreview)(mediaClient, id, params, traceContext);
|
|
82
|
+
case 2:
|
|
83
|
+
remotePreview = _context.sent;
|
|
84
|
+
return _context.abrupt("return", extendAndCachePreview(id, params.mode, _objectSpread(_objectSpread({}, remotePreview), {}, {
|
|
85
|
+
dimensions: dimensions
|
|
86
|
+
}), mediaBlobUrlAttrs));
|
|
87
|
+
case 4:
|
|
88
|
+
case "end":
|
|
89
|
+
return _context.stop();
|
|
90
|
+
}
|
|
91
|
+
}, _callee);
|
|
92
|
+
}));
|
|
93
|
+
return function getAndCacheRemotePreview(_x, _x2, _x3, _x4, _x5, _x6) {
|
|
94
|
+
return _ref.apply(this, arguments);
|
|
95
|
+
};
|
|
96
|
+
}();
|
|
97
|
+
var getAndCacheLocalPreview = exports.getAndCacheLocalPreview = /*#__PURE__*/function () {
|
|
98
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(id, filePreview, dimensions, mode, mediaBlobUrlAttrs) {
|
|
99
|
+
var localPreview;
|
|
100
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
101
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
102
|
+
case 0:
|
|
103
|
+
_context2.next = 2;
|
|
104
|
+
return (0, _helpers.getLocalPreview)(filePreview);
|
|
105
|
+
case 2:
|
|
106
|
+
localPreview = _context2.sent;
|
|
107
|
+
return _context2.abrupt("return", extendAndCachePreview(id, mode, _objectSpread(_objectSpread({}, localPreview), {}, {
|
|
108
|
+
dimensions: dimensions
|
|
109
|
+
}), mediaBlobUrlAttrs));
|
|
110
|
+
case 4:
|
|
111
|
+
case "end":
|
|
112
|
+
return _context2.stop();
|
|
113
|
+
}
|
|
114
|
+
}, _callee2);
|
|
115
|
+
}));
|
|
116
|
+
return function getAndCacheLocalPreview(_x7, _x8, _x9, _x10, _x11) {
|
|
117
|
+
return _ref2.apply(this, arguments);
|
|
118
|
+
};
|
|
119
|
+
}();
|
|
@@ -0,0 +1,167 @@
|
|
|
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.getRemotePreview = exports.getLocalPreview = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _mediaCommon = require("@atlaskit/media-common");
|
|
11
|
+
var _mediaUi = require("@atlaskit/media-ui");
|
|
12
|
+
var _errors = require("../errors");
|
|
13
|
+
var _videoSnapshot = require("./videoSnapshot");
|
|
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 getLocalPreview = exports.getLocalPreview = /*#__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 = 23;
|
|
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
|
+
throw new _errors.LocalPreviewError('local-preview-unsupported');
|
|
128
|
+
case 24:
|
|
129
|
+
case "end":
|
|
130
|
+
return _context3.stop();
|
|
131
|
+
}
|
|
132
|
+
}, _callee3, null, [[0, 7]]);
|
|
133
|
+
}));
|
|
134
|
+
return function getLocalPreview(_x3) {
|
|
135
|
+
return _ref3.apply(this, arguments);
|
|
136
|
+
};
|
|
137
|
+
}();
|
|
138
|
+
var getRemotePreview = exports.getRemotePreview = /*#__PURE__*/function () {
|
|
139
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(mediaClient, id, params, traceContext) {
|
|
140
|
+
var blob;
|
|
141
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
142
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
143
|
+
case 0:
|
|
144
|
+
_context4.prev = 0;
|
|
145
|
+
_context4.next = 3;
|
|
146
|
+
return mediaClient.getImage(id, params, undefined, undefined, traceContext);
|
|
147
|
+
case 3:
|
|
148
|
+
blob = _context4.sent;
|
|
149
|
+
return _context4.abrupt("return", {
|
|
150
|
+
dataURI: URL.createObjectURL(blob),
|
|
151
|
+
orientation: 1,
|
|
152
|
+
source: 'remote'
|
|
153
|
+
});
|
|
154
|
+
case 7:
|
|
155
|
+
_context4.prev = 7;
|
|
156
|
+
_context4.t0 = _context4["catch"](0);
|
|
157
|
+
throw new _errors.RemotePreviewError('remote-preview-fetch', _context4.t0 instanceof Error ? _context4.t0 : undefined);
|
|
158
|
+
case 10:
|
|
159
|
+
case "end":
|
|
160
|
+
return _context4.stop();
|
|
161
|
+
}
|
|
162
|
+
}, _callee4, null, [[0, 7]]);
|
|
163
|
+
}));
|
|
164
|
+
return function getRemotePreview(_x4, _x5, _x6, _x7) {
|
|
165
|
+
return _ref4.apply(this, arguments);
|
|
166
|
+
};
|
|
167
|
+
}();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "getAndCacheLocalPreview", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _getPreview.getAndCacheLocalPreview;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "getAndCacheRemotePreview", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _getPreview.getAndCacheRemotePreview;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "getSSRPreview", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _getPreview.getSSRPreview;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "isLocalPreview", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _getPreview.isLocalPreview;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "isSSRClientPreview", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function get() {
|
|
33
|
+
return _getPreview.isSSRClientPreview;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "isSSRDataPreview", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _getPreview.isSSRDataPreview;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "isSupportedLocalPreview", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _helpers.isSupportedLocalPreview;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "mediaFilePreviewCache", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function get() {
|
|
51
|
+
return _cache.mediaFilePreviewCache;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
var _cache = require("./cache");
|
|
55
|
+
var _getPreview = require("./getPreview");
|
|
56
|
+
var _helpers = require("./helpers");
|