@atlaskit/media-viewer 48.1.7 → 48.2.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 +2 -3
- package/dist/cjs/analytics/ufoExperiences.js +1 -1
- package/dist/cjs/components/media-viewer.js +13 -1
- package/dist/cjs/errorMessage.js +5 -3
- package/dist/cjs/item-viewer.js +5 -4
- package/dist/cjs/media-viewer.js +21 -17
- package/dist/cjs/navigation.js +5 -4
- package/dist/cjs/styleWrappers.js +1 -0
- package/dist/cjs/v2/header-v2.js +159 -0
- package/dist/cjs/v2/item-viewer-v2.js +322 -0
- package/dist/cjs/v2/list-v2.js +71 -0
- package/dist/cjs/v2/media-viewer-v2.js +114 -0
- package/dist/cjs/viewers/archiveSidebar/archive.js +5 -3
- package/dist/cjs/zoomControls.js +6 -4
- package/dist/es2019/analytics/index.js +2 -5
- package/dist/es2019/analytics/ufoExperiences.js +1 -1
- package/dist/es2019/components/media-viewer.js +13 -1
- package/dist/es2019/errorMessage.js +5 -3
- package/dist/es2019/item-viewer.js +5 -4
- package/dist/es2019/media-viewer.js +8 -6
- package/dist/es2019/navigation.js +5 -4
- package/dist/es2019/styleWrappers.js +1 -0
- package/dist/es2019/v2/header-v2.js +138 -0
- package/dist/es2019/v2/item-viewer-v2.js +269 -0
- package/dist/es2019/v2/list-v2.js +52 -0
- package/dist/es2019/v2/media-viewer-v2.js +95 -0
- package/dist/es2019/viewers/archiveSidebar/archive.js +4 -3
- package/dist/es2019/zoomControls.js +6 -4
- package/dist/esm/analytics/index.js +2 -3
- package/dist/esm/analytics/ufoExperiences.js +1 -1
- package/dist/esm/components/media-viewer.js +13 -1
- package/dist/esm/errorMessage.js +5 -3
- package/dist/esm/item-viewer.js +5 -4
- package/dist/esm/media-viewer.js +21 -17
- package/dist/esm/navigation.js +5 -4
- package/dist/esm/styleWrappers.js +1 -0
- package/dist/esm/v2/header-v2.js +149 -0
- package/dist/esm/v2/item-viewer-v2.js +302 -0
- package/dist/esm/v2/list-v2.js +61 -0
- package/dist/esm/v2/media-viewer-v2.js +104 -0
- package/dist/esm/viewers/archiveSidebar/archive.js +5 -3
- package/dist/esm/zoomControls.js +6 -4
- package/dist/types/analytics/index.d.ts +2 -2
- package/dist/types/v2/header-v2.d.ts +18 -0
- package/dist/types/v2/item-viewer-v2.d.ts +21 -0
- package/dist/types/v2/list-v2.d.ts +22 -0
- package/dist/types/v2/media-viewer-v2.d.ts +14 -0
- package/dist/types-ts4.5/analytics/index.d.ts +2 -2
- package/dist/types-ts4.5/v2/header-v2.d.ts +18 -0
- package/dist/types-ts4.5/v2/item-viewer-v2.d.ts +21 -0
- package/dist/types-ts4.5/v2/list-v2.d.ts +22 -0
- package/dist/types-ts4.5/v2/media-viewer-v2.d.ts +14 -0
- package/package.json +11 -4
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React, { useState, useLayoutEffect, useRef } from 'react';
|
|
3
|
+
import { IntlProvider, injectIntl } from 'react-intl-next';
|
|
4
|
+
import { Shortcut } from '@atlaskit/media-ui';
|
|
5
|
+
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
6
|
+
import { fireAnalytics } from '../analytics';
|
|
7
|
+
import { createModalEvent } from '../analytics/events/screen/modal';
|
|
8
|
+
import { createClosedEvent } from '../analytics/events/ui/closed';
|
|
9
|
+
import { ListV2 } from './list-v2';
|
|
10
|
+
import { Content } from '../content';
|
|
11
|
+
import { Blanket, SidebarWrapper } from '../styleWrappers';
|
|
12
|
+
import { start } from 'perf-marks';
|
|
13
|
+
import { mediaViewerPopupClass } from '../classnames';
|
|
14
|
+
import ScrollLock from 'react-scrolllock';
|
|
15
|
+
import FocusLock from 'react-focus-lock';
|
|
16
|
+
const MediaViewerComponent = ({
|
|
17
|
+
featureFlags,
|
|
18
|
+
items,
|
|
19
|
+
extensions,
|
|
20
|
+
contextId,
|
|
21
|
+
innerRef,
|
|
22
|
+
onClose,
|
|
23
|
+
selectedItem,
|
|
24
|
+
intl
|
|
25
|
+
}) => {
|
|
26
|
+
const [isSidebarVisible, setIsSidebarVisible] = useState(false);
|
|
27
|
+
const [selectedIdentifier, setSelectedIdentifier] = useState();
|
|
28
|
+
const {
|
|
29
|
+
createAnalyticsEvent
|
|
30
|
+
} = useAnalyticsEvents();
|
|
31
|
+
const createAnalyticsEventRef = useRef(createAnalyticsEvent);
|
|
32
|
+
createAnalyticsEventRef.current = createAnalyticsEvent;
|
|
33
|
+
useLayoutEffect(() => {
|
|
34
|
+
fireAnalytics(createModalEvent(), createAnalyticsEventRef.current);
|
|
35
|
+
start('MediaViewer.SessionDuration');
|
|
36
|
+
}, []);
|
|
37
|
+
const defaultSelectedItem = selectedItem || items[0];
|
|
38
|
+
const renderSidebar = () => {
|
|
39
|
+
const sidebarSelectedIdentifier = selectedIdentifier || defaultSelectedItem;
|
|
40
|
+
if (sidebarSelectedIdentifier && isSidebarVisible && extensions && extensions.sidebar) {
|
|
41
|
+
return /*#__PURE__*/React.createElement(SidebarWrapper, {
|
|
42
|
+
"data-testid": "media-viewer-sidebar-content"
|
|
43
|
+
}, extensions.sidebar.renderer(sidebarSelectedIdentifier, {
|
|
44
|
+
close: () => setIsSidebarVisible(!isSidebarVisible)
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const content = /*#__PURE__*/React.createElement("div", {
|
|
49
|
+
ref: innerRef
|
|
50
|
+
}, /*#__PURE__*/React.createElement(Blanket, {
|
|
51
|
+
"data-testid": "media-viewer-popup",
|
|
52
|
+
className: mediaViewerPopupClass
|
|
53
|
+
}, /*#__PURE__*/React.createElement(Shortcut, {
|
|
54
|
+
code: 'Escape',
|
|
55
|
+
handler: () => {
|
|
56
|
+
fireAnalytics(createClosedEvent('escKey'), createAnalyticsEventRef.current);
|
|
57
|
+
onClose && onClose();
|
|
58
|
+
}
|
|
59
|
+
}), /*#__PURE__*/React.createElement(Content, {
|
|
60
|
+
isSidebarVisible: isSidebarVisible,
|
|
61
|
+
onClose: (_e, analyticsEvent) => {
|
|
62
|
+
var _analyticsEvent$paylo;
|
|
63
|
+
if ((analyticsEvent === null || analyticsEvent === void 0 ? void 0 : (_analyticsEvent$paylo = analyticsEvent.payload) === null || _analyticsEvent$paylo === void 0 ? void 0 : _analyticsEvent$paylo.actionSubject) === 'button') {
|
|
64
|
+
fireAnalytics(createClosedEvent('button'), createAnalyticsEventRef.current);
|
|
65
|
+
}
|
|
66
|
+
onClose && onClose();
|
|
67
|
+
}
|
|
68
|
+
}, /*#__PURE__*/React.createElement(ListV2, {
|
|
69
|
+
defaultSelectedItem: defaultSelectedItem || items[0],
|
|
70
|
+
items: items,
|
|
71
|
+
onClose: onClose,
|
|
72
|
+
extensions: extensions,
|
|
73
|
+
onNavigationChange: setSelectedIdentifier,
|
|
74
|
+
onSidebarButtonClick: () => setIsSidebarVisible(!isSidebarVisible),
|
|
75
|
+
isSidebarVisible: isSidebarVisible,
|
|
76
|
+
contextId: contextId,
|
|
77
|
+
featureFlags: featureFlags
|
|
78
|
+
})), renderSidebar()));
|
|
79
|
+
return intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
|
|
80
|
+
locale: "en"
|
|
81
|
+
}, content);
|
|
82
|
+
};
|
|
83
|
+
const MediaViewerWithRef = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
84
|
+
return /*#__PURE__*/React.createElement(MediaViewerComponent, _extends({}, props, {
|
|
85
|
+
innerRef: ref
|
|
86
|
+
}));
|
|
87
|
+
});
|
|
88
|
+
const MediaViewerWithScrollLock = props => {
|
|
89
|
+
return /*#__PURE__*/React.createElement(FocusLock, {
|
|
90
|
+
autoFocus: true
|
|
91
|
+
}, /*#__PURE__*/React.createElement(ScrollLock, null), /*#__PURE__*/React.createElement(MediaViewerWithRef, props));
|
|
92
|
+
};
|
|
93
|
+
export const MediaViewerV2 = injectIntl(MediaViewerWithScrollLock, {
|
|
94
|
+
enforceContext: false
|
|
95
|
+
});
|
|
@@ -88,7 +88,7 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
88
88
|
});
|
|
89
89
|
});
|
|
90
90
|
_defineProperty(this, "onViewerLoad", selectedArchiveEntry => () => {
|
|
91
|
-
fireAnalytics(createZipEntryLoadSucceededEvent(this.props.item, selectedArchiveEntry), this.props);
|
|
91
|
+
fireAnalytics(createZipEntryLoadSucceededEvent(this.props.item, selectedArchiveEntry), this.props.createAnalyticsEvent);
|
|
92
92
|
});
|
|
93
93
|
_defineProperty(this, "onViewerError", (primaryErrorReason, selectedArchiveEntry) => error => error && isMediaViewerError(error) ? this.onError(new ArchiveViewerError(primaryErrorReason, error.secondaryError, selectedArchiveEntry)) : this.onError(new ArchiveViewerError(primaryErrorReason, error, selectedArchiveEntry)));
|
|
94
94
|
_defineProperty(this, "onSidebarLoaded", () => {
|
|
@@ -229,9 +229,10 @@ export class ArchiveViewerBase extends BaseViewer {
|
|
|
229
229
|
}
|
|
230
230
|
renderPreviewError(error, entry) {
|
|
231
231
|
const {
|
|
232
|
-
item
|
|
232
|
+
item,
|
|
233
|
+
createAnalyticsEvent
|
|
233
234
|
} = this.props;
|
|
234
|
-
fireAnalytics(createZipEntryLoadFailedEvent(
|
|
235
|
+
fireAnalytics(createZipEntryLoadFailedEvent(item, error, entry), createAnalyticsEvent);
|
|
235
236
|
return /*#__PURE__*/React.createElement(ListWrapper, null, /*#__PURE__*/React.createElement(ErrorMessage, {
|
|
236
237
|
fileId: item.id,
|
|
237
238
|
fileState: item,
|
|
@@ -17,22 +17,24 @@ export class ZoomControlsBase extends Component {
|
|
|
17
17
|
_defineProperty(this, "zoomIn", () => {
|
|
18
18
|
const {
|
|
19
19
|
onChange,
|
|
20
|
-
zoomLevel
|
|
20
|
+
zoomLevel,
|
|
21
|
+
createAnalyticsEvent
|
|
21
22
|
} = this.props;
|
|
22
23
|
if (zoomLevel.canZoomIn) {
|
|
23
24
|
const zoom = zoomLevel.zoomIn();
|
|
24
|
-
fireAnalytics(createZoomInButtonClickEvent(zoom.value),
|
|
25
|
+
fireAnalytics(createZoomInButtonClickEvent(zoom.value), createAnalyticsEvent);
|
|
25
26
|
onChange(zoom);
|
|
26
27
|
}
|
|
27
28
|
});
|
|
28
29
|
_defineProperty(this, "zoomOut", () => {
|
|
29
30
|
const {
|
|
30
31
|
onChange,
|
|
31
|
-
zoomLevel
|
|
32
|
+
zoomLevel,
|
|
33
|
+
createAnalyticsEvent
|
|
32
34
|
} = this.props;
|
|
33
35
|
if (zoomLevel.canZoomOut) {
|
|
34
36
|
const zoom = zoomLevel.zoomOut();
|
|
35
|
-
fireAnalytics(createZoomOutButtonClickedEvent(zoom.value),
|
|
37
|
+
fireAnalytics(createZoomOutButtonClickedEvent(zoom.value), createAnalyticsEvent);
|
|
36
38
|
onChange(zoom);
|
|
37
39
|
}
|
|
38
40
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ANALYTICS_MEDIA_CHANNEL } from '@atlaskit/media-common';
|
|
2
2
|
var componentName = 'mediaViewer';
|
|
3
3
|
var packageName = "@atlaskit/media-viewer";
|
|
4
|
-
var packageVersion = "48.
|
|
4
|
+
var packageVersion = "48.2.0";
|
|
5
5
|
export { packageName, packageVersion, componentName, componentName as component };
|
|
6
6
|
export function getFileAttributes(fileState) {
|
|
7
7
|
if (!fileState) {
|
|
@@ -33,8 +33,7 @@ export function getFileAttributes(fileState) {
|
|
|
33
33
|
|
|
34
34
|
/** This type takes FailureAttributes and redefines `failReason` to be the strong media-viewer type */
|
|
35
35
|
|
|
36
|
-
export function fireAnalytics(payload,
|
|
37
|
-
var createAnalyticsEvent = props.createAnalyticsEvent;
|
|
36
|
+
export function fireAnalytics(payload, createAnalyticsEvent) {
|
|
38
37
|
if (createAnalyticsEvent) {
|
|
39
38
|
var ev = createAnalyticsEvent(payload);
|
|
40
39
|
ev.fire(ANALYTICS_MEDIA_CHANNEL);
|
|
@@ -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 = "48.
|
|
8
|
+
var packageVersion = "48.2.0";
|
|
9
9
|
var ufoExperience;
|
|
10
10
|
var getExperience = function getExperience() {
|
|
11
11
|
if (!ufoExperience) {
|
|
@@ -3,9 +3,11 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
3
3
|
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; }
|
|
4
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
5
|
import React, { useEffect, useMemo } from 'react';
|
|
6
|
+
import { MediaViewerV2 as MediaViewerNextGenV2 } from '../v2/media-viewer-v2';
|
|
6
7
|
import { MediaViewer as MediaViewerNextGen } from '../media-viewer';
|
|
7
8
|
import { isSameIdentifier } from '../utils';
|
|
8
9
|
import { isFileIdentifier } from '@atlaskit/media-client';
|
|
10
|
+
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
9
11
|
var ensureCollectionName = function ensureCollectionName(identifier, collectionName) {
|
|
10
12
|
return isFileIdentifier(identifier) ? _objectSpread(_objectSpread({}, identifier), {}, {
|
|
11
13
|
collectionName: identifier.collectionName || collectionName
|
|
@@ -26,6 +28,9 @@ var normaliseItems = function normaliseItems(items, selectedItem, collectionName
|
|
|
26
28
|
selectedItem: selectedItemWithCollectionName
|
|
27
29
|
};
|
|
28
30
|
};
|
|
31
|
+
|
|
32
|
+
// TODO: This component will be removed in https://product-fabric.atlassian.net/browse/CXP-2722
|
|
33
|
+
|
|
29
34
|
export var MediaViewer = function MediaViewer(_ref) {
|
|
30
35
|
var featureFlags = _ref.featureFlags,
|
|
31
36
|
onClose = _ref.onClose,
|
|
@@ -61,7 +66,14 @@ export var MediaViewer = function MediaViewer(_ref) {
|
|
|
61
66
|
parent.postMessage(closingMsg, '*');
|
|
62
67
|
};
|
|
63
68
|
}, []);
|
|
64
|
-
return /*#__PURE__*/React.createElement(
|
|
69
|
+
return getBooleanFF('platform.media-experience.media-viewer-v2_hgsii') ? /*#__PURE__*/React.createElement(MediaViewerNextGenV2, {
|
|
70
|
+
selectedItem: normalisedSelectedItem,
|
|
71
|
+
onClose: onClose,
|
|
72
|
+
items: normalisedItems,
|
|
73
|
+
featureFlags: featureFlags,
|
|
74
|
+
extensions: extensions,
|
|
75
|
+
contextId: contextId
|
|
76
|
+
}) : /*#__PURE__*/React.createElement(MediaViewerNextGen, {
|
|
65
77
|
mediaClient: mediaClient,
|
|
66
78
|
selectedItem: normalisedSelectedItem,
|
|
67
79
|
onClose: onClose,
|
package/dist/esm/errorMessage.js
CHANGED
|
@@ -63,12 +63,14 @@ export var ErrorMessage = /*#__PURE__*/function (_React$Component) {
|
|
|
63
63
|
error = props.error,
|
|
64
64
|
fileState = props.fileState,
|
|
65
65
|
fileId = props.fileId,
|
|
66
|
-
traceContext = props.traceContext
|
|
66
|
+
traceContext = props.traceContext,
|
|
67
|
+
createAnalyticsEvent = props.createAnalyticsEvent,
|
|
68
|
+
fileStateFlags = props.fileStateFlags;
|
|
67
69
|
if (supressAnalytics !== true) {
|
|
68
70
|
var payload = ErrorMessage.getEventPayload(error, fileId, fileState, traceContext);
|
|
69
|
-
fireAnalytics(payload,
|
|
71
|
+
fireAnalytics(payload, createAnalyticsEvent);
|
|
70
72
|
var rawPayload = _objectSpread(_objectSpread({}, payload === null || payload === void 0 ? void 0 : payload.attributes), {}, {
|
|
71
|
-
fileStateFlags:
|
|
73
|
+
fileStateFlags: fileStateFlags
|
|
72
74
|
});
|
|
73
75
|
if (Object.keys(rawPayload).includes('status')) {
|
|
74
76
|
delete rawPayload['status'];
|
package/dist/esm/item-viewer.js
CHANGED
|
@@ -111,7 +111,7 @@ export var ItemViewerBase = /*#__PURE__*/function (_React$Component) {
|
|
|
111
111
|
item.whenSuccessful(function (fileItem) {
|
|
112
112
|
if (isFileStateItem(fileItem)) {
|
|
113
113
|
var fileAttributes = getFileAttributes(fileItem);
|
|
114
|
-
fireAnalytics(createLoadSucceededEvent(fileAttributes, _this.traceContext), _this.props);
|
|
114
|
+
fireAnalytics(createLoadSucceededEvent(fileAttributes, _this.traceContext), _this.props.createAnalyticsEvent);
|
|
115
115
|
succeedMediaFileUfoExperience({
|
|
116
116
|
fileAttributes: fileAttributes,
|
|
117
117
|
fileStateFlags: _this.fileStateFlags
|
|
@@ -127,7 +127,7 @@ export var ItemViewerBase = /*#__PURE__*/function (_React$Component) {
|
|
|
127
127
|
_defineProperty(_assertThisInitialized(_this), "onExternalImgSuccess", function () {
|
|
128
128
|
fireAnalytics(createLoadSucceededEvent({
|
|
129
129
|
fileId: 'external-image'
|
|
130
|
-
}), _this.props);
|
|
130
|
+
}), _this.props.createAnalyticsEvent);
|
|
131
131
|
succeedMediaFileUfoExperience({
|
|
132
132
|
fileAttributes: {
|
|
133
133
|
fileId: 'external-image'
|
|
@@ -332,7 +332,8 @@ export var ItemViewerBase = /*#__PURE__*/function (_React$Component) {
|
|
|
332
332
|
value: function init(props) {
|
|
333
333
|
var _this3 = this;
|
|
334
334
|
var mediaClient = props.mediaClient,
|
|
335
|
-
identifier = props.identifier
|
|
335
|
+
identifier = props.identifier,
|
|
336
|
+
createAnalyticsEvent = props.createAnalyticsEvent;
|
|
336
337
|
if (isExternalImageIdentifier(identifier)) {
|
|
337
338
|
// external images do not need to talk to our backend,
|
|
338
339
|
// so therefore no need for media-client subscriptions.
|
|
@@ -343,7 +344,7 @@ export var ItemViewerBase = /*#__PURE__*/function (_React$Component) {
|
|
|
343
344
|
return;
|
|
344
345
|
}
|
|
345
346
|
var id = identifier.id;
|
|
346
|
-
fireAnalytics(createCommencedEvent(id, this.traceContext),
|
|
347
|
+
fireAnalytics(createCommencedEvent(id, this.traceContext), createAnalyticsEvent);
|
|
347
348
|
startMediaFileUfoExperience();
|
|
348
349
|
this.subscription = mediaClient.file.getFileState(id, {
|
|
349
350
|
collectionName: identifier.collectionName
|
package/dist/esm/media-viewer.js
CHANGED
|
@@ -37,16 +37,20 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
37
37
|
isSidebarVisible: false
|
|
38
38
|
});
|
|
39
39
|
_defineProperty(_assertThisInitialized(_this), "onShortcutClosed", function () {
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
var _this$props = _this.props,
|
|
41
|
+
onClose = _this$props.onClose,
|
|
42
|
+
createAnalyticsEvent = _this$props.createAnalyticsEvent;
|
|
43
|
+
fireAnalytics(createClosedEvent('escKey'), createAnalyticsEvent);
|
|
42
44
|
if (onClose) {
|
|
43
45
|
onClose();
|
|
44
46
|
}
|
|
45
47
|
});
|
|
46
48
|
_defineProperty(_assertThisInitialized(_this), "onContentClose", function (_e, analyticsEvent) {
|
|
47
|
-
var
|
|
49
|
+
var _this$props2 = _this.props,
|
|
50
|
+
onClose = _this$props2.onClose,
|
|
51
|
+
createAnalyticsEvent = _this$props2.createAnalyticsEvent;
|
|
48
52
|
if (analyticsEvent && analyticsEvent.payload && analyticsEvent.payload.actionSubject === 'button') {
|
|
49
|
-
fireAnalytics(createClosedEvent('button'),
|
|
53
|
+
fireAnalytics(createClosedEvent('button'), createAnalyticsEvent);
|
|
50
54
|
}
|
|
51
55
|
if (onClose) {
|
|
52
56
|
onClose();
|
|
@@ -81,29 +85,29 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
81
85
|
_createClass(MediaViewerComponent, [{
|
|
82
86
|
key: "UNSAFE_componentWillMount",
|
|
83
87
|
value: function UNSAFE_componentWillMount() {
|
|
84
|
-
fireAnalytics(createModalEvent(), this.props);
|
|
88
|
+
fireAnalytics(createModalEvent(), this.props.createAnalyticsEvent);
|
|
85
89
|
start('MediaViewer.SessionDuration');
|
|
86
90
|
}
|
|
87
91
|
}, {
|
|
88
92
|
key: "defaultSelectedItem",
|
|
89
93
|
get: function get() {
|
|
90
|
-
var _this$
|
|
91
|
-
items = _this$
|
|
92
|
-
selectedItem = _this$
|
|
94
|
+
var _this$props3 = this.props,
|
|
95
|
+
items = _this$props3.items,
|
|
96
|
+
selectedItem = _this$props3.selectedItem;
|
|
93
97
|
var firstItem = items[0];
|
|
94
98
|
return selectedItem || firstItem;
|
|
95
99
|
}
|
|
96
100
|
}, {
|
|
97
101
|
key: "render",
|
|
98
102
|
value: function render() {
|
|
99
|
-
var _this$
|
|
100
|
-
mediaClient = _this$
|
|
101
|
-
onClose = _this$
|
|
102
|
-
items = _this$
|
|
103
|
-
extensions = _this$
|
|
104
|
-
contextId = _this$
|
|
105
|
-
featureFlags = _this$
|
|
106
|
-
innerRef = _this$
|
|
103
|
+
var _this$props4 = this.props,
|
|
104
|
+
mediaClient = _this$props4.mediaClient,
|
|
105
|
+
onClose = _this$props4.onClose,
|
|
106
|
+
items = _this$props4.items,
|
|
107
|
+
extensions = _this$props4.extensions,
|
|
108
|
+
contextId = _this$props4.contextId,
|
|
109
|
+
featureFlags = _this$props4.featureFlags,
|
|
110
|
+
innerRef = _this$props4.innerRef;
|
|
107
111
|
var isSidebarVisible = this.state.isSidebarVisible;
|
|
108
112
|
var content = /*#__PURE__*/React.createElement("div", {
|
|
109
113
|
ref: innerRef
|
|
@@ -111,7 +115,7 @@ export var MediaViewerComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
111
115
|
"data-testid": "media-viewer-popup",
|
|
112
116
|
className: mediaViewerPopupClass
|
|
113
117
|
}, /*#__PURE__*/React.createElement(Shortcut, {
|
|
114
|
-
|
|
118
|
+
code: 'Escape',
|
|
115
119
|
handler: this.onShortcutClosed
|
|
116
120
|
}), /*#__PURE__*/React.createElement(Content, {
|
|
117
121
|
isSidebarVisible: isSidebarVisible,
|
package/dist/esm/navigation.js
CHANGED
|
@@ -34,11 +34,12 @@ export var NavigationBase = /*#__PURE__*/function (_Component) {
|
|
|
34
34
|
return function () {
|
|
35
35
|
var _this$props = _this.props,
|
|
36
36
|
onChange = _this$props.onChange,
|
|
37
|
-
items = _this$props.items
|
|
37
|
+
items = _this$props.items,
|
|
38
|
+
createAnalyticsEvent = _this$props.createAnalyticsEvent;
|
|
38
39
|
var selectedIndex = _this.selectedIndex;
|
|
39
40
|
var newItem = direction === 'next' ? items[selectedIndex + 1] : items[selectedIndex - 1];
|
|
40
41
|
if (newItem) {
|
|
41
|
-
fireAnalytics(createNavigatedEvent(direction, source, newItem),
|
|
42
|
+
fireAnalytics(createNavigatedEvent(direction, source, newItem), createAnalyticsEvent);
|
|
42
43
|
onChange(newItem);
|
|
43
44
|
}
|
|
44
45
|
};
|
|
@@ -75,7 +76,7 @@ export var NavigationBase = /*#__PURE__*/function (_Component) {
|
|
|
75
76
|
}, isLeftVisible ? /*#__PURE__*/React.createElement(Arrow, {
|
|
76
77
|
className: hideControlsClassName
|
|
77
78
|
}, /*#__PURE__*/React.createElement(Shortcut, {
|
|
78
|
-
|
|
79
|
+
code: 'ArrowLeft',
|
|
79
80
|
handler: prev('keyboard')
|
|
80
81
|
}), /*#__PURE__*/React.createElement(Button, {
|
|
81
82
|
testId: prevNavButtonId,
|
|
@@ -93,7 +94,7 @@ export var NavigationBase = /*#__PURE__*/function (_Component) {
|
|
|
93
94
|
})) : null), /*#__PURE__*/React.createElement(RightWrapper, null, isRightVisible ? /*#__PURE__*/React.createElement(Arrow, {
|
|
94
95
|
className: hideControlsClassName
|
|
95
96
|
}, /*#__PURE__*/React.createElement(Shortcut, {
|
|
96
|
-
|
|
97
|
+
code: 'ArrowRight',
|
|
97
98
|
handler: next('keyboard')
|
|
98
99
|
}), /*#__PURE__*/React.createElement(Button, {
|
|
99
100
|
testId: nextNavButtonId,
|
|
@@ -5,6 +5,7 @@ import { forwardRef, useMemo } from 'react';
|
|
|
5
5
|
import { arrowStyles, arrowsWrapperStyles, audioCoverStyles, audioPlayerStyles, audioStyles, baselineExtendStyles, blanketStyles, closeButtonWrapperStyles, contentWrapperStyles, customAudioPlayerWrapperStyles, customVideoPlayerWrapperStyles, defaultCoverWrapperStyles, downloadButtonWrapperStyles, errorImageStyles, errorMessageWrapperStyles, formattedMessageWrapperStyles, hdIconGroupWrapperStyles, hdIconWrapperStyles, headerStyles, headerWrapperStyles, imageWrapperStyles, imgStyles, leftHeaderStyles, leftWrapperStyles, listWrapperStyles, medatadataTextWrapperStyles, metadataFileNameStyles, metadataIconWrapperStyles, metadataSubTextStyles, metadataWrapperStyles, pdfWrapperStyles, rightHeaderStyles, rightWrapperStyles, sidebarWrapperStyles, spinnerWrapperStyles, videoStyles, zoomControlsWrapperStyles, zoomLevelIndicatorStyles, zoomWrapperStyles } from './styles';
|
|
6
6
|
import { TouchScrollable } from 'react-scrolllock';
|
|
7
7
|
import { useMergeRefs } from 'use-callback-ref';
|
|
8
|
+
// We are keeping this data-testid since JIRA is still using it in their codebase to perform checks. Before removing this, we need to ensure this 'media-viewer-popup' test id is not being used anywhere else in other codebases
|
|
8
9
|
export var Blanket = function Blanket(_ref) {
|
|
9
10
|
var datatestId = _ref['data-testid'],
|
|
10
11
|
className = _ref.className,
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { isExternalImageIdentifier, isErrorFileState } from '@atlaskit/media-client';
|
|
4
|
+
import { hideControlsClassName, messages, toHumanReadableMediaSize, MediaButton } from '@atlaskit/media-ui';
|
|
5
|
+
import { getLanguageType, getExtension, isCodeViewerItem } from '@atlaskit/media-ui/codeViewer';
|
|
6
|
+
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
7
|
+
import { Outcome } from '../domain';
|
|
8
|
+
import { Header as HeaderWrapper, LeftHeader, RightHeader, MetadataWrapper, MetadataSubText, MedatadataTextWrapper, MetadataIconWrapper, MetadataFileName, FormattedMessageWrapper } from '../styleWrappers';
|
|
9
|
+
import { ToolbarDownloadButton, DisabledToolbarDownloadButton } from '../download';
|
|
10
|
+
import { MediaFileStateError, useFileState, useMediaClient } from '@atlaskit/media-client-react';
|
|
11
|
+
import { MimeTypeIcon } from '@atlaskit/media-ui/mime-type-icon';
|
|
12
|
+
import { getFormat } from '../viewers/codeViewer/util';
|
|
13
|
+
import { MediaViewerError } from '../errors';
|
|
14
|
+
export var HeaderV2 = function HeaderV2(_ref) {
|
|
15
|
+
var _ref$isArchiveSideBar = _ref.isArchiveSideBarVisible,
|
|
16
|
+
isArchiveSideBarVisible = _ref$isArchiveSideBar === void 0 ? false : _ref$isArchiveSideBar,
|
|
17
|
+
extensions = _ref.extensions,
|
|
18
|
+
isSidebarVisible = _ref.isSidebarVisible,
|
|
19
|
+
onSidebarButtonClick = _ref.onSidebarButtonClick,
|
|
20
|
+
identifier = _ref.identifier,
|
|
21
|
+
onSetArchiveSideBarVisible = _ref.onSetArchiveSideBarVisible;
|
|
22
|
+
// States
|
|
23
|
+
var _useState = useState(Outcome.pending()),
|
|
24
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
25
|
+
item = _useState2[0],
|
|
26
|
+
setItem = _useState2[1];
|
|
27
|
+
|
|
28
|
+
// Refs and Hooks
|
|
29
|
+
var mediaClient = useMediaClient();
|
|
30
|
+
var _ref2 = identifier,
|
|
31
|
+
id = _ref2.id,
|
|
32
|
+
collectionName = _ref2.collectionName,
|
|
33
|
+
occurrenceKey = _ref2.occurrenceKey;
|
|
34
|
+
var _useFileState = useFileState(id, {
|
|
35
|
+
collectionName: collectionName,
|
|
36
|
+
occurrenceKey: occurrenceKey
|
|
37
|
+
}),
|
|
38
|
+
fileState = _useFileState.fileState;
|
|
39
|
+
var onSetArchiveSideBarVisibleRef = useRef(onSetArchiveSideBarVisible);
|
|
40
|
+
onSetArchiveSideBarVisibleRef.current = onSetArchiveSideBarVisible;
|
|
41
|
+
|
|
42
|
+
// previous values
|
|
43
|
+
useEffect(function () {
|
|
44
|
+
if (isExternalImageIdentifier(identifier)) {
|
|
45
|
+
var _identifier$name = identifier.name,
|
|
46
|
+
name = _identifier$name === void 0 ? identifier.dataURI : _identifier$name;
|
|
47
|
+
|
|
48
|
+
// Simulate a processing file state to render right metadata
|
|
49
|
+
var _fileState = {
|
|
50
|
+
status: 'processing',
|
|
51
|
+
id: name,
|
|
52
|
+
mediaType: 'image',
|
|
53
|
+
mimeType: 'image/',
|
|
54
|
+
name: name,
|
|
55
|
+
representations: {},
|
|
56
|
+
size: 0
|
|
57
|
+
};
|
|
58
|
+
setItem(Outcome.successful(_fileState));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (!fileState) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (fileState.status !== 'error') {
|
|
65
|
+
var _onSetArchiveSideBarV;
|
|
66
|
+
(_onSetArchiveSideBarV = onSetArchiveSideBarVisibleRef.current) === null || _onSetArchiveSideBarV === void 0 || _onSetArchiveSideBarV.call(onSetArchiveSideBarVisibleRef, !isErrorFileState(fileState) && fileState.mediaType === 'archive');
|
|
67
|
+
setItem(Outcome.successful(fileState));
|
|
68
|
+
} else {
|
|
69
|
+
var error = new MediaFileStateError(fileState.id, fileState.reason, fileState.message, fileState.details);
|
|
70
|
+
setItem(Outcome.failed(new MediaViewerError('header-fetch-metadata', error)));
|
|
71
|
+
}
|
|
72
|
+
}, [fileState, identifier]);
|
|
73
|
+
var renderFileTypeText = function renderFileTypeText(item) {
|
|
74
|
+
// render appropriate header if its a code/email item and the feature flag is enabled
|
|
75
|
+
if (isCodeViewerItem(item.name, item.mimeType)) {
|
|
76
|
+
// gather language and extension
|
|
77
|
+
// i.e test.py would have a language of 'python' and an extension of 'py'
|
|
78
|
+
var language = getLanguageType(item.name, item.mimeType);
|
|
79
|
+
var ext = getExtension(item.name);
|
|
80
|
+
|
|
81
|
+
// specific cases for if we want a certain word translated in other languages
|
|
82
|
+
switch (ext) {
|
|
83
|
+
case 'msg':
|
|
84
|
+
return /*#__PURE__*/React.createElement(FormattedMessage, messages.email);
|
|
85
|
+
case 'txt':
|
|
86
|
+
return /*#__PURE__*/React.createElement(FormattedMessage, messages.text);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// no need for translations in other languages
|
|
90
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, getFormat(language || 'unknown', ext));
|
|
91
|
+
}
|
|
92
|
+
var mediaType = item.mediaType;
|
|
93
|
+
var mediaTypeTranslationMap = {
|
|
94
|
+
doc: messages.document,
|
|
95
|
+
audio: messages.audio,
|
|
96
|
+
video: messages.video,
|
|
97
|
+
image: messages.image,
|
|
98
|
+
archive: messages.archive,
|
|
99
|
+
unknown: messages.unknown
|
|
100
|
+
};
|
|
101
|
+
var message = mediaTypeTranslationMap[mediaType || 'unknown'];
|
|
102
|
+
|
|
103
|
+
// Defaulting to unknown again since backend has more mediaTypes than the current supported ones
|
|
104
|
+
return /*#__PURE__*/React.createElement(FormattedMessage, message || messages.unknown);
|
|
105
|
+
};
|
|
106
|
+
return /*#__PURE__*/React.createElement(HeaderWrapper, {
|
|
107
|
+
isArchiveSideBarVisible: isArchiveSideBarVisible,
|
|
108
|
+
className: hideControlsClassName
|
|
109
|
+
}, /*#__PURE__*/React.createElement(LeftHeader, null, item.match({
|
|
110
|
+
successful: function successful(item) {
|
|
111
|
+
return !isErrorFileState(item) && /*#__PURE__*/React.createElement(MetadataWrapper, null, /*#__PURE__*/React.createElement(MetadataIconWrapper, null, /*#__PURE__*/React.createElement(MimeTypeIcon, {
|
|
112
|
+
testId: 'media-viewer-file-type-icon',
|
|
113
|
+
mediaType: item.mediaType,
|
|
114
|
+
mimeType: item.mimeType,
|
|
115
|
+
name: item.name
|
|
116
|
+
})), /*#__PURE__*/React.createElement(MedatadataTextWrapper, null, /*#__PURE__*/React.createElement(MetadataFileName, {
|
|
117
|
+
"data-testid": "media-viewer-file-name"
|
|
118
|
+
}, item.name || /*#__PURE__*/React.createElement(FormattedMessage, messages.unknown)), /*#__PURE__*/React.createElement(MetadataSubText, {
|
|
119
|
+
"data-testid": "media-viewer-file-metadata-text"
|
|
120
|
+
}, /*#__PURE__*/React.createElement(FormattedMessageWrapper, null, renderFileTypeText(item)), item.size ? ' · ' + toHumanReadableMediaSize(item.size) : '')));
|
|
121
|
+
},
|
|
122
|
+
pending: function pending() {
|
|
123
|
+
return null;
|
|
124
|
+
},
|
|
125
|
+
failed: function failed() {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
})), /*#__PURE__*/React.createElement(RightHeader, null, (extensions === null || extensions === void 0 ? void 0 : extensions.sidebar) && /*#__PURE__*/React.createElement(MediaButton, {
|
|
129
|
+
isSelected: isSidebarVisible,
|
|
130
|
+
testId: "media-viewer-sidebar-button",
|
|
131
|
+
onClick: onSidebarButtonClick,
|
|
132
|
+
iconBefore: extensions.sidebar.icon
|
|
133
|
+
}), item.match({
|
|
134
|
+
pending: function pending() {
|
|
135
|
+
return DisabledToolbarDownloadButton;
|
|
136
|
+
},
|
|
137
|
+
failed: function failed() {
|
|
138
|
+
return DisabledToolbarDownloadButton;
|
|
139
|
+
},
|
|
140
|
+
successful: function successful(item) {
|
|
141
|
+
return /*#__PURE__*/React.createElement(ToolbarDownloadButton, {
|
|
142
|
+
state: item,
|
|
143
|
+
identifier: identifier,
|
|
144
|
+
mediaClient: mediaClient
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
})));
|
|
148
|
+
};
|
|
149
|
+
export default injectIntl(HeaderV2);
|