@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.
Files changed (63) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/cjs/client/utils/environments.js +1 -1
  3. package/dist/cjs/extractors/block/index.js +2 -2
  4. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +2 -2
  5. package/dist/cjs/index.js +42 -0
  6. package/dist/cjs/providers/editor/transformer.js +6 -2
  7. package/dist/cjs/state/actions/index.js +14 -7
  8. package/dist/cjs/state/analytics/index.js +32 -84
  9. package/dist/cjs/state/analytics/ufoExperiences.js +63 -0
  10. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +114 -0
  11. package/dist/cjs/state/hooks/useSmartLink.js +6 -6
  12. package/dist/cjs/utils/analytics/analytics.js +6 -6
  13. package/dist/cjs/version.json +1 -1
  14. package/dist/cjs/view/BlockCard/index.js +1 -1
  15. package/dist/cjs/view/CardWithUrl/component-lazy/index.js +1 -1
  16. package/dist/cjs/view/CardWithUrl/component.js +8 -3
  17. package/dist/cjs/view/CardWithUrl/loader.js +106 -134
  18. package/dist/cjs/view/EmbedCard/index.js +1 -1
  19. package/dist/es2019/client/utils/environments.js +1 -1
  20. package/dist/es2019/extractors/block/index.js +2 -2
  21. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +2 -2
  22. package/dist/es2019/index.js +1 -1
  23. package/dist/es2019/providers/editor/transformer.js +4 -2
  24. package/dist/es2019/state/actions/index.js +10 -5
  25. package/dist/es2019/state/analytics/index.js +2 -40
  26. package/dist/es2019/state/analytics/ufoExperiences.js +43 -0
  27. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +76 -0
  28. package/dist/es2019/state/hooks/useSmartLink.js +4 -5
  29. package/dist/es2019/utils/analytics/analytics.js +6 -6
  30. package/dist/es2019/version.json +1 -1
  31. package/dist/es2019/view/BlockCard/index.js +2 -2
  32. package/dist/es2019/view/CardWithUrl/component-lazy/index.js +1 -1
  33. package/dist/es2019/view/CardWithUrl/component.js +8 -3
  34. package/dist/es2019/view/CardWithUrl/loader.js +83 -92
  35. package/dist/es2019/view/EmbedCard/index.js +2 -2
  36. package/dist/esm/client/utils/environments.js +1 -1
  37. package/dist/esm/extractors/block/index.js +2 -2
  38. package/dist/esm/extractors/common/actions/extractPreviewAction.js +2 -2
  39. package/dist/esm/index.js +1 -1
  40. package/dist/esm/providers/editor/transformer.js +6 -2
  41. package/dist/esm/state/actions/index.js +13 -7
  42. package/dist/esm/state/analytics/index.js +2 -80
  43. package/dist/esm/state/analytics/ufoExperiences.js +43 -0
  44. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +102 -0
  45. package/dist/esm/state/hooks/useSmartLink.js +6 -6
  46. package/dist/esm/utils/analytics/analytics.js +6 -6
  47. package/dist/esm/version.json +1 -1
  48. package/dist/esm/view/BlockCard/index.js +2 -2
  49. package/dist/esm/view/CardWithUrl/component-lazy/index.js +1 -1
  50. package/dist/esm/view/CardWithUrl/component.js +8 -3
  51. package/dist/esm/view/CardWithUrl/loader.js +101 -130
  52. package/dist/esm/view/EmbedCard/index.js +2 -2
  53. package/dist/types/extractors/block/types.d.ts +1 -1
  54. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +1 -1
  55. package/dist/types/index.d.ts +1 -1
  56. package/dist/types/state/analytics/index.d.ts +3 -32
  57. package/dist/types/state/analytics/ufoExperiences.d.ts +7 -0
  58. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +31 -0
  59. package/dist/types/state/hooks/useSmartLink.d.ts +5 -6
  60. package/dist/types/utils/analytics/analytics.d.ts +3 -3
  61. package/dist/types/view/CardWithUrl/component-lazy/index.d.ts +1 -1
  62. package/dist/types/view/CardWithUrl/loader.d.ts +1 -15
  63. 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://api-private.stg.atlassian.com';
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
- definitionId = opts.definitionId,
70
+ extensionKey = opts.extensionKey,
71
71
  testId = opts.testId;
72
72
  var actions = (0, _extractActions.extractActions)(jsonLd, handleInvoke);
73
- var previewAction = (0, _extractPreviewAction.extractPreviewAction)(definitionId, props, jsonLd, handleInvoke, handleAnalytics, testId, platform); // The previewAction should always be the last action
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 definitionId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'empty-object-provider';
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 = definitionId;
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 = 4;
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 4:
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.useSmartLinkAnalytics = void 0;
7
-
8
- var _analytics = require("../../utils/analytics");
9
-
10
- var _react = require("react");
11
-
12
- var useSmartLinkAnalytics = function useSmartLinkAnalytics(dispatchAnalytics) {
13
- var ui = (0, _react.useMemo)(function () {
14
- return {
15
- authEvent: function authEvent(display, definitionId, extensionKey) {
16
- return dispatchAnalytics((0, _analytics.uiAuthEvent)(display, definitionId, extensionKey));
17
- },
18
- authAlternateAccountEvent: function authAlternateAccountEvent(display, definitionId, extensionKey) {
19
- return dispatchAnalytics((0, _analytics.uiAuthAlternateAccountEvent)(display, definitionId, extensionKey));
20
- },
21
- cardClickedEvent: function cardClickedEvent(display, definitionId, extensionKey) {
22
- return dispatchAnalytics((0, _analytics.uiCardClickedEvent)(display, definitionId, extensionKey));
23
- },
24
- actionClickedEvent: function actionClickedEvent(providerKey, actionType, display) {
25
- return dispatchAnalytics((0, _analytics.uiActionClickedEvent)(providerKey, actionType, display));
26
- },
27
- closedAuthEvent: function closedAuthEvent(display, definitionId, extensionKey) {
28
- return dispatchAnalytics((0, _analytics.uiClosedAuthEvent)(display, definitionId, extensionKey));
29
- },
30
- renderSuccessEvent: function renderSuccessEvent(display, definitionId, extensionKey) {
31
- return dispatchAnalytics((0, _analytics.uiRenderSuccessEvent)(display, definitionId, extensionKey));
32
- },
33
- renderFailedEvent: function renderFailedEvent(display, error, errorInfo) {
34
- return dispatchAnalytics((0, _analytics.uiRenderFailedEvent)(display, error, errorInfo));
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
- if (event) {
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
- exports.useSmartLinkAnalytics = useSmartLinkAnalytics;
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
- setState = _useState2[1]; // Register the current card.
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 setState(function () {
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, providerKey, actionType, display) {
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
- definitionId: providerKey,
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, providerKey, actionType, display, reason) {
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
- definitionId: providerKey,
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(providerKey, actionType, display) {
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
- definitionId: providerKey,
255
+ extensionKey: extensionKey,
256
256
  actionType: actionType
257
257
  })
258
258
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "16.1.0",
3
+ "version": "16.3.0",
4
4
  "sideEffects": false
5
5
  }
@@ -45,7 +45,7 @@ var BlockCard = function BlockCard(_ref) {
45
45
  var extractorOpts = {
46
46
  handleAnalytics: handlePreviewAnalytics,
47
47
  handleInvoke: handleInvoke,
48
- definitionId: (0, _helpers.getDefinitionId)(details)
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.LazyCardWithUrlContent = LazyCardWithUrlContent;
8
+ exports.default = LazyCardWithUrlContent;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11