@atlaskit/smart-card 16.1.0 → 16.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/dist/cjs/client/utils/environments.js +1 -1
- package/dist/cjs/extractors/block/index.js +2 -2
- package/dist/cjs/extractors/common/actions/extractPreviewAction.js +2 -2
- package/dist/cjs/index.js +42 -0
- package/dist/cjs/providers/editor/transformer.js +6 -2
- package/dist/cjs/state/actions/index.js +14 -7
- package/dist/cjs/state/analytics/index.js +32 -84
- package/dist/cjs/state/analytics/ufoExperiences.js +63 -0
- package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +114 -0
- package/dist/cjs/state/hooks/useSmartLink.js +6 -6
- package/dist/cjs/utils/analytics/analytics.js +6 -6
- package/dist/cjs/version.json +1 -1
- package/dist/cjs/view/BlockCard/index.js +1 -1
- package/dist/cjs/view/CardWithUrl/component-lazy/index.js +1 -1
- package/dist/cjs/view/CardWithUrl/component.js +8 -3
- package/dist/cjs/view/CardWithUrl/loader.js +106 -134
- package/dist/cjs/view/EmbedCard/index.js +1 -1
- package/dist/es2019/client/utils/environments.js +1 -1
- package/dist/es2019/extractors/block/index.js +2 -2
- package/dist/es2019/extractors/common/actions/extractPreviewAction.js +2 -2
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/providers/editor/transformer.js +4 -2
- package/dist/es2019/state/actions/index.js +10 -5
- package/dist/es2019/state/analytics/index.js +2 -40
- package/dist/es2019/state/analytics/ufoExperiences.js +43 -0
- package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +76 -0
- package/dist/es2019/state/hooks/useSmartLink.js +4 -5
- package/dist/es2019/utils/analytics/analytics.js +6 -6
- package/dist/es2019/version.json +1 -1
- package/dist/es2019/view/BlockCard/index.js +2 -2
- package/dist/es2019/view/CardWithUrl/component-lazy/index.js +1 -1
- package/dist/es2019/view/CardWithUrl/component.js +8 -3
- package/dist/es2019/view/CardWithUrl/loader.js +83 -92
- package/dist/es2019/view/EmbedCard/index.js +2 -2
- package/dist/esm/client/utils/environments.js +1 -1
- package/dist/esm/extractors/block/index.js +2 -2
- package/dist/esm/extractors/common/actions/extractPreviewAction.js +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/providers/editor/transformer.js +6 -2
- package/dist/esm/state/actions/index.js +13 -7
- package/dist/esm/state/analytics/index.js +2 -80
- package/dist/esm/state/analytics/ufoExperiences.js +43 -0
- package/dist/esm/state/analytics/useSmartLinkAnalytics.js +102 -0
- package/dist/esm/state/hooks/useSmartLink.js +6 -6
- package/dist/esm/utils/analytics/analytics.js +6 -6
- package/dist/esm/version.json +1 -1
- package/dist/esm/view/BlockCard/index.js +2 -2
- package/dist/esm/view/CardWithUrl/component-lazy/index.js +1 -1
- package/dist/esm/view/CardWithUrl/component.js +8 -3
- package/dist/esm/view/CardWithUrl/loader.js +101 -130
- package/dist/esm/view/EmbedCard/index.js +2 -2
- package/dist/types/extractors/block/types.d.ts +1 -1
- package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/state/analytics/index.d.ts +3 -32
- package/dist/types/state/analytics/ufoExperiences.d.ts +7 -0
- package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +31 -0
- package/dist/types/state/hooks/useSmartLink.d.ts +5 -6
- package/dist/types/utils/analytics/analytics.d.ts +3 -3
- package/dist/types/view/CardWithUrl/component-lazy/index.d.ts +1 -1
- package/dist/types/view/CardWithUrl/loader.d.ts +1 -15
- package/package.json +19 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# @atlaskit/smart-card
|
|
2
2
|
|
|
3
|
+
## 16.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`af29def3dac`](https://bitbucket.org/atlassian/atlassian-frontend/commits/af29def3dac) - expose missing smart-card classnames
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
import {
|
|
11
|
+
blockCardResolvedViewByClassName,
|
|
12
|
+
blockCardForbiddenViewLinkClassName,
|
|
13
|
+
blockCardContentClassName,
|
|
14
|
+
blockCardContentHeaderClassName,
|
|
15
|
+
blockCardContentHeaderNameClassName,
|
|
16
|
+
blockCardNotFoundViewClassName,
|
|
17
|
+
blockCardErroredViewClassName,
|
|
18
|
+
} from '@atlaskit/smart-card'
|
|
19
|
+
|
|
20
|
+
css`
|
|
21
|
+
.${blockCardContentHeaderNameClassName} {
|
|
22
|
+
background-color: red;
|
|
23
|
+
}
|
|
24
|
+
`
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- [`e7b325a766c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e7b325a766c) - [ux] Jira Work Management (JWM) Calendar view links will be converted into smart link embed by default
|
|
28
|
+
- [`b2664acc865`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b2664acc865) - [ux] Jira Work Management (JWM) Timeline view links will be converted into smart link embed by default
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- [`bea1d5c0a96`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bea1d5c0a96) - Add UFO instrumentation for action invocation. Send extensionKey for client actions as intended, instead of definitionId
|
|
33
|
+
- [`89aa3e3f314`](https://bitbucket.org/atlassian/atlassian-frontend/commits/89aa3e3f314) - Update dependency of dropdown menu to the lite mode version. Update all usages to cater to the new API. The padding within dropdown menu items is 8px more, which makes the menu look bigger.
|
|
34
|
+
- Updated dependencies
|
|
35
|
+
|
|
36
|
+
## 16.2.1
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- [`d7f743bbbdd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d7f743bbbdd) - useCallback for dispatchAnalytics to prevent multiple events firing on hover
|
|
41
|
+
|
|
42
|
+
## 16.2.0
|
|
43
|
+
|
|
44
|
+
### Minor Changes
|
|
45
|
+
|
|
46
|
+
- [`0448db49f68`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0448db49f68) - Implement UFO instrumentation events pattern
|
|
47
|
+
|
|
48
|
+
### Patch Changes
|
|
49
|
+
|
|
50
|
+
- [`df4e03438f2`](https://bitbucket.org/atlassian/atlassian-frontend/commits/df4e03438f2) - Add post render authentication experience using UFO
|
|
51
|
+
- [`7d13155a61c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7d13155a61c) - Updated smart links to UFO with perf metrics
|
|
52
|
+
- [`572581a2ae3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/572581a2ae3) - Polaris (Jira Product Discovery) anonymous views unfurling embed by default.
|
|
53
|
+
- Updated dependencies
|
|
54
|
+
|
|
55
|
+
## 16.1.1
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Updated dependencies
|
|
60
|
+
|
|
3
61
|
## 16.1.0
|
|
4
62
|
|
|
5
63
|
### Minor Changes
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.getResolverUrl = exports.getBaseUrl = exports.BaseUrls = void 0;
|
|
7
7
|
var devBaseUrl = 'https://api-private.dev.atlassian.com';
|
|
8
|
-
var stgBaseUrl = 'https://
|
|
8
|
+
var stgBaseUrl = 'https://commerce-components-preview.dev.atlassian.com/gateway/api';
|
|
9
9
|
var prodBaseUrl = 'https://api-private.atlassian.com';
|
|
10
10
|
var BaseUrls = {
|
|
11
11
|
dev: devBaseUrl,
|
|
@@ -67,10 +67,10 @@ var extractBlockActions = function extractBlockActions(props, jsonLd, opts, plat
|
|
|
67
67
|
if (opts) {
|
|
68
68
|
var handleInvoke = opts.handleInvoke,
|
|
69
69
|
handleAnalytics = opts.handleAnalytics,
|
|
70
|
-
|
|
70
|
+
extensionKey = opts.extensionKey,
|
|
71
71
|
testId = opts.testId;
|
|
72
72
|
var actions = (0, _extractActions.extractActions)(jsonLd, handleInvoke);
|
|
73
|
-
var previewAction = (0, _extractPreviewAction.extractPreviewAction)(
|
|
73
|
+
var previewAction = (0, _extractPreviewAction.extractPreviewAction)(extensionKey, props, jsonLd, handleInvoke, handleAnalytics, testId, platform); // The previewAction should always be the last action
|
|
74
74
|
|
|
75
75
|
if (previewAction) {
|
|
76
76
|
actions.push(previewAction);
|
|
@@ -66,7 +66,7 @@ var getInvokeOpts = function getInvokeOpts(key, action, source) {
|
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
var extractPreviewAction = function extractPreviewAction() {
|
|
69
|
-
var
|
|
69
|
+
var extensionKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'empty-object-provider';
|
|
70
70
|
var viewProps = arguments.length > 1 ? arguments[1] : undefined;
|
|
71
71
|
var jsonLd = arguments.length > 2 ? arguments[2] : undefined;
|
|
72
72
|
var handleInvoke = arguments.length > 3 ? arguments[3] : undefined;
|
|
@@ -82,7 +82,7 @@ var extractPreviewAction = function extractPreviewAction() {
|
|
|
82
82
|
|
|
83
83
|
if (metadataFromJsonLd.src) {
|
|
84
84
|
// Build action using instrumentation hooks.
|
|
85
|
-
var key =
|
|
85
|
+
var key = extensionKey;
|
|
86
86
|
var previewAction = (0, _mediaUi.PreviewAction)(_objectSpread(_objectSpread({}, metadata), {}, {
|
|
87
87
|
testId: testId,
|
|
88
88
|
onOpen: function onOpen() {
|
package/dist/cjs/index.js
CHANGED
|
@@ -113,6 +113,48 @@ Object.defineProperty(exports, "blockCardIconImageClassName", {
|
|
|
113
113
|
return _classNames.blockCardIconImageClassName;
|
|
114
114
|
}
|
|
115
115
|
});
|
|
116
|
+
Object.defineProperty(exports, "blockCardResolvedViewByClassName", {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
get: function get() {
|
|
119
|
+
return _classNames.blockCardResolvedViewByClassName;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
Object.defineProperty(exports, "blockCardForbiddenViewLinkClassName", {
|
|
123
|
+
enumerable: true,
|
|
124
|
+
get: function get() {
|
|
125
|
+
return _classNames.blockCardForbiddenViewLinkClassName;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
Object.defineProperty(exports, "blockCardContentClassName", {
|
|
129
|
+
enumerable: true,
|
|
130
|
+
get: function get() {
|
|
131
|
+
return _classNames.blockCardContentClassName;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
Object.defineProperty(exports, "blockCardContentHeaderClassName", {
|
|
135
|
+
enumerable: true,
|
|
136
|
+
get: function get() {
|
|
137
|
+
return _classNames.blockCardContentHeaderClassName;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
Object.defineProperty(exports, "blockCardContentHeaderNameClassName", {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
get: function get() {
|
|
143
|
+
return _classNames.blockCardContentHeaderNameClassName;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
Object.defineProperty(exports, "blockCardNotFoundViewClassName", {
|
|
147
|
+
enumerable: true,
|
|
148
|
+
get: function get() {
|
|
149
|
+
return _classNames.blockCardNotFoundViewClassName;
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
Object.defineProperty(exports, "blockCardErroredViewClassName", {
|
|
153
|
+
enumerable: true,
|
|
154
|
+
get: function get() {
|
|
155
|
+
return _classNames.blockCardErroredViewClassName;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
116
158
|
Object.defineProperty(exports, "loadingPlaceholderClassName", {
|
|
117
159
|
enumerable: true,
|
|
118
160
|
get: function get() {
|
|
@@ -16,7 +16,11 @@ var isJiraRoadMap = function isJiraRoadMap(url) {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
var isPolarisView = function isPolarisView(url) {
|
|
19
|
-
return url.match(/^https:\/\/.*?\/jira\/polaris\/projects\/[^\/]+?\/ideas\/view\/\d
|
|
19
|
+
return url.match(/^https:\/\/.*?\/jira\/polaris\/projects\/[^\/]+?\/ideas\/view\/\d+$|^https:\/\/.*?\/secure\/JiraProductDiscoveryAnonymous\.jspa\?hash=\w+|^https:\/\/.*?\/jira\/polaris\/share\/\w+/);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var isJwmView = function isJwmView(url) {
|
|
23
|
+
return url.match(/^https:\/\/.*?\/jira\/core\/projects\/[^\/]+?\/(timeline|calendar)\/?/);
|
|
20
24
|
};
|
|
21
25
|
|
|
22
26
|
var isSlackMessage = function isSlackMessage(url) {
|
|
@@ -62,7 +66,7 @@ var Transformer = /*#__PURE__*/function () {
|
|
|
62
66
|
}, {
|
|
63
67
|
key: "toAdf",
|
|
64
68
|
value: function toAdf(url, appearance) {
|
|
65
|
-
if (isJiraRoadMap(url) || isPolarisView(url)) {
|
|
69
|
+
if (isJiraRoadMap(url) || isPolarisView(url) || isJwmView(url)) {
|
|
66
70
|
return this.buildEmbedAdf(url);
|
|
67
71
|
} else if (isSlackMessage(url)) {
|
|
68
72
|
return this.buildBlockAdf(url);
|
|
@@ -31,6 +31,8 @@ var _errors = require("../../client/errors");
|
|
|
31
31
|
|
|
32
32
|
var _jsonld = require("../../utils/jsonld");
|
|
33
33
|
|
|
34
|
+
var _analytics = require("../analytics");
|
|
35
|
+
|
|
34
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); }
|
|
35
37
|
|
|
36
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; }
|
|
@@ -124,7 +126,7 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
|
|
|
124
126
|
isReloading = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
|
|
125
127
|
|
|
126
128
|
if (!(isReloading || !hasData)) {
|
|
127
|
-
_context.next =
|
|
129
|
+
_context.next = 6;
|
|
128
130
|
break;
|
|
129
131
|
}
|
|
130
132
|
|
|
@@ -134,13 +136,18 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
|
|
|
134
136
|
return handleResolvedLinkError(resourceUrl, error);
|
|
135
137
|
}));
|
|
136
138
|
|
|
137
|
-
case
|
|
139
|
+
case 6:
|
|
140
|
+
(0, _analytics.addMetadataToExperience)('smart-link-rendered', id, {
|
|
141
|
+
cached: true
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
case 7:
|
|
138
145
|
case "end":
|
|
139
146
|
return _context.stop();
|
|
140
147
|
}
|
|
141
148
|
}
|
|
142
149
|
}, _callee);
|
|
143
|
-
})), [url, hasData, connections.client, handleResolvedLinkResponse, handleResolvedLinkError]);
|
|
150
|
+
})), [url, hasData, connections.client, handleResolvedLinkResponse, handleResolvedLinkError, id]);
|
|
144
151
|
var register = (0, _react.useCallback)(function () {
|
|
145
152
|
if (!details) {
|
|
146
153
|
dispatch((0, _helpers.cardAction)(_constants.ACTION_PENDING, {
|
|
@@ -178,10 +185,10 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
|
|
|
178
185
|
analytics.screen.authPopupEvent(definitionId, extensionKey);
|
|
179
186
|
(0, _outboundAuthFlowClient.auth)(services[0].url).then(function () {
|
|
180
187
|
analytics.track.appAccountConnected(definitionId, extensionKey);
|
|
181
|
-
analytics.operational.connectSucceededEvent(definitionId, extensionKey);
|
|
188
|
+
analytics.operational.connectSucceededEvent(id, definitionId, extensionKey);
|
|
182
189
|
reload();
|
|
183
190
|
}, function (err) {
|
|
184
|
-
analytics.operational.connectFailedEvent(definitionId, extensionKey, err.type);
|
|
191
|
+
analytics.operational.connectFailedEvent(id, definitionId, extensionKey, err.type);
|
|
185
192
|
|
|
186
193
|
if (err.type === 'auth_window_closed') {
|
|
187
194
|
analytics.ui.closedAuthEvent(appearance, definitionId, extensionKey);
|
|
@@ -190,7 +197,7 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
|
|
|
190
197
|
reload();
|
|
191
198
|
});
|
|
192
199
|
}
|
|
193
|
-
}, [analytics.ui, analytics.screen, analytics.track, analytics.operational, reload, details, status]);
|
|
200
|
+
}, [analytics.ui, analytics.screen, analytics.track, analytics.operational, id, reload, details, status]);
|
|
194
201
|
var invoke = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
195
202
|
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(opts, appearance) {
|
|
196
203
|
var key, action, source, markName, response;
|
|
@@ -205,7 +212,7 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
|
|
|
205
212
|
measure.mark(markName, 'pending');
|
|
206
213
|
_context2.prev = 4;
|
|
207
214
|
// Begin analytics instrumentation.
|
|
208
|
-
analytics.ui.actionClickedEvent(key, action.type, source); // Invoke action - either client-side or server-side.
|
|
215
|
+
analytics.ui.actionClickedEvent(id, key, action.type, source, opts.type); // Invoke action - either client-side or server-side.
|
|
209
216
|
|
|
210
217
|
if (!(opts.type === 'client')) {
|
|
211
218
|
_context2.next = 12;
|
|
@@ -3,89 +3,37 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
}, [dispatchAnalytics]);
|
|
38
|
-
var operational = (0, _react.useMemo)(function () {
|
|
39
|
-
return {
|
|
40
|
-
resolvedEvent: function resolvedEvent(id, definitionId, extensionKey, resourceType) {
|
|
41
|
-
return dispatchAnalytics((0, _analytics.resolvedEvent)(id, definitionId, extensionKey, resourceType));
|
|
42
|
-
},
|
|
43
|
-
unresolvedEvent: function unresolvedEvent(id, status, definitionId, extensionKey, resourceType) {
|
|
44
|
-
return dispatchAnalytics((0, _analytics.unresolvedEvent)(id, status, definitionId, extensionKey, resourceType));
|
|
45
|
-
},
|
|
46
|
-
invokeSucceededEvent: function invokeSucceededEvent(id, providerKey, actionType, display) {
|
|
47
|
-
return dispatchAnalytics((0, _analytics.invokeSucceededEvent)(id, providerKey, actionType, display));
|
|
48
|
-
},
|
|
49
|
-
invokeFailedEvent: function invokeFailedEvent(id, providerKey, actionType, display, reason) {
|
|
50
|
-
return dispatchAnalytics((0, _analytics.invokeFailedEvent)(id, providerKey, actionType, display, reason));
|
|
51
|
-
},
|
|
52
|
-
connectSucceededEvent: function connectSucceededEvent(definitionId, extensionKey) {
|
|
53
|
-
return dispatchAnalytics((0, _analytics.connectSucceededEvent)(definitionId, extensionKey));
|
|
54
|
-
},
|
|
55
|
-
connectFailedEvent: function connectFailedEvent(definitionId, extensionKey, reason) {
|
|
56
|
-
return dispatchAnalytics((0, _analytics.connectFailedEvent)(definitionId, extensionKey, reason));
|
|
57
|
-
},
|
|
58
|
-
instrument: function instrument(id, status, definitionId, extensionKey, resourceType, error) {
|
|
59
|
-
var event = (0, _analytics.instrumentEvent)(id, status, definitionId, extensionKey, resourceType, error);
|
|
6
|
+
Object.defineProperty(exports, "startUfoExperience", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _ufoExperiences.startUfoExperience;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "succeedUfoExperience", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _ufoExperiences.succeedUfoExperience;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "failUfoExperience", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _ufoExperiences.failUfoExperience;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "addMetadataToExperience", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _ufoExperiences.addMetadataToExperience;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "useSmartLinkAnalytics", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function get() {
|
|
33
|
+
return _useSmartLinkAnalytics.useSmartLinkAnalytics;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
60
36
|
|
|
61
|
-
|
|
62
|
-
dispatchAnalytics(event);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}, [dispatchAnalytics]);
|
|
67
|
-
var track = (0, _react.useMemo)(function () {
|
|
68
|
-
return {
|
|
69
|
-
appAccountConnected: function appAccountConnected(definitionId, extensionKey) {
|
|
70
|
-
return dispatchAnalytics((0, _analytics.trackAppAccountConnected)(definitionId, extensionKey));
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
}, [dispatchAnalytics]);
|
|
74
|
-
var screen = (0, _react.useMemo)(function () {
|
|
75
|
-
return {
|
|
76
|
-
authPopupEvent: function authPopupEvent(definitionId, extensionKey) {
|
|
77
|
-
return dispatchAnalytics((0, _analytics.screenAuthPopupEvent)(definitionId, extensionKey));
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}, [dispatchAnalytics]);
|
|
81
|
-
return (0, _react.useMemo)(function () {
|
|
82
|
-
return {
|
|
83
|
-
ui: ui,
|
|
84
|
-
operational: operational,
|
|
85
|
-
track: track,
|
|
86
|
-
screen: screen
|
|
87
|
-
};
|
|
88
|
-
}, [ui, operational, track, screen]);
|
|
89
|
-
};
|
|
37
|
+
var _ufoExperiences = require("./ufoExperiences");
|
|
90
38
|
|
|
91
|
-
|
|
39
|
+
var _useSmartLinkAnalytics = require("./useSmartLinkAnalytics");
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addMetadataToExperience = exports.failUfoExperience = exports.succeedUfoExperience = exports.startUfoExperience = void 0;
|
|
7
|
+
|
|
8
|
+
var _ufo = require("@atlaskit/ufo");
|
|
9
|
+
|
|
10
|
+
var inlineExperience = {
|
|
11
|
+
platform: {
|
|
12
|
+
component: 'smart-links'
|
|
13
|
+
},
|
|
14
|
+
type: _ufo.ExperienceTypes.Experience,
|
|
15
|
+
performanceType: _ufo.ExperiencePerformanceTypes.InlineResult
|
|
16
|
+
};
|
|
17
|
+
var renderExperience = {
|
|
18
|
+
platform: {
|
|
19
|
+
component: 'smart-links'
|
|
20
|
+
},
|
|
21
|
+
type: _ufo.ExperienceTypes.Load,
|
|
22
|
+
performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad
|
|
23
|
+
};
|
|
24
|
+
var ufoExperiences = {
|
|
25
|
+
'smart-link-rendered': new _ufo.ConcurrentExperience('smart-link-rendered', renderExperience),
|
|
26
|
+
'smart-link-authenticated': new _ufo.ConcurrentExperience('smart-link-authenticated', inlineExperience),
|
|
27
|
+
'smart-link-action-invocation': new _ufo.ConcurrentExperience('smart-link-action-invocation', inlineExperience)
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var startUfoExperience = function startUfoExperience(experienceName, id, properties) {
|
|
31
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
32
|
+
experience.start();
|
|
33
|
+
|
|
34
|
+
if (properties) {
|
|
35
|
+
experience.addMetadata(properties);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
exports.startUfoExperience = startUfoExperience;
|
|
40
|
+
|
|
41
|
+
var succeedUfoExperience = function succeedUfoExperience(experienceName, id, properties) {
|
|
42
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
43
|
+
experience.success({
|
|
44
|
+
metadata: properties
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
exports.succeedUfoExperience = succeedUfoExperience;
|
|
49
|
+
|
|
50
|
+
var failUfoExperience = function failUfoExperience(experienceName, id, properties) {
|
|
51
|
+
var experience = ufoExperiences[experienceName].getInstance(id);
|
|
52
|
+
experience.failure({
|
|
53
|
+
metadata: properties
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
exports.failUfoExperience = failUfoExperience;
|
|
58
|
+
|
|
59
|
+
var addMetadataToExperience = function addMetadataToExperience(experienceName, id, properties) {
|
|
60
|
+
ufoExperiences[experienceName].getInstance(id).addMetadata(properties);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
exports.addMetadataToExperience = addMetadataToExperience;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSmartLinkAnalytics = void 0;
|
|
7
|
+
|
|
8
|
+
var _analytics = require("../../utils/analytics");
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
var _ufoExperiences = require("./ufoExperiences");
|
|
13
|
+
|
|
14
|
+
var useSmartLinkAnalytics = function useSmartLinkAnalytics(dispatchAnalytics) {
|
|
15
|
+
var ui = (0, _react.useMemo)(function () {
|
|
16
|
+
return {
|
|
17
|
+
authEvent: function authEvent(display, definitionId, extensionKey) {
|
|
18
|
+
return dispatchAnalytics((0, _analytics.uiAuthEvent)(display, definitionId, extensionKey));
|
|
19
|
+
},
|
|
20
|
+
authAlternateAccountEvent: function authAlternateAccountEvent(display, definitionId, extensionKey) {
|
|
21
|
+
return dispatchAnalytics((0, _analytics.uiAuthAlternateAccountEvent)(display, definitionId, extensionKey));
|
|
22
|
+
},
|
|
23
|
+
cardClickedEvent: function cardClickedEvent(display, definitionId, extensionKey) {
|
|
24
|
+
return dispatchAnalytics((0, _analytics.uiCardClickedEvent)(display, definitionId, extensionKey));
|
|
25
|
+
},
|
|
26
|
+
actionClickedEvent: function actionClickedEvent(id, extensionKey, actionType, display, invokeType) {
|
|
27
|
+
(0, _ufoExperiences.startUfoExperience)('smart-link-action-invocation', id, {
|
|
28
|
+
actionType: actionType,
|
|
29
|
+
display: display,
|
|
30
|
+
extensionKey: extensionKey,
|
|
31
|
+
invokeType: invokeType
|
|
32
|
+
});
|
|
33
|
+
dispatchAnalytics((0, _analytics.uiActionClickedEvent)(extensionKey, actionType, display));
|
|
34
|
+
},
|
|
35
|
+
closedAuthEvent: function closedAuthEvent(display, definitionId, extensionKey) {
|
|
36
|
+
return dispatchAnalytics((0, _analytics.uiClosedAuthEvent)(display, definitionId, extensionKey));
|
|
37
|
+
},
|
|
38
|
+
renderSuccessEvent: function renderSuccessEvent(display, id, definitionId, extensionKey) {
|
|
39
|
+
(0, _ufoExperiences.succeedUfoExperience)('smart-link-rendered', id, {
|
|
40
|
+
extensionKey: extensionKey,
|
|
41
|
+
display: display
|
|
42
|
+
}); // UFO will disregard this if authentication experience has not yet been started
|
|
43
|
+
|
|
44
|
+
(0, _ufoExperiences.succeedUfoExperience)('smart-link-authenticated', id, {
|
|
45
|
+
display: display
|
|
46
|
+
});
|
|
47
|
+
dispatchAnalytics((0, _analytics.uiRenderSuccessEvent)(display, definitionId, extensionKey));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}, [dispatchAnalytics]);
|
|
51
|
+
var operational = (0, _react.useMemo)(function () {
|
|
52
|
+
return {
|
|
53
|
+
resolvedEvent: function resolvedEvent(id, definitionId, extensionKey, resourceType) {
|
|
54
|
+
return dispatchAnalytics((0, _analytics.resolvedEvent)(id, definitionId, extensionKey, resourceType));
|
|
55
|
+
},
|
|
56
|
+
unresolvedEvent: function unresolvedEvent(id, status, definitionId, extensionKey, resourceType) {
|
|
57
|
+
return dispatchAnalytics((0, _analytics.unresolvedEvent)(id, status, definitionId, extensionKey, resourceType));
|
|
58
|
+
},
|
|
59
|
+
invokeSucceededEvent: function invokeSucceededEvent(id, providerKey, actionType, display) {
|
|
60
|
+
(0, _ufoExperiences.succeedUfoExperience)('smart-link-action-invocation', id);
|
|
61
|
+
dispatchAnalytics((0, _analytics.invokeSucceededEvent)(id, providerKey, actionType, display));
|
|
62
|
+
},
|
|
63
|
+
invokeFailedEvent: function invokeFailedEvent(id, providerKey, actionType, display, reason) {
|
|
64
|
+
(0, _ufoExperiences.failUfoExperience)('smart-link-action-invocation', id);
|
|
65
|
+
dispatchAnalytics((0, _analytics.invokeFailedEvent)(id, providerKey, actionType, display, reason));
|
|
66
|
+
},
|
|
67
|
+
connectSucceededEvent: function connectSucceededEvent(id, definitionId, extensionKey) {
|
|
68
|
+
(0, _ufoExperiences.startUfoExperience)('smart-link-authenticated', id, {
|
|
69
|
+
extensionKey: extensionKey,
|
|
70
|
+
status: 'success'
|
|
71
|
+
});
|
|
72
|
+
dispatchAnalytics((0, _analytics.connectSucceededEvent)(definitionId, extensionKey));
|
|
73
|
+
},
|
|
74
|
+
connectFailedEvent: function connectFailedEvent(id, definitionId, extensionKey, status) {
|
|
75
|
+
(0, _ufoExperiences.startUfoExperience)('smart-link-authenticated', id, {
|
|
76
|
+
extensionKey: extensionKey,
|
|
77
|
+
status: status
|
|
78
|
+
});
|
|
79
|
+
dispatchAnalytics((0, _analytics.connectFailedEvent)(definitionId, extensionKey, status));
|
|
80
|
+
},
|
|
81
|
+
instrument: function instrument(id, status, definitionId, extensionKey, resourceType, error) {
|
|
82
|
+
var event = (0, _analytics.instrumentEvent)(id, status, definitionId, extensionKey, resourceType, error);
|
|
83
|
+
|
|
84
|
+
if (event) {
|
|
85
|
+
dispatchAnalytics(event);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}, [dispatchAnalytics]);
|
|
90
|
+
var track = (0, _react.useMemo)(function () {
|
|
91
|
+
return {
|
|
92
|
+
appAccountConnected: function appAccountConnected(definitionId, extensionKey) {
|
|
93
|
+
return dispatchAnalytics((0, _analytics.trackAppAccountConnected)(definitionId, extensionKey));
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}, [dispatchAnalytics]);
|
|
97
|
+
var screen = (0, _react.useMemo)(function () {
|
|
98
|
+
return {
|
|
99
|
+
authPopupEvent: function authPopupEvent(definitionId, extensionKey) {
|
|
100
|
+
return dispatchAnalytics((0, _analytics.screenAuthPopupEvent)(definitionId, extensionKey));
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}, [dispatchAnalytics]);
|
|
104
|
+
return (0, _react.useMemo)(function () {
|
|
105
|
+
return {
|
|
106
|
+
ui: ui,
|
|
107
|
+
operational: operational,
|
|
108
|
+
track: track,
|
|
109
|
+
screen: screen
|
|
110
|
+
};
|
|
111
|
+
}, [ui, operational, track, screen]);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
exports.useSmartLinkAnalytics = useSmartLinkAnalytics;
|
|
@@ -28,16 +28,15 @@ function useSmartLink(id, url, dispatchAnalytics) {
|
|
|
28
28
|
var config = (0, _config.useSmartLinkConfig)();
|
|
29
29
|
var renderers = (0, _renderers.useSmartLinkRenderers)(); // NB: used to propagate errors from hooks to error boundaries.
|
|
30
30
|
|
|
31
|
-
var _useState = (0, _react.useState)(),
|
|
31
|
+
var _useState = (0, _react.useState)(null),
|
|
32
32
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
33
|
-
|
|
33
|
+
error = _useState2[0],
|
|
34
|
+
setError = _useState2[1]; // Register the current card.
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
var register = function register() {
|
|
37
38
|
actions.register().catch(function (err) {
|
|
38
|
-
return
|
|
39
|
-
throw err;
|
|
40
|
-
});
|
|
39
|
+
return setError(err);
|
|
41
40
|
});
|
|
42
41
|
}; // AFP-2511 TODO: Fix automatic suppressions below
|
|
43
42
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -50,6 +49,7 @@ function useSmartLink(id, url, dispatchAnalytics) {
|
|
|
50
49
|
actions: actions,
|
|
51
50
|
config: config,
|
|
52
51
|
analytics: analytics,
|
|
53
|
-
renderers: renderers
|
|
52
|
+
renderers: renderers,
|
|
53
|
+
error: error
|
|
54
54
|
};
|
|
55
55
|
}
|
|
@@ -109,7 +109,7 @@ var unresolvedEvent = function unresolvedEvent(id, status, definitionId, extensi
|
|
|
109
109
|
|
|
110
110
|
exports.unresolvedEvent = unresolvedEvent;
|
|
111
111
|
|
|
112
|
-
var invokeSucceededEvent = function invokeSucceededEvent(id,
|
|
112
|
+
var invokeSucceededEvent = function invokeSucceededEvent(id, extensionKey, actionType, display) {
|
|
113
113
|
var measure = (0, _performance.getMeasure)(id, 'resolved') || {
|
|
114
114
|
duration: undefined
|
|
115
115
|
};
|
|
@@ -121,7 +121,7 @@ var invokeSucceededEvent = function invokeSucceededEvent(id, providerKey, action
|
|
|
121
121
|
id: id,
|
|
122
122
|
actionType: actionType,
|
|
123
123
|
display: display,
|
|
124
|
-
|
|
124
|
+
extensionKey: extensionKey,
|
|
125
125
|
duration: measure.duration
|
|
126
126
|
})
|
|
127
127
|
};
|
|
@@ -129,7 +129,7 @@ var invokeSucceededEvent = function invokeSucceededEvent(id, providerKey, action
|
|
|
129
129
|
|
|
130
130
|
exports.invokeSucceededEvent = invokeSucceededEvent;
|
|
131
131
|
|
|
132
|
-
var invokeFailedEvent = function invokeFailedEvent(id,
|
|
132
|
+
var invokeFailedEvent = function invokeFailedEvent(id, extensionKey, actionType, display, reason) {
|
|
133
133
|
var measure = (0, _performance.getMeasure)(id, 'errored') || {
|
|
134
134
|
duration: undefined
|
|
135
135
|
};
|
|
@@ -141,7 +141,7 @@ var invokeFailedEvent = function invokeFailedEvent(id, providerKey, actionType,
|
|
|
141
141
|
id: id,
|
|
142
142
|
actionType: actionType,
|
|
143
143
|
display: display,
|
|
144
|
-
|
|
144
|
+
extensionKey: extensionKey,
|
|
145
145
|
duration: measure.duration,
|
|
146
146
|
reason: reason
|
|
147
147
|
})
|
|
@@ -245,14 +245,14 @@ var uiCardClickedEvent = function uiCardClickedEvent(display, definitionId, exte
|
|
|
245
245
|
|
|
246
246
|
exports.uiCardClickedEvent = uiCardClickedEvent;
|
|
247
247
|
|
|
248
|
-
var uiActionClickedEvent = function uiActionClickedEvent(
|
|
248
|
+
var uiActionClickedEvent = function uiActionClickedEvent(extensionKey, actionType, display) {
|
|
249
249
|
return {
|
|
250
250
|
action: 'clicked',
|
|
251
251
|
actionSubject: 'smartLinkAction',
|
|
252
252
|
eventType: 'ui',
|
|
253
253
|
attributes: _objectSpread(_objectSpread({}, context), {}, {
|
|
254
254
|
display: display,
|
|
255
|
-
|
|
255
|
+
extensionKey: extensionKey,
|
|
256
256
|
actionType: actionType
|
|
257
257
|
})
|
|
258
258
|
};
|
package/dist/cjs/version.json
CHANGED
|
@@ -45,7 +45,7 @@ var BlockCard = function BlockCard(_ref) {
|
|
|
45
45
|
var extractorOpts = {
|
|
46
46
|
handleAnalytics: handlePreviewAnalytics,
|
|
47
47
|
handleInvoke: handleInvoke,
|
|
48
|
-
|
|
48
|
+
extensionKey: (0, _helpers.getExtensionKey)(details)
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
switch (status) {
|
|
@@ -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.
|
|
8
|
+
exports.default = LazyCardWithUrlContent;
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
|