@atlaskit/media-card 77.0.3 → 77.1.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 +101 -95
- package/dist/cjs/card/card.js +8 -10
- package/dist/cjs/card/cardAnalytics.js +6 -11
- package/dist/cjs/card/cardConstants.js +1 -2
- package/dist/cjs/card/cardLoader.js +1 -2
- package/dist/cjs/card/cardState.js +3 -5
- package/dist/cjs/card/cardSwitcher.js +1 -2
- package/dist/cjs/card/cardView.js +3 -5
- package/dist/cjs/card/classnames.js +2 -4
- package/dist/cjs/card/getCardPreview/cache.js +3 -6
- package/dist/cjs/card/getCardPreview/filePreviewStatus.js +3 -5
- package/dist/cjs/card/getCardPreview/helpers.js +4 -7
- package/dist/cjs/card/getCardPreview/index.js +13 -25
- package/dist/cjs/card/getCardStatus.js +3 -5
- package/dist/cjs/card/inlinePlayer.js +3 -6
- package/dist/cjs/card/inlinePlayerLazy.js +2 -3
- package/dist/cjs/card/inlinePlayerWrapper.js +2 -3
- package/dist/cjs/card/inlinePlayerWrapperStyles.js +2 -4
- package/dist/cjs/card/media-card-analytics-error-boundary.js +5 -6
- package/dist/cjs/card/ui/actionsBar/actionsBar.js +2 -3
- package/dist/cjs/card/ui/actionsBar/actionsBarWrapper.js +2 -3
- package/dist/cjs/card/ui/actionsBar/cardActions/cardActionButton.js +2 -3
- package/dist/cjs/card/ui/actionsBar/cardActions/cardActionIconButton.js +2 -3
- package/dist/cjs/card/ui/actionsBar/cardActions/cardActionsDropdownMenu.js +2 -3
- package/dist/cjs/card/ui/actionsBar/cardActions/cardActionsView.js +1 -2
- package/dist/cjs/card/ui/actionsBar/cardActions/styles.js +4 -7
- package/dist/cjs/card/ui/actionsBar/styles.js +3 -6
- package/dist/cjs/card/ui/blanket/blanket.js +4 -4
- package/dist/cjs/card/ui/blanket/styles.js +3 -6
- package/dist/cjs/card/ui/common.js +4 -7
- package/dist/cjs/card/ui/iconMessage/iconMessageWrapper.js +2 -3
- package/dist/cjs/card/ui/iconMessage/index.js +7 -13
- package/dist/cjs/card/ui/iconMessage/styles.js +1 -2
- package/dist/cjs/card/ui/iconWrapper/iconWrapper.js +2 -3
- package/dist/cjs/card/ui/iconWrapper/styles.js +1 -2
- package/dist/cjs/card/ui/imageRenderer/imageRenderer.js +2 -3
- package/dist/cjs/card/ui/playButton/playButton.js +2 -3
- package/dist/cjs/card/ui/playButton/playButtonBackground.js +2 -3
- package/dist/cjs/card/ui/playButton/playButtonWrapper.js +2 -3
- package/dist/cjs/card/ui/playButton/styles.js +5 -10
- package/dist/cjs/card/ui/progressBar/progressBar.js +3 -5
- package/dist/cjs/card/ui/progressBar/styledBar.js +2 -3
- package/dist/cjs/card/ui/progressBar/styles.js +1 -2
- package/dist/cjs/card/ui/styles.js +11 -21
- package/dist/cjs/card/ui/tickBox/styles.js +5 -9
- package/dist/cjs/card/ui/tickBox/tickBox.js +2 -3
- package/dist/cjs/card/ui/tickBox/tickBoxWrapper.js +2 -3
- package/dist/cjs/card/ui/titleBox/failedTitleBox.js +2 -3
- package/dist/cjs/card/ui/titleBox/styles.js +5 -10
- package/dist/cjs/card/ui/titleBox/titleBox.js +3 -5
- package/dist/cjs/card/ui/titleBox/titleBoxComponents.js +6 -11
- package/dist/cjs/card/ui/unhandledErrorCard/index.js +2 -3
- package/dist/cjs/card/ui/wrapper/styles.js +1 -2
- package/dist/cjs/card/ui/wrapper/wrapper.js +2 -3
- package/dist/cjs/card/v2/cardV2.js +10 -12
- package/dist/cjs/card/v2/cardV2Loader.js +1 -2
- package/dist/cjs/card/v2/cardViewV2.js +308 -0
- package/dist/cjs/errors.js +13 -25
- package/dist/cjs/inline/loader.js +2 -3
- package/dist/cjs/inline/mediaInlineAnalyticsErrorBoundary.js +3 -4
- package/dist/cjs/inline/mediaInlineCard.js +3 -5
- package/dist/cjs/inline/mediaInlineCardAnalytics.js +4 -7
- package/dist/cjs/types.js +2 -3
- package/dist/cjs/utils/analytics.js +23 -41
- package/dist/cjs/utils/cardDimensions.js +5 -9
- package/dist/cjs/utils/containsPixelUnit.js +2 -3
- package/dist/cjs/utils/dimensionComparer.js +3 -5
- package/dist/cjs/utils/document.js +2 -3
- package/dist/cjs/utils/generateUniqueId.js +2 -3
- package/dist/cjs/utils/getDataURIDimension.js +3 -5
- package/dist/cjs/utils/getElementDimension.js +2 -3
- package/dist/cjs/utils/getMediaCardCursor.js +2 -3
- package/dist/cjs/utils/globalScope/getSSRData.js +2 -3
- package/dist/cjs/utils/globalScope/globalScope.js +6 -11
- package/dist/cjs/utils/isValidPercentageUnit.js +2 -3
- package/dist/cjs/utils/lightCards/cardError.js +1 -2
- package/dist/cjs/utils/lightCards/cardLoading.js +2 -3
- package/dist/cjs/utils/lightCards/errorIcon/index.js +1 -2
- package/dist/cjs/utils/lightCards/errorIcon/styles.js +1 -2
- package/dist/cjs/utils/lightCards/getDimensionsWithDefault.js +2 -3
- package/dist/cjs/utils/lightCards/lightCardWrappers.js +2 -3
- package/dist/cjs/utils/lightCards/styles.js +2 -3
- package/dist/cjs/utils/metadata.js +2 -3
- package/dist/cjs/utils/mockIntersectionObserver.js +5 -6
- package/dist/cjs/utils/objectURLCache.js +4 -7
- package/dist/cjs/utils/preventClickThrough.js +2 -3
- package/dist/cjs/utils/printScript.js +3 -5
- package/dist/cjs/utils/ufoExperiences.js +3 -5
- package/dist/cjs/utils/videoIsPlayable.js +2 -3
- package/dist/cjs/utils/videoSnapshot.js +2 -3
- package/dist/cjs/utils/viewportDetector.js +2 -3
- package/dist/es2019/card/card.js +1 -1
- package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/es2019/card/ui/blanket/blanket.js +2 -1
- package/dist/es2019/card/ui/tickBox/styles.js +1 -1
- package/dist/es2019/card/v2/cardV2.js +3 -3
- package/dist/es2019/card/v2/cardViewV2.js +300 -0
- package/dist/es2019/inline/loader.js +1 -1
- package/dist/es2019/utils/ufoExperiences.js +1 -1
- package/dist/esm/card/card.js +5 -5
- package/dist/esm/card/media-card-analytics-error-boundary.js +4 -4
- package/dist/esm/card/ui/blanket/blanket.js +2 -1
- package/dist/esm/card/ui/tickBox/styles.js +1 -1
- package/dist/esm/card/v2/cardV2.js +7 -7
- package/dist/esm/card/v2/cardViewV2.js +299 -0
- package/dist/esm/inline/loader.js +1 -1
- package/dist/esm/inline/mediaInlineAnalyticsErrorBoundary.js +2 -2
- package/dist/esm/utils/analytics.js +4 -4
- package/dist/esm/utils/mockIntersectionObserver.js +3 -3
- package/dist/esm/utils/ufoExperiences.js +1 -1
- package/dist/types/card/v2/cardViewV2.d.ts +44 -0
- package/dist/types-ts4.5/card/v2/cardViewV2.d.ts +44 -0
- package/package.json +2 -2
|
@@ -11,6 +11,6 @@ export var getSelectedStyles = function getSelectedStyles(selected) {
|
|
|
11
11
|
|
|
12
12
|
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
|
|
13
13
|
export var wrapperStyles = function wrapperStyles(selected) {
|
|
14
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n font-size: 14px;\n width: 14px;\n height: 14px;\n position: absolute;\n top: 7px;\n left: 7px;\n border-radius: 20px;\n color: transparent;\n /* Enforce dimensions and position of \"tick\" icon */\n span {\n display: block;\n svg {\n height: 14px;\n }\n }\n ", "\n"])), transition(), getSelectedStyles(selected));
|
|
14
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n font-size: 14px;\n width: 14px;\n height: 14px;\n position: absolute;\n top: 7px;\n left: 7px;\n border-radius: 20px;\n color: transparent;\n /* Enforce dimensions and position of \"tick\" icon */\n span {\n display: block;\n svg {\n height: 14px;\n }\n }\n ", "\n"])), transition && transition(), getSelectedStyles(selected));
|
|
15
15
|
};
|
|
16
16
|
wrapperStyles.displayName = 'TickBoxWrapper';
|
|
@@ -22,7 +22,7 @@ import { getRandomHex } from '@atlaskit/media-common';
|
|
|
22
22
|
import { globalMediaEventEmitter, isDifferentIdentifier, isFileIdentifier, RECENTS_COLLECTION, isImageRepresentationReady, isExternalImageIdentifier, imageResizeModeToFileImageMode } from '@atlaskit/media-client';
|
|
23
23
|
import { MediaViewer } from '@atlaskit/media-viewer';
|
|
24
24
|
import { injectIntl, IntlProvider } from 'react-intl-next';
|
|
25
|
-
import {
|
|
25
|
+
import { CardViewV2 } from './cardViewV2';
|
|
26
26
|
import { ViewportDetector } from '../../utils/viewportDetector';
|
|
27
27
|
import { videoIsPlayable } from '../../utils/videoIsPlayable';
|
|
28
28
|
import { getRequestedDimensions } from '../../utils/getDataURIDimension';
|
|
@@ -41,7 +41,7 @@ import { completeUfoExperience, startUfoExperience } from '../../utils/ufoExperi
|
|
|
41
41
|
import { generateUniqueId } from '../../utils/generateUniqueId';
|
|
42
42
|
import { useFileState } from '@atlaskit/media-client-react';
|
|
43
43
|
var packageName = "@atlaskit/media-card";
|
|
44
|
-
var packageVersion = "77.0
|
|
44
|
+
var packageVersion = "77.1.0";
|
|
45
45
|
export var CardV2Base = /*#__PURE__*/function (_Component) {
|
|
46
46
|
_inherits(CardV2Base, _Component);
|
|
47
47
|
var _super = _createSuper(CardV2Base);
|
|
@@ -564,7 +564,7 @@ export var CardV2Base = /*#__PURE__*/function (_Component) {
|
|
|
564
564
|
// Force Media Image to always display img for SSR
|
|
565
565
|
var forceSyncDisplay = !!ssr;
|
|
566
566
|
var mediaCardCursor = getMediaCardCursor(!!useInlinePlayer, !!shouldOpenMediaViewer, status === 'error' || status === 'failed-processing', !!_this.state.cardPreview, metadata.mediaType);
|
|
567
|
-
var card = /*#__PURE__*/React.createElement(
|
|
567
|
+
var card = /*#__PURE__*/React.createElement(CardViewV2, {
|
|
568
568
|
status: cardStatusOverride || status,
|
|
569
569
|
error: error,
|
|
570
570
|
mediaItemType: mediaItemType,
|
|
@@ -749,7 +749,7 @@ export var CardV2Base = /*#__PURE__*/function (_Component) {
|
|
|
749
749
|
// and then check if the triggered listener is from the card
|
|
750
750
|
// that contains a div in current window.getSelection()
|
|
751
751
|
// won't work in IE11
|
|
752
|
-
(_getDocument = getDocument()) === null || _getDocument === void 0
|
|
752
|
+
(_getDocument = getDocument()) === null || _getDocument === void 0 || _getDocument.addEventListener('copy', this.fireCopiedEvent);
|
|
753
753
|
}
|
|
754
754
|
}, {
|
|
755
755
|
key: "componentDidUpdate",
|
|
@@ -876,7 +876,7 @@ export var CardV2Base = /*#__PURE__*/function (_Component) {
|
|
|
876
876
|
value: function componentWillUnmount() {
|
|
877
877
|
var _getDocument2;
|
|
878
878
|
this.hasBeenMounted = false;
|
|
879
|
-
(_getDocument2 = getDocument()) === null || _getDocument2 === void 0
|
|
879
|
+
(_getDocument2 = getDocument()) === null || _getDocument2 === void 0 || _getDocument2.removeEventListener('copy', this.fireCopiedEvent);
|
|
880
880
|
}
|
|
881
881
|
}, {
|
|
882
882
|
key: "updateStateForIdentifier",
|
|
@@ -919,8 +919,8 @@ export var CardV2Base = /*#__PURE__*/function (_Component) {
|
|
|
919
919
|
}, {
|
|
920
920
|
key: "fileAttributes",
|
|
921
921
|
get: function get() {
|
|
922
|
-
var _this$state6
|
|
923
|
-
return getFileAttributes(this.metadata, (_this$state6 = this.state) === null || _this$state6 === void 0
|
|
922
|
+
var _this$state6;
|
|
923
|
+
return getFileAttributes(this.metadata, (_this$state6 = this.state) === null || _this$state6 === void 0 || (_this$state6 = _this$state6.fileState) === null || _this$state6 === void 0 ? void 0 : _this$state6.status);
|
|
924
924
|
}
|
|
925
925
|
}, {
|
|
926
926
|
key: "fireOperationalEvent",
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
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
|
+
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
|
+
/** @jsx jsx */
|
|
6
|
+
import { jsx } from '@emotion/react';
|
|
7
|
+
import React, { useEffect, useState, useRef, useMemo } from 'react';
|
|
8
|
+
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
9
|
+
import { MimeTypeIcon } from '@atlaskit/media-ui/mime-type-icon';
|
|
10
|
+
import SpinnerIcon from '@atlaskit/spinner';
|
|
11
|
+
import Tooltip from '@atlaskit/tooltip';
|
|
12
|
+
import { messages } from '@atlaskit/media-ui';
|
|
13
|
+
import { defaultImageCardDimensions } from '../../utils/cardDimensions';
|
|
14
|
+
import { isValidPercentageUnit } from '../../utils/isValidPercentageUnit';
|
|
15
|
+
import { getElementDimension } from '../../utils/getElementDimension';
|
|
16
|
+
import { createAndFireMediaCardEvent } from '../../utils/analytics';
|
|
17
|
+
import { attachDetailsToActions } from '../actions';
|
|
18
|
+
import { cardImageContainerStyles, calcBreakpointSize } from '../ui/styles';
|
|
19
|
+
import { ImageRenderer } from '../ui/imageRenderer/imageRenderer';
|
|
20
|
+
import { TitleBox } from '../ui/titleBox/titleBox';
|
|
21
|
+
import { FailedTitleBox } from '../ui/titleBox/failedTitleBox';
|
|
22
|
+
import { ProgressBar } from '../ui/progressBar/progressBar';
|
|
23
|
+
import { PlayButton } from '../ui/playButton/playButton';
|
|
24
|
+
import { TickBox } from '../ui/tickBox/tickBox';
|
|
25
|
+
import { Blanket } from '../ui/blanket/blanket';
|
|
26
|
+
import { ActionsBar } from '../ui/actionsBar/actionsBar';
|
|
27
|
+
import { IconWrapper } from '../ui/iconWrapper/iconWrapper';
|
|
28
|
+
import { PreviewUnavailable, CreatingPreview, FailedToUpload, PreviewCurrentlyUnavailable, FailedToLoad } from '../ui/iconMessage';
|
|
29
|
+
import { isUploadError, isRateLimitedError, isPollingError } from '../../errors';
|
|
30
|
+
import { Wrapper } from '../ui/wrapper';
|
|
31
|
+
import { fileCardImageViewSelector } from '../classnames';
|
|
32
|
+
export var CardViewV2Base = function CardViewV2Base(_ref) {
|
|
33
|
+
var innerRef = _ref.innerRef,
|
|
34
|
+
onImageLoad = _ref.onImageLoad,
|
|
35
|
+
onImageError = _ref.onImageError,
|
|
36
|
+
dimensions = _ref.dimensions,
|
|
37
|
+
_ref$appearance = _ref.appearance,
|
|
38
|
+
appearance = _ref$appearance === void 0 ? 'auto' : _ref$appearance,
|
|
39
|
+
onClick = _ref.onClick,
|
|
40
|
+
onMouseEnter = _ref.onMouseEnter,
|
|
41
|
+
testId = _ref.testId,
|
|
42
|
+
metadata = _ref.metadata,
|
|
43
|
+
status = _ref.status,
|
|
44
|
+
selected = _ref.selected,
|
|
45
|
+
selectable = _ref.selectable,
|
|
46
|
+
cardPreview = _ref.cardPreview,
|
|
47
|
+
mediaCardCursor = _ref.mediaCardCursor,
|
|
48
|
+
shouldHideTooltip = _ref.shouldHideTooltip,
|
|
49
|
+
progress = _ref.progress,
|
|
50
|
+
alt = _ref.alt,
|
|
51
|
+
resizeMode = _ref.resizeMode,
|
|
52
|
+
onDisplayImage = _ref.onDisplayImage,
|
|
53
|
+
nativeLazyLoad = _ref.nativeLazyLoad,
|
|
54
|
+
forceSyncDisplay = _ref.forceSyncDisplay,
|
|
55
|
+
actions = _ref.actions,
|
|
56
|
+
disableOverlay = _ref.disableOverlay,
|
|
57
|
+
titleBoxBgColor = _ref.titleBoxBgColor,
|
|
58
|
+
titleBoxIcon = _ref.titleBoxIcon,
|
|
59
|
+
error = _ref.error,
|
|
60
|
+
disableAnimation = _ref.disableAnimation;
|
|
61
|
+
var _useState = useState(),
|
|
62
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
63
|
+
elementWidth = _useState2[0],
|
|
64
|
+
setElementWidth = _useState2[1];
|
|
65
|
+
var _useState3 = useState(false),
|
|
66
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
67
|
+
didImageRender = _useState4[0],
|
|
68
|
+
setDidImageRender = _useState4[1];
|
|
69
|
+
var divRef = useRef(null);
|
|
70
|
+
var prevCardPreviewRef = useRef();
|
|
71
|
+
var width = (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) || 0;
|
|
72
|
+
useEffect(function () {
|
|
73
|
+
// If the dimensions.width is a percentage, we need to transform it into a pixel value in order to get the right breakpoints applied.
|
|
74
|
+
if (width && isValidPercentageUnit(width) && !!divRef.current) {
|
|
75
|
+
var _elementWidth = getElementDimension(divRef.current, 'width');
|
|
76
|
+
setElementWidth(_elementWidth);
|
|
77
|
+
}
|
|
78
|
+
}, [width]);
|
|
79
|
+
useEffect(function () {
|
|
80
|
+
innerRef && !!divRef.current && innerRef(divRef.current);
|
|
81
|
+
}, [innerRef]);
|
|
82
|
+
useEffect(function () {
|
|
83
|
+
// We should only switch didImageRender to false when cardPreview goes undefined, not when it is changed. as this method could be triggered after onImageLoad callback, falling on a race condition
|
|
84
|
+
if (prevCardPreviewRef.current && !cardPreview) {
|
|
85
|
+
setDidImageRender(false);
|
|
86
|
+
}
|
|
87
|
+
prevCardPreviewRef.current = cardPreview;
|
|
88
|
+
}, [cardPreview]);
|
|
89
|
+
var handleOnImageLoad = function handleOnImageLoad(prevCardPreview) {
|
|
90
|
+
if (prevCardPreview.dataURI !== (cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI)) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
We render the icon & icon message always, even if there is cardPreview available.
|
|
96
|
+
If the image fails to load/render, the icon will remain, i.e. the user won't see a change until the root card decides to chage status to error.
|
|
97
|
+
If the image renders successfully, we switch this variable to hide the icon & icon message behind the thumbnail in case the image has transparency.
|
|
98
|
+
It is less likely that root component replaces a suceeded cardPreview for a failed one than the opposite case. Therefore we prefer to hide the icon instead show when the image fails, for a smoother transition
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
setDidImageRender(true);
|
|
102
|
+
onImageLoad === null || onImageLoad === void 0 || onImageLoad(cardPreview);
|
|
103
|
+
};
|
|
104
|
+
var handleOnImageError = function handleOnImageError(cardPreview) {
|
|
105
|
+
setDidImageRender(false);
|
|
106
|
+
onImageError === null || onImageError === void 0 || onImageError(cardPreview);
|
|
107
|
+
};
|
|
108
|
+
var breakpoint = useMemo(function () {
|
|
109
|
+
var width = elementWidth || (dimensions ? dimensions.width : '') || defaultImageCardDimensions.width;
|
|
110
|
+
return calcBreakpointSize(parseInt("".concat(width), 10));
|
|
111
|
+
}, [elementWidth, dimensions]);
|
|
112
|
+
var shouldRenderPlayButton = function shouldRenderPlayButton() {
|
|
113
|
+
var _ref2 = metadata || {},
|
|
114
|
+
mediaType = _ref2.mediaType;
|
|
115
|
+
if (mediaType !== 'video' || !cardPreview) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
};
|
|
120
|
+
var getRenderConfigByStatus = function getRenderConfigByStatus() {
|
|
121
|
+
var _ref3 = metadata || {},
|
|
122
|
+
name = _ref3.name,
|
|
123
|
+
mediaType = _ref3.mediaType;
|
|
124
|
+
var isZeroSize = metadata && metadata.size === 0;
|
|
125
|
+
var defaultConfig = {
|
|
126
|
+
renderTypeIcon: !didImageRender,
|
|
127
|
+
renderImageRenderer: !!cardPreview,
|
|
128
|
+
renderPlayButton: !!cardPreview && mediaType === 'video',
|
|
129
|
+
renderBlanket: !disableOverlay,
|
|
130
|
+
renderTitleBox: !disableOverlay && !!name,
|
|
131
|
+
renderTickBox: !disableOverlay && !!selectable
|
|
132
|
+
};
|
|
133
|
+
switch (status) {
|
|
134
|
+
case 'uploading':
|
|
135
|
+
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
136
|
+
renderBlanket: !disableOverlay || mediaType !== 'video',
|
|
137
|
+
isFixedBlanket: true,
|
|
138
|
+
renderProgressBar: true
|
|
139
|
+
});
|
|
140
|
+
case 'processing':
|
|
141
|
+
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
142
|
+
iconMessage: !didImageRender && !isZeroSize ? jsx(CreatingPreview, {
|
|
143
|
+
disableAnimation: disableAnimation
|
|
144
|
+
}) : undefined
|
|
145
|
+
});
|
|
146
|
+
case 'complete':
|
|
147
|
+
return defaultConfig;
|
|
148
|
+
case 'error':
|
|
149
|
+
case 'failed-processing':
|
|
150
|
+
var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
151
|
+
renderTypeIcon: true,
|
|
152
|
+
renderImageRenderer: false,
|
|
153
|
+
renderTitleBox: false,
|
|
154
|
+
renderPlayButton: false
|
|
155
|
+
});
|
|
156
|
+
var _iconMessage;
|
|
157
|
+
var _customTitleMessage;
|
|
158
|
+
var _ref4 = error || {},
|
|
159
|
+
secondaryError = _ref4.secondaryError;
|
|
160
|
+
if (isRateLimitedError(secondaryError) || isPollingError(secondaryError)) {
|
|
161
|
+
_iconMessage = jsx(PreviewCurrentlyUnavailable, null);
|
|
162
|
+
} else if (isUploadError(error)) {
|
|
163
|
+
_iconMessage = jsx(FailedToUpload, null);
|
|
164
|
+
_customTitleMessage = messages.failed_to_upload;
|
|
165
|
+
} else if (!metadata) {
|
|
166
|
+
_iconMessage = jsx(FailedToLoad, null);
|
|
167
|
+
} else {
|
|
168
|
+
_iconMessage = jsx(PreviewUnavailable, null);
|
|
169
|
+
}
|
|
170
|
+
if (!disableOverlay) {
|
|
171
|
+
var _renderFailedTitleBox = !name || !!_customTitleMessage;
|
|
172
|
+
return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
|
|
173
|
+
renderTitleBox: !!name && !_customTitleMessage,
|
|
174
|
+
renderFailedTitleBox: _renderFailedTitleBox,
|
|
175
|
+
iconMessage: !_renderFailedTitleBox ? _iconMessage : undefined,
|
|
176
|
+
customTitleMessage: _customTitleMessage
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
|
|
180
|
+
iconMessage: _iconMessage
|
|
181
|
+
});
|
|
182
|
+
case 'loading-preview':
|
|
183
|
+
case 'loading':
|
|
184
|
+
default:
|
|
185
|
+
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
186
|
+
renderPlayButton: false,
|
|
187
|
+
renderTypeIcon: false,
|
|
188
|
+
renderSpinner: !didImageRender
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
var _getRenderConfigBySta = getRenderConfigByStatus(),
|
|
193
|
+
renderTypeIcon = _getRenderConfigBySta.renderTypeIcon,
|
|
194
|
+
iconMessage = _getRenderConfigBySta.iconMessage,
|
|
195
|
+
renderImageRenderer = _getRenderConfigBySta.renderImageRenderer,
|
|
196
|
+
renderSpinner = _getRenderConfigBySta.renderSpinner,
|
|
197
|
+
renderPlayButton = _getRenderConfigBySta.renderPlayButton,
|
|
198
|
+
renderBlanket = _getRenderConfigBySta.renderBlanket,
|
|
199
|
+
renderProgressBar = _getRenderConfigBySta.renderProgressBar,
|
|
200
|
+
renderTitleBox = _getRenderConfigBySta.renderTitleBox,
|
|
201
|
+
renderFailedTitleBox = _getRenderConfigBySta.renderFailedTitleBox,
|
|
202
|
+
renderTickBox = _getRenderConfigBySta.renderTickBox,
|
|
203
|
+
isFixedBlanket = _getRenderConfigBySta.isFixedBlanket,
|
|
204
|
+
customTitleMessage = _getRenderConfigBySta.customTitleMessage;
|
|
205
|
+
var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
|
|
206
|
+
var isPlayButtonClickable = shouldRenderPlayButton() && !!disableOverlay;
|
|
207
|
+
var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
|
|
208
|
+
// Disable tooltip for Media Single
|
|
209
|
+
var shouldDisplayTooltip = !disableOverlay && !shouldHideTooltip;
|
|
210
|
+
var hasTitleBox = !!(renderTitleBox || renderFailedTitleBox);
|
|
211
|
+
var _ref5 = metadata || {},
|
|
212
|
+
mediaType = _ref5.mediaType,
|
|
213
|
+
mimeType = _ref5.mimeType,
|
|
214
|
+
name = _ref5.name,
|
|
215
|
+
createdAt = _ref5.createdAt;
|
|
216
|
+
var actionsWithDetails = metadata && actions ? attachDetailsToActions(actions, metadata) : [];
|
|
217
|
+
var content = jsx(React.Fragment, null, jsx("div", {
|
|
218
|
+
css: cardImageContainerStyles,
|
|
219
|
+
className: fileCardImageViewSelector,
|
|
220
|
+
"data-testid": fileCardImageViewSelector,
|
|
221
|
+
"data-test-media-name": name,
|
|
222
|
+
"data-test-status": status,
|
|
223
|
+
"data-test-progress": progress,
|
|
224
|
+
"data-test-selected": selected
|
|
225
|
+
}, renderTypeIcon && jsx(IconWrapper, {
|
|
226
|
+
breakpoint: breakpoint,
|
|
227
|
+
hasTitleBox: hasTitleBox
|
|
228
|
+
}, jsx(MimeTypeIcon, {
|
|
229
|
+
testId: "media-card-file-type-icon",
|
|
230
|
+
mediaType: mediaType,
|
|
231
|
+
mimeType: mimeType,
|
|
232
|
+
name: name
|
|
233
|
+
}), iconMessage), renderSpinner && jsx(IconWrapper, {
|
|
234
|
+
breakpoint: breakpoint,
|
|
235
|
+
hasTitleBox: hasTitleBox
|
|
236
|
+
}, jsx(SpinnerIcon, {
|
|
237
|
+
testId: "media-card-loading"
|
|
238
|
+
})), renderImageRenderer && !!cardPreview && jsx(ImageRenderer, {
|
|
239
|
+
cardPreview: cardPreview,
|
|
240
|
+
mediaType: (metadata === null || metadata === void 0 ? void 0 : metadata.mediaType) || 'unknown',
|
|
241
|
+
alt: alt,
|
|
242
|
+
resizeMode: resizeMode,
|
|
243
|
+
onDisplayImage: onDisplayImage,
|
|
244
|
+
onImageLoad: handleOnImageLoad,
|
|
245
|
+
onImageError: handleOnImageError,
|
|
246
|
+
nativeLazyLoad: nativeLazyLoad,
|
|
247
|
+
forceSyncDisplay: forceSyncDisplay
|
|
248
|
+
}), renderPlayButton && jsx(IconWrapper, {
|
|
249
|
+
breakpoint: breakpoint,
|
|
250
|
+
hasTitleBox: hasTitleBox
|
|
251
|
+
}, jsx(PlayButton, null)), renderBlanket && jsx(Blanket, {
|
|
252
|
+
isFixed: isFixedBlanket
|
|
253
|
+
}), renderTitleBox && name && jsx(TitleBox, {
|
|
254
|
+
name: name,
|
|
255
|
+
createdAt: createdAt,
|
|
256
|
+
breakpoint: breakpoint,
|
|
257
|
+
titleBoxIcon: titleBoxIcon,
|
|
258
|
+
titleBoxBgColor: titleBoxBgColor
|
|
259
|
+
}), renderFailedTitleBox && jsx(FailedTitleBox, {
|
|
260
|
+
breakpoint: breakpoint,
|
|
261
|
+
customMessage: customTitleMessage
|
|
262
|
+
}), renderProgressBar && jsx(ProgressBar, {
|
|
263
|
+
progress: progress,
|
|
264
|
+
breakpoint: breakpoint,
|
|
265
|
+
positionBottom: !hasTitleBox
|
|
266
|
+
}), renderTickBox && jsx(TickBox, {
|
|
267
|
+
selected: selected
|
|
268
|
+
})), disableOverlay || !actions || actions.length === 0 ? null : jsx(ActionsBar, {
|
|
269
|
+
actions: actionsWithDetails
|
|
270
|
+
}));
|
|
271
|
+
return jsx(Wrapper, {
|
|
272
|
+
testId: testId || 'media-card-view',
|
|
273
|
+
dimensions: dimensions,
|
|
274
|
+
appearance: appearance,
|
|
275
|
+
onClick: onClick,
|
|
276
|
+
onMouseEnter: onMouseEnter,
|
|
277
|
+
innerRef: divRef,
|
|
278
|
+
breakpoint: breakpoint,
|
|
279
|
+
mediaCardCursor: mediaCardCursor,
|
|
280
|
+
disableOverlay: !!disableOverlay,
|
|
281
|
+
selected: !!selected,
|
|
282
|
+
displayBackground: shouldDisplayBackground,
|
|
283
|
+
isPlayButtonClickable: isPlayButtonClickable,
|
|
284
|
+
isTickBoxSelectable: isTickBoxSelectable,
|
|
285
|
+
shouldDisplayTooltip: shouldDisplayTooltip
|
|
286
|
+
}, shouldDisplayTooltip ? jsx(Tooltip, {
|
|
287
|
+
content: name,
|
|
288
|
+
position: "bottom",
|
|
289
|
+
tag: "div"
|
|
290
|
+
}, content) : content);
|
|
291
|
+
};
|
|
292
|
+
export var CardViewV2 = withAnalyticsEvents({
|
|
293
|
+
onClick: createAndFireMediaCardEvent({
|
|
294
|
+
eventType: 'ui',
|
|
295
|
+
action: 'clicked',
|
|
296
|
+
actionSubject: 'mediaCard',
|
|
297
|
+
attributes: {}
|
|
298
|
+
})
|
|
299
|
+
})(CardViewV2Base);
|
|
@@ -103,7 +103,7 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
103
103
|
ErrorBoundary = _this$state.ErrorBoundary;
|
|
104
104
|
var analyticsContext = {
|
|
105
105
|
packageVersion: "@atlaskit/media-card",
|
|
106
|
-
packageName: "77.0
|
|
106
|
+
packageName: "77.1.0",
|
|
107
107
|
componentName: 'mediaInlineCard',
|
|
108
108
|
component: 'mediaInlineCard'
|
|
109
109
|
};
|
|
@@ -69,7 +69,7 @@ var WrappedMediaInlineAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Com
|
|
|
69
69
|
_classCallCheck(this, WrappedMediaInlineAnalyticsErrorBoundary);
|
|
70
70
|
_this = _super.call(this, props);
|
|
71
71
|
_defineProperty(_assertThisInitialized(_this), "fireOperationalEvent", function (error, info) {
|
|
72
|
-
var _window
|
|
72
|
+
var _window;
|
|
73
73
|
var _this$props = _this.props,
|
|
74
74
|
_this$props$data = _this$props.data,
|
|
75
75
|
data = _this$props$data === void 0 ? {} : _this$props$data,
|
|
@@ -79,7 +79,7 @@ var WrappedMediaInlineAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Com
|
|
|
79
79
|
action: 'failed',
|
|
80
80
|
actionSubject: 'mediaInlineRender',
|
|
81
81
|
attributes: _objectSpread({
|
|
82
|
-
browserInfo: (_window = window) !== null && _window !== void 0 && (_window
|
|
82
|
+
browserInfo: (_window = window) !== null && _window !== void 0 && (_window = _window.navigator) !== null && _window !== void 0 && _window.userAgent ? window.navigator.userAgent : 'unknown',
|
|
83
83
|
error: error,
|
|
84
84
|
failReason: 'unexpected-error',
|
|
85
85
|
info: info
|
|
@@ -117,8 +117,8 @@ export var getErrorTraceContext = function getErrorTraceContext(error) {
|
|
|
117
117
|
var _error$secondaryError;
|
|
118
118
|
return (_error$secondaryError = error.secondaryError.metadata) === null || _error$secondaryError === void 0 ? void 0 : _error$secondaryError.traceContext;
|
|
119
119
|
} else if (isMediaFileStateError(error.secondaryError)) {
|
|
120
|
-
var _error$secondaryError2
|
|
121
|
-
return (_error$secondaryError2 = error.secondaryError.details) === null || _error$secondaryError2 === void 0
|
|
120
|
+
var _error$secondaryError2;
|
|
121
|
+
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;
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
};
|
|
@@ -127,8 +127,8 @@ export var getRenderErrorRequestMetadata = function getRenderErrorRequestMetadat
|
|
|
127
127
|
if (isRequestError(error.secondaryError)) {
|
|
128
128
|
return error.secondaryError.metadata;
|
|
129
129
|
} else if (isMediaFileStateError(error.secondaryError)) {
|
|
130
|
-
var _error$
|
|
131
|
-
return (_error$
|
|
130
|
+
var _error$secondaryError3;
|
|
131
|
+
return (_error$secondaryError3 = error.secondaryError.details) === null || _error$secondaryError3 === void 0 ? void 0 : _error$secondaryError3.metadata;
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
};
|
|
@@ -15,15 +15,15 @@ export var MockIntersectionObserver = /*#__PURE__*/function () {
|
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
16
16
|
var outerThis = this;
|
|
17
17
|
this.mockObserver = /*#__PURE__*/function () {
|
|
18
|
-
function
|
|
19
|
-
_classCallCheck(this,
|
|
18
|
+
function _class3(callback) {
|
|
19
|
+
_classCallCheck(this, _class3);
|
|
20
20
|
_defineProperty(this, "observe", observe !== null && observe !== void 0 ? observe : noop);
|
|
21
21
|
_defineProperty(this, "unobserve", noop);
|
|
22
22
|
_defineProperty(this, "disconnect", disconnect !== null && disconnect !== void 0 ? disconnect : noop);
|
|
23
23
|
outerThis.callback = callback;
|
|
24
24
|
outerThis.mockObserverInstance = this;
|
|
25
25
|
}
|
|
26
|
-
return _createClass(
|
|
26
|
+
return _createClass(_class3);
|
|
27
27
|
}();
|
|
28
28
|
}
|
|
29
29
|
}, {
|
|
@@ -7,7 +7,7 @@ import { extractErrorInfo, getRenderErrorRequestMetadata } from './analytics';
|
|
|
7
7
|
import { MediaCardError } from '../errors';
|
|
8
8
|
import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
|
|
9
9
|
var packageName = "@atlaskit/media-card";
|
|
10
|
-
var packageVersion = "77.0
|
|
10
|
+
var packageVersion = "77.1.0";
|
|
11
11
|
var concurrentExperience;
|
|
12
12
|
var getExperience = function getExperience(id) {
|
|
13
13
|
if (!concurrentExperience) {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/react';
|
|
3
|
+
import React, { MouseEvent } from 'react';
|
|
4
|
+
import { MessageDescriptor } from 'react-intl-next';
|
|
5
|
+
import { MediaItemType, FileDetails } from '@atlaskit/media-client';
|
|
6
|
+
import { WithAnalyticsEventsProps, UIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
7
|
+
import { SharedCardProps, CardStatus, CardPreview, MediaCardCursor } from '../../types';
|
|
8
|
+
import { MediaCardError } from '../../errors';
|
|
9
|
+
export interface CardViewV2OwnProps extends SharedCardProps {
|
|
10
|
+
readonly status: CardStatus;
|
|
11
|
+
readonly mediaItemType: MediaItemType;
|
|
12
|
+
readonly mediaCardCursor?: MediaCardCursor;
|
|
13
|
+
readonly metadata?: FileDetails;
|
|
14
|
+
readonly error?: MediaCardError;
|
|
15
|
+
readonly onClick?: (event: React.MouseEvent<HTMLDivElement>, analyticsEvent?: UIAnalyticsEvent) => void;
|
|
16
|
+
readonly onMouseEnter?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
17
|
+
readonly onDisplayImage?: () => void;
|
|
18
|
+
readonly cardPreview?: CardPreview;
|
|
19
|
+
readonly progress?: number;
|
|
20
|
+
readonly innerRef?: (instance: HTMLDivElement | null) => void;
|
|
21
|
+
readonly onImageLoad?: (cardPreview: CardPreview) => void;
|
|
22
|
+
readonly onImageError?: (cardPreview: CardPreview) => void;
|
|
23
|
+
readonly nativeLazyLoad?: boolean;
|
|
24
|
+
readonly forceSyncDisplay?: boolean;
|
|
25
|
+
disableAnimation?: boolean;
|
|
26
|
+
shouldHideTooltip?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export type CardViewV2Props = CardViewV2OwnProps & WithAnalyticsEventsProps;
|
|
29
|
+
export interface RenderConfigByStatusV2 {
|
|
30
|
+
renderTypeIcon?: boolean;
|
|
31
|
+
iconMessage?: JSX.Element;
|
|
32
|
+
renderImageRenderer?: boolean;
|
|
33
|
+
renderPlayButton?: boolean;
|
|
34
|
+
renderTitleBox?: boolean;
|
|
35
|
+
renderBlanket?: boolean;
|
|
36
|
+
isFixedBlanket?: boolean;
|
|
37
|
+
renderProgressBar?: boolean;
|
|
38
|
+
renderSpinner?: boolean;
|
|
39
|
+
renderFailedTitleBox?: boolean;
|
|
40
|
+
renderTickBox?: boolean;
|
|
41
|
+
customTitleMessage?: MessageDescriptor;
|
|
42
|
+
}
|
|
43
|
+
export declare const CardViewV2Base: ({ innerRef, onImageLoad, onImageError, dimensions, appearance, onClick, onMouseEnter, testId, metadata, status, selected, selectable, cardPreview, mediaCardCursor, shouldHideTooltip, progress, alt, resizeMode, onDisplayImage, nativeLazyLoad, forceSyncDisplay, actions, disableOverlay, titleBoxBgColor, titleBoxIcon, error, disableAnimation, }: CardViewV2Props) => jsx.JSX.Element;
|
|
44
|
+
export declare const CardViewV2: React.ForwardRefExoticComponent<Omit<CardViewV2Props, keyof WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/react';
|
|
3
|
+
import React, { MouseEvent } from 'react';
|
|
4
|
+
import { MessageDescriptor } from 'react-intl-next';
|
|
5
|
+
import { MediaItemType, FileDetails } from '@atlaskit/media-client';
|
|
6
|
+
import { WithAnalyticsEventsProps, UIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
7
|
+
import { SharedCardProps, CardStatus, CardPreview, MediaCardCursor } from '../../types';
|
|
8
|
+
import { MediaCardError } from '../../errors';
|
|
9
|
+
export interface CardViewV2OwnProps extends SharedCardProps {
|
|
10
|
+
readonly status: CardStatus;
|
|
11
|
+
readonly mediaItemType: MediaItemType;
|
|
12
|
+
readonly mediaCardCursor?: MediaCardCursor;
|
|
13
|
+
readonly metadata?: FileDetails;
|
|
14
|
+
readonly error?: MediaCardError;
|
|
15
|
+
readonly onClick?: (event: React.MouseEvent<HTMLDivElement>, analyticsEvent?: UIAnalyticsEvent) => void;
|
|
16
|
+
readonly onMouseEnter?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
17
|
+
readonly onDisplayImage?: () => void;
|
|
18
|
+
readonly cardPreview?: CardPreview;
|
|
19
|
+
readonly progress?: number;
|
|
20
|
+
readonly innerRef?: (instance: HTMLDivElement | null) => void;
|
|
21
|
+
readonly onImageLoad?: (cardPreview: CardPreview) => void;
|
|
22
|
+
readonly onImageError?: (cardPreview: CardPreview) => void;
|
|
23
|
+
readonly nativeLazyLoad?: boolean;
|
|
24
|
+
readonly forceSyncDisplay?: boolean;
|
|
25
|
+
disableAnimation?: boolean;
|
|
26
|
+
shouldHideTooltip?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export type CardViewV2Props = CardViewV2OwnProps & WithAnalyticsEventsProps;
|
|
29
|
+
export interface RenderConfigByStatusV2 {
|
|
30
|
+
renderTypeIcon?: boolean;
|
|
31
|
+
iconMessage?: JSX.Element;
|
|
32
|
+
renderImageRenderer?: boolean;
|
|
33
|
+
renderPlayButton?: boolean;
|
|
34
|
+
renderTitleBox?: boolean;
|
|
35
|
+
renderBlanket?: boolean;
|
|
36
|
+
isFixedBlanket?: boolean;
|
|
37
|
+
renderProgressBar?: boolean;
|
|
38
|
+
renderSpinner?: boolean;
|
|
39
|
+
renderFailedTitleBox?: boolean;
|
|
40
|
+
renderTickBox?: boolean;
|
|
41
|
+
customTitleMessage?: MessageDescriptor;
|
|
42
|
+
}
|
|
43
|
+
export declare const CardViewV2Base: ({ innerRef, onImageLoad, onImageError, dimensions, appearance, onClick, onMouseEnter, testId, metadata, status, selected, selectable, cardPreview, mediaCardCursor, shouldHideTooltip, progress, alt, resizeMode, onDisplayImage, nativeLazyLoad, forceSyncDisplay, actions, disableOverlay, titleBoxBgColor, titleBoxIcon, error, disableAnimation, }: CardViewV2Props) => jsx.JSX.Element;
|
|
44
|
+
export declare const CardViewV2: React.ForwardRefExoticComponent<Omit<CardViewV2Props, keyof WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/media-card",
|
|
3
|
-
"version": "77.0
|
|
3
|
+
"version": "77.1.0",
|
|
4
4
|
"description": "Includes all media card related components, CardView, CardViewSmall, Card...",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@atlaskit/analytics-next": "^9.1.0",
|
|
40
40
|
"@atlaskit/dropdown-menu": "^11.14.0",
|
|
41
|
-
"@atlaskit/editor-shared-styles": "^2.
|
|
41
|
+
"@atlaskit/editor-shared-styles": "^2.8.0",
|
|
42
42
|
"@atlaskit/icon": "^21.12.0",
|
|
43
43
|
"@atlaskit/media-client": "^24.0.0",
|
|
44
44
|
"@atlaskit/media-client-react": "^1.0.0",
|