@atlaskit/smart-card 21.2.0 → 22.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 +56 -0
- package/dist/cjs/extractors/block/index.js +6 -7
- package/dist/cjs/extractors/common/actions/extractPreviewAction.js +16 -19
- package/dist/cjs/state/actions/index.js +54 -10
- package/dist/cjs/state/analytics/types.js +5 -0
- package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +429 -109
- package/dist/cjs/state/hooks-external/useSmartLinkActions.js +5 -3
- package/dist/cjs/utils/analytics/analytics.js +241 -74
- package/dist/cjs/utils/analytics/index.js +32 -5
- package/dist/cjs/utils/mocks.js +28 -2
- package/dist/cjs/version.json +1 -1
- package/dist/cjs/view/BlockCard/actions/PreviewAction.js +2 -2
- package/dist/cjs/view/BlockCard/index.js +6 -5
- package/dist/cjs/view/CardWithUrl/component.js +27 -5
- package/dist/cjs/view/CardWithUrl/loader.js +6 -1
- package/dist/cjs/view/EmbedCard/index.js +3 -2
- package/dist/cjs/view/EmbedModal/components/analytics/index.js +100 -0
- package/dist/cjs/view/EmbedModal/components/analytics/types.js +5 -0
- package/dist/cjs/view/EmbedModal/components/size-experiment/index.js +5 -10
- package/dist/cjs/view/EmbedModal/index.js +54 -15
- package/dist/cjs/view/EmbedModal/types.js +9 -1
- package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +17 -3
- package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +5 -2
- package/dist/cjs/view/FlexibleCard/components/common/image-icon/index.js +4 -2
- package/dist/cjs/view/FlexibleCard/components/common/loading-skeleton/index.js +1 -2
- package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +5 -2
- package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +11 -3
- package/dist/cjs/view/HoverCard/components/HoverCardContent.js +36 -8
- package/dist/cjs/view/HoverCard/components/SnippetOrPreview.js +74 -0
- package/dist/cjs/view/HoverCard/index.js +6 -1
- package/dist/cjs/view/HoverCard/styled.js +11 -3
- package/dist/cjs/view/common/Modal.js +29 -4
- package/dist/cjs/view/common/ModalHeader.js +3 -2
- package/dist/es2019/extractors/block/index.js +6 -7
- package/dist/es2019/extractors/common/actions/extractPreviewAction.js +16 -10
- package/dist/es2019/state/actions/index.js +54 -10
- package/dist/es2019/state/analytics/types.js +1 -0
- package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +424 -41
- package/dist/es2019/state/hooks-external/useSmartLinkActions.js +5 -3
- package/dist/es2019/utils/analytics/analytics.js +254 -79
- package/dist/es2019/utils/analytics/index.js +32 -4
- package/dist/es2019/utils/mocks.js +26 -1
- package/dist/es2019/version.json +1 -1
- package/dist/es2019/view/BlockCard/actions/PreviewAction.js +3 -3
- package/dist/es2019/view/BlockCard/index.js +5 -4
- package/dist/es2019/view/CardWithUrl/component.js +27 -5
- package/dist/es2019/view/CardWithUrl/loader.js +6 -1
- package/dist/es2019/view/EmbedCard/index.js +3 -2
- package/dist/es2019/view/EmbedModal/components/analytics/index.js +80 -0
- package/dist/es2019/view/EmbedModal/components/analytics/types.js +1 -0
- package/dist/es2019/view/EmbedModal/components/size-experiment/index.js +5 -9
- package/dist/es2019/view/EmbedModal/index.js +46 -13
- package/dist/es2019/view/EmbedModal/types.js +6 -1
- package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +17 -7
- package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +4 -1
- package/dist/es2019/view/FlexibleCard/components/common/image-icon/index.js +4 -2
- package/dist/es2019/view/FlexibleCard/components/common/loading-skeleton/index.js +2 -3
- package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +5 -2
- package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +11 -3
- package/dist/es2019/view/HoverCard/components/HoverCardContent.js +36 -10
- package/dist/es2019/view/HoverCard/components/SnippetOrPreview.js +42 -0
- package/dist/es2019/view/HoverCard/index.js +6 -1
- package/dist/es2019/view/HoverCard/styled.js +8 -0
- package/dist/es2019/view/common/Modal.js +27 -6
- package/dist/es2019/view/common/ModalHeader.js +3 -2
- package/dist/esm/extractors/block/index.js +6 -7
- package/dist/esm/extractors/common/actions/extractPreviewAction.js +17 -19
- package/dist/esm/state/actions/index.js +54 -10
- package/dist/esm/state/analytics/types.js +1 -0
- package/dist/esm/state/analytics/useSmartLinkAnalytics.js +428 -111
- package/dist/esm/state/hooks-external/useSmartLinkActions.js +5 -3
- package/dist/esm/utils/analytics/analytics.js +241 -74
- package/dist/esm/utils/analytics/index.js +31 -4
- package/dist/esm/utils/mocks.js +25 -0
- package/dist/esm/version.json +1 -1
- package/dist/esm/view/BlockCard/actions/PreviewAction.js +3 -3
- package/dist/esm/view/BlockCard/index.js +5 -4
- package/dist/esm/view/CardWithUrl/component.js +27 -5
- package/dist/esm/view/CardWithUrl/loader.js +6 -1
- package/dist/esm/view/EmbedCard/index.js +3 -2
- package/dist/esm/view/EmbedModal/components/analytics/index.js +82 -0
- package/dist/esm/view/EmbedModal/components/analytics/types.js +1 -0
- package/dist/esm/view/EmbedModal/components/size-experiment/index.js +5 -10
- package/dist/esm/view/EmbedModal/index.js +52 -15
- package/dist/esm/view/EmbedModal/types.js +6 -1
- package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +11 -3
- package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +5 -2
- package/dist/esm/view/FlexibleCard/components/common/image-icon/index.js +4 -2
- package/dist/esm/view/FlexibleCard/components/common/loading-skeleton/index.js +1 -2
- package/dist/esm/view/FlexibleCard/components/elements/media/index.js +5 -2
- package/dist/esm/view/HoverCard/components/HoverCardComponent.js +11 -3
- package/dist/esm/view/HoverCard/components/HoverCardContent.js +36 -10
- package/dist/esm/view/HoverCard/components/SnippetOrPreview.js +53 -0
- package/dist/esm/view/HoverCard/index.js +6 -1
- package/dist/esm/view/HoverCard/styled.js +6 -2
- package/dist/esm/view/common/Modal.js +28 -6
- package/dist/esm/view/common/ModalHeader.js +3 -2
- package/dist/types/extractors/block/types.d.ts +4 -2
- package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +7 -5
- package/dist/types/state/analytics/types.d.ts +9 -0
- package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +41 -24
- package/dist/types/state/hooks/useSmartLink.d.ts +26 -18
- package/dist/types/state/hooks-external/useSmartLinkActions.d.ts +6 -2
- package/dist/types/utils/analytics/analytics.d.ts +19 -21
- package/dist/types/utils/analytics/index.d.ts +2 -2
- package/dist/types/utils/analytics/types.d.ts +91 -0
- package/dist/types/utils/mocks.d.ts +48 -0
- package/dist/types/utils/types.d.ts +3 -1
- package/dist/types/view/BlockCard/actions/PreviewAction.d.ts +4 -0
- package/dist/types/view/BlockCard/index.d.ts +2 -2
- package/dist/types/view/BlockCard/types.d.ts +4 -4
- package/dist/types/view/Card/index.d.ts +1 -1
- package/dist/types/view/EmbedCard/types.d.ts +2 -2
- package/dist/types/view/EmbedModal/components/analytics/index.d.ts +5 -0
- package/dist/types/view/EmbedModal/components/analytics/types.d.ts +6 -0
- package/dist/types/view/EmbedModal/components/size-experiment/index.d.ts +4 -3
- package/dist/types/view/EmbedModal/index.d.ts +3 -1
- package/dist/types/view/EmbedModal/types.d.ts +14 -4
- package/dist/types/view/FlexibleCard/components/blocks/preview-block/types.d.ts +7 -1
- package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +15 -0
- package/dist/types/view/FlexibleCard/components/common/image-icon/types.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/elements/media/types.d.ts +5 -0
- package/dist/types/view/HoverCard/components/SnippetOrPreview.d.ts +4 -0
- package/dist/types/view/HoverCard/styled.d.ts +2 -0
- package/dist/types/view/HoverCard/types.d.ts +5 -0
- package/dist/types/view/common/Modal.d.ts +6 -8
- package/package.json +1 -1
- package/report.api.md +324 -108
|
@@ -90,9 +90,9 @@ function _previewFunction() {
|
|
|
90
90
|
_reactDom.default.render( /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
|
|
91
91
|
locale: "en"
|
|
92
92
|
}, /*#__PURE__*/_react.default.createElement(Modal.default, (0, _extends2.default)({}, rest, {
|
|
93
|
-
onClose: function onClose() {
|
|
93
|
+
onClose: function onClose(context) {
|
|
94
94
|
if (popupMountPoint) {
|
|
95
|
-
_onClose();
|
|
95
|
+
_onClose(context);
|
|
96
96
|
|
|
97
97
|
_reactDom.default.unmountComponentAtNode(popupMountPoint);
|
|
98
98
|
}
|
|
@@ -75,8 +75,6 @@ var _context = require("../../extractors/common/context");
|
|
|
75
75
|
|
|
76
76
|
var _LinkView = require("../LinkView");
|
|
77
77
|
|
|
78
|
-
var _PreviewAction = _interopRequireDefault(require("./actions/PreviewAction"));
|
|
79
|
-
|
|
80
78
|
var _AuthorizeAction = require("./actions/AuthorizeAction");
|
|
81
79
|
|
|
82
80
|
var _ForbiddenAction = require("./actions/ForbiddenAction");
|
|
@@ -95,6 +93,8 @@ var _ErroredView = require("./views/ErroredView");
|
|
|
95
93
|
|
|
96
94
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
97
95
|
|
|
96
|
+
var _PreviewAction = _interopRequireDefault(require("./actions/PreviewAction"));
|
|
97
|
+
|
|
98
98
|
var BlockCard = function BlockCard(_ref) {
|
|
99
99
|
var _details$meta, _forbiddenViewProps$c;
|
|
100
100
|
|
|
@@ -106,7 +106,6 @@ var BlockCard = function BlockCard(_ref) {
|
|
|
106
106
|
handleAuthorize = _ref.handleAuthorize,
|
|
107
107
|
handleErrorRetry = _ref.handleErrorRetry,
|
|
108
108
|
handleFrameClick = _ref.handleFrameClick,
|
|
109
|
-
handleAnalytics = _ref.handleAnalytics,
|
|
110
109
|
handleInvoke = _ref.handleInvoke,
|
|
111
110
|
renderers = _ref.renderers,
|
|
112
111
|
isSelected = _ref.isSelected,
|
|
@@ -114,7 +113,8 @@ var BlockCard = function BlockCard(_ref) {
|
|
|
114
113
|
onError = _ref.onError,
|
|
115
114
|
testId = _ref.testId,
|
|
116
115
|
showActions = _ref.showActions,
|
|
117
|
-
platform = _ref.platform
|
|
116
|
+
platform = _ref.platform,
|
|
117
|
+
analytics = _ref.analytics;
|
|
118
118
|
// Actions do not have access to the react tree, so we need to obtain
|
|
119
119
|
// feature flags here where we still can access SmartLinkContext context
|
|
120
120
|
// and pass the flags down to the extractor. See PreviewAction.tsx for details.
|
|
@@ -125,8 +125,9 @@ var BlockCard = function BlockCard(_ref) {
|
|
|
125
125
|
var data = details && details.data || (0, _jsonld.getEmptyJsonLd)();
|
|
126
126
|
var meta = details && details.meta;
|
|
127
127
|
var extractorOpts = {
|
|
128
|
+
analytics: analytics,
|
|
129
|
+
origin: 'smartLinkCard',
|
|
128
130
|
featureFlags: featureFlags,
|
|
129
|
-
handleAnalytics: handleAnalytics,
|
|
130
131
|
handleInvoke: handleInvoke,
|
|
131
132
|
extensionKey: (0, _helpers.getExtensionKey)(details)
|
|
132
133
|
};
|
|
@@ -90,7 +90,16 @@ function CardWithUrlContent(_ref) {
|
|
|
90
90
|
}, [state.details, url]);
|
|
91
91
|
var handleClickWrapper = (0, _react.useCallback)(function (event) {
|
|
92
92
|
var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
|
|
93
|
-
analytics.ui.cardClickedEvent(
|
|
93
|
+
analytics.ui.cardClickedEvent({
|
|
94
|
+
id: id,
|
|
95
|
+
display: isFlexibleUi ? 'flexible' : appearance,
|
|
96
|
+
status: state.status,
|
|
97
|
+
definitionId: definitionId,
|
|
98
|
+
extensionKey: extensionKey,
|
|
99
|
+
isModifierKeyPressed: isModifierKeyPressed,
|
|
100
|
+
destinationProduct: product,
|
|
101
|
+
destinationSubproduct: subproduct
|
|
102
|
+
});
|
|
94
103
|
|
|
95
104
|
if (onClick) {
|
|
96
105
|
onClick(event);
|
|
@@ -114,7 +123,14 @@ function CardWithUrlContent(_ref) {
|
|
|
114
123
|
|
|
115
124
|
if (state.status !== 'pending') {
|
|
116
125
|
measure.create(id, state.status);
|
|
117
|
-
analytics.operational.instrument(
|
|
126
|
+
analytics.operational.instrument({
|
|
127
|
+
id: id,
|
|
128
|
+
status: state.status,
|
|
129
|
+
definitionId: definitionId,
|
|
130
|
+
extensionKey: extensionKey,
|
|
131
|
+
resourceType: resourceType,
|
|
132
|
+
error: state.error
|
|
133
|
+
});
|
|
118
134
|
}
|
|
119
135
|
}, [id, appearance, state.status, state.error, definitionId, extensionKey, resourceType, analytics.operational]); // NB: once the smart-card has rendered into an end state, we capture
|
|
120
136
|
// this as a successful render. These can be one of:
|
|
@@ -123,7 +139,13 @@ function CardWithUrlContent(_ref) {
|
|
|
123
139
|
|
|
124
140
|
(0, _react.useEffect)(function () {
|
|
125
141
|
if ((0, _helpers.isFinalState)(state.status)) {
|
|
126
|
-
analytics.ui.renderSuccessEvent(
|
|
142
|
+
analytics.ui.renderSuccessEvent({
|
|
143
|
+
display: appearance,
|
|
144
|
+
status: state.status,
|
|
145
|
+
id: id,
|
|
146
|
+
definitionId: definitionId,
|
|
147
|
+
extensionKey: extensionKey
|
|
148
|
+
});
|
|
127
149
|
}
|
|
128
150
|
}, [appearance, state.status, url, definitionId, extensionKey, analytics.ui, id]);
|
|
129
151
|
|
|
@@ -187,7 +209,7 @@ function CardWithUrlContent(_ref) {
|
|
|
187
209
|
handleErrorRetry: handleRetry,
|
|
188
210
|
handleInvoke: handleInvoke,
|
|
189
211
|
handleFrameClick: handleClickWrapper,
|
|
190
|
-
|
|
212
|
+
analytics: analytics,
|
|
191
213
|
isSelected: isSelected,
|
|
192
214
|
onResolve: onResolve,
|
|
193
215
|
onError: onError,
|
|
@@ -205,7 +227,7 @@ function CardWithUrlContent(_ref) {
|
|
|
205
227
|
handleErrorRetry: handleRetry,
|
|
206
228
|
handleFrameClick: handleClickWrapper,
|
|
207
229
|
handleInvoke: handleInvoke,
|
|
208
|
-
|
|
230
|
+
analytics: analytics,
|
|
209
231
|
isSelected: isSelected,
|
|
210
232
|
isFrameVisible: isFrameVisible,
|
|
211
233
|
platform: platform,
|
|
@@ -96,7 +96,12 @@ function CardWithURLRenderer(props) {
|
|
|
96
96
|
var errorInfo = {
|
|
97
97
|
componentStack: componentStack
|
|
98
98
|
};
|
|
99
|
-
analytics.ui.renderFailedEvent(
|
|
99
|
+
analytics.ui.renderFailedEvent({
|
|
100
|
+
display: appearance,
|
|
101
|
+
id: id,
|
|
102
|
+
error: error,
|
|
103
|
+
errorInfo: errorInfo
|
|
104
|
+
});
|
|
100
105
|
}
|
|
101
106
|
}, [analytics.ui, appearance, id]);
|
|
102
107
|
|
|
@@ -47,7 +47,7 @@ var EmbedCard = /*#__PURE__*/_react.default.forwardRef(function (_ref, iframeRef
|
|
|
47
47
|
handleAuthorize = _ref.handleAuthorize,
|
|
48
48
|
handleErrorRetry = _ref.handleErrorRetry,
|
|
49
49
|
handleFrameClick = _ref.handleFrameClick,
|
|
50
|
-
|
|
50
|
+
analytics = _ref.analytics,
|
|
51
51
|
handleInvoke = _ref.handleInvoke,
|
|
52
52
|
showActions = _ref.showActions,
|
|
53
53
|
isSelected = _ref.isSelected,
|
|
@@ -101,7 +101,8 @@ var EmbedCard = /*#__PURE__*/_react.default.forwardRef(function (_ref, iframeRef
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
var resolvedBlockViewProps = (0, _block.extractBlockProps)(data, meta, {
|
|
104
|
-
|
|
104
|
+
analytics: analytics,
|
|
105
|
+
origin: 'smartLinkEmbed',
|
|
105
106
|
handleInvoke: handleInvoke,
|
|
106
107
|
extensionKey: (0, _helpers.getExtensionKey)(details)
|
|
107
108
|
});
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _types = require("../../types");
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
var getResizeFrom = function getResizeFrom(size) {
|
|
23
|
+
return size === _types.EmbedModalSize.Small ? _types.EmbedModalSize.Large : _types.EmbedModalSize.Small;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
var withAnalytics = function withAnalytics(Component) {
|
|
27
|
+
return function (props) {
|
|
28
|
+
var analytics = props.analytics,
|
|
29
|
+
onClose = props.onClose,
|
|
30
|
+
onOpen = props.onOpen,
|
|
31
|
+
onOpenFailed = props.onOpenFailed,
|
|
32
|
+
onResize = props.onResize,
|
|
33
|
+
origin = props.origin;
|
|
34
|
+
var handleOnOpen = (0, _react.useCallback)(function (context) {
|
|
35
|
+
analytics.screen.modalViewedEvent({
|
|
36
|
+
name: 'embedPreviewModal',
|
|
37
|
+
attributes: {
|
|
38
|
+
origin: origin,
|
|
39
|
+
size: context.size
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
analytics.ui.renderSuccessEvent({
|
|
43
|
+
status: 'resolved',
|
|
44
|
+
display: 'preview'
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
if (onOpen) {
|
|
48
|
+
onOpen(context);
|
|
49
|
+
}
|
|
50
|
+
}, [analytics.screen, analytics.ui, onOpen, origin]);
|
|
51
|
+
var handleOnOpenFailed = (0, _react.useCallback)(function (error, errorInfo) {
|
|
52
|
+
analytics.ui.renderFailedEvent({
|
|
53
|
+
display: 'preview',
|
|
54
|
+
error: error,
|
|
55
|
+
errorInfo: errorInfo
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
if (onOpenFailed) {
|
|
59
|
+
onOpenFailed(error, errorInfo);
|
|
60
|
+
}
|
|
61
|
+
}, [analytics.ui, onOpenFailed]);
|
|
62
|
+
var handleOnClose = (0, _react.useCallback)(function (context) {
|
|
63
|
+
analytics.ui.modalClosedEvent({
|
|
64
|
+
actionSubjectId: 'embedPreview',
|
|
65
|
+
attributes: {
|
|
66
|
+
origin: origin,
|
|
67
|
+
previewTime: context.duration,
|
|
68
|
+
size: context.size
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
if (onClose) {
|
|
73
|
+
onClose(context);
|
|
74
|
+
}
|
|
75
|
+
}, [analytics.ui, onClose, origin]);
|
|
76
|
+
var handleOnResize = (0, _react.useCallback)(function (context) {
|
|
77
|
+
analytics.ui.buttonClickedEvent({
|
|
78
|
+
actionSubjectId: 'embedPreviewResize',
|
|
79
|
+
attributes: {
|
|
80
|
+
newSize: context.size,
|
|
81
|
+
origin: origin,
|
|
82
|
+
previousSize: getResizeFrom(context.size)
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
if (onResize) {
|
|
87
|
+
onResize(context);
|
|
88
|
+
}
|
|
89
|
+
}, [analytics.ui, onResize, origin]);
|
|
90
|
+
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {
|
|
91
|
+
onClose: handleOnClose,
|
|
92
|
+
onOpen: handleOnOpen,
|
|
93
|
+
onOpenFailed: handleOnOpenFailed,
|
|
94
|
+
onResize: handleOnResize
|
|
95
|
+
}));
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
var _default = withAnalytics;
|
|
100
|
+
exports.default = _default;
|
|
@@ -13,27 +13,22 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
13
13
|
|
|
14
14
|
var _Modal = _interopRequireDefault(require("../../../common/Modal"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _types = require("../../types");
|
|
17
17
|
|
|
18
18
|
var withSizeExperiment = function withSizeExperiment(Component) {
|
|
19
19
|
return function (props) {
|
|
20
20
|
var _props$featureFlags = props.featureFlags,
|
|
21
|
-
featureFlags = _props$featureFlags === void 0 ? {} : _props$featureFlags
|
|
22
|
-
|
|
23
|
-
closeLabel = _props$closeLabel === void 0 ? 'Close Preview' : _props$closeLabel;
|
|
24
|
-
var embedModalSize = featureFlags.embedModalSize; // Experiment
|
|
21
|
+
featureFlags = _props$featureFlags === void 0 ? {} : _props$featureFlags;
|
|
22
|
+
var size = featureFlags.embedModalSize; // Experiment
|
|
25
23
|
|
|
26
|
-
if (
|
|
27
|
-
var size = embedModalSize === 'large' ? _constants.MAX_MODAL_SIZE : _constants.MIN_MODAL_SIZE;
|
|
24
|
+
if (size === _types.EmbedModalSize.Large || size === _types.EmbedModalSize.Small) {
|
|
28
25
|
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {
|
|
29
26
|
size: size
|
|
30
27
|
}));
|
|
31
28
|
} // Control
|
|
32
29
|
|
|
33
30
|
|
|
34
|
-
return /*#__PURE__*/_react.default.createElement(_Modal.default,
|
|
35
|
-
closeLabel: closeLabel
|
|
36
|
-
}));
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_Modal.default, props);
|
|
37
32
|
};
|
|
38
33
|
};
|
|
39
34
|
|
|
@@ -21,14 +21,26 @@ var _constants = require("./constants");
|
|
|
21
21
|
|
|
22
22
|
var _embedContent = _interopRequireDefault(require("./components/embed-content"));
|
|
23
23
|
|
|
24
|
+
var _types = require("./types");
|
|
25
|
+
|
|
24
26
|
var _errorBoundary = _interopRequireDefault(require("./components/error-boundary"));
|
|
25
27
|
|
|
26
28
|
var _sizeExperiment = _interopRequireDefault(require("./components/size-experiment"));
|
|
27
29
|
|
|
30
|
+
var _analytics = _interopRequireDefault(require("./components/analytics"));
|
|
31
|
+
|
|
28
32
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
33
|
|
|
30
34
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
35
|
|
|
36
|
+
var toSize = function toSize(width) {
|
|
37
|
+
return width === _constants.MAX_MODAL_SIZE ? _types.EmbedModalSize.Large : _types.EmbedModalSize.Small;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var toWidth = function toWidth(size) {
|
|
41
|
+
return size === _types.EmbedModalSize.Large ? _constants.MAX_MODAL_SIZE : _constants.MIN_MODAL_SIZE;
|
|
42
|
+
};
|
|
43
|
+
|
|
32
44
|
var EmbedModal = function EmbedModal(_ref) {
|
|
33
45
|
var downloadUrl = _ref.download,
|
|
34
46
|
icon = _ref.icon,
|
|
@@ -38,49 +50,76 @@ var EmbedModal = function EmbedModal(_ref) {
|
|
|
38
50
|
onClose = _ref.onClose,
|
|
39
51
|
onDownloadActionClick = _ref.onDownloadActionClick,
|
|
40
52
|
onOpen = _ref.onOpen,
|
|
53
|
+
onResize = _ref.onResize,
|
|
41
54
|
onViewActionClick = _ref.onViewActionClick,
|
|
42
55
|
providerName = _ref.providerName,
|
|
43
56
|
showModal = _ref.showModal,
|
|
44
57
|
_ref$size = _ref.size,
|
|
45
|
-
|
|
58
|
+
size = _ref$size === void 0 ? _types.EmbedModalSize.Small : _ref$size,
|
|
46
59
|
src = _ref.src,
|
|
47
60
|
_ref$testId = _ref.testId,
|
|
48
61
|
testId = _ref$testId === void 0 ? 'smart-embed-preview-modal' : _ref$testId,
|
|
49
62
|
title = _ref.title,
|
|
50
63
|
url = _ref.url;
|
|
64
|
+
var defaultWidth = toWidth(size);
|
|
51
65
|
|
|
52
66
|
var _useState = (0, _react.useState)(showModal),
|
|
53
67
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
54
68
|
isOpen = _useState2[0],
|
|
55
69
|
setIsOpen = _useState2[1];
|
|
56
70
|
|
|
57
|
-
var _useState3 = (0, _react.useState)(
|
|
71
|
+
var _useState3 = (0, _react.useState)(defaultWidth),
|
|
58
72
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
73
|
+
width = _useState4[0],
|
|
74
|
+
setWidth = _useState4[1];
|
|
75
|
+
|
|
76
|
+
var openAt = (0, _react.useRef)();
|
|
77
|
+
var handleOnOpenComplete = (0, _react.useCallback)(function () {
|
|
78
|
+
openAt.current = Date.now();
|
|
79
|
+
|
|
80
|
+
if (onOpen) {
|
|
81
|
+
onOpen({
|
|
82
|
+
size: size
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}, [onOpen, size]);
|
|
62
86
|
var handleOnClose = (0, _react.useCallback)(function () {
|
|
63
87
|
return setIsOpen(false);
|
|
64
88
|
}, []);
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
89
|
+
var handleOnCloseComplete = (0, _react.useCallback)(function () {
|
|
90
|
+
if (onClose) {
|
|
91
|
+
var duration = openAt.current ? Date.now() - openAt.current : undefined;
|
|
92
|
+
onClose({
|
|
93
|
+
duration: duration,
|
|
94
|
+
size: toSize(width)
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}, [onClose, width]);
|
|
98
|
+
var handleOnResizeClick = (0, _react.useCallback)(function () {
|
|
99
|
+
var newWidth = width === _constants.MIN_MODAL_SIZE ? _constants.MAX_MODAL_SIZE : _constants.MIN_MODAL_SIZE;
|
|
100
|
+
setWidth(newWidth);
|
|
101
|
+
|
|
102
|
+
if (onResize) {
|
|
103
|
+
onResize({
|
|
104
|
+
size: toSize(newWidth)
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}, [onResize, width]);
|
|
69
108
|
return /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTransition, null, isOpen && /*#__PURE__*/_react.default.createElement(_modalDialog.default, {
|
|
70
109
|
height: "100%",
|
|
71
110
|
onClose: handleOnClose,
|
|
72
|
-
onCloseComplete:
|
|
73
|
-
onOpenComplete:
|
|
111
|
+
onCloseComplete: handleOnCloseComplete,
|
|
112
|
+
onOpenComplete: handleOnOpenComplete,
|
|
74
113
|
testId: testId,
|
|
75
|
-
width:
|
|
114
|
+
width: width
|
|
76
115
|
}, /*#__PURE__*/_react.default.createElement(_linkInfo.default, {
|
|
77
116
|
downloadUrl: downloadUrl,
|
|
78
117
|
icon: icon,
|
|
79
118
|
providerName: providerName,
|
|
80
119
|
onViewButtonClick: onViewActionClick,
|
|
81
120
|
onDownloadButtonClick: onDownloadActionClick,
|
|
82
|
-
onResizeButtonClick:
|
|
83
|
-
size:
|
|
121
|
+
onResizeButtonClick: handleOnResizeClick,
|
|
122
|
+
size: width,
|
|
84
123
|
title: title,
|
|
85
124
|
testId: testId,
|
|
86
125
|
url: url
|
|
@@ -92,6 +131,6 @@ var EmbedModal = function EmbedModal(_ref) {
|
|
|
92
131
|
}))));
|
|
93
132
|
};
|
|
94
133
|
|
|
95
|
-
var _default = (0, _sizeExperiment.default)((0, _errorBoundary.default)(EmbedModal));
|
|
134
|
+
var _default = (0, _sizeExperiment.default)((0, _analytics.default)((0, _errorBoundary.default)(EmbedModal)));
|
|
96
135
|
|
|
97
136
|
exports.default = _default;
|
|
@@ -2,4 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
|
-
});
|
|
5
|
+
});
|
|
6
|
+
exports.EmbedModalSize = void 0;
|
|
7
|
+
var EmbedModalSize;
|
|
8
|
+
exports.EmbedModalSize = EmbedModalSize;
|
|
9
|
+
|
|
10
|
+
(function (EmbedModalSize) {
|
|
11
|
+
EmbedModalSize["Large"] = "large";
|
|
12
|
+
EmbedModalSize["Small"] = "small";
|
|
13
|
+
})(EmbedModalSize || (exports.EmbedModalSize = EmbedModalSize = {}));
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
@@ -9,7 +11,7 @@ exports.default = void 0;
|
|
|
9
11
|
|
|
10
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
13
|
|
|
12
|
-
var _react =
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
15
|
|
|
14
16
|
var _core = require("@emotion/core");
|
|
15
17
|
|
|
@@ -19,6 +21,10 @@ var _utils = require("../utils");
|
|
|
19
21
|
|
|
20
22
|
var _templateObject;
|
|
21
23
|
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
+
|
|
26
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
+
|
|
22
28
|
var getBlockStyles = function getBlockStyles(direction, size) {
|
|
23
29
|
return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n justify-content: flex-start;\n [data-separator] + [data-separator]:before {\n content: '\u2022';\n margin-right: ", "rem;\n }\n // Pull request elements: source branch \u2192 target branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2192';\n }\n // Pull request elements: target branch \u2190 source branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2190';\n }\n"])), (0, _utils.getBaseStyles)(direction, size), _utils.highlightRemoveStyles, (0, _utils.getGapSize)(size), _constants.ElementName.SourceBranch, _constants.ElementName.TargetBranch, _constants.ElementName.TargetBranch, _constants.ElementName.SourceBranch);
|
|
24
30
|
};
|
|
@@ -39,11 +45,19 @@ var Block = function Block(_ref) {
|
|
|
39
45
|
size = _ref$size === void 0 ? _constants.SmartLinkSize.Medium : _ref$size,
|
|
40
46
|
_ref$testId = _ref.testId,
|
|
41
47
|
testId = _ref$testId === void 0 ? 'smart-block' : _ref$testId,
|
|
42
|
-
overrideCss = _ref.overrideCss
|
|
48
|
+
overrideCss = _ref.overrideCss,
|
|
49
|
+
blockRef = _ref.blockRef,
|
|
50
|
+
onRender = _ref.onRender,
|
|
51
|
+
onTransitionEnd = _ref.onTransitionEnd;
|
|
52
|
+
(0, _react.useEffect)(function () {
|
|
53
|
+
onRender && onRender();
|
|
54
|
+
}, [onRender]);
|
|
43
55
|
return (0, _core.jsx)("div", {
|
|
44
56
|
css: [getBlockStyles(direction, size), overrideCss],
|
|
45
57
|
"data-smart-block": true,
|
|
46
|
-
"data-testid": testId
|
|
58
|
+
"data-testid": testId,
|
|
59
|
+
onTransitionEnd: onTransitionEnd,
|
|
60
|
+
ref: blockRef
|
|
47
61
|
}, (0, _utils.renderChildren)(children, size));
|
|
48
62
|
};
|
|
49
63
|
|
|
@@ -19,7 +19,7 @@ var _block = _interopRequireDefault(require("../block"));
|
|
|
19
19
|
|
|
20
20
|
var _elements = require("../../elements");
|
|
21
21
|
|
|
22
|
-
var _excluded = ["status", "testId"];
|
|
22
|
+
var _excluded = ["status", "testId", "onError"];
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Represents a PreviewBlock, which typically contains media or other large format content.
|
|
@@ -32,6 +32,7 @@ var PreviewBlock = function PreviewBlock(_ref) {
|
|
|
32
32
|
status = _ref$status === void 0 ? _constants.SmartLinkStatus.Fallback : _ref$status,
|
|
33
33
|
_ref$testId = _ref.testId,
|
|
34
34
|
testId = _ref$testId === void 0 ? 'smart-block-preview' : _ref$testId,
|
|
35
|
+
onError = _ref.onError,
|
|
35
36
|
blockProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
36
37
|
|
|
37
38
|
if (status !== _constants.SmartLinkStatus.Resolved) {
|
|
@@ -40,7 +41,9 @@ var PreviewBlock = function PreviewBlock(_ref) {
|
|
|
40
41
|
|
|
41
42
|
return /*#__PURE__*/_react.default.createElement(_block.default, (0, _extends2.default)({}, blockProps, {
|
|
42
43
|
testId: "".concat(testId, "-resolved-view")
|
|
43
|
-
}), /*#__PURE__*/_react.default.createElement(_elements.Preview,
|
|
44
|
+
}), /*#__PURE__*/_react.default.createElement(_elements.Preview, {
|
|
45
|
+
onError: onError
|
|
46
|
+
}));
|
|
44
47
|
};
|
|
45
48
|
|
|
46
49
|
var _default = PreviewBlock;
|
|
@@ -19,7 +19,8 @@ var _loadingSkeleton = _interopRequireDefault(require("../loading-skeleton"));
|
|
|
19
19
|
var ImageIcon = function ImageIcon(_ref) {
|
|
20
20
|
var defaultIcon = _ref.defaultIcon,
|
|
21
21
|
testId = _ref.testId,
|
|
22
|
-
url = _ref.url
|
|
22
|
+
url = _ref.url,
|
|
23
|
+
onError = _ref.onError;
|
|
23
24
|
return (0, _core.jsx)(_reactRenderImage.default, {
|
|
24
25
|
src: url,
|
|
25
26
|
loading: (0, _core.jsx)(_loadingSkeleton.default, {
|
|
@@ -29,7 +30,8 @@ var ImageIcon = function ImageIcon(_ref) {
|
|
|
29
30
|
src: url,
|
|
30
31
|
"data-testid": "".concat(testId, "-image")
|
|
31
32
|
}),
|
|
32
|
-
errored: defaultIcon
|
|
33
|
+
errored: defaultIcon,
|
|
34
|
+
onError: onError
|
|
33
35
|
});
|
|
34
36
|
};
|
|
35
37
|
|
|
@@ -21,8 +21,7 @@ var LoadingSkeleton = function LoadingSkeleton(_ref) {
|
|
|
21
21
|
var testId = _ref.testId,
|
|
22
22
|
width = _ref.width,
|
|
23
23
|
height = _ref.height;
|
|
24
|
-
var
|
|
25
|
-
var animationNameStyles = (0, _core.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n 0% { background-position: -", " 0; }\n 100% { background-position: ", " 0; }\n "])), animationWidth, animationWidth);
|
|
24
|
+
var animationNameStyles = (0, _core.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n 0% { background-position: 50% 0; }\n 100% { background-position: -50% 0; }\n "])));
|
|
26
25
|
var styles = (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n width: ", "rem;\n height: ", "rem;\n border-radius: 2px;\n user-select: none;\n background: ", ";\n // TODO: https://product-fabric.atlassian.net/browse/DSP-4236\n background-image: linear-gradient(\n to right,\n ", " 0%,\n ", " 20%,\n ", " 40%,\n ", "100%\n );\n background-repeat: no-repeat;\n background-size: 280% 100%;\n display: inline-block;\n\n animation-duration: 1s;\n animation-fill-mode: forwards;\n animation-iteration-count: infinite;\n animation-name: ", ";\n animation-timing-function: linear;\n "])), width, height, (0, _tokens.token)('color.skeleton.subtle', '#f6f7f8'), (0, _tokens.token)('color.skeleton.subtle', '#f6f7f8'), (0, _tokens.token)('color.skeleton', '#edeef1'), (0, _tokens.token)('color.skeleton.subtle', '#f6f7f8'), (0, _tokens.token)('color.skeleton.subtle', '#f6f7f8'), animationNameStyles);
|
|
27
26
|
return (0, _core.jsx)("span", {
|
|
28
27
|
css: styles,
|
|
@@ -41,7 +41,8 @@ var Media = function Media(_ref) {
|
|
|
41
41
|
_ref$testId = _ref.testId,
|
|
42
42
|
testId = _ref$testId === void 0 ? 'smart-element-media' : _ref$testId,
|
|
43
43
|
type = _ref.type,
|
|
44
|
-
url = _ref.url
|
|
44
|
+
url = _ref.url,
|
|
45
|
+
onError = _ref.onError;
|
|
45
46
|
|
|
46
47
|
if (!type || !url) {
|
|
47
48
|
return null;
|
|
@@ -54,7 +55,9 @@ var Media = function Media(_ref) {
|
|
|
54
55
|
"data-testid": testId
|
|
55
56
|
}, (0, _core.jsx)(_imageIcon.default, {
|
|
56
57
|
testId: "".concat(testId, "-image"),
|
|
57
|
-
url: url
|
|
58
|
+
url: url,
|
|
59
|
+
onError: onError,
|
|
60
|
+
defaultIcon: null
|
|
58
61
|
}));
|
|
59
62
|
};
|
|
60
63
|
|
|
@@ -75,7 +75,11 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
|
|
|
75
75
|
//Check its previously open to avoid firing events when moving between the child and hover card components
|
|
76
76
|
if (isOpen === true && cardOpenTime.current) {
|
|
77
77
|
var hoverTime = Date.now() - cardOpenTime.current;
|
|
78
|
-
analytics.ui.hoverCardDismissedEvent(
|
|
78
|
+
analytics.ui.hoverCardDismissedEvent({
|
|
79
|
+
previewDisplay: 'card',
|
|
80
|
+
hoverTime: hoverTime,
|
|
81
|
+
previewInvokeMethod: 'mouse_hover'
|
|
82
|
+
});
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
setIsOpen(false);
|
|
@@ -100,7 +104,10 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
|
|
|
100
104
|
//Check if its previously closed to avoid firing events when moving between the child and hover card components
|
|
101
105
|
if (isOpen === false) {
|
|
102
106
|
cardOpenTime.current = Date.now();
|
|
103
|
-
analytics.ui.hoverCardViewedEvent(
|
|
107
|
+
analytics.ui.hoverCardViewedEvent({
|
|
108
|
+
previewDisplay: hoverDisplay,
|
|
109
|
+
previewInvokeMethod: invokeMethod
|
|
110
|
+
});
|
|
104
111
|
} //If these are undefined then popupOffset is undefined and we fallback to default bottom-start placement
|
|
105
112
|
|
|
106
113
|
|
|
@@ -118,7 +125,8 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
|
|
|
118
125
|
var linkActions = (0, _useSmartLinkActions.useSmartLinkActions)({
|
|
119
126
|
url: url,
|
|
120
127
|
appearance: _utils.SMART_CARD_ANALYTICS_DISPLAY,
|
|
121
|
-
analyticsHandler: analyticsHandler
|
|
128
|
+
analyticsHandler: analyticsHandler,
|
|
129
|
+
origin: 'smartLinkPreviewHoverCard'
|
|
122
130
|
});
|
|
123
131
|
var onActionClick = (0, _react.useCallback)(function (actionId) {
|
|
124
132
|
if (actionId === 'preview-content') {
|