@atlaskit/smart-card 32.5.0 → 32.6.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 (67) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/analytics.spec.yaml +163 -0
  3. package/dist/cjs/state/actions/index.js +53 -49
  4. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +14 -128
  5. package/dist/cjs/utils/analytics/analytics.js +150 -234
  6. package/dist/cjs/utils/analytics/index.js +1 -89
  7. package/dist/cjs/view/CardWithUrl/component.js +37 -40
  8. package/dist/cjs/view/CardWithUrl/loader.js +7 -16
  9. package/dist/cjs/view/EmbedCard/index.js +19 -44
  10. package/dist/cjs/view/FlexibleCard/components/actions/action/server-action/index.js +12 -3
  11. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/lozenge-action/index.js +11 -2
  12. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/lozenge-action/lozenge-action-error/index.js +10 -2
  13. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +64 -20
  14. package/dist/cjs/view/LinkUrl/index.js +12 -5
  15. package/dist/cjs/view/common/Metadata.js +1 -1
  16. package/dist/cjs/view/common/UnauthorisedViewContent.js +10 -2
  17. package/dist/es2019/state/actions/index.js +53 -49
  18. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +15 -136
  19. package/dist/es2019/utils/analytics/analytics.js +43 -133
  20. package/dist/es2019/utils/analytics/index.js +1 -61
  21. package/dist/es2019/view/CardWithUrl/component.js +37 -40
  22. package/dist/es2019/view/CardWithUrl/loader.js +7 -16
  23. package/dist/es2019/view/EmbedCard/index.js +20 -45
  24. package/dist/es2019/view/FlexibleCard/components/actions/action/server-action/index.js +12 -3
  25. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/lozenge-action/index.js +11 -2
  26. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/lozenge-action/lozenge-action-error/index.js +11 -2
  27. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +63 -20
  28. package/dist/es2019/view/LinkUrl/index.js +9 -3
  29. package/dist/es2019/view/common/Metadata.js +1 -1
  30. package/dist/es2019/view/common/UnauthorisedViewContent.js +11 -2
  31. package/dist/esm/state/actions/index.js +53 -49
  32. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +15 -129
  33. package/dist/esm/utils/analytics/analytics.js +149 -233
  34. package/dist/esm/utils/analytics/index.js +1 -59
  35. package/dist/esm/view/CardWithUrl/component.js +37 -40
  36. package/dist/esm/view/CardWithUrl/loader.js +7 -16
  37. package/dist/esm/view/EmbedCard/index.js +19 -44
  38. package/dist/esm/view/FlexibleCard/components/actions/action/server-action/index.js +12 -3
  39. package/dist/esm/view/FlexibleCard/components/elements/lozenge/lozenge-action/index.js +11 -2
  40. package/dist/esm/view/FlexibleCard/components/elements/lozenge/lozenge-action/lozenge-action-error/index.js +10 -2
  41. package/dist/esm/view/HoverCard/components/HoverCardContent.js +65 -21
  42. package/dist/esm/view/LinkUrl/index.js +11 -4
  43. package/dist/esm/view/common/Metadata.js +1 -1
  44. package/dist/esm/view/common/UnauthorisedViewContent.js +10 -2
  45. package/dist/types/common/analytics/generated/analytics.types.d.ts +83 -1
  46. package/dist/types/state/analytics/useLinkClicked.d.ts +1 -1
  47. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +15 -38
  48. package/dist/types/state/hooks/useSmartLink.d.ts +0 -4
  49. package/dist/types/utils/analytics/analytics.d.ts +32 -16
  50. package/dist/types/utils/analytics/click.d.ts +3 -8
  51. package/dist/types/utils/analytics/index.d.ts +1 -7
  52. package/dist/types/utils/analytics/types.d.ts +22 -22
  53. package/dist/types/utils/mocks.d.ts +0 -4
  54. package/dist/types/view/LinkUrl/index.d.ts +4 -0
  55. package/dist/types/view/LinkUrl/types.d.ts +1 -0
  56. package/dist/types-ts4.5/common/analytics/generated/analytics.types.d.ts +83 -1
  57. package/dist/types-ts4.5/state/analytics/useLinkClicked.d.ts +1 -1
  58. package/dist/types-ts4.5/state/analytics/useSmartLinkAnalytics.d.ts +15 -38
  59. package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +0 -4
  60. package/dist/types-ts4.5/utils/analytics/analytics.d.ts +32 -16
  61. package/dist/types-ts4.5/utils/analytics/click.d.ts +3 -8
  62. package/dist/types-ts4.5/utils/analytics/index.d.ts +1 -7
  63. package/dist/types-ts4.5/utils/analytics/types.d.ts +22 -22
  64. package/dist/types-ts4.5/utils/mocks.d.ts +0 -4
  65. package/dist/types-ts4.5/view/LinkUrl/index.d.ts +4 -0
  66. package/dist/types-ts4.5/view/LinkUrl/types.d.ts +1 -0
  67. package/package.json +14 -14
@@ -84,16 +84,25 @@ function Component(_ref) {
84
84
  // Setup UI handlers.
85
85
  var handleClickWrapper = (0, _react.useCallback)(function (event) {
86
86
  var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
87
- analytics.ui.cardClickedEvent({
88
- id: id,
89
- display: isFlexibleUi ? _constants.CardDisplay.Flexible : appearance,
90
- status: state.status,
91
- definitionId: definitionId,
92
- extensionKey: extensionKey,
93
- isModifierKeyPressed: isModifierKeyPressed,
94
- destinationProduct: product,
95
- destinationSubproduct: subproduct
96
- });
87
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
88
+ fireEvent('ui.smartLink.clicked', {
89
+ id: id,
90
+ display: isFlexibleUi ? _constants.CardDisplay.Flexible : appearance,
91
+ definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null,
92
+ isModifierKeyPressed: isModifierKeyPressed
93
+ });
94
+ } else {
95
+ analytics.ui.cardClickedEvent({
96
+ id: id,
97
+ display: isFlexibleUi ? _constants.CardDisplay.Flexible : appearance,
98
+ status: state.status,
99
+ definitionId: definitionId,
100
+ extensionKey: extensionKey,
101
+ isModifierKeyPressed: isModifierKeyPressed,
102
+ destinationProduct: product,
103
+ destinationSubproduct: subproduct
104
+ });
105
+ }
97
106
  if (!onClick && !isFlexibleUi) {
98
107
  var clickUrl = (0, _helpers.getClickUrl)(url, state.details);
99
108
  // Ctrl+left click on mac typically doesn't trigger onClick
@@ -113,7 +122,7 @@ function Component(_ref) {
113
122
  }
114
123
  (0, _click.fireLinkClickedEvent)(createAnalyticsEvent)(event);
115
124
  }
116
- }, [id, url, state.details, state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, isFlexibleUi, product, subproduct, createAnalyticsEvent]);
125
+ }, [id, url, state.details, state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, isFlexibleUi, product, subproduct, createAnalyticsEvent, fireEvent]);
117
126
  var handleAuthorize = (0, _react.useCallback)(function () {
118
127
  return actions.authorize(appearance);
119
128
  }, [actions, appearance]);
@@ -129,39 +138,27 @@ function Component(_ref) {
129
138
  (0, _react.useEffect)(function () {
130
139
  measure.mark(id, state.status);
131
140
  if (state.status !== 'pending' && state.status !== 'resolving') {
141
+ var _state$error;
132
142
  measure.create(id, state.status);
133
- if ((0, _platformFeatureFlags.fg)('platform_smart-card-migrate-operational-analytics')) {
134
- var _state$error;
135
- if (state.status === 'resolved') {
136
- var _measure$getMeasure$d, _measure$getMeasure;
137
- fireEvent('operational.smartLink.resolved', {
138
- definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null,
139
- duration: (_measure$getMeasure$d = (_measure$getMeasure = measure.getMeasure(id, state.status)) === null || _measure$getMeasure === void 0 ? void 0 : _measure$getMeasure.duration) !== null && _measure$getMeasure$d !== void 0 ? _measure$getMeasure$d : null
140
- });
141
- } else if (((_state$error = state.error) === null || _state$error === void 0 ? void 0 : _state$error.type) !== 'ResolveUnsupportedError') {
142
- fireEvent('operational.smartLink.unresolved', {
143
- definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null,
144
- reason: state.status,
145
- error: state.error === undefined ? null : {
146
- name: state.error.name,
147
- kind: state.error.kind,
148
- type: state.error.type
149
- }
150
- });
151
- }
152
- } else {
153
- var _state$error2;
154
- analytics.operational.instrument({
155
- id: id,
156
- status: state.status,
157
- definitionId: definitionId,
158
- extensionKey: extensionKey !== null && extensionKey !== void 0 ? extensionKey : (_state$error2 = state.error) === null || _state$error2 === void 0 ? void 0 : _state$error2.extensionKey,
159
- resourceType: resourceType,
160
- error: state.error
143
+ if (state.status === 'resolved') {
144
+ var _measure$getMeasure$d, _measure$getMeasure;
145
+ fireEvent('operational.smartLink.resolved', {
146
+ definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null,
147
+ duration: (_measure$getMeasure$d = (_measure$getMeasure = measure.getMeasure(id, state.status)) === null || _measure$getMeasure === void 0 ? void 0 : _measure$getMeasure.duration) !== null && _measure$getMeasure$d !== void 0 ? _measure$getMeasure$d : null
148
+ });
149
+ } else if (((_state$error = state.error) === null || _state$error === void 0 ? void 0 : _state$error.type) !== 'ResolveUnsupportedError') {
150
+ fireEvent('operational.smartLink.unresolved', {
151
+ definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null,
152
+ reason: state.status,
153
+ error: state.error === undefined ? null : {
154
+ name: state.error.name,
155
+ kind: state.error.kind,
156
+ type: state.error.type
157
+ }
161
158
  });
162
159
  }
163
160
  }
164
- }, [id, appearance, state.status, state.error, definitionId, extensionKey, resourceType, analytics.operational, fireEvent]);
161
+ }, [id, appearance, state.status, state.error, definitionId, extensionKey, resourceType, fireEvent]);
165
162
 
166
163
  // NB: once the smart-card has rendered into an end state, we capture
167
164
  // this as a successful render. These can be one of:
@@ -12,7 +12,6 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _reactErrorBoundary = require("react-error-boundary");
13
13
  var _reactMagneticDi = require("react-magnetic-di");
14
14
  var _uuid = _interopRequireDefault(require("uuid"));
15
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
15
  var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
17
16
  var _analytics = require("../../state/analytics");
18
17
  var _utils = require("../../utils");
@@ -82,20 +81,12 @@ function CardWithURLRenderer(props) {
82
81
  // to the reliability of the smart-card front-end components.
83
82
  // Likewise, chunk loading errors are not caused by a failure of smart-card rendering.
84
83
  if (error.name === 'ChunkLoadError') {
85
- if ((0, _platformFeatureFlags.fg)('platform_smart-card-migrate-operational-analytics')) {
86
- fireEvent('operational.smartLink.chunkLoadFailed', {
87
- display: appearance,
88
- error: error,
89
- errorInfo: errorInfo,
90
- definitionId: null
91
- });
92
- } else {
93
- analytics.operational.chunkloadFailedEvent({
94
- display: appearance,
95
- error: error,
96
- errorInfo: errorInfo
97
- });
98
- }
84
+ fireEvent('operational.smartLink.chunkLoadFailed', {
85
+ display: appearance,
86
+ error: error,
87
+ errorInfo: errorInfo,
88
+ definitionId: null
89
+ });
99
90
  } else if (error.name !== 'APIError') {
100
91
  analytics.ui.renderFailedEvent({
101
92
  display: isFlexibleUi ? 'flexible' : appearance,
@@ -109,7 +100,7 @@ function CardWithURLRenderer(props) {
109
100
  url: url !== null && url !== void 0 ? url : '',
110
101
  err: error
111
102
  });
112
- }, [analytics.operational, analytics.ui, appearance, id, onError, url, isFlexibleUi, fireEvent]);
103
+ }, [analytics.ui, appearance, id, onError, url, isFlexibleUi, fireEvent]);
113
104
  if (!url) {
114
105
  throw new Error('@atlaskit/smart-card: url property is missing.');
115
106
  }
@@ -8,14 +8,11 @@ exports.EmbedCard = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _analyticsNext = require("@atlaskit/analytics-next");
11
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
- var _block = require("../../extractors/block");
13
11
  var _extractAccessContext = require("../../extractors/common/context/extractAccessContext");
14
12
  var _embed = require("../../extractors/embed");
15
13
  var _inline = require("../../extractors/inline");
16
14
  var _helpers = require("../../state/helpers");
17
15
  var _jsonld = require("../../utils/jsonld");
18
- var _BlockCard = require("../BlockCard");
19
16
  var _FlexibleResolvedView = _interopRequireDefault(require("../BlockCard/views/flexible/FlexibleResolvedView"));
20
17
  var _ResolvedView = require("../InlineCard/ResolvedView");
21
18
  var _ErroredView = require("./views/ErroredView");
@@ -31,7 +28,6 @@ var EmbedCard = exports.EmbedCard = /*#__PURE__*/_react.default.forwardRef(funct
31
28
  handleErrorRetry = _ref.handleErrorRetry,
32
29
  handleFrameClick = _ref.handleFrameClick,
33
30
  analytics = _ref.analytics,
34
- handleInvoke = _ref.handleInvoke,
35
31
  isSelected = _ref.isSelected,
36
32
  frameStyle = _ref.frameStyle,
37
33
  platform = _ref.platform,
@@ -55,23 +51,16 @@ var EmbedCard = exports.EmbedCard = /*#__PURE__*/_react.default.forwardRef(funct
55
51
  switch (status) {
56
52
  case 'pending':
57
53
  case 'resolving':
58
- if ((0, _platformFeatureFlags.fg)('smart-card-remove-block-card-from-embed')) {
59
- return /*#__PURE__*/_react.default.createElement(_FlexibleResolvedView.default, {
60
- url: url,
61
- cardState: cardState,
62
- onClick: handleFrameClick,
63
- onError: onError,
64
- onResolve: onResolve,
65
- renderers: renderers,
66
- actionOptions: actionOptions,
67
- analytics: analytics,
68
- testId: testId
69
- });
70
- }
71
- return /*#__PURE__*/_react.default.createElement(_BlockCard.BlockCardResolvingView, {
72
- testId: "embed-card-resolving-view",
73
- inheritDimensions: inheritDimensions,
74
- isSelected: isSelected
54
+ return /*#__PURE__*/_react.default.createElement(_FlexibleResolvedView.default, {
55
+ url: url,
56
+ cardState: cardState,
57
+ onClick: handleFrameClick,
58
+ onError: onError,
59
+ onResolve: onResolve,
60
+ renderers: renderers,
61
+ actionOptions: actionOptions,
62
+ analytics: analytics,
63
+ testId: testId ? "".concat(testId, "-resolving-view") : 'embed-card-resolving-view'
75
64
  });
76
65
  case 'resolved':
77
66
  var resolvedViewProps = (0, _embed.extractEmbedProps)(data, meta, platform, iframeUrlType);
@@ -103,31 +92,17 @@ var EmbedCard = exports.EmbedCard = /*#__PURE__*/_react.default.forwardRef(funct
103
92
  onClick: handleFrameClick
104
93
  }));
105
94
  }
106
- if ((0, _platformFeatureFlags.fg)('smart-card-remove-block-card-from-embed')) {
107
- return /*#__PURE__*/_react.default.createElement(_FlexibleResolvedView.default, {
108
- url: url,
109
- cardState: cardState,
110
- onClick: handleFrameClick,
111
- onError: onError,
112
- onResolve: onResolve,
113
- renderers: renderers,
114
- actionOptions: actionOptions,
115
- analytics: analytics,
116
- testId: testId
117
- });
118
- }
119
- var resolvedBlockViewProps = (0, _block.extractBlockProps)(data, meta, {
95
+ return /*#__PURE__*/_react.default.createElement(_FlexibleResolvedView.default, {
96
+ url: url,
97
+ cardState: cardState,
98
+ onClick: handleFrameClick,
99
+ onError: onError,
100
+ onResolve: onResolve,
101
+ renderers: renderers,
102
+ actionOptions: actionOptions,
120
103
  analytics: analytics,
121
- origin: 'smartLinkEmbed',
122
- handleInvoke: handleInvoke,
123
- extensionKey: extensionKey,
124
- actionOptions: actionOptions
104
+ testId: testId
125
105
  });
126
- return /*#__PURE__*/_react.default.createElement(_BlockCard.BlockCardResolvedView, (0, _extends2.default)({}, resolvedBlockViewProps, {
127
- isSelected: isSelected,
128
- testId: testId,
129
- onClick: handleFrameClick
130
- }));
131
106
  }
132
107
  case 'unauthorized':
133
108
  if (onError) {
@@ -12,6 +12,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
14
  var _react = _interopRequireWildcard(require("react"));
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
16
  var _useAnalyticsEvents2 = require("../../../../../../common/analytics/generated/use-analytics-events");
16
17
  var _flexibleUiContext = require("../../../../../../state/flexible-ui-context");
17
18
  var _useInvoke = _interopRequireDefault(require("../../../../../../state/hooks/use-invoke"));
@@ -48,9 +49,17 @@ var ServerAction = function ServerAction(_ref) {
48
49
  smartLinkActionType = (_action$action = action.action) === null || _action$action === void 0 ? void 0 : _action$action.actionType;
49
50
  _context.prev = 2;
50
51
  setIsLoading(true);
51
- analytics === null || analytics === void 0 || analytics.ui.smartLinkServerActionClickedEvent({
52
- smartLinkActionType: smartLinkActionType
53
- });
52
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
53
+ if (smartLinkActionType === 'FollowEntityAction' || smartLinkActionType === 'UnfollowEntityAction') {
54
+ fireEvent('ui.button.clicked.smartLinkFollowButton', {});
55
+ } else {
56
+ fireEvent("ui.button.clicked.".concat(smartLinkActionType), {});
57
+ }
58
+ } else {
59
+ analytics === null || analytics === void 0 || analytics.ui.smartLinkServerActionClickedEvent({
60
+ smartLinkActionType: smartLinkActionType
61
+ });
62
+ }
54
63
  fireEvent('track.smartLinkQuickAction.started', {
55
64
  smartLinkActionType: smartLinkActionType
56
65
  });
@@ -12,6 +12,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
12
12
  var _react = require("react");
13
13
  var _react2 = require("@emotion/react");
14
14
  var _dropdownMenu = _interopRequireDefault(require("@atlaskit/dropdown-menu"));
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
16
  var _useAnalyticsEvents2 = require("../../../../../../common/analytics/generated/use-analytics-events");
16
17
  var _extractLozengeActionItems = _interopRequireDefault(require("../../../../../../extractors/action/extract-lozenge-action-items"));
17
18
  var _flexibleUiContext = require("../../../../../../state/flexible-ui-context");
@@ -102,7 +103,11 @@ var LozengeAction = function LozengeAction(_ref) {
102
103
  _context.next = 24;
103
104
  break;
104
105
  }
105
- analytics === null || analytics === void 0 || analytics.ui.smartLinkLozengeActionClickedEvent();
106
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
107
+ fireEvent('ui.button.clicked.smartLinkStatusLozenge', {});
108
+ } else {
109
+ analytics === null || analytics === void 0 || analytics.ui.smartLinkLozengeActionClickedEvent();
110
+ }
106
111
  fireEvent('track.smartLinkQuickAction.started', {
107
112
  smartLinkActionType: _analytics.TrackQuickActionType.StatusUpdate
108
113
  });
@@ -165,7 +170,11 @@ var LozengeAction = function LozengeAction(_ref) {
165
170
  while (1) switch (_context2.prev = _context2.next) {
166
171
  case 0:
167
172
  _context2.prev = 0;
168
- analytics === null || analytics === void 0 || analytics.ui.smartLinkLozengeActionListItemClickedEvent();
173
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
174
+ fireEvent('ui.button.clicked.smartLinkStatusListItem', {});
175
+ } else {
176
+ analytics === null || analytics === void 0 || analytics.ui.smartLinkLozengeActionListItemClickedEvent();
177
+ }
169
178
  updateAction = action === null || action === void 0 ? void 0 : action.update;
170
179
  if (!(updateAction && id)) {
171
180
  _context2.next = 17;
@@ -11,7 +11,9 @@ var _react2 = require("@emotion/react");
11
11
  var _reactIntlNext = require("react-intl-next");
12
12
  var _dropdownMenu = require("@atlaskit/dropdown-menu");
13
13
  var _error = _interopRequireDefault(require("@atlaskit/icon/core/migration/error"));
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
15
  var _colors = require("@atlaskit/theme/colors");
16
+ var _useAnalyticsEvents2 = require("../../../../../../../common/analytics/generated/use-analytics-events");
15
17
  var _messages = require("../../../../../../../messages");
16
18
  var _flexibleUiContext = require("../../../../../../../state/flexible-ui-context");
17
19
  var _useResolve = _interopRequireDefault(require("../../../../../../../state/hooks/use-resolve"));
@@ -30,6 +32,8 @@ var LozengeActionError = function LozengeActionError(_ref) {
30
32
  maxLineNumber = _ref$maxLineNumber === void 0 ? MAX_LINE_NUMBER : _ref$maxLineNumber,
31
33
  url = _ref.url,
32
34
  previewData = _ref.previewData;
35
+ var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
36
+ fireEvent = _useAnalyticsEvents.fireEvent;
33
37
  var reload = (0, _useResolve.default)();
34
38
  var analytics = (0, _flexibleUiContext.useFlexibleUiAnalyticsContext)();
35
39
  var isPreviewAvailable = previewData && previewData.src !== undefined;
@@ -40,13 +44,17 @@ var LozengeActionError = function LozengeActionError(_ref) {
40
44
  }, [reload, url]);
41
45
  var handlePreviewOpen = (0, _react.useCallback)(function () {
42
46
  if (isPreviewAvailable) {
43
- analytics === null || analytics === void 0 || analytics.ui.smartLinkLozengeActionErrorOpenPreviewClickedEvent();
47
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
48
+ fireEvent('ui.button.clicked.smartLinkStatusOpenPreview', {});
49
+ } else {
50
+ analytics === null || analytics === void 0 || analytics.ui.smartLinkLozengeActionErrorOpenPreviewClickedEvent();
51
+ }
44
52
  return (0, _utils.openEmbedModalWithFlexibleUiIcon)(_objectSpread(_objectSpread({}, previewData), {}, {
45
53
  analytics: analytics,
46
54
  onClose: handlePreviewClose
47
55
  }));
48
56
  }
49
- }, [analytics, handlePreviewClose, isPreviewAvailable, previewData]);
57
+ }, [analytics, handlePreviewClose, isPreviewAvailable, previewData, fireEvent]);
50
58
  var content = (0, _react.useMemo)(function () {
51
59
  return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("div", {
52
60
  css: _styled.contentStyles
@@ -10,6 +10,8 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _react2 = require("@emotion/react");
11
11
  var _analyticsNext = require("@atlaskit/analytics-next");
12
12
  var _linkProvider = require("@atlaskit/link-provider");
13
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
+ var _useAnalyticsEvents2 = require("../../../common/analytics/generated/use-analytics-events");
13
15
  var _constants = require("../../../constants");
14
16
  var _analytics2 = require("../../../state/analytics");
15
17
  var _helpers = require("../../../state/helpers");
@@ -47,8 +49,10 @@ var HoverCardContent = function HoverCardContent(_ref) {
47
49
  onMouseEnter = _ref.onMouseEnter,
48
50
  onMouseLeave = _ref.onMouseLeave,
49
51
  actionOptions = _ref.actionOptions;
50
- var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
51
- createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
52
+ var _useAnalyticsEventsNe = (0, _analyticsNext.useAnalyticsEvents)(),
53
+ createAnalyticsEvent = _useAnalyticsEventsNe.createAnalyticsEvent;
54
+ var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
55
+ fireEvent = _useAnalyticsEvents.fireEvent;
52
56
  var defaultAnalytics = (0, _analytics2.useSmartLinkAnalytics)(url, id);
53
57
  var analytics = _analytics !== null && _analytics !== void 0 ? _analytics : defaultAnalytics;
54
58
  var extensionKey = (0, _react.useMemo)(function () {
@@ -56,12 +60,17 @@ var HoverCardContent = function HoverCardContent(_ref) {
56
60
  }, [cardState.details]);
57
61
  var linkState = (0, _store.useSmartCardState)(url);
58
62
  var linkStatus = (_linkState$status = linkState.status) !== null && _linkState$status !== void 0 ? _linkState$status : 'pending';
63
+ var definitionId = (0, _react.useMemo)(function () {
64
+ return (0, _helpers.getDefinitionId)(cardState.details);
65
+ }, [cardState.details]);
59
66
  var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
60
67
  isAdminHubAIEnabled = _useSmartLinkContext.isAdminHubAIEnabled;
61
68
  var isAISummaryEnabled = (0, _aiSummary.getIsAISummaryEnabled)(isAdminHubAIEnabled, cardState.details);
62
69
  var services = (0, _helpers.getServices)(linkState.details);
63
70
  var statusRef = (0, _react.useRef)(linkStatus);
64
71
  var analyticsRef = (0, _react.useRef)(analytics);
72
+ var fireEventRef = (0, _react.useRef)(fireEvent);
73
+ var definitionIdRef = (0, _react.useRef)(definitionId);
65
74
  (0, _react.useEffect)(function () {
66
75
  /**
67
76
  * Must access current analytics object value via ref because its not stable
@@ -73,37 +82,72 @@ var HoverCardContent = function HoverCardContent(_ref) {
73
82
  if (statusRef.current !== linkStatus) {
74
83
  statusRef.current = linkStatus;
75
84
  }
76
- }, [analytics, linkStatus]);
85
+ if (fireEventRef.current !== fireEvent) {
86
+ fireEventRef.current = fireEvent;
87
+ }
88
+ if (definitionIdRef.current !== definitionId) {
89
+ definitionIdRef.current = definitionId;
90
+ }
91
+ }, [analytics, linkStatus, fireEvent, definitionId]);
77
92
  (0, _react.useEffect)(function () {
78
93
  var previewDisplay = 'card';
79
94
  var previewInvokeMethod = 'mouse_hover';
80
95
  var cardOpenTime = Date.now();
81
- analyticsRef.current.ui.hoverCardViewedEvent({
82
- previewDisplay: previewDisplay,
83
- previewInvokeMethod: previewInvokeMethod,
84
- status: statusRef.current
85
- });
86
- return function () {
87
- var hoverTime = Date.now() - cardOpenTime;
88
- analyticsRef.current.ui.hoverCardDismissedEvent({
96
+ var fireEventCurrent = fireEventRef.current;
97
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
98
+ var _definitionIdRef$curr;
99
+ fireEventCurrent('ui.hoverCard.viewed', {
100
+ previewDisplay: previewDisplay,
101
+ previewInvokeMethod: previewInvokeMethod,
102
+ definitionId: (_definitionIdRef$curr = definitionIdRef.current) !== null && _definitionIdRef$curr !== void 0 ? _definitionIdRef$curr : null
103
+ });
104
+ } else {
105
+ analyticsRef.current.ui.hoverCardViewedEvent({
89
106
  previewDisplay: previewDisplay,
90
107
  previewInvokeMethod: previewInvokeMethod,
91
- hoverTime: hoverTime,
92
108
  status: statusRef.current
93
109
  });
110
+ }
111
+ return function () {
112
+ var hoverTime = Date.now() - cardOpenTime;
113
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
114
+ var _definitionIdRef$curr2;
115
+ fireEventCurrent('ui.hoverCard.dismissed', {
116
+ previewDisplay: previewDisplay,
117
+ previewInvokeMethod: previewInvokeMethod,
118
+ hoverTime: hoverTime,
119
+ definitionId: (_definitionIdRef$curr2 = definitionIdRef.current) !== null && _definitionIdRef$curr2 !== void 0 ? _definitionIdRef$curr2 : null
120
+ });
121
+ } else {
122
+ analyticsRef.current.ui.hoverCardDismissedEvent({
123
+ previewDisplay: previewDisplay,
124
+ previewInvokeMethod: previewInvokeMethod,
125
+ hoverTime: hoverTime,
126
+ status: statusRef.current
127
+ });
128
+ }
94
129
  };
95
130
  }, []);
96
131
  var onClick = (0, _react.useCallback)(function (event) {
97
132
  var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
98
- analytics.ui.cardClickedEvent({
99
- id: id,
100
- display: _constants.CardDisplay.HoverCardPreview,
101
- status: cardState.status,
102
- isModifierKeyPressed: isModifierKeyPressed,
103
- actionSubjectId: 'titleGoToLink'
104
- });
133
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
134
+ fireEvent('ui.smartLink.clicked.titleGoToLink', {
135
+ id: id,
136
+ display: _constants.CardDisplay.HoverCardPreview,
137
+ isModifierKeyPressed: isModifierKeyPressed,
138
+ definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
139
+ });
140
+ } else {
141
+ analytics.ui.cardClickedEvent({
142
+ id: id,
143
+ display: _constants.CardDisplay.HoverCardPreview,
144
+ status: cardState.status,
145
+ isModifierKeyPressed: isModifierKeyPressed,
146
+ actionSubjectId: 'titleGoToLink'
147
+ });
148
+ }
105
149
  (0, _click.fireLinkClickedEvent)(createAnalyticsEvent)(event);
106
- }, [createAnalyticsEvent, cardState.status, analytics.ui, id]);
150
+ }, [createAnalyticsEvent, cardState.status, analytics.ui, id, fireEvent, definitionId]);
107
151
  var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
108
152
  var _getMetadata = (0, _utils2.getMetadata)(extensionKey, data),
109
153
  subtitle = _getMetadata.subtitle;
@@ -4,23 +4,27 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.default = exports.LinkComponent = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
10
  var _react = _interopRequireDefault(require("react"));
11
+ var _reactMagneticDi = require("react-magnetic-di");
11
12
  var _analyticsNext = require("@atlaskit/analytics-next");
13
+ var _link = _interopRequireDefault(require("@atlaskit/link"));
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
15
  var _click = require("../../utils/analytics/click");
13
16
  var _LinkAnalyticsContext = require("../../utils/analytics/LinkAnalyticsContext");
14
17
  var _LinkWarningModal = _interopRequireDefault(require("./LinkWarningModal"));
15
18
  var _useLinkWarningModal2 = require("./LinkWarningModal/hooks/use-link-warning-modal");
16
- var _excluded = ["href", "children", "checkSafety", "onClick", "testId"],
19
+ var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLinkComponent"],
17
20
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
18
21
  var PACKAGE_DATA = {
19
22
  packageName: "@atlaskit/smart-card",
20
- packageVersion: "32.5.0",
23
+ packageVersion: "32.6.0",
21
24
  componentName: 'linkUrl'
22
25
  };
23
- var Link = (0, _click.withLinkClickedEvent)('a');
26
+ var Anchor = (0, _click.withLinkClickedEvent)('a');
27
+ var LinkComponent = exports.LinkComponent = (0, _click.withLinkClickedEvent)(_link.default);
24
28
  var LinkUrl = function LinkUrl(_ref) {
25
29
  var href = _ref.href,
26
30
  children = _ref.children,
@@ -29,17 +33,20 @@ var LinkUrl = function LinkUrl(_ref) {
29
33
  _onClick = _ref.onClick,
30
34
  _ref$testId = _ref.testId,
31
35
  testId = _ref$testId === void 0 ? 'link-with-safety' : _ref$testId,
36
+ _ref$isLinkComponent = _ref.isLinkComponent,
37
+ isLinkComponent = _ref$isLinkComponent === void 0 ? false : _ref$isLinkComponent,
32
38
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
33
39
  var _useLinkWarningModal = (0, _useLinkWarningModal2.useLinkWarningModal)(),
34
40
  isLinkSafe = _useLinkWarningModal.isLinkSafe,
35
41
  showSafetyWarningModal = _useLinkWarningModal.showSafetyWarningModal,
36
42
  linkWarningModalProps = (0, _objectWithoutProperties2.default)(_useLinkWarningModal, _excluded2);
43
+ var Link = isLinkComponent && (0, _platformFeatureFlags.fg)('platform_editor_hyperlink_underline') ? LinkComponent : Anchor;
37
44
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LinkAnalyticsContext.LinkAnalyticsContext, {
38
45
  url: href,
39
46
  display: "url"
40
47
  }, /*#__PURE__*/_react.default.createElement(Link, (0, _extends2.default)({
41
48
  "data-testid": testId,
42
- href: href,
49
+ href: href || '',
43
50
  onClick: function onClick(e) {
44
51
  if (!checkSafety) {
45
52
  _onClick && _onClick(e);
@@ -24,7 +24,7 @@ var imgStyles = (0, _react.css)({
24
24
  height: "var(--ds-space-100, 8px)"
25
25
  });
26
26
  var textStyles = (0, _react.css)({
27
- fontSize: "var(--ds-space-150, 12px)",
27
+ font: "var(--ds-font-body-UNSAFE_small, normal 400 12px/16px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, system-ui, \"Helvetica Neue\", sans-serif)",
28
28
  color: "".concat("var(--ds-text-subtlest, ".concat(_colors.N300, ")")),
29
29
  marginRight: "var(--ds-space-050, 4px)",
30
30
  marginLeft: "var(--ds-space-025, 2px)"
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactIntlNext = require("react-intl-next");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
13
+ var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
12
14
  var _constants = require("../../constants");
13
15
  var _messages = require("../../messages");
14
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -23,9 +25,15 @@ var UnauthorisedViewContent = function UnauthorisedViewContent(_ref) {
23
25
  _ref$testId = _ref.testId,
24
26
  testId = _ref$testId === void 0 ? 'unauthorised-view-content' : _ref$testId,
25
27
  analytics = _ref.analytics;
28
+ var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
29
+ fireEvent = _useAnalyticsEvents.fireEvent;
26
30
  var handleLearnMoreClick = (0, _react.useCallback)(function () {
27
- analytics === null || analytics === void 0 || analytics.ui.learnMoreClickedEvent();
28
- }, [analytics === null || analytics === void 0 ? void 0 : analytics.ui]);
31
+ if ((0, _platformFeatureFlags.fg)('platform_migrate-some-ui-events-smart-card')) {
32
+ fireEvent('ui.button.clicked.learnMore', {});
33
+ } else {
34
+ analytics === null || analytics === void 0 || analytics.ui.learnMoreClickedEvent();
35
+ }
36
+ }, [analytics === null || analytics === void 0 ? void 0 : analytics.ui, fireEvent]);
29
37
  var learnMoreMessage = isProductIntegrationSupported ? _messages.messages.learn_more_about_connecting_account : _messages.messages.learn_more_about_smart_links;
30
38
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, providerName ? /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.connect_unauthorised_account_description, {
31
39
  values: {