@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
|
@@ -17,8 +17,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
17
17
|
|
|
18
18
|
var _constants = require("../../../constants");
|
|
19
19
|
|
|
20
|
-
var _extractPreview = _interopRequireDefault(require("../../../extractors/flexible/extract-preview"));
|
|
21
|
-
|
|
22
20
|
var _extractMetadata2 = require("../../../extractors/hover/extractMetadata");
|
|
23
21
|
|
|
24
22
|
var _actions = require("../../../state/actions");
|
|
@@ -37,6 +35,8 @@ var _utils2 = require("../utils");
|
|
|
37
35
|
|
|
38
36
|
var _HoverCardLoadingView = _interopRequireDefault(require("./HoverCardLoadingView"));
|
|
39
37
|
|
|
38
|
+
var _SnippetOrPreview = _interopRequireDefault(require("./SnippetOrPreview"));
|
|
39
|
+
|
|
40
40
|
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); }
|
|
41
41
|
|
|
42
42
|
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; }
|
|
@@ -55,7 +55,9 @@ var getOpenAction = function getOpenAction(url, analytics, onActionClick) {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
window.open(url, '_blank');
|
|
58
|
-
analytics.ui.hoverCardOpenLinkClickedEvent(
|
|
58
|
+
analytics.ui.hoverCardOpenLinkClickedEvent({
|
|
59
|
+
previewDisplay: 'card'
|
|
60
|
+
});
|
|
59
61
|
},
|
|
60
62
|
testId: 'hover-card-open-button'
|
|
61
63
|
};
|
|
@@ -102,15 +104,24 @@ var HoverCardContent = function HoverCardContent(_ref) {
|
|
|
102
104
|
(0, _react.useEffect)(function () {
|
|
103
105
|
// Since hover preview only render on resolved status,
|
|
104
106
|
// there is no need to check for statuses.
|
|
105
|
-
analytics.ui.renderSuccessEvent(
|
|
107
|
+
analytics.ui.renderSuccessEvent({
|
|
108
|
+
display: _utils2.SMART_CARD_ANALYTICS_DISPLAY,
|
|
109
|
+
status: cardState.status
|
|
110
|
+
});
|
|
106
111
|
}, [analytics.ui, cardState.status]);
|
|
107
112
|
var extensionKey = (0, _react.useMemo)(function () {
|
|
108
113
|
return (0, _helpers.getExtensionKey)(cardState.details);
|
|
109
114
|
}, [cardState.details]);
|
|
110
115
|
var onClick = (0, _react.useCallback)(function (event) {
|
|
111
116
|
var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
|
|
112
|
-
analytics.ui.cardClickedEvent(
|
|
113
|
-
|
|
117
|
+
analytics.ui.cardClickedEvent({
|
|
118
|
+
id: id,
|
|
119
|
+
display: _utils2.SMART_CARD_ANALYTICS_DISPLAY,
|
|
120
|
+
status: cardState.status,
|
|
121
|
+
isModifierKeyPressed: isModifierKeyPressed,
|
|
122
|
+
actionSubjectId: 'titleGoToLink'
|
|
123
|
+
});
|
|
124
|
+
}, [cardState.status, analytics.ui, id]);
|
|
114
125
|
var titleActions = (0, _react.useMemo)(function () {
|
|
115
126
|
return [getOpenAction(url, analytics, onActionClick)];
|
|
116
127
|
}, [url, analytics, onActionClick]);
|
|
@@ -126,7 +137,19 @@ var HoverCardContent = function HoverCardContent(_ref) {
|
|
|
126
137
|
subtitle = _extractMetadata.subtitle;
|
|
127
138
|
|
|
128
139
|
var titleMaxLines = subtitle && subtitle.length > 0 ? 1 : 2;
|
|
129
|
-
|
|
140
|
+
|
|
141
|
+
var snippetHeight = _react.default.useRef(0);
|
|
142
|
+
|
|
143
|
+
var snippetBlockRef = (0, _react.useRef)(null);
|
|
144
|
+
var onSnippetRender = (0, _react.useCallback)(function () {
|
|
145
|
+
var _snippetBlockRef$curr, _snippetBlockRef$curr2;
|
|
146
|
+
|
|
147
|
+
snippetHeight.current = (_snippetBlockRef$curr = (_snippetBlockRef$curr2 = snippetBlockRef.current) === null || _snippetBlockRef$curr2 === void 0 ? void 0 : _snippetBlockRef$curr2.getBoundingClientRect().height) !== null && _snippetBlockRef$curr !== void 0 ? _snippetBlockRef$curr : 0;
|
|
148
|
+
}, []);
|
|
149
|
+
var body = (0, _SnippetOrPreview.default)({
|
|
150
|
+
data: data,
|
|
151
|
+
snippetHeight: snippetHeight.current
|
|
152
|
+
});
|
|
130
153
|
var titleBlockProps = {
|
|
131
154
|
actions: titleActions,
|
|
132
155
|
maxLines: titleMaxLines,
|
|
@@ -159,7 +182,12 @@ var HoverCardContent = function HoverCardContent(_ref) {
|
|
|
159
182
|
size: _constants.SmartLinkSize.Large,
|
|
160
183
|
overrideCss: _styled.metadataBlockCss,
|
|
161
184
|
maxLines: 1
|
|
162
|
-
}), body, /*#__PURE__*/_react.default.createElement(_blocks.
|
|
185
|
+
}), body, /*#__PURE__*/_react.default.createElement(_blocks.SnippetBlock, {
|
|
186
|
+
testId: 'hidden-snippet',
|
|
187
|
+
onRender: onSnippetRender,
|
|
188
|
+
blockRef: snippetBlockRef,
|
|
189
|
+
overrideCss: _styled.hiddenSnippetStyles
|
|
190
|
+
}), /*#__PURE__*/_react.default.createElement(_blocks.FooterBlock, {
|
|
163
191
|
actions: footerActions,
|
|
164
192
|
size: _constants.SmartLinkSize.Large,
|
|
165
193
|
overrideCss: _styled.footerBlockCss
|
|
@@ -0,0 +1,74 @@
|
|
|
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 _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _core = require("@emotion/core");
|
|
19
|
+
|
|
20
|
+
var _extractPreview = _interopRequireDefault(require("../../../extractors/flexible/extract-preview"));
|
|
21
|
+
|
|
22
|
+
var _blocks = require("../../FlexibleCard/components/blocks");
|
|
23
|
+
|
|
24
|
+
var _styled = require("../styled");
|
|
25
|
+
|
|
26
|
+
var _templateObject;
|
|
27
|
+
|
|
28
|
+
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
|
+
|
|
30
|
+
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
|
+
|
|
32
|
+
var SnippetOrPreview = function SnippetOrPreview(_ref) {
|
|
33
|
+
var data = _ref.data,
|
|
34
|
+
snippetHeight = _ref.snippetHeight;
|
|
35
|
+
var transitionStarted = (0, _react.useRef)(false);
|
|
36
|
+
var previewBlockRef = (0, _react.useRef)(null);
|
|
37
|
+
|
|
38
|
+
var _useState = (0, _react.useState)(false),
|
|
39
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
40
|
+
showSnippet = _useState2[0],
|
|
41
|
+
setShowSnippet = _useState2[1];
|
|
42
|
+
|
|
43
|
+
var _useState3 = (0, _react.useState)(),
|
|
44
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
45
|
+
previewCss = _useState4[0],
|
|
46
|
+
setPreviewCss = _useState4[1]; // Set Preview to a fixed height to enable transitions
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
var onPreviewRender = (0, _react.useCallback)(function () {
|
|
50
|
+
var _previewBlockRef$curr;
|
|
51
|
+
|
|
52
|
+
previewBlockRef.current && setPreviewCss((0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n height: ", "px;\n "])), (_previewBlockRef$curr = previewBlockRef.current) === null || _previewBlockRef$curr === void 0 ? void 0 : _previewBlockRef$curr.getBoundingClientRect().height));
|
|
53
|
+
}, []); // On error set Preview to Snippet height with transition
|
|
54
|
+
|
|
55
|
+
var onPreviewError = (0, _react.useCallback)(function () {
|
|
56
|
+
if (transitionStarted.current === false) {
|
|
57
|
+
setPreviewCss((0, _styled.getTransitionStyles)(snippetHeight));
|
|
58
|
+
transitionStarted.current = true;
|
|
59
|
+
}
|
|
60
|
+
}, [snippetHeight]);
|
|
61
|
+
var onPreviewTransitionEnd = (0, _react.useCallback)(function () {
|
|
62
|
+
setShowSnippet(true);
|
|
63
|
+
}, []);
|
|
64
|
+
return !showSnippet && data && (0, _extractPreview.default)(data) ? /*#__PURE__*/_react.default.createElement(_blocks.PreviewBlock, {
|
|
65
|
+
onError: onPreviewError,
|
|
66
|
+
overrideCss: previewCss,
|
|
67
|
+
onTransitionEnd: onPreviewTransitionEnd,
|
|
68
|
+
blockRef: previewBlockRef,
|
|
69
|
+
onRender: onPreviewRender
|
|
70
|
+
}) : /*#__PURE__*/_react.default.createElement(_blocks.SnippetBlock, null);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var _default = SnippetOrPreview;
|
|
74
|
+
exports.default = _default;
|
|
@@ -36,7 +36,12 @@ var HoverCardWithErrorBoundary = function HoverCardWithErrorBoundary(props) {
|
|
|
36
36
|
}, [createAnalyticsEvent]);
|
|
37
37
|
var analytics = (0, _analytics.useSmartLinkAnalytics)(url, analyticsHandler, id);
|
|
38
38
|
var onError = (0, _react.useCallback)(function (error, info) {
|
|
39
|
-
analytics.ui.renderFailedEvent(
|
|
39
|
+
analytics.ui.renderFailedEvent({
|
|
40
|
+
display: _utils.SMART_CARD_ANALYTICS_DISPLAY,
|
|
41
|
+
id: id,
|
|
42
|
+
error: error,
|
|
43
|
+
errorInfo: info
|
|
44
|
+
});
|
|
40
45
|
}, [analytics.ui, id]);
|
|
41
46
|
return (0, _core.jsx)(_reactErrorBoundary.ErrorBoundary, {
|
|
42
47
|
fallback: children,
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.titleBlockCss = exports.skeletonContainer = exports.metadataBlockCss = exports.loadingViewContainer = exports.footerBlockCss = exports.flexibleUiOptions = exports.HoverCardContainer = exports.CARD_WIDTH_REM = exports.CARD_GAP_PX = void 0;
|
|
8
|
+
exports.titleBlockCss = exports.skeletonContainer = exports.metadataBlockCss = exports.loadingViewContainer = exports.hiddenSnippetStyles = exports.getTransitionStyles = exports.footerBlockCss = exports.flexibleUiOptions = exports.HoverCardContainer = exports.CARD_WIDTH_REM = exports.CARD_GAP_PX = void 0;
|
|
9
9
|
|
|
10
10
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ var _index = require("../../index");
|
|
|
15
15
|
|
|
16
16
|
var _constants = require("../../constants");
|
|
17
17
|
|
|
18
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
|
|
18
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
19
19
|
|
|
20
20
|
var flexibleUiOptions = {
|
|
21
21
|
hideElevation: true,
|
|
@@ -44,4 +44,12 @@ exports.footerBlockCss = footerBlockCss;
|
|
|
44
44
|
var loadingViewContainer = (0, _core.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n"])));
|
|
45
45
|
exports.loadingViewContainer = loadingViewContainer;
|
|
46
46
|
var skeletonContainer = (0, _core.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n align-items: center;\n"])));
|
|
47
|
-
exports.skeletonContainer = skeletonContainer;
|
|
47
|
+
exports.skeletonContainer = skeletonContainer;
|
|
48
|
+
var hiddenSnippetStyles = (0, _core.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n visibility: hidden;\n position: absolute;\n"])));
|
|
49
|
+
exports.hiddenSnippetStyles = hiddenSnippetStyles;
|
|
50
|
+
|
|
51
|
+
var getTransitionStyles = function getTransitionStyles(snippetHeight) {
|
|
52
|
+
return (0, _core.css)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n transition: height 300ms ease-in-out;\n height: ", "px;\n"])), snippetHeight);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.getTransitionStyles = getTransitionStyles;
|
|
@@ -29,6 +29,10 @@ var _ModalHeader = require("./ModalHeader");
|
|
|
29
29
|
|
|
30
30
|
var _utils = require("../../utils");
|
|
31
31
|
|
|
32
|
+
var _analytics = _interopRequireDefault(require("../EmbedModal/components/analytics"));
|
|
33
|
+
|
|
34
|
+
var _types = require("../EmbedModal/types");
|
|
35
|
+
|
|
32
36
|
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); }
|
|
33
37
|
|
|
34
38
|
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; }
|
|
@@ -78,7 +82,8 @@ var Modal = function Modal(_ref) {
|
|
|
78
82
|
providerName = _ref.providerName,
|
|
79
83
|
metadata = _ref.metadata,
|
|
80
84
|
icon = _ref.icon,
|
|
81
|
-
closeLabel = _ref.closeLabel,
|
|
85
|
+
_ref$closeLabel = _ref.closeLabel,
|
|
86
|
+
closeLabel = _ref$closeLabel === void 0 ? 'Close Preview' : _ref$closeLabel,
|
|
82
87
|
iframeName = _ref.iframeName,
|
|
83
88
|
title = _ref.title,
|
|
84
89
|
url = _ref.url,
|
|
@@ -94,16 +99,35 @@ var Modal = function Modal(_ref) {
|
|
|
94
99
|
isOpen = _useState2[0],
|
|
95
100
|
setIsOpen = _useState2[1];
|
|
96
101
|
|
|
102
|
+
var openAt = (0, _react.useRef)();
|
|
103
|
+
var handleOnOpenComplete = (0, _react.useCallback)(function () {
|
|
104
|
+
openAt.current = Date.now();
|
|
105
|
+
|
|
106
|
+
if (onOpen) {
|
|
107
|
+
onOpen({
|
|
108
|
+
size: _types.EmbedModalSize.Small
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}, [onOpen]);
|
|
112
|
+
var handleOnCloseComplete = (0, _react.useCallback)(function () {
|
|
113
|
+
if (onClose) {
|
|
114
|
+
var duration = openAt.current ? Date.now() - openAt.current : undefined;
|
|
115
|
+
onClose({
|
|
116
|
+
duration: duration,
|
|
117
|
+
size: _types.EmbedModalSize.Small
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}, [onClose]);
|
|
97
121
|
var sandbox = (0, _utils.getIframeSandboxAttribute)(isTrusted);
|
|
98
122
|
return /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTransition, null, isOpen && /*#__PURE__*/_react.default.createElement(_modalDialog.default, {
|
|
99
123
|
height: "100%",
|
|
100
124
|
width: "large",
|
|
101
125
|
testId: testId,
|
|
102
|
-
onOpenComplete:
|
|
126
|
+
onOpenComplete: handleOnOpenComplete,
|
|
103
127
|
onClose: function onClose() {
|
|
104
128
|
setIsOpen(false);
|
|
105
129
|
},
|
|
106
|
-
onCloseComplete:
|
|
130
|
+
onCloseComplete: handleOnCloseComplete
|
|
107
131
|
}, /*#__PURE__*/_react.default.createElement(_ModalHeader.Header, {
|
|
108
132
|
providerName: providerName,
|
|
109
133
|
icon: icon,
|
|
@@ -129,5 +153,6 @@ var Modal = function Modal(_ref) {
|
|
|
129
153
|
}))));
|
|
130
154
|
};
|
|
131
155
|
|
|
132
|
-
var _default = ModalWithErrorBoundary;
|
|
156
|
+
var _default = (0, _analytics.default)(ModalWithErrorBoundary);
|
|
157
|
+
|
|
133
158
|
exports.default = _default;
|
|
@@ -98,7 +98,7 @@ var Header = function Header(_ref) {
|
|
|
98
98
|
testId: "preview-view-action",
|
|
99
99
|
iconAfter: (0, _core.jsx)(_shortcut.default, {
|
|
100
100
|
size: "small",
|
|
101
|
-
label: "
|
|
101
|
+
label: ""
|
|
102
102
|
}),
|
|
103
103
|
onClick: onViewActionClick
|
|
104
104
|
}, providerName ? (0, _core.jsx)(_react.Fragment, null, (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.viewIn), " ", providerName) : (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.viewOriginal)), (0, _core.jsx)(_customThemeButton.default, {
|
|
@@ -106,7 +106,8 @@ var Header = function Header(_ref) {
|
|
|
106
106
|
iconBefore: (0, _core.jsx)(_close.default, {
|
|
107
107
|
label: label
|
|
108
108
|
}),
|
|
109
|
-
onClick: onClose
|
|
109
|
+
onClick: onClose,
|
|
110
|
+
testId: "preview-close-button"
|
|
110
111
|
}))));
|
|
111
112
|
};
|
|
112
113
|
|
|
@@ -28,15 +28,14 @@ const extractBlockDetails = jsonLd => [extractCommentCount(jsonLd), extractProgr
|
|
|
28
28
|
export const extractBlockActions = (props, jsonLd, opts, platform) => {
|
|
29
29
|
if (opts) {
|
|
30
30
|
const {
|
|
31
|
-
|
|
32
|
-
handleInvoke,
|
|
33
|
-
handleAnalytics,
|
|
34
|
-
extensionKey,
|
|
35
|
-
source,
|
|
36
|
-
testId
|
|
31
|
+
handleInvoke
|
|
37
32
|
} = opts;
|
|
38
33
|
const actions = extractActions(jsonLd, handleInvoke);
|
|
39
|
-
const previewAction = extractPreviewAction(
|
|
34
|
+
const previewAction = extractPreviewAction({ ...opts,
|
|
35
|
+
viewProps: props,
|
|
36
|
+
jsonLd,
|
|
37
|
+
platform
|
|
38
|
+
}); // The previewAction should always be the last action
|
|
40
39
|
|
|
41
40
|
if (previewAction) {
|
|
42
41
|
actions.push(previewAction);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { uiRenderSuccessEvent, uiRenderFailedEvent } from '../../../utils/analytics';
|
|
2
1
|
import { extractDownloadUrl } from '../detail';
|
|
3
|
-
import {
|
|
2
|
+
import { extractPreview, extractProvider } from '@atlaskit/linking-common/extractors';
|
|
4
3
|
import { PreviewAction } from '../../../view/BlockCard';
|
|
5
4
|
|
|
6
5
|
const getMetadataFromJsonLd = (jsonLd, platform) => {
|
|
@@ -39,7 +38,18 @@ const getInvokeOpts = (key, action, source) => ({
|
|
|
39
38
|
}
|
|
40
39
|
});
|
|
41
40
|
|
|
42
|
-
export const extractPreviewAction = (
|
|
41
|
+
export const extractPreviewAction = ({
|
|
42
|
+
extensionKey = 'empty-object-provider',
|
|
43
|
+
viewProps,
|
|
44
|
+
jsonLd,
|
|
45
|
+
handleInvoke,
|
|
46
|
+
testId,
|
|
47
|
+
platform,
|
|
48
|
+
origin,
|
|
49
|
+
source = 'block',
|
|
50
|
+
featureFlags,
|
|
51
|
+
analytics
|
|
52
|
+
}) => {
|
|
43
53
|
// Extract metadata from view props & raw JSON-LD.
|
|
44
54
|
const metadataFromJsonLd = getMetadataFromJsonLd(jsonLd, platform);
|
|
45
55
|
const metadataFromViewProps = getMetadataFromResolvedProps(viewProps);
|
|
@@ -51,14 +61,10 @@ export const extractPreviewAction = (extensionKey = 'empty-object-provider', vie
|
|
|
51
61
|
// Build action using instrumentation hooks.
|
|
52
62
|
const key = extensionKey;
|
|
53
63
|
const previewAction = PreviewAction({ ...metadata,
|
|
64
|
+
analytics,
|
|
65
|
+
origin,
|
|
54
66
|
featureFlags,
|
|
55
67
|
testId,
|
|
56
|
-
onOpen: () => {
|
|
57
|
-
handleAnalytics(uiRenderSuccessEvent('preview', 'resolved', key));
|
|
58
|
-
},
|
|
59
|
-
onOpenFailed: (error, errorInfo) => {
|
|
60
|
-
handleAnalytics(uiRenderFailedEvent('preview', error, errorInfo));
|
|
61
|
-
},
|
|
62
68
|
onDownloadActionClick: () => {
|
|
63
69
|
handleInvoke(getInvokeOpts(key, 'DownloadAction'));
|
|
64
70
|
},
|
|
@@ -68,7 +74,7 @@ export const extractPreviewAction = (extensionKey = 'empty-object-provider', vie
|
|
|
68
74
|
}); // Setup props to go through proper Redux 'invocation' flow
|
|
69
75
|
// for analytics, further state management if required in future.
|
|
70
76
|
|
|
71
|
-
const previewActionProps = getInvokeOpts(key, 'PreviewAction', source
|
|
77
|
+
const previewActionProps = getInvokeOpts(key, 'PreviewAction', source); // - Promise invoked by the action invocation handler; open preview.
|
|
72
78
|
|
|
73
79
|
previewActionProps.action.promise = previewAction.promise; // - Promise invoked on click of `Preview` on block card; trigger above promise.
|
|
74
80
|
|
|
@@ -155,24 +155,51 @@ export const useSmartCardActions = (id, url, analytics) => {
|
|
|
155
155
|
const services = getServices(details); // When authentication is triggered, let GAS know!
|
|
156
156
|
|
|
157
157
|
if (status === 'unauthorized') {
|
|
158
|
-
analytics.ui.authEvent(
|
|
158
|
+
analytics.ui.authEvent({
|
|
159
|
+
display: appearance,
|
|
160
|
+
definitionId,
|
|
161
|
+
extensionKey
|
|
162
|
+
});
|
|
159
163
|
}
|
|
160
164
|
|
|
161
165
|
if (status === 'forbidden') {
|
|
162
|
-
analytics.ui.authAlternateAccountEvent(
|
|
166
|
+
analytics.ui.authAlternateAccountEvent({
|
|
167
|
+
display: appearance,
|
|
168
|
+
definitionId,
|
|
169
|
+
extensionKey
|
|
170
|
+
});
|
|
163
171
|
}
|
|
164
172
|
|
|
165
173
|
if (services.length > 0) {
|
|
166
|
-
analytics.screen.authPopupEvent(
|
|
174
|
+
analytics.screen.authPopupEvent({
|
|
175
|
+
definitionId,
|
|
176
|
+
extensionKey
|
|
177
|
+
});
|
|
167
178
|
auth(services[0].url).then(() => {
|
|
168
|
-
analytics.track.appAccountConnected(
|
|
169
|
-
|
|
179
|
+
analytics.track.appAccountConnected({
|
|
180
|
+
definitionId,
|
|
181
|
+
extensionKey
|
|
182
|
+
});
|
|
183
|
+
analytics.operational.connectSucceededEvent({
|
|
184
|
+
id,
|
|
185
|
+
definitionId,
|
|
186
|
+
extensionKey
|
|
187
|
+
});
|
|
170
188
|
reload();
|
|
171
189
|
}, err => {
|
|
172
|
-
analytics.operational.connectFailedEvent(
|
|
190
|
+
analytics.operational.connectFailedEvent({
|
|
191
|
+
id,
|
|
192
|
+
definitionId,
|
|
193
|
+
extensionKey,
|
|
194
|
+
reason: err.type
|
|
195
|
+
});
|
|
173
196
|
|
|
174
197
|
if (err.type === 'auth_window_closed') {
|
|
175
|
-
analytics.ui.closedAuthEvent(
|
|
198
|
+
analytics.ui.closedAuthEvent({
|
|
199
|
+
display: appearance,
|
|
200
|
+
definitionId,
|
|
201
|
+
extensionKey
|
|
202
|
+
});
|
|
176
203
|
}
|
|
177
204
|
|
|
178
205
|
reload();
|
|
@@ -191,7 +218,13 @@ export const useSmartCardActions = (id, url, analytics) => {
|
|
|
191
218
|
|
|
192
219
|
try {
|
|
193
220
|
// Begin analytics instrumentation.
|
|
194
|
-
analytics.ui.actionClickedEvent(
|
|
221
|
+
analytics.ui.actionClickedEvent({
|
|
222
|
+
id,
|
|
223
|
+
extensionKey: key,
|
|
224
|
+
actionType: action.type,
|
|
225
|
+
display: source,
|
|
226
|
+
invokeType: opts.type
|
|
227
|
+
}); // Invoke action - either client-side or server-side.
|
|
195
228
|
|
|
196
229
|
let response;
|
|
197
230
|
|
|
@@ -202,11 +235,22 @@ export const useSmartCardActions = (id, url, analytics) => {
|
|
|
202
235
|
}
|
|
203
236
|
|
|
204
237
|
measure.mark(markName, 'resolved');
|
|
205
|
-
analytics.operational.invokeSucceededEvent(
|
|
238
|
+
analytics.operational.invokeSucceededEvent({
|
|
239
|
+
id,
|
|
240
|
+
extensionKey: key,
|
|
241
|
+
actionType: action.type,
|
|
242
|
+
display: source
|
|
243
|
+
});
|
|
206
244
|
return response;
|
|
207
245
|
} catch (err) {
|
|
208
246
|
measure.mark(markName, 'errored');
|
|
209
|
-
analytics.operational.invokeFailedEvent(
|
|
247
|
+
analytics.operational.invokeFailedEvent({
|
|
248
|
+
id,
|
|
249
|
+
extensionKey: key,
|
|
250
|
+
actionType: action.type,
|
|
251
|
+
display: source,
|
|
252
|
+
reason: err.message
|
|
253
|
+
});
|
|
210
254
|
throw err;
|
|
211
255
|
}
|
|
212
256
|
}, [id, analytics.ui, analytics.operational, connections.client]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|