@atlaskit/media-viewer 49.2.7 → 49.3.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 +11 -0
- package/dist/cjs/analytics/index.js +1 -1
- package/dist/cjs/analytics/ufoExperiences.js +1 -1
- package/dist/cjs/components/media-viewer.js +4 -2
- package/dist/cjs/item-viewer.js +20 -3
- package/dist/cjs/list.js +4 -2
- package/dist/cjs/media-viewer.js +4 -2
- package/dist/cjs/viewerOptions.js +5 -0
- package/dist/cjs/viewers/archiveSidebar/archive.js +52 -8
- package/dist/cjs/viewers/customViewer/customViewer.js +55 -0
- package/dist/es2019/analytics/index.js +1 -1
- package/dist/es2019/analytics/ufoExperiences.js +1 -1
- package/dist/es2019/components/media-viewer.js +4 -2
- package/dist/es2019/item-viewer.js +18 -3
- package/dist/es2019/list.js +4 -2
- package/dist/es2019/media-viewer.js +4 -2
- package/dist/es2019/viewerOptions.js +1 -0
- package/dist/es2019/viewers/archiveSidebar/archive.js +27 -5
- package/dist/es2019/viewers/customViewer/customViewer.js +37 -0
- package/dist/esm/analytics/index.js +1 -1
- package/dist/esm/analytics/ufoExperiences.js +1 -1
- package/dist/esm/components/media-viewer.js +4 -2
- package/dist/esm/item-viewer.js +20 -3
- package/dist/esm/list.js +4 -2
- package/dist/esm/media-viewer.js +4 -2
- package/dist/esm/viewerOptions.js +1 -0
- package/dist/esm/viewers/archiveSidebar/archive.js +52 -8
- package/dist/esm/viewers/customViewer/customViewer.js +46 -0
- package/dist/types/components/media-viewer.d.ts +1 -1
- package/dist/types/components/types.d.ts +2 -0
- package/dist/types/errors.d.ts +2 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/item-viewer.d.ts +4 -1
- package/dist/types/list.d.ts +3 -1
- package/dist/types/media-viewer.d.ts +2 -0
- package/dist/types/viewerOptions.d.ts +21 -0
- package/dist/types/viewers/archiveSidebar/types.d.ts +2 -0
- package/dist/types/viewers/customViewer/customViewer.d.ts +12 -0
- package/dist/types-ts4.5/components/media-viewer.d.ts +1 -1
- package/dist/types-ts4.5/components/types.d.ts +2 -0
- package/dist/types-ts4.5/errors.d.ts +2 -2
- package/dist/types-ts4.5/index.d.ts +1 -0
- package/dist/types-ts4.5/item-viewer.d.ts +4 -1
- package/dist/types-ts4.5/list.d.ts +3 -1
- package/dist/types-ts4.5/media-viewer.d.ts +2 -0
- package/dist/types-ts4.5/viewerOptions.d.ts +21 -0
- package/dist/types-ts4.5/viewers/archiveSidebar/types.d.ts +2 -0
- package/dist/types-ts4.5/viewers/customViewer/customViewer.d.ts +12 -0
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @atlaskit/media-viewer
|
|
2
2
|
|
|
3
|
+
## 49.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`6099ac032dd30`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6099ac032dd30) -
|
|
8
|
+
Added viewerOptions to override file preview renderer in media components
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies
|
|
13
|
+
|
|
3
14
|
## 49.2.7
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -10,7 +10,7 @@ exports.packageVersion = exports.packageName = void 0;
|
|
|
10
10
|
var _analytics = require("@atlaskit/media-common/analytics");
|
|
11
11
|
var componentName = exports.component = exports.componentName = 'mediaViewer';
|
|
12
12
|
var packageName = exports.packageName = "@atlaskit/media-viewer";
|
|
13
|
-
var packageVersion = exports.packageVersion = "49.
|
|
13
|
+
var packageVersion = exports.packageVersion = "49.3.0";
|
|
14
14
|
function getFileAttributes(fileState) {
|
|
15
15
|
if (!fileState) {
|
|
16
16
|
return {
|
|
@@ -12,7 +12,7 @@ var _mediaCommon = require("@atlaskit/media-common");
|
|
|
12
12
|
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; }
|
|
13
13
|
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; }
|
|
14
14
|
var packageName = "@atlaskit/media-viewer";
|
|
15
|
-
var packageVersion = "49.
|
|
15
|
+
var packageVersion = "49.3.0";
|
|
16
16
|
var ufoExperience;
|
|
17
17
|
var getExperience = function getExperience() {
|
|
18
18
|
if (!ufoExperience) {
|
|
@@ -47,7 +47,8 @@ var MediaViewerBase = exports.MediaViewerBase = function MediaViewerBase(_ref) {
|
|
|
47
47
|
collectionName = _ref.collectionName,
|
|
48
48
|
items = _ref.items,
|
|
49
49
|
extensions = _ref.extensions,
|
|
50
|
-
contextId = _ref.contextId
|
|
50
|
+
contextId = _ref.contextId,
|
|
51
|
+
viewerOptions = _ref.viewerOptions;
|
|
51
52
|
var _useMemo = (0, _react.useMemo)(function () {
|
|
52
53
|
return normaliseItems(items, selectedItem, collectionName);
|
|
53
54
|
}, [items, selectedItem, collectionName]),
|
|
@@ -80,7 +81,8 @@ var MediaViewerBase = exports.MediaViewerBase = function MediaViewerBase(_ref) {
|
|
|
80
81
|
items: normalisedItems,
|
|
81
82
|
featureFlags: featureFlags,
|
|
82
83
|
extensions: extensions,
|
|
83
|
-
contextId: contextId
|
|
84
|
+
contextId: contextId,
|
|
85
|
+
viewerOptions: viewerOptions
|
|
84
86
|
});
|
|
85
87
|
};
|
|
86
88
|
|
package/dist/cjs/item-viewer.js
CHANGED
|
@@ -11,6 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
|
|
13
13
|
var _mediaClient = require("@atlaskit/media-client");
|
|
14
|
+
var _primitives = require("@atlaskit/primitives");
|
|
14
15
|
var _reactIntlNext = require("react-intl-next");
|
|
15
16
|
var _mediaUi = require("@atlaskit/media-ui");
|
|
16
17
|
var _codeViewer = require("@atlaskit/media-ui/codeViewer");
|
|
@@ -28,6 +29,7 @@ var _interactiveImg = require("./viewers/image/interactive-img");
|
|
|
28
29
|
var _archiveViewerLoader = _interopRequireDefault(require("./viewers/archiveSidebar/archiveViewerLoader"));
|
|
29
30
|
var _mediaCommon = require("@atlaskit/media-common");
|
|
30
31
|
var _ufoExperiences = require("./analytics/ufoExperiences");
|
|
32
|
+
var _customViewer = require("./viewers/customViewer/customViewer");
|
|
31
33
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
32
34
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
33
35
|
var ImageViewer = (0, _reactLoadable.default)({
|
|
@@ -119,7 +121,8 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
|
|
|
119
121
|
onClose = _ref.onClose,
|
|
120
122
|
previewCount = _ref.previewCount,
|
|
121
123
|
contextId = _ref.contextId,
|
|
122
|
-
createAnalyticsEvent = _ref.createAnalyticsEvent
|
|
124
|
+
createAnalyticsEvent = _ref.createAnalyticsEvent,
|
|
125
|
+
viewerOptions = _ref.viewerOptions;
|
|
123
126
|
// States and Refs
|
|
124
127
|
var _useState = (0, _react.useState)(_domain.Outcome.pending()),
|
|
125
128
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -204,14 +207,28 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
|
|
|
204
207
|
setItem(_domain.Outcome.failed(mediaViewerError, fileState));
|
|
205
208
|
}, [fileState]);
|
|
206
209
|
var renderItem = function renderItem(fileItem) {
|
|
210
|
+
var _viewerOptions$custom;
|
|
207
211
|
var collectionName = (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.collectionName : undefined;
|
|
208
212
|
var viewerProps = {
|
|
209
213
|
mediaClient: mediaClient,
|
|
210
214
|
item: fileItem,
|
|
211
215
|
collectionName: collectionName,
|
|
212
216
|
onClose: onClose,
|
|
213
|
-
previewCount: previewCount
|
|
217
|
+
previewCount: previewCount,
|
|
218
|
+
viewerOptions: viewerOptions
|
|
214
219
|
};
|
|
220
|
+
var customRenderer = viewerOptions === null || viewerOptions === void 0 || (_viewerOptions$custom = viewerOptions.customRenderers) === null || _viewerOptions$custom === void 0 ? void 0 : _viewerOptions$custom.find(function (renderer) {
|
|
221
|
+
return renderer.shouldUseCustomRenderer({
|
|
222
|
+
fileItem: fileItem
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
if (customRenderer) {
|
|
226
|
+
return /*#__PURE__*/_react.default.createElement(_customViewer.CustomViewer, (0, _extends2.default)({
|
|
227
|
+
customRendererConfig: customRenderer,
|
|
228
|
+
onError: onLoadFail,
|
|
229
|
+
onSuccess: onSuccess
|
|
230
|
+
}, viewerProps));
|
|
231
|
+
}
|
|
215
232
|
|
|
216
233
|
// TODO: fix all of the item errors
|
|
217
234
|
|
|
@@ -288,7 +305,7 @@ var ItemViewerBase = exports.ItemViewerBase = function ItemViewerBase(_ref) {
|
|
|
288
305
|
fileState: _fileState,
|
|
289
306
|
fileStateFlags: fileStateFlagsRef.current,
|
|
290
307
|
traceContext: traceContext.current
|
|
291
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
308
|
+
}, /*#__PURE__*/_react.default.createElement(_primitives.Text, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file)), renderDownloadButton(_fileState, error));
|
|
292
309
|
} else {
|
|
293
310
|
return /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
|
|
294
311
|
fileId: (0, _mediaClient.isFileIdentifier)(identifier) ? identifier.id : 'undefined',
|
package/dist/cjs/list.js
CHANGED
|
@@ -25,7 +25,8 @@ var List = exports.List = function List(_ref) {
|
|
|
25
25
|
featureFlags = _ref.featureFlags,
|
|
26
26
|
isSidebarVisible = _ref.isSidebarVisible,
|
|
27
27
|
onNavigationChange = _ref.onNavigationChange,
|
|
28
|
-
items = _ref.items
|
|
28
|
+
items = _ref.items,
|
|
29
|
+
viewerOptions = _ref.viewerOptions;
|
|
29
30
|
var _useState = (0, _react.useState)(defaultSelectedItem),
|
|
30
31
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
31
32
|
selectedItem = _useState2[0],
|
|
@@ -58,7 +59,8 @@ var List = exports.List = function List(_ref) {
|
|
|
58
59
|
onClose: onClose,
|
|
59
60
|
previewCount: previewCount,
|
|
60
61
|
contextId: contextId,
|
|
61
|
-
featureFlags: featureFlags
|
|
62
|
+
featureFlags: featureFlags,
|
|
63
|
+
viewerOptions: viewerOptions
|
|
62
64
|
}), /*#__PURE__*/_react.default.createElement(_navigation.Navigation, {
|
|
63
65
|
items: items,
|
|
64
66
|
selectedItem: selectedItem,
|
package/dist/cjs/media-viewer.js
CHANGED
|
@@ -32,7 +32,8 @@ var MediaViewerComponent = function MediaViewerComponent(_ref) {
|
|
|
32
32
|
innerRef = _ref.innerRef,
|
|
33
33
|
_onClose = _ref.onClose,
|
|
34
34
|
selectedItem = _ref.selectedItem,
|
|
35
|
-
intl = _ref.intl
|
|
35
|
+
intl = _ref.intl,
|
|
36
|
+
viewerOptions = _ref.viewerOptions;
|
|
36
37
|
var _useState = (0, _react.useState)(false),
|
|
37
38
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
38
39
|
isSidebarVisible = _useState2[0],
|
|
@@ -95,7 +96,8 @@ var MediaViewerComponent = function MediaViewerComponent(_ref) {
|
|
|
95
96
|
},
|
|
96
97
|
isSidebarVisible: isSidebarVisible,
|
|
97
98
|
contextId: contextId,
|
|
98
|
-
featureFlags: featureFlags
|
|
99
|
+
featureFlags: featureFlags,
|
|
100
|
+
viewerOptions: viewerOptions
|
|
99
101
|
})), renderSidebar()));
|
|
100
102
|
return intl ? content : /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
|
|
101
103
|
locale: "en"
|
|
@@ -19,6 +19,7 @@ var _unzipit = require("unzipit");
|
|
|
19
19
|
var _reactIntlNext = require("react-intl-next");
|
|
20
20
|
var _mediaUi = require("@atlaskit/media-ui");
|
|
21
21
|
var _codeViewer = require("@atlaskit/media-ui/codeViewer");
|
|
22
|
+
var _primitives = require("@atlaskit/primitives");
|
|
22
23
|
var _domain = require("../../domain");
|
|
23
24
|
var _styleWrappers = require("../../styleWrappers");
|
|
24
25
|
var _audioMediaServicesAudio = _interopRequireDefault(require("@atlaskit/icon/core/migration/audio--media-services-audio"));
|
|
@@ -98,7 +99,8 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
|
|
|
98
99
|
case 0:
|
|
99
100
|
_this.setState({
|
|
100
101
|
content: _domain.Outcome.successful(_objectSpread(_objectSpread({}, _this.state.content.data), {}, {
|
|
101
|
-
selectedArchiveEntry: undefined
|
|
102
|
+
selectedArchiveEntry: undefined,
|
|
103
|
+
hasLoadedEntries: false // displays a nice loading spinner for the content viewer
|
|
102
104
|
}))
|
|
103
105
|
});
|
|
104
106
|
src = '';
|
|
@@ -112,7 +114,7 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
|
|
|
112
114
|
_context2.next = 8;
|
|
113
115
|
return (0, _utils.rejectAfter)(function () {
|
|
114
116
|
return selectedArchiveEntry.blob();
|
|
115
|
-
});
|
|
117
|
+
}, 10000);
|
|
116
118
|
case 8:
|
|
117
119
|
blob = _context2.sent;
|
|
118
120
|
src = URL.createObjectURL(blob);
|
|
@@ -142,7 +144,8 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
|
|
|
142
144
|
isDirectory: selectedArchiveEntry.isDirectory,
|
|
143
145
|
error: undefined,
|
|
144
146
|
codeViewerSrc: codeViewerSrc,
|
|
145
|
-
isCodeMimeType: isCodeMimeType
|
|
147
|
+
isCodeMimeType: isCodeMimeType,
|
|
148
|
+
hasLoadedEntries: true
|
|
146
149
|
}))
|
|
147
150
|
});
|
|
148
151
|
case 20:
|
|
@@ -244,7 +247,9 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
|
|
|
244
247
|
}, {
|
|
245
248
|
key: "renderArchiveItemViewer",
|
|
246
249
|
value: function renderArchiveItemViewer(content) {
|
|
247
|
-
var
|
|
250
|
+
var _this$props2 = this.props,
|
|
251
|
+
item = _this$props2.item,
|
|
252
|
+
viewerOptions = _this$props2.viewerOptions;
|
|
248
253
|
var src = content.src,
|
|
249
254
|
name = content.name,
|
|
250
255
|
isDirectory = content.isDirectory,
|
|
@@ -256,9 +261,48 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
|
|
|
256
261
|
return this.renderPreviewError(error, selectedArchiveEntry);
|
|
257
262
|
}
|
|
258
263
|
if (!isDirectory && selectedArchiveEntry) {
|
|
264
|
+
var _viewerOptions$custom;
|
|
259
265
|
if (!name || !src) {
|
|
260
266
|
return this.renderPreviewError(new _errors.ArchiveViewerError('archiveviewer-missing-name-src'), selectedArchiveEntry);
|
|
261
267
|
}
|
|
268
|
+
var customRenderer = viewerOptions === null || viewerOptions === void 0 || (_viewerOptions$custom = viewerOptions.customRenderers) === null || _viewerOptions$custom === void 0 ? void 0 : _viewerOptions$custom.find(function (renderer) {
|
|
269
|
+
return renderer.shouldUseCustomRenderer({
|
|
270
|
+
fileItem: item,
|
|
271
|
+
archiveFileItem: {
|
|
272
|
+
name: name
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
if (customRenderer) {
|
|
277
|
+
return /*#__PURE__*/_react.default.createElement(_styleWrappers2.ArchiveItemViewerWrapper, null, customRenderer.renderContent({
|
|
278
|
+
fileItem: item,
|
|
279
|
+
archiveFileItem: {
|
|
280
|
+
name: name
|
|
281
|
+
},
|
|
282
|
+
getBinaryContent: function () {
|
|
283
|
+
var _getBinaryContent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
284
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
285
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
286
|
+
case 0:
|
|
287
|
+
_context4.next = 2;
|
|
288
|
+
return fetch(src);
|
|
289
|
+
case 2:
|
|
290
|
+
return _context4.abrupt("return", _context4.sent.blob());
|
|
291
|
+
case 3:
|
|
292
|
+
case "end":
|
|
293
|
+
return _context4.stop();
|
|
294
|
+
}
|
|
295
|
+
}, _callee4);
|
|
296
|
+
}));
|
|
297
|
+
function getBinaryContent() {
|
|
298
|
+
return _getBinaryContent.apply(this, arguments);
|
|
299
|
+
}
|
|
300
|
+
return getBinaryContent;
|
|
301
|
+
}(),
|
|
302
|
+
onLoad: this.onViewerLoad(selectedArchiveEntry),
|
|
303
|
+
onError: this.onViewerError('archiveviewer-customrenderer-onerror', selectedArchiveEntry)
|
|
304
|
+
}));
|
|
305
|
+
}
|
|
262
306
|
var mediaType = (0, _utils.getMediaTypeFromFilename)(name);
|
|
263
307
|
if (isCodeMimeType) {
|
|
264
308
|
// Same code viewer logic as in Item-Viewer.tsx
|
|
@@ -330,16 +374,16 @@ var ArchiveViewerBase = exports.ArchiveViewerBase = /*#__PURE__*/function (_Base
|
|
|
330
374
|
}, {
|
|
331
375
|
key: "renderPreviewError",
|
|
332
376
|
value: function renderPreviewError(error, entry) {
|
|
333
|
-
var _this$
|
|
334
|
-
item = _this$
|
|
335
|
-
createAnalyticsEvent = _this$
|
|
377
|
+
var _this$props3 = this.props,
|
|
378
|
+
item = _this$props3.item,
|
|
379
|
+
createAnalyticsEvent = _this$props3.createAnalyticsEvent;
|
|
336
380
|
(0, _analytics.fireAnalytics)((0, _zipEntryLoadFailed.createZipEntryLoadFailedEvent)(item, error, entry), createAnalyticsEvent);
|
|
337
381
|
return /*#__PURE__*/_react.default.createElement(_styleWrappers.ListWrapper, null, /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
|
|
338
382
|
fileId: item.id,
|
|
339
383
|
fileState: item,
|
|
340
384
|
error: error,
|
|
341
385
|
supressAnalytics: true
|
|
342
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
386
|
+
}, /*#__PURE__*/_react.default.createElement(_primitives.Text, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.try_downloading_file))));
|
|
343
387
|
}
|
|
344
388
|
}]);
|
|
345
389
|
return ArchiveViewerBase;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.CustomViewer = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _errors = require("../../errors");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _loading = require("../../loading");
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
var CustomViewer = exports.CustomViewer = function CustomViewer(_ref) {
|
|
16
|
+
var mediaClient = _ref.mediaClient,
|
|
17
|
+
item = _ref.item,
|
|
18
|
+
customRendererConfig = _ref.customRendererConfig,
|
|
19
|
+
onSuccess = _ref.onSuccess,
|
|
20
|
+
onError = _ref.onError;
|
|
21
|
+
var _useState = (0, _react.useState)(),
|
|
22
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
23
|
+
getBinaryContent = _useState2[0],
|
|
24
|
+
setGetBinaryContent = _useState2[1];
|
|
25
|
+
(0, _react.useEffect)(function () {
|
|
26
|
+
setGetBinaryContent(undefined);
|
|
27
|
+
var abortController = new AbortController();
|
|
28
|
+
// This sets the 'getBinaryContent' to an async function that fetches the binary content of the file
|
|
29
|
+
// The 'getBinaryContent' function has to be updated when the item changes
|
|
30
|
+
// This approach handles aborting in-progress request outside of the custom-renderer concern
|
|
31
|
+
if (item.status === 'processed' || item.status === 'failed-processing') {
|
|
32
|
+
setGetBinaryContent(function () {
|
|
33
|
+
return function () {
|
|
34
|
+
return mediaClient.mediaStore.getFileBinary(item.id, undefined, abortController);
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return function () {
|
|
39
|
+
return abortController.abort();
|
|
40
|
+
};
|
|
41
|
+
}, [item, mediaClient]);
|
|
42
|
+
var onLoadFailed = (0, _react.useCallback)(function (error) {
|
|
43
|
+
var mediaError = new _errors.MediaViewerError('custom-viewer-error', error);
|
|
44
|
+
onError(mediaError, item);
|
|
45
|
+
}, [item, onError]);
|
|
46
|
+
if (!getBinaryContent) {
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_loading.Spinner, null);
|
|
48
|
+
}
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, customRendererConfig.renderContent({
|
|
50
|
+
fileItem: item,
|
|
51
|
+
getBinaryContent: getBinaryContent,
|
|
52
|
+
onLoad: onSuccess,
|
|
53
|
+
onError: onLoadFailed
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ANALYTICS_MEDIA_CHANNEL, sanitiseAnalyticsPayload } from '@atlaskit/media-common/analytics';
|
|
2
2
|
const componentName = 'mediaViewer';
|
|
3
3
|
const packageName = "@atlaskit/media-viewer";
|
|
4
|
-
const packageVersion = "49.
|
|
4
|
+
const packageVersion = "49.3.0";
|
|
5
5
|
export { packageName, packageVersion, componentName, componentName as component };
|
|
6
6
|
export function getFileAttributes(fileState) {
|
|
7
7
|
if (!fileState) {
|
|
@@ -2,7 +2,7 @@ import { UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atl
|
|
|
2
2
|
import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
|
|
3
3
|
import { getFeatureFlagKeysAllProducts } from '@atlaskit/media-common';
|
|
4
4
|
const packageName = "@atlaskit/media-viewer";
|
|
5
|
-
const packageVersion = "49.
|
|
5
|
+
const packageVersion = "49.3.0";
|
|
6
6
|
let ufoExperience;
|
|
7
7
|
const getExperience = () => {
|
|
8
8
|
if (!ufoExperience) {
|
|
@@ -32,7 +32,8 @@ export const MediaViewerBase = ({
|
|
|
32
32
|
collectionName,
|
|
33
33
|
items,
|
|
34
34
|
extensions,
|
|
35
|
-
contextId
|
|
35
|
+
contextId,
|
|
36
|
+
viewerOptions
|
|
36
37
|
}) => {
|
|
37
38
|
const {
|
|
38
39
|
items: normalisedItems,
|
|
@@ -65,7 +66,8 @@ export const MediaViewerBase = ({
|
|
|
65
66
|
items: normalisedItems,
|
|
66
67
|
featureFlags: featureFlags,
|
|
67
68
|
extensions: extensions,
|
|
68
|
-
contextId: contextId
|
|
69
|
+
contextId: contextId,
|
|
70
|
+
viewerOptions: viewerOptions
|
|
69
71
|
});
|
|
70
72
|
};
|
|
71
73
|
|
|
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import React, { useCallback, useEffect, useState, useRef } from 'react';
|
|
3
3
|
import Loadable from 'react-loadable';
|
|
4
4
|
import { isExternalImageIdentifier, isFileIdentifier } from '@atlaskit/media-client';
|
|
5
|
+
import { Text } from '@atlaskit/primitives';
|
|
5
6
|
import { FormattedMessage } from 'react-intl-next';
|
|
6
7
|
import { messages } from '@atlaskit/media-ui';
|
|
7
8
|
import { isCodeViewerItem } from '@atlaskit/media-ui/codeViewer';
|
|
@@ -19,6 +20,7 @@ import { InteractiveImg } from './viewers/image/interactive-img';
|
|
|
19
20
|
import ArchiveViewerLoader from './viewers/archiveSidebar/archiveViewerLoader';
|
|
20
21
|
import { getRandomHex } from '@atlaskit/media-common';
|
|
21
22
|
import { startMediaFileUfoExperience, succeedMediaFileUfoExperience } from './analytics/ufoExperiences';
|
|
23
|
+
import { CustomViewer } from './viewers/customViewer/customViewer';
|
|
22
24
|
const ImageViewer = Loadable({
|
|
23
25
|
loader: () => import( /* webpackChunkName: "@atlaskit-internal_imageViewer" */'./viewers/image').then(mod => mod.ImageViewer),
|
|
24
26
|
loading: () => /*#__PURE__*/React.createElement(Spinner, null)
|
|
@@ -55,7 +57,8 @@ export const ItemViewerBase = ({
|
|
|
55
57
|
onClose,
|
|
56
58
|
previewCount,
|
|
57
59
|
contextId,
|
|
58
|
-
createAnalyticsEvent
|
|
60
|
+
createAnalyticsEvent,
|
|
61
|
+
viewerOptions
|
|
59
62
|
}) => {
|
|
60
63
|
// States and Refs
|
|
61
64
|
const [item, setItem] = useState(Outcome.pending());
|
|
@@ -141,14 +144,26 @@ export const ItemViewerBase = ({
|
|
|
141
144
|
setItem(Outcome.failed(mediaViewerError, fileState));
|
|
142
145
|
}, [fileState]);
|
|
143
146
|
const renderItem = fileItem => {
|
|
147
|
+
var _viewerOptions$custom;
|
|
144
148
|
const collectionName = isFileIdentifier(identifier) ? identifier.collectionName : undefined;
|
|
145
149
|
const viewerProps = {
|
|
146
150
|
mediaClient,
|
|
147
151
|
item: fileItem,
|
|
148
152
|
collectionName,
|
|
149
153
|
onClose,
|
|
150
|
-
previewCount
|
|
154
|
+
previewCount,
|
|
155
|
+
viewerOptions
|
|
151
156
|
};
|
|
157
|
+
const customRenderer = viewerOptions === null || viewerOptions === void 0 ? void 0 : (_viewerOptions$custom = viewerOptions.customRenderers) === null || _viewerOptions$custom === void 0 ? void 0 : _viewerOptions$custom.find(renderer => renderer.shouldUseCustomRenderer({
|
|
158
|
+
fileItem
|
|
159
|
+
}));
|
|
160
|
+
if (customRenderer) {
|
|
161
|
+
return /*#__PURE__*/React.createElement(CustomViewer, _extends({
|
|
162
|
+
customRendererConfig: customRenderer,
|
|
163
|
+
onError: onLoadFail,
|
|
164
|
+
onSuccess: onSuccess
|
|
165
|
+
}, viewerProps));
|
|
166
|
+
}
|
|
152
167
|
|
|
153
168
|
// TODO: fix all of the item errors
|
|
154
169
|
|
|
@@ -227,7 +242,7 @@ export const ItemViewerBase = ({
|
|
|
227
242
|
fileState: fileState,
|
|
228
243
|
fileStateFlags: fileStateFlagsRef.current,
|
|
229
244
|
traceContext: traceContext.current
|
|
230
|
-
}, /*#__PURE__*/React.createElement(
|
|
245
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement(FormattedMessage, messages.try_downloading_file)), renderDownloadButton(fileState, error));
|
|
231
246
|
} else {
|
|
232
247
|
return /*#__PURE__*/React.createElement(ErrorMessage, {
|
|
233
248
|
fileId: isFileIdentifier(identifier) ? identifier.id : 'undefined',
|
package/dist/es2019/list.js
CHANGED
|
@@ -14,7 +14,8 @@ export const List = ({
|
|
|
14
14
|
featureFlags,
|
|
15
15
|
isSidebarVisible,
|
|
16
16
|
onNavigationChange,
|
|
17
|
-
items
|
|
17
|
+
items,
|
|
18
|
+
viewerOptions
|
|
18
19
|
}) => {
|
|
19
20
|
const [selectedItem, setSelectedItem] = useState(defaultSelectedItem);
|
|
20
21
|
const [previewCount, setPreviewCount] = useState(0);
|
|
@@ -39,7 +40,8 @@ export const List = ({
|
|
|
39
40
|
onClose: onClose,
|
|
40
41
|
previewCount: previewCount,
|
|
41
42
|
contextId: contextId,
|
|
42
|
-
featureFlags: featureFlags
|
|
43
|
+
featureFlags: featureFlags,
|
|
44
|
+
viewerOptions: viewerOptions
|
|
43
45
|
}), /*#__PURE__*/React.createElement(Navigation, {
|
|
44
46
|
items: items,
|
|
45
47
|
selectedItem: selectedItem,
|
|
@@ -21,7 +21,8 @@ const MediaViewerComponent = ({
|
|
|
21
21
|
innerRef,
|
|
22
22
|
onClose,
|
|
23
23
|
selectedItem,
|
|
24
|
-
intl
|
|
24
|
+
intl,
|
|
25
|
+
viewerOptions
|
|
25
26
|
}) => {
|
|
26
27
|
const [isSidebarVisible, setIsSidebarVisible] = useState(false);
|
|
27
28
|
const [selectedIdentifier, setSelectedIdentifier] = useState();
|
|
@@ -76,7 +77,8 @@ const MediaViewerComponent = ({
|
|
|
76
77
|
onSidebarButtonClick: () => setIsSidebarVisible(!isSidebarVisible),
|
|
77
78
|
isSidebarVisible: isSidebarVisible,
|
|
78
79
|
contextId: contextId,
|
|
79
|
-
featureFlags: featureFlags
|
|
80
|
+
featureFlags: featureFlags,
|
|
81
|
+
viewerOptions: viewerOptions
|
|
80
82
|
})), renderSidebar()));
|
|
81
83
|
return intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
|
|
82
84
|
locale: "en"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -5,6 +5,7 @@ import { unzip, HTTPRangeReader } from 'unzipit';
|
|
|
5
5
|
import { FormattedMessage } from 'react-intl-next';
|
|
6
6
|
import { CustomMediaPlayer, messages } from '@atlaskit/media-ui';
|
|
7
7
|
import { getLanguageType, isCodeViewerItem } from '@atlaskit/media-ui/codeViewer';
|
|
8
|
+
import { Text } from '@atlaskit/primitives';
|
|
8
9
|
import { Outcome } from '../../domain';
|
|
9
10
|
import { CustomVideoPlayerWrapper, AudioPlayer, CustomAudioPlayerWrapper, DefaultCoverWrapper, ListWrapper } from '../../styleWrappers';
|
|
10
11
|
import AudioIcon from '@atlaskit/icon/core/migration/audio--media-services-audio';
|
|
@@ -48,7 +49,8 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
48
49
|
this.setState({
|
|
49
50
|
content: Outcome.successful({
|
|
50
51
|
...this.state.content.data,
|
|
51
|
-
selectedArchiveEntry: undefined
|
|
52
|
+
selectedArchiveEntry: undefined,
|
|
53
|
+
hasLoadedEntries: false // displays a nice loading spinner for the content viewer
|
|
52
54
|
})
|
|
53
55
|
});
|
|
54
56
|
let src = '';
|
|
@@ -56,7 +58,7 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
56
58
|
const isCodeMimeType = isCodeViewerItem(selectedArchiveEntry.name, getMimeTypeFromFilename(selectedArchiveEntry.name));
|
|
57
59
|
if (!selectedArchiveEntry.isDirectory) {
|
|
58
60
|
try {
|
|
59
|
-
const blob = await rejectAfter(() => selectedArchiveEntry.blob());
|
|
61
|
+
const blob = await rejectAfter(() => selectedArchiveEntry.blob(), 10000);
|
|
60
62
|
src = URL.createObjectURL(blob);
|
|
61
63
|
if (isCodeMimeType) {
|
|
62
64
|
codeViewerSrc = await rejectAfter(() => blob.text());
|
|
@@ -74,7 +76,8 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
74
76
|
isDirectory: selectedArchiveEntry.isDirectory,
|
|
75
77
|
error: undefined,
|
|
76
78
|
codeViewerSrc,
|
|
77
|
-
isCodeMimeType
|
|
79
|
+
isCodeMimeType,
|
|
80
|
+
hasLoadedEntries: true
|
|
78
81
|
})
|
|
79
82
|
});
|
|
80
83
|
});
|
|
@@ -145,7 +148,8 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
145
148
|
}
|
|
146
149
|
renderArchiveItemViewer(content) {
|
|
147
150
|
const {
|
|
148
|
-
item
|
|
151
|
+
item,
|
|
152
|
+
viewerOptions
|
|
149
153
|
} = this.props;
|
|
150
154
|
const {
|
|
151
155
|
src,
|
|
@@ -160,9 +164,27 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
160
164
|
return this.renderPreviewError(error, selectedArchiveEntry);
|
|
161
165
|
}
|
|
162
166
|
if (!isDirectory && selectedArchiveEntry) {
|
|
167
|
+
var _viewerOptions$custom;
|
|
163
168
|
if (!name || !src) {
|
|
164
169
|
return this.renderPreviewError(new ArchiveViewerError('archiveviewer-missing-name-src'), selectedArchiveEntry);
|
|
165
170
|
}
|
|
171
|
+
const customRenderer = viewerOptions === null || viewerOptions === void 0 ? void 0 : (_viewerOptions$custom = viewerOptions.customRenderers) === null || _viewerOptions$custom === void 0 ? void 0 : _viewerOptions$custom.find(renderer => renderer.shouldUseCustomRenderer({
|
|
172
|
+
fileItem: item,
|
|
173
|
+
archiveFileItem: {
|
|
174
|
+
name
|
|
175
|
+
}
|
|
176
|
+
}));
|
|
177
|
+
if (customRenderer) {
|
|
178
|
+
return /*#__PURE__*/React.createElement(ArchiveItemViewerWrapper, null, customRenderer.renderContent({
|
|
179
|
+
fileItem: item,
|
|
180
|
+
archiveFileItem: {
|
|
181
|
+
name
|
|
182
|
+
},
|
|
183
|
+
getBinaryContent: async () => (await fetch(src)).blob(),
|
|
184
|
+
onLoad: this.onViewerLoad(selectedArchiveEntry),
|
|
185
|
+
onError: this.onViewerError('archiveviewer-customrenderer-onerror', selectedArchiveEntry)
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
166
188
|
const mediaType = getMediaTypeFromFilename(name);
|
|
167
189
|
if (isCodeMimeType) {
|
|
168
190
|
// Same code viewer logic as in Item-Viewer.tsx
|
|
@@ -242,7 +264,7 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
242
264
|
fileState: item,
|
|
243
265
|
error: error,
|
|
244
266
|
supressAnalytics: true
|
|
245
|
-
}, /*#__PURE__*/React.createElement(
|
|
267
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement(FormattedMessage, messages.try_downloading_file))));
|
|
246
268
|
}
|
|
247
269
|
}
|
|
248
270
|
export const ArchiveViewer = withAnalyticsEvents()(ArchiveViewerBase);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { MediaViewerError } from '../../errors';
|
|
2
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Spinner } from '../../loading';
|
|
5
|
+
export const CustomViewer = ({
|
|
6
|
+
mediaClient,
|
|
7
|
+
item,
|
|
8
|
+
customRendererConfig,
|
|
9
|
+
onSuccess,
|
|
10
|
+
onError
|
|
11
|
+
}) => {
|
|
12
|
+
const [getBinaryContent, setGetBinaryContent] = useState();
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
setGetBinaryContent(undefined);
|
|
15
|
+
const abortController = new AbortController();
|
|
16
|
+
// This sets the 'getBinaryContent' to an async function that fetches the binary content of the file
|
|
17
|
+
// The 'getBinaryContent' function has to be updated when the item changes
|
|
18
|
+
// This approach handles aborting in-progress request outside of the custom-renderer concern
|
|
19
|
+
if (item.status === 'processed' || item.status === 'failed-processing') {
|
|
20
|
+
setGetBinaryContent(() => () => mediaClient.mediaStore.getFileBinary(item.id, undefined, abortController));
|
|
21
|
+
}
|
|
22
|
+
return () => abortController.abort();
|
|
23
|
+
}, [item, mediaClient]);
|
|
24
|
+
const onLoadFailed = useCallback(error => {
|
|
25
|
+
const mediaError = new MediaViewerError('custom-viewer-error', error);
|
|
26
|
+
onError(mediaError, item);
|
|
27
|
+
}, [item, onError]);
|
|
28
|
+
if (!getBinaryContent) {
|
|
29
|
+
return /*#__PURE__*/React.createElement(Spinner, null);
|
|
30
|
+
}
|
|
31
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, customRendererConfig.renderContent({
|
|
32
|
+
fileItem: item,
|
|
33
|
+
getBinaryContent,
|
|
34
|
+
onLoad: onSuccess,
|
|
35
|
+
onError: onLoadFailed
|
|
36
|
+
}));
|
|
37
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ANALYTICS_MEDIA_CHANNEL, sanitiseAnalyticsPayload } from '@atlaskit/media-common/analytics';
|
|
2
2
|
var componentName = 'mediaViewer';
|
|
3
3
|
var packageName = "@atlaskit/media-viewer";
|
|
4
|
-
var packageVersion = "49.
|
|
4
|
+
var packageVersion = "49.3.0";
|
|
5
5
|
export { packageName, packageVersion, componentName, componentName as component };
|
|
6
6
|
export function getFileAttributes(fileState) {
|
|
7
7
|
if (!fileState) {
|
|
@@ -5,7 +5,7 @@ import { UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atl
|
|
|
5
5
|
import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
|
|
6
6
|
import { getFeatureFlagKeysAllProducts } from '@atlaskit/media-common';
|
|
7
7
|
var packageName = "@atlaskit/media-viewer";
|
|
8
|
-
var packageVersion = "49.
|
|
8
|
+
var packageVersion = "49.3.0";
|
|
9
9
|
var ufoExperience;
|
|
10
10
|
var getExperience = function getExperience() {
|
|
11
11
|
if (!ufoExperience) {
|
|
@@ -37,7 +37,8 @@ export var MediaViewerBase = function MediaViewerBase(_ref) {
|
|
|
37
37
|
collectionName = _ref.collectionName,
|
|
38
38
|
items = _ref.items,
|
|
39
39
|
extensions = _ref.extensions,
|
|
40
|
-
contextId = _ref.contextId
|
|
40
|
+
contextId = _ref.contextId,
|
|
41
|
+
viewerOptions = _ref.viewerOptions;
|
|
41
42
|
var _useMemo = useMemo(function () {
|
|
42
43
|
return normaliseItems(items, selectedItem, collectionName);
|
|
43
44
|
}, [items, selectedItem, collectionName]),
|
|
@@ -70,7 +71,8 @@ export var MediaViewerBase = function MediaViewerBase(_ref) {
|
|
|
70
71
|
items: normalisedItems,
|
|
71
72
|
featureFlags: featureFlags,
|
|
72
73
|
extensions: extensions,
|
|
73
|
-
contextId: contextId
|
|
74
|
+
contextId: contextId,
|
|
75
|
+
viewerOptions: viewerOptions
|
|
74
76
|
});
|
|
75
77
|
};
|
|
76
78
|
|