@atlaskit/smart-card 16.0.0 → 16.2.1

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 (54) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/cjs/client/utils/environments.js +1 -1
  3. package/dist/cjs/extractors/block/index.js +4 -4
  4. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +4 -3
  5. package/dist/cjs/providers/editor/transformer.js +1 -1
  6. package/dist/cjs/state/actions/index.js +13 -6
  7. package/dist/cjs/state/analytics/index.js +32 -84
  8. package/dist/cjs/state/analytics/ufoExperiences.js +60 -0
  9. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +106 -0
  10. package/dist/cjs/state/hooks/useSmartLink.js +6 -6
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/cjs/view/BlockCard/index.js +3 -2
  13. package/dist/cjs/view/CardWithUrl/component-lazy/index.js +1 -1
  14. package/dist/cjs/view/CardWithUrl/component.js +10 -4
  15. package/dist/cjs/view/CardWithUrl/loader.js +106 -134
  16. package/dist/es2019/client/utils/environments.js +1 -1
  17. package/dist/es2019/extractors/block/index.js +4 -4
  18. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +4 -4
  19. package/dist/es2019/providers/editor/transformer.js +1 -1
  20. package/dist/es2019/state/actions/index.js +9 -4
  21. package/dist/es2019/state/analytics/index.js +2 -40
  22. package/dist/es2019/state/analytics/ufoExperiences.js +40 -0
  23. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +62 -0
  24. package/dist/es2019/state/hooks/useSmartLink.js +4 -5
  25. package/dist/es2019/version.json +1 -1
  26. package/dist/es2019/view/BlockCard/index.js +3 -2
  27. package/dist/es2019/view/CardWithUrl/component-lazy/index.js +1 -1
  28. package/dist/es2019/view/CardWithUrl/component.js +10 -4
  29. package/dist/es2019/view/CardWithUrl/loader.js +83 -92
  30. package/dist/esm/client/utils/environments.js +1 -1
  31. package/dist/esm/extractors/block/index.js +4 -4
  32. package/dist/esm/extractors/common/actions/extractPreviewAction.js +4 -3
  33. package/dist/esm/providers/editor/transformer.js +1 -1
  34. package/dist/esm/state/actions/index.js +12 -6
  35. package/dist/esm/state/analytics/index.js +2 -80
  36. package/dist/esm/state/analytics/ufoExperiences.js +40 -0
  37. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +94 -0
  38. package/dist/esm/state/hooks/useSmartLink.js +6 -6
  39. package/dist/esm/version.json +1 -1
  40. package/dist/esm/view/BlockCard/index.js +3 -2
  41. package/dist/esm/view/CardWithUrl/component-lazy/index.js +1 -1
  42. package/dist/esm/view/CardWithUrl/component.js +10 -4
  43. package/dist/esm/view/CardWithUrl/loader.js +101 -130
  44. package/dist/types/extractors/block/index.d.ts +2 -2
  45. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +61 -0
  46. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +1 -1
  47. package/dist/types/state/analytics/index.d.ts +3 -32
  48. package/dist/types/state/analytics/ufoExperiences.d.ts +7 -0
  49. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +30 -0
  50. package/dist/types/state/hooks/useSmartLink.d.ts +4 -5
  51. package/dist/types/view/BlockCard/types.d.ts +2 -1
  52. package/dist/types/view/CardWithUrl/component-lazy/index.d.ts +1 -1
  53. package/dist/types/view/CardWithUrl/loader.d.ts +1 -15
  54. package/package.json +13 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 16.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`d7f743bbbdd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d7f743bbbdd) - useCallback for dispatchAnalytics to prevent multiple events firing on hover
8
+
9
+ ## 16.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`0448db49f68`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0448db49f68) - Implement UFO instrumentation events pattern
14
+
15
+ ### Patch Changes
16
+
17
+ - [`df4e03438f2`](https://bitbucket.org/atlassian/atlassian-frontend/commits/df4e03438f2) - Add post render authentication experience using UFO
18
+ - [`7d13155a61c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7d13155a61c) - Updated smart links to UFO with perf metrics
19
+ - [`572581a2ae3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/572581a2ae3) - Polaris (Jira Product Discovery) anonymous views unfurling embed by default.
20
+ - Updated dependencies
21
+
22
+ ## 16.1.1
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies
27
+
28
+ ## 16.1.0
29
+
30
+ ### Minor Changes
31
+
32
+ - [`978e9280610`](https://bitbucket.org/atlassian/atlassian-frontend/commits/978e9280610) - add support for platform in BlockCard component
33
+
34
+ ### Patch Changes
35
+
36
+ - [`b90c0237824`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b90c0237824) - Update package.jsons to remove unused dependencies.
37
+ - Updated dependencies
38
+
3
39
  ## 16.0.0
4
40
 
5
41
  ### Major 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,
@@ -63,14 +63,14 @@ var extractBlockDetails = function extractBlockDetails(jsonLd) {
63
63
  });
64
64
  };
65
65
 
66
- var extractBlockActions = function extractBlockActions(props, jsonLd, opts) {
66
+ var extractBlockActions = function extractBlockActions(props, jsonLd, opts, platform) {
67
67
  if (opts) {
68
68
  var handleInvoke = opts.handleInvoke,
69
69
  handleAnalytics = opts.handleAnalytics,
70
70
  definitionId = opts.definitionId,
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); // The previewAction should always be the last action
73
+ var previewAction = (0, _extractPreviewAction.extractPreviewAction)(definitionId, 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);
@@ -108,7 +108,7 @@ var extractBlockUsers = function extractBlockUsers(jsonLd) {
108
108
 
109
109
  exports.extractBlockUsers = extractBlockUsers;
110
110
 
111
- var extractBlockProps = function extractBlockProps(jsonLd, meta, opts, renderers) {
111
+ var extractBlockProps = function extractBlockProps(jsonLd, meta, opts, renderers, platform) {
112
112
  var props = {
113
113
  link: (0, _primitives.extractLink)(jsonLd),
114
114
  title: (0, _primitives.extractTitle)(jsonLd),
@@ -124,7 +124,7 @@ var extractBlockProps = function extractBlockProps(jsonLd, meta, opts, renderers
124
124
  isTrusted: (0, _extractIsTrusted.extractIsTrusted)(meta)
125
125
  };
126
126
  return _objectSpread(_objectSpread({}, props), {}, {
127
- actions: extractBlockActions(props, jsonLd, opts)
127
+ actions: extractBlockActions(props, jsonLd, opts, platform)
128
128
  });
129
129
  };
130
130
 
@@ -23,10 +23,10 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
23
23
 
24
24
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
25
 
26
- var getMetadataFromJsonLd = function getMetadataFromJsonLd(jsonLd) {
26
+ var getMetadataFromJsonLd = function getMetadataFromJsonLd(jsonLd, platform) {
27
27
  var download = (0, _detail.extractDownloadUrl)(jsonLd);
28
28
  var provider = (0, _context.extractProvider)(jsonLd);
29
- var preview = (0, _preview.extractPreview)(jsonLd);
29
+ var preview = (0, _preview.extractPreview)(jsonLd, platform);
30
30
  return {
31
31
  download: download,
32
32
  providerName: provider && provider.text,
@@ -72,8 +72,9 @@ var extractPreviewAction = function extractPreviewAction() {
72
72
  var handleInvoke = arguments.length > 3 ? arguments[3] : undefined;
73
73
  var handleAnalytics = arguments.length > 4 ? arguments[4] : undefined;
74
74
  var testId = arguments.length > 5 ? arguments[5] : undefined;
75
+ var platform = arguments.length > 6 ? arguments[6] : undefined;
75
76
  // Extract metadata from view props & raw JSON-LD.
76
- var metadataFromJsonLd = getMetadataFromJsonLd(jsonLd);
77
+ var metadataFromJsonLd = getMetadataFromJsonLd(jsonLd, platform);
77
78
  var metadataFromViewProps = getMetadataFromResolvedProps(viewProps);
78
79
 
79
80
  var metadata = _objectSpread(_objectSpread({}, metadataFromJsonLd), metadataFromViewProps); // Extract preview action only if we have an iframe src.
@@ -16,7 +16,7 @@ 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
20
  };
21
21
 
22
22
  var isSlackMessage = function isSlackMessage(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;
@@ -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,60 @@
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 ufoExperiences = {
11
+ 'smart-link-rendered': new _ufo.ConcurrentExperience('smart-link-rendered', {
12
+ type: _ufo.ExperienceTypes.Load,
13
+ performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad,
14
+ platform: {
15
+ component: 'smart-links'
16
+ }
17
+ }),
18
+ 'smart-link-authenticated': new _ufo.ConcurrentExperience('smart-link-authenticated', {
19
+ type: _ufo.ExperienceTypes.Load,
20
+ performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad,
21
+ platform: {
22
+ component: 'smart-links'
23
+ }
24
+ })
25
+ };
26
+
27
+ var startUfoExperience = function startUfoExperience(experienceName, id, properties) {
28
+ var experience = ufoExperiences[experienceName].getInstance(id);
29
+ experience.start();
30
+
31
+ if (properties) {
32
+ experience.addMetadata(properties);
33
+ }
34
+ };
35
+
36
+ exports.startUfoExperience = startUfoExperience;
37
+
38
+ var succeedUfoExperience = function succeedUfoExperience(experienceName, id, properties) {
39
+ var experience = ufoExperiences[experienceName].getInstance(id);
40
+ experience.success({
41
+ metadata: properties
42
+ });
43
+ };
44
+
45
+ exports.succeedUfoExperience = succeedUfoExperience;
46
+
47
+ var failUfoExperience = function failUfoExperience(experienceName, id, properties) {
48
+ var experience = ufoExperiences[experienceName].getInstance(id);
49
+ experience.failure({
50
+ metadata: properties
51
+ });
52
+ };
53
+
54
+ exports.failUfoExperience = failUfoExperience;
55
+
56
+ var addMetadataToExperience = function addMetadataToExperience(experienceName, id, properties) {
57
+ ufoExperiences[experienceName].getInstance(id).addMetadata(properties);
58
+ };
59
+
60
+ exports.addMetadataToExperience = addMetadataToExperience;
@@ -0,0 +1,106 @@
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(providerKey, actionType, display) {
27
+ return dispatchAnalytics((0, _analytics.uiActionClickedEvent)(providerKey, actionType, display));
28
+ },
29
+ closedAuthEvent: function closedAuthEvent(display, definitionId, extensionKey) {
30
+ return dispatchAnalytics((0, _analytics.uiClosedAuthEvent)(display, definitionId, extensionKey));
31
+ },
32
+ renderSuccessEvent: function renderSuccessEvent(display, id, definitionId, extensionKey) {
33
+ (0, _ufoExperiences.succeedUfoExperience)('smart-link-rendered', id, {
34
+ extensionKey: extensionKey,
35
+ display: display
36
+ }); // UFO will disregard this if authentication experience has not yet been started
37
+
38
+ (0, _ufoExperiences.succeedUfoExperience)('smart-link-authenticated', id, {
39
+ display: display
40
+ });
41
+ dispatchAnalytics((0, _analytics.uiRenderSuccessEvent)(display, definitionId, extensionKey));
42
+ }
43
+ };
44
+ }, [dispatchAnalytics]);
45
+ var operational = (0, _react.useMemo)(function () {
46
+ return {
47
+ resolvedEvent: function resolvedEvent(id, definitionId, extensionKey, resourceType) {
48
+ return dispatchAnalytics((0, _analytics.resolvedEvent)(id, definitionId, extensionKey, resourceType));
49
+ },
50
+ unresolvedEvent: function unresolvedEvent(id, status, definitionId, extensionKey, resourceType) {
51
+ return dispatchAnalytics((0, _analytics.unresolvedEvent)(id, status, definitionId, extensionKey, resourceType));
52
+ },
53
+ invokeSucceededEvent: function invokeSucceededEvent(id, providerKey, actionType, display) {
54
+ return dispatchAnalytics((0, _analytics.invokeSucceededEvent)(id, providerKey, actionType, display));
55
+ },
56
+ invokeFailedEvent: function invokeFailedEvent(id, providerKey, actionType, display, reason) {
57
+ return dispatchAnalytics((0, _analytics.invokeFailedEvent)(id, providerKey, actionType, display, reason));
58
+ },
59
+ connectSucceededEvent: function connectSucceededEvent(id, definitionId, extensionKey) {
60
+ (0, _ufoExperiences.startUfoExperience)('smart-link-authenticated', id, {
61
+ extensionKey: extensionKey,
62
+ status: 'success'
63
+ });
64
+ dispatchAnalytics((0, _analytics.connectSucceededEvent)(definitionId, extensionKey));
65
+ },
66
+ connectFailedEvent: function connectFailedEvent(id, definitionId, extensionKey, status) {
67
+ (0, _ufoExperiences.startUfoExperience)('smart-link-authenticated', id, {
68
+ extensionKey: extensionKey,
69
+ status: status
70
+ });
71
+ dispatchAnalytics((0, _analytics.connectFailedEvent)(definitionId, extensionKey, status));
72
+ },
73
+ instrument: function instrument(id, status, definitionId, extensionKey, resourceType, error) {
74
+ var event = (0, _analytics.instrumentEvent)(id, status, definitionId, extensionKey, resourceType, error);
75
+
76
+ if (event) {
77
+ dispatchAnalytics(event);
78
+ }
79
+ }
80
+ };
81
+ }, [dispatchAnalytics]);
82
+ var track = (0, _react.useMemo)(function () {
83
+ return {
84
+ appAccountConnected: function appAccountConnected(definitionId, extensionKey) {
85
+ return dispatchAnalytics((0, _analytics.trackAppAccountConnected)(definitionId, extensionKey));
86
+ }
87
+ };
88
+ }, [dispatchAnalytics]);
89
+ var screen = (0, _react.useMemo)(function () {
90
+ return {
91
+ authPopupEvent: function authPopupEvent(definitionId, extensionKey) {
92
+ return dispatchAnalytics((0, _analytics.screenAuthPopupEvent)(definitionId, extensionKey));
93
+ }
94
+ };
95
+ }, [dispatchAnalytics]);
96
+ return (0, _react.useMemo)(function () {
97
+ return {
98
+ ui: ui,
99
+ operational: operational,
100
+ track: track,
101
+ screen: screen
102
+ };
103
+ }, [ui, operational, track, screen]);
104
+ };
105
+
106
+ 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
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "16.0.0",
3
+ "version": "16.2.1",
4
4
  "sideEffects": false
5
5
  }
@@ -38,7 +38,8 @@ var BlockCard = function BlockCard(_ref) {
38
38
  isSelected = _ref.isSelected,
39
39
  onResolve = _ref.onResolve,
40
40
  testId = _ref.testId,
41
- showActions = _ref.showActions;
41
+ showActions = _ref.showActions,
42
+ platform = _ref.platform;
42
43
  var data = details && details.data || (0, _jsonld.getEmptyJsonLd)();
43
44
  var meta = details && details.meta;
44
45
  var extractorOpts = {
@@ -56,7 +57,7 @@ var BlockCard = function BlockCard(_ref) {
56
57
  });
57
58
 
58
59
  case 'resolved':
59
- var resolvedViewProps = (0, _block.extractBlockProps)(data, meta, extractorOpts, renderers);
60
+ var resolvedViewProps = (0, _block.extractBlockProps)(data, meta, extractorOpts, renderers, platform);
60
61
 
61
62
  if (onResolve) {
62
63
  onResolve({
@@ -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
 
@@ -49,7 +49,8 @@ function CardWithUrlContent(_ref) {
49
49
  actions = _useSmartLink.actions,
50
50
  config = _useSmartLink.config,
51
51
  analytics = _useSmartLink.analytics,
52
- renderers = _useSmartLink.renderers;
52
+ renderers = _useSmartLink.renderers,
53
+ error = _useSmartLink.error;
53
54
 
54
55
  var definitionId = (0, _helpers.getDefinitionId)(state.details);
55
56
  var extensionKey = (0, _helpers.getExtensionKey)(state.details);
@@ -92,9 +93,13 @@ function CardWithUrlContent(_ref) {
92
93
 
93
94
  (0, _react.useEffect)(function () {
94
95
  if ((0, _helpers.isFinalState)(state.status)) {
95
- analytics.ui.renderSuccessEvent(appearance, definitionId, extensionKey);
96
+ analytics.ui.renderSuccessEvent(appearance, id, definitionId, extensionKey);
96
97
  }
97
- }, [appearance, state.details, state.status, url, definitionId, extensionKey, analytics.ui]);
98
+ }, [appearance, state.details, state.status, url, definitionId, extensionKey, analytics.ui, id]); // We have to keep this last to prevent hook order from being violated
99
+
100
+ if (error) {
101
+ throw error;
102
+ }
98
103
 
99
104
  switch (appearance) {
100
105
  case 'inline':
@@ -124,7 +129,8 @@ function CardWithUrlContent(_ref) {
124
129
  isSelected: isSelected,
125
130
  onResolve: onResolve,
126
131
  testId: testId,
127
- showActions: showActions
132
+ showActions: showActions,
133
+ platform: platform
128
134
  });
129
135
 
130
136
  case 'embed':