@atlaskit/smart-card 23.7.3 → 23.8.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 (98) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/constants.js +14 -2
  3. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +3 -1
  4. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +41 -13
  5. package/dist/cjs/utils/analytics/analytics.js +128 -96
  6. package/dist/cjs/utils/analytics/index.js +12 -0
  7. package/dist/cjs/version.json +1 -1
  8. package/dist/cjs/view/BlockCard/components/flexible/footer/index.js +1 -1
  9. package/dist/cjs/view/BlockCard/index.js +4 -2
  10. package/dist/cjs/view/BlockCard/views/flexible/FlexibleNotFoundView.js +1 -1
  11. package/dist/cjs/view/BlockCard/views/flexible/FlexibleResolvedView.js +3 -3
  12. package/dist/cjs/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +17 -4
  13. package/dist/cjs/view/CardWithUrl/component.js +3 -1
  14. package/dist/cjs/view/EmbedCard/index.js +6 -2
  15. package/dist/cjs/view/EmbedCard/views/UnauthorisedView.js +21 -4
  16. package/dist/cjs/view/EmbedModal/components/analytics/index.js +4 -2
  17. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +14 -24
  18. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +61 -34
  19. package/dist/cjs/view/HoverCard/components/views/resolved/index.js +1 -1
  20. package/dist/cjs/view/HoverCard/components/views/unauthorised/index.js +26 -7
  21. package/dist/cjs/view/HoverCard/index.js +6 -3
  22. package/dist/cjs/view/HoverCard/utils.js +1 -4
  23. package/dist/cjs/view/InlineCard/UnauthorisedView/index.js +2 -1
  24. package/dist/cjs/view/InlineCard/index.js +2 -1
  25. package/dist/cjs/view/common/UnauthorisedViewContent.js +14 -3
  26. package/dist/es2019/constants.js +12 -1
  27. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +2 -1
  28. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +33 -8
  29. package/dist/es2019/utils/analytics/analytics.js +28 -4
  30. package/dist/es2019/utils/analytics/index.js +1 -1
  31. package/dist/es2019/version.json +1 -1
  32. package/dist/es2019/view/BlockCard/components/flexible/footer/index.js +1 -1
  33. package/dist/es2019/view/BlockCard/index.js +4 -2
  34. package/dist/es2019/view/BlockCard/views/flexible/FlexibleNotFoundView.js +1 -1
  35. package/dist/es2019/view/BlockCard/views/flexible/FlexibleResolvedView.js +4 -4
  36. package/dist/es2019/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +15 -3
  37. package/dist/es2019/view/CardWithUrl/component.js +2 -1
  38. package/dist/es2019/view/EmbedCard/index.js +6 -2
  39. package/dist/es2019/view/EmbedCard/views/UnauthorisedView.js +14 -3
  40. package/dist/es2019/view/EmbedModal/components/analytics/index.js +3 -2
  41. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +14 -20
  42. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +52 -30
  43. package/dist/es2019/view/HoverCard/components/views/resolved/index.js +3 -3
  44. package/dist/es2019/view/HoverCard/components/views/unauthorised/index.js +23 -7
  45. package/dist/es2019/view/HoverCard/index.js +6 -3
  46. package/dist/es2019/view/HoverCard/utils.js +0 -1
  47. package/dist/es2019/view/InlineCard/UnauthorisedView/index.js +2 -1
  48. package/dist/es2019/view/InlineCard/index.js +2 -1
  49. package/dist/es2019/view/common/UnauthorisedViewContent.js +18 -11
  50. package/dist/esm/constants.js +12 -1
  51. package/dist/esm/extractors/common/actions/extractPreviewAction.js +2 -1
  52. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +42 -14
  53. package/dist/esm/utils/analytics/analytics.js +118 -92
  54. package/dist/esm/utils/analytics/index.js +1 -1
  55. package/dist/esm/version.json +1 -1
  56. package/dist/esm/view/BlockCard/components/flexible/footer/index.js +1 -1
  57. package/dist/esm/view/BlockCard/index.js +4 -2
  58. package/dist/esm/view/BlockCard/views/flexible/FlexibleNotFoundView.js +1 -1
  59. package/dist/esm/view/BlockCard/views/flexible/FlexibleResolvedView.js +4 -4
  60. package/dist/esm/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +18 -5
  61. package/dist/esm/view/CardWithUrl/component.js +2 -1
  62. package/dist/esm/view/EmbedCard/index.js +6 -2
  63. package/dist/esm/view/EmbedCard/views/UnauthorisedView.js +15 -4
  64. package/dist/esm/view/EmbedModal/components/analytics/index.js +3 -2
  65. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +14 -22
  66. package/dist/esm/view/HoverCard/components/HoverCardContent.js +54 -30
  67. package/dist/esm/view/HoverCard/components/views/resolved/index.js +3 -3
  68. package/dist/esm/view/HoverCard/components/views/unauthorised/index.js +27 -9
  69. package/dist/esm/view/HoverCard/index.js +6 -3
  70. package/dist/esm/view/HoverCard/utils.js +0 -1
  71. package/dist/esm/view/InlineCard/UnauthorisedView/index.js +2 -1
  72. package/dist/esm/view/InlineCard/index.js +2 -1
  73. package/dist/esm/view/common/UnauthorisedViewContent.js +8 -3
  74. package/dist/types/constants.d.ts +8 -0
  75. package/dist/types/state/actions/index.d.ts +1 -2
  76. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +17 -4
  77. package/dist/types/state/flexible-ui-context/index.d.ts +8 -4
  78. package/dist/types/state/hooks/useSmartLink.d.ts +5 -3
  79. package/dist/types/utils/analytics/analytics.d.ts +4 -2
  80. package/dist/types/utils/analytics/index.d.ts +1 -1
  81. package/dist/types/utils/analytics/types.d.ts +2 -0
  82. package/dist/types/utils/mocks.d.ts +4 -2
  83. package/dist/types/utils/types.d.ts +1 -1
  84. package/dist/types/view/BlockCard/components/flexible/footer/index.d.ts +1 -1
  85. package/dist/types/view/BlockCard/views/flexible/FlexibleUnauthorisedView.d.ts +1 -1
  86. package/dist/types/view/BlockCard/views/flexible/types.d.ts +17 -13
  87. package/dist/types/view/Card/types.d.ts +1 -1
  88. package/dist/types/view/EmbedCard/views/UnauthorisedView.d.ts +3 -0
  89. package/dist/types/view/HoverCard/components/HoverCardComponent.d.ts +0 -1
  90. package/dist/types/view/HoverCard/components/HoverCardContent.d.ts +1 -0
  91. package/dist/types/view/HoverCard/components/views/unauthorised/types.d.ts +15 -4
  92. package/dist/types/view/HoverCard/types.d.ts +3 -3
  93. package/dist/types/view/HoverCard/utils.d.ts +0 -1
  94. package/dist/types/view/InlineCard/UnauthorisedView/index.d.ts +2 -0
  95. package/dist/types/view/common/UnauthorisedViewContent.d.ts +7 -1
  96. package/package.json +5 -5
  97. package/report.api.md +15 -1
  98. package/tmp/api-report-tmp.d.ts +8 -4
@@ -33,6 +33,8 @@ var _FlexibleCard = _interopRequireDefault(require("../FlexibleCard"));
33
33
 
34
34
  var _ = require("../..");
35
35
 
36
+ var _constants = require("../../constants");
37
+
36
38
  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); }
37
39
 
38
40
  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; }
@@ -95,7 +97,7 @@ function CardWithUrlContent(_ref) {
95
97
  var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
96
98
  analytics.ui.cardClickedEvent({
97
99
  id: id,
98
- display: isFlexibleUi ? 'flexible' : appearance,
100
+ display: isFlexibleUi ? _constants.CardDisplay.Flexible : appearance,
99
101
  status: state.status,
100
102
  definitionId: definitionId,
101
103
  extensionKey: extensionKey,
@@ -59,6 +59,7 @@ var EmbedCard = /*#__PURE__*/_react.default.forwardRef(function (_ref, iframeRef
59
59
  inheritDimensions = _ref.inheritDimensions;
60
60
  var data = details && details.data || (0, _jsonld.getEmptyJsonLd)();
61
61
  var meta = details && details.meta;
62
+ var extensionKey = (0, _helpers.getExtensionKey)(details);
62
63
 
63
64
  switch (status) {
64
65
  case 'pending':
@@ -104,7 +105,7 @@ var EmbedCard = /*#__PURE__*/_react.default.forwardRef(function (_ref, iframeRef
104
105
  analytics: analytics,
105
106
  origin: 'smartLinkEmbed',
106
107
  handleInvoke: handleInvoke,
107
- extensionKey: (0, _helpers.getExtensionKey)(details)
108
+ extensionKey: extensionKey
108
109
  });
109
110
  return /*#__PURE__*/_react.default.createElement(_BlockCard.BlockCardResolvedView, (0, _extends2.default)({}, resolvedBlockViewProps, {
110
111
  isSelected: isSelected,
@@ -127,7 +128,10 @@ var EmbedCard = /*#__PURE__*/_react.default.forwardRef(function (_ref, iframeRef
127
128
  isSelected: isSelected,
128
129
  onAuthorise: handleAuthorize,
129
130
  inheritDimensions: inheritDimensions,
130
- onClick: handleFrameClick
131
+ onClick: handleFrameClick,
132
+ analytics: analytics,
133
+ extensionKey: extensionKey,
134
+ testId: testId
131
135
  }));
132
136
 
133
137
  case 'forbidden':
@@ -2,12 +2,14 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.EmbedCardUnauthorisedView = void 0;
9
11
 
10
- var _react = _interopRequireDefault(require("react"));
12
+ var _react = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _UnresolvedView = require("./UnresolvedView");
13
15
 
@@ -19,22 +21,36 @@ var _ImageIcon = require("../components/ImageIcon");
19
21
 
20
22
  var _UnauthorisedViewContent = _interopRequireDefault(require("../../common/UnauthorisedViewContent"));
21
23
 
24
+ 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); }
25
+
26
+ 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; }
27
+
22
28
  var EmbedCardUnauthorisedView = function EmbedCardUnauthorisedView(_ref) {
23
29
  var _context$image;
24
30
 
25
- var link = _ref.link,
31
+ var analytics = _ref.analytics,
32
+ link = _ref.link,
26
33
  context = _ref.context,
27
34
  isSelected = _ref.isSelected,
28
35
  _ref$testId = _ref.testId,
29
36
  testId = _ref$testId === void 0 ? 'embed-card-unauthorized-view' : _ref$testId,
30
37
  onAuthorise = _ref.onAuthorise,
31
38
  inheritDimensions = _ref.inheritDimensions,
32
- onClick = _ref.onClick;
39
+ onClick = _ref.onClick,
40
+ extensionKey = _ref.extensionKey;
33
41
 
34
42
  var icon = context && context.icon && /*#__PURE__*/_react.default.createElement(_ImageIcon.ImageIcon, {
35
43
  src: typeof context.icon === 'string' ? context.icon : undefined
36
44
  });
37
45
 
46
+ var handleOnAuthorizeClick = (0, _react.useCallback)(function () {
47
+ if (onAuthorise) {
48
+ analytics.track.appAccountAuthStarted({
49
+ extensionKey: extensionKey
50
+ });
51
+ onAuthorise();
52
+ }
53
+ }, [onAuthorise, analytics.track, extensionKey]);
38
54
  return /*#__PURE__*/_react.default.createElement(_ExpandedFrame.ExpandedFrame, {
39
55
  href: link,
40
56
  icon: icon,
@@ -55,9 +71,10 @@ var EmbedCardUnauthorisedView = function EmbedCardUnauthorisedView(_ref) {
55
71
  text: 'connect_unauthorised_account_action',
56
72
  testId: 'connect-account'
57
73
  },
58
- onClick: onAuthorise,
74
+ onClick: handleOnAuthorizeClick,
59
75
  testId: testId
60
76
  }, /*#__PURE__*/_react.default.createElement(_UnauthorisedViewContent.default, {
77
+ analytics: analytics,
61
78
  providerName: context === null || context === void 0 ? void 0 : context.text,
62
79
  testId: testId
63
80
  })));
@@ -15,6 +15,8 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _types = require("../../types");
17
17
 
18
+ var _constants = require("../../../../constants");
19
+
18
20
  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); }
19
21
 
20
22
  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; }
@@ -41,7 +43,7 @@ var withAnalytics = function withAnalytics(Component) {
41
43
  });
42
44
  analytics.ui.renderSuccessEvent({
43
45
  status: 'resolved',
44
- display: 'preview'
46
+ display: _constants.CardDisplay.EmbedPreview
45
47
  });
46
48
 
47
49
  if (onOpen) {
@@ -50,7 +52,7 @@ var withAnalytics = function withAnalytics(Component) {
50
52
  }, [analytics.screen, analytics.ui, onOpen, origin]);
51
53
  var handleOnOpenFailed = (0, _react.useCallback)(function (error, errorInfo) {
52
54
  analytics.ui.renderFailedEvent({
53
- display: 'preview',
55
+ display: _constants.CardDisplay.EmbedPreview,
54
56
  error: error,
55
57
  errorInfo: errorInfo
56
58
  });
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.hoverCardClassName = exports.HoverCardComponent = void 0;
10
+ exports.HoverCardComponent = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
@@ -29,22 +29,18 @@ var _HoverCardContent = _interopRequireDefault(require("../components/HoverCardC
29
29
 
30
30
  var _styled = require("../styled");
31
31
 
32
- var _utils = require("../utils");
32
+ var _constants = require("../../../constants");
33
33
 
34
34
  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
35
 
36
36
  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; }
37
37
 
38
38
  /** @jsx jsx */
39
- var hoverCardClassName = 'smart-links-hover-preview';
40
- exports.hoverCardClassName = hoverCardClassName;
41
-
42
39
  var HoverCardComponent = function HoverCardComponent(_ref) {
43
40
  var children = _ref.children,
44
41
  url = _ref.url,
45
42
  analyticsHandler = _ref.analyticsHandler,
46
- analytics = _ref.analytics,
47
- onAuthorize = _ref.onAuthorize;
43
+ analytics = _ref.analytics;
48
44
  var delay = 300;
49
45
 
50
46
  var _React$useState = _react2.default.useState(false),
@@ -60,6 +56,7 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
60
56
  var parentSpan = (0, _react2.useRef)(null);
61
57
  var renderers = (0, _renderers.useSmartLinkRenderers)();
62
58
  var linkState = (0, _store.useSmartCardState)(url);
59
+ var linkStatus = linkState.status;
63
60
  var hoverDisplay = 'card';
64
61
  var invokeMethod = 'mouse_hover';
65
62
  var setMousePosition = (0, _react2.useCallback)(function (event) {
@@ -79,12 +76,13 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
79
76
  analytics.ui.hoverCardDismissedEvent({
80
77
  previewDisplay: 'card',
81
78
  hoverTime: hoverTime,
82
- previewInvokeMethod: 'mouse_hover'
79
+ previewInvokeMethod: 'mouse_hover',
80
+ status: linkStatus
83
81
  });
84
82
  }
85
83
 
86
84
  setIsOpen(false);
87
- }, [analytics.ui, isOpen]);
85
+ }, [analytics.ui, isOpen, linkStatus]);
88
86
  var initHideCard = (0, _react2.useCallback)(function () {
89
87
  if (fadeInTimeoutId.current) {
90
88
  clearTimeout(fadeInTimeoutId.current);
@@ -107,7 +105,8 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
107
105
  cardOpenTime.current = Date.now();
108
106
  analytics.ui.hoverCardViewedEvent({
109
107
  previewDisplay: hoverDisplay,
110
- previewInvokeMethod: invokeMethod
108
+ previewInvokeMethod: invokeMethod,
109
+ status: linkStatus
111
110
  });
112
111
  } //If these are undefined then popupOffset is undefined and we fallback to default bottom-start placement
113
112
 
@@ -122,10 +121,10 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
122
121
 
123
122
  setIsOpen(true);
124
123
  }, delay);
125
- }, [isOpen, setMousePosition, analytics.ui]);
124
+ }, [isOpen, setMousePosition, analytics.ui, linkStatus]);
126
125
  var linkActions = (0, _useSmartLinkActions.useSmartLinkActions)({
127
126
  url: url,
128
- appearance: _utils.SMART_CARD_ANALYTICS_DISPLAY,
127
+ appearance: _constants.CardDisplay.HoverCardPreview,
129
128
  analyticsHandler: analyticsHandler,
130
129
  origin: 'smartLinkPreviewHoverCard'
131
130
  });
@@ -135,9 +134,6 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
135
134
  }
136
135
  }, [hideCard]); // Stop hover preview content to propagate event to parent.
137
136
 
138
- var onClick = (0, _react2.useCallback)(function (e) {
139
- return e.stopPropagation();
140
- }, []);
141
137
  return (0, _react.jsx)(_popup.default, {
142
138
  testId: "hover-card",
143
139
  isOpen: isOpen,
@@ -147,23 +143,17 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
147
143
  autoFocus: false,
148
144
  content: function content(_ref2) {
149
145
  var update = _ref2.update;
150
- return (0, _react.jsx)("div", {
146
+ return (0, _react.jsx)(_HoverCardContent.default, {
151
147
  onMouseEnter: initShowCard,
152
148
  onMouseLeave: initHideCard,
153
- onClick: onClick,
154
- css: _styled.HoverCardContainer // class name for trello to exclude click events
155
- ,
156
- className: hoverCardClassName
157
- }, (0, _react.jsx)(_HoverCardContent.default, {
158
149
  analytics: analytics,
159
150
  cardActions: linkActions,
160
151
  cardState: linkState,
161
152
  onActionClick: onActionClick,
162
153
  onResolve: update,
163
154
  renderers: renderers,
164
- url: url,
165
- onAuthorize: onAuthorize
166
- }));
155
+ url: url
156
+ });
167
157
  },
168
158
  trigger: function trigger(triggerProps) {
169
159
  return (0, _react.jsx)("span", {
@@ -7,13 +7,15 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.getOpenAction = exports.default = void 0;
10
+ exports.hoverCardClassName = exports.getOpenAction = exports.default = void 0;
11
+
12
+ var _react = require("@emotion/react");
11
13
 
12
14
  var _shortcut = _interopRequireDefault(require("@atlaskit/icon/glyph/shortcut"));
13
15
 
14
16
  var _extractors = require("@atlaskit/linking-common/extractors");
15
17
 
16
- var _react = _interopRequireWildcard(require("react"));
18
+ var _react2 = _interopRequireWildcard(require("react"));
17
19
 
18
20
  var _constants = require("../../../constants");
19
21
 
@@ -41,10 +43,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
41
43
 
42
44
  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; }
43
45
 
46
+ /** @jsx jsx */
47
+ var hoverCardClassName = 'smart-links-hover-preview';
48
+ exports.hoverCardClassName = hoverCardClassName;
49
+
44
50
  var getOpenAction = function getOpenAction(url, analytics, onActionClick) {
45
51
  return {
46
52
  name: _constants.ActionName.CustomAction,
47
- icon: /*#__PURE__*/_react.default.createElement(_shortcut.default, {
53
+ icon: (0, _react.jsx)(_shortcut.default, {
48
54
  label: "open in new tab",
49
55
  size: "medium"
50
56
  }),
@@ -59,7 +65,7 @@ var getOpenAction = function getOpenAction(url, analytics, onActionClick) {
59
65
  previewDisplay: 'card'
60
66
  });
61
67
  },
62
- tooltipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.open_link_in_a_new_tab),
68
+ tooltipMessage: (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.open_link_in_a_new_tab),
63
69
  testId: 'hover-card-open-button'
64
70
  };
65
71
  };
@@ -79,21 +85,22 @@ var HoverCardContent = function HoverCardContent(_ref) {
79
85
  onResolve = _ref.onResolve,
80
86
  renderers = _ref.renderers,
81
87
  url = _ref.url,
82
- onAuthorize = _ref.onAuthorize;
83
- var extensionKey = (0, _react.useMemo)(function () {
88
+ onMouseEnter = _ref.onMouseEnter,
89
+ onMouseLeave = _ref.onMouseLeave;
90
+ var extensionKey = (0, _react2.useMemo)(function () {
84
91
  return (0, _helpers.getExtensionKey)(cardState.details);
85
92
  }, [cardState.details]);
86
- var onClick = (0, _react.useCallback)(function (event) {
93
+ var onClick = (0, _react2.useCallback)(function (event) {
87
94
  var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
88
95
  analytics.ui.cardClickedEvent({
89
96
  id: id,
90
- display: _utils2.SMART_CARD_ANALYTICS_DISPLAY,
97
+ display: _constants.CardDisplay.HoverCardPreview,
91
98
  status: cardState.status,
92
99
  isModifierKeyPressed: isModifierKeyPressed,
93
100
  actionSubjectId: 'titleGoToLink'
94
101
  });
95
102
  }, [cardState.status, analytics.ui, id]);
96
- var titleActions = (0, _react.useMemo)(function () {
103
+ var titleActions = (0, _react2.useMemo)(function () {
97
104
  return [getOpenAction(url, analytics, onActionClick)];
98
105
  }, [url, analytics, onActionClick]);
99
106
  var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
@@ -120,33 +127,53 @@ var HoverCardContent = function HoverCardContent(_ref) {
120
127
  url: url,
121
128
  children: {}
122
129
  };
130
+ var onClickStopPropagation = (0, _react2.useCallback)(function (e) {
131
+ return e.stopPropagation();
132
+ }, []);
133
+
134
+ var getCardView = function getCardView(cardState) {
135
+ if (cardState.metadataStatus === 'pending') {
136
+ return (0, _react.jsx)(_resolving.default, {
137
+ flexibleCardProps: flexibleCardProps,
138
+ titleBlockProps: titleBlockProps
139
+ });
140
+ }
141
+
142
+ if (cardState.status === 'unauthorized') {
143
+ return (0, _react.jsx)(_unauthorised.default, {
144
+ analytics: analytics,
145
+ extensionKey: extensionKey,
146
+ id: id,
147
+ flexibleCardProps: flexibleCardProps,
148
+ url: url
149
+ });
150
+ }
151
+
152
+ if (cardState.status === 'resolved') {
153
+ return (0, _react.jsx)(_resolved.default, {
154
+ id: id,
155
+ url: url,
156
+ extensionKey: extensionKey,
157
+ analytics: analytics,
158
+ cardActions: cardActions,
159
+ cardState: cardState,
160
+ flexibleCardProps: flexibleCardProps,
161
+ onActionClick: onActionClick,
162
+ titleBlockProps: titleBlockProps
163
+ });
164
+ }
123
165
 
124
- if (cardState.metadataStatus === 'pending') {
125
- return /*#__PURE__*/_react.default.createElement(_resolving.default, {
126
- flexibleCardProps: flexibleCardProps,
127
- titleBlockProps: titleBlockProps
128
- });
129
- }
130
-
131
- if (cardState.status === 'unauthorized') {
132
- return /*#__PURE__*/_react.default.createElement(_unauthorised.default, {
133
- flexibleCardProps: flexibleCardProps,
134
- onAuthorize: onAuthorize
135
- });
136
- } // if metadataStatus is 'errored' simply render using data available (normal path)
137
-
166
+ return null;
167
+ };
138
168
 
139
- return /*#__PURE__*/_react.default.createElement(_resolved.default, {
140
- id: id,
141
- url: url,
142
- extensionKey: extensionKey,
143
- analytics: analytics,
144
- cardActions: cardActions,
145
- cardState: cardState,
146
- flexibleCardProps: flexibleCardProps,
147
- onActionClick: onActionClick,
148
- titleBlockProps: titleBlockProps
149
- });
169
+ var cardView = getCardView(cardState);
170
+ return cardView ? (0, _react.jsx)("div", {
171
+ onMouseEnter: onMouseEnter,
172
+ onMouseLeave: onMouseLeave,
173
+ onClick: onClickStopPropagation,
174
+ className: hoverCardClassName,
175
+ css: _styled.HoverCardContainer
176
+ }, cardView) : null;
150
177
  };
151
178
 
152
179
  var _default = HoverCardContent;
@@ -77,7 +77,7 @@ var HoverCardResolvedView = function HoverCardResolvedView(_ref) {
77
77
  // Since this hover view is only rendered on resolved status,
78
78
  // there is no need to check for statuses.
79
79
  analytics.ui.renderSuccessEvent({
80
- display: _utils.SMART_CARD_ANALYTICS_DISPLAY,
80
+ display: _constants.CardDisplay.HoverCardPreview,
81
81
  status: cardState.status
82
82
  });
83
83
  }, [analytics.ui, cardState.status]);
@@ -33,6 +33,8 @@ var _elements = require("../../../../FlexibleCard/components/elements");
33
33
 
34
34
  var _constants = require("../../../../../constants");
35
35
 
36
+ var _actions = require("../../../../../state/actions");
37
+
36
38
  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); }
37
39
 
38
40
  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; }
@@ -40,24 +42,40 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
40
42
  var HoverCardUnauthorisedView = function HoverCardUnauthorisedView(_ref) {
41
43
  var _cardState$details, _extractProvider;
42
44
 
43
- var flexibleCardProps = _ref.flexibleCardProps,
45
+ var analytics = _ref.analytics,
46
+ extensionKey = _ref.extensionKey,
47
+ _ref$id = _ref.id,
48
+ id = _ref$id === void 0 ? '' : _ref$id,
49
+ flexibleCardProps = _ref.flexibleCardProps,
44
50
  _ref$testId = _ref.testId,
45
51
  testId = _ref$testId === void 0 ? 'hover-card-unauthorised-view' : _ref$testId,
46
- onAuthorize = _ref.onAuthorize;
52
+ url = _ref.url;
47
53
  var cardState = flexibleCardProps.cardState;
48
54
  var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
49
55
  var providerName = (_extractProvider = (0, _extractors.extractProvider)(data)) === null || _extractProvider === void 0 ? void 0 : _extractProvider.text;
56
+
57
+ var _useSmartCardActions = (0, _actions.useSmartCardActions)(id, url, analytics),
58
+ authorize = _useSmartCardActions.authorize;
59
+
60
+ var handleAuthorize = (0, _react.useCallback)(function () {
61
+ if (authorize) {
62
+ analytics.track.appAccountAuthStarted({
63
+ extensionKey: extensionKey
64
+ });
65
+ authorize(_constants.CardDisplay.HoverCardPreview);
66
+ }
67
+ }, [authorize, extensionKey, analytics.track]);
50
68
  var actions = (0, _react.useMemo)(function () {
51
- return onAuthorize ? [{
69
+ return [{
52
70
  name: _constants.ActionName.CustomAction,
53
71
  content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.connect_unauthorised_account_action, {
54
72
  values: {
55
73
  context: providerName
56
74
  }
57
75
  })),
58
- onClick: onAuthorize
59
- }] : [];
60
- }, [onAuthorize, providerName]);
76
+ onClick: handleAuthorize
77
+ }];
78
+ }, [handleAuthorize, providerName]);
61
79
  return /*#__PURE__*/_react.default.createElement(_FlexibleCard.default, (0, _extends2.default)({}, flexibleCardProps, {
62
80
  testId: testId
63
81
  }), /*#__PURE__*/_react.default.createElement(_blocks.CustomBlock, {
@@ -71,7 +89,8 @@ var HoverCardUnauthorisedView = function HoverCardUnauthorisedView(_ref) {
71
89
  overrideCss: _styled.mainTextStyles,
72
90
  testId: "".concat(testId, "-content")
73
91
  }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_UnauthorisedViewContent.default, {
74
- providerName: providerName
92
+ providerName: providerName,
93
+ analytics: analytics
75
94
  }))), /*#__PURE__*/_react.default.createElement(_blocks.CustomBlock, {
76
95
  overrideCss: _styled.connectButtonStyles,
77
96
  testId: "".concat(testId, "-button")
@@ -23,7 +23,7 @@ var _analytics2 = require("../../utils/analytics");
23
23
 
24
24
  var _HoverCardComponent = require("./components/HoverCardComponent");
25
25
 
26
- var _utils = require("./utils");
26
+ var _constants = require("../../constants");
27
27
 
28
28
  /** @jsx jsx */
29
29
  var HoverCardWithErrorBoundary = function HoverCardWithErrorBoundary(props) {
@@ -37,7 +37,7 @@ var HoverCardWithErrorBoundary = function HoverCardWithErrorBoundary(props) {
37
37
  var analytics = (0, _analytics.useSmartLinkAnalytics)(url, analyticsHandler, id);
38
38
  var onError = (0, _react2.useCallback)(function (error, info) {
39
39
  analytics.ui.renderFailedEvent({
40
- display: _utils.SMART_CARD_ANALYTICS_DISPLAY,
40
+ display: _constants.CardDisplay.HoverCardPreview,
41
41
  id: id,
42
42
  error: error,
43
43
  errorInfo: info
@@ -53,6 +53,9 @@ var HoverCardWithErrorBoundary = function HoverCardWithErrorBoundary(props) {
53
53
  };
54
54
 
55
55
  var HoverCard = (0, _analyticsNext.withAnalyticsContext)({
56
- source: 'smartLinkPreviewHoverCard'
56
+ source: 'smartLinkPreviewHoverCard',
57
+ attributes: {
58
+ display: _constants.CardDisplay.HoverCardPreview
59
+ }
57
60
  })((0, _analyticsNext.withAnalyticsEvents)()(HoverCardWithErrorBoundary));
58
61
  exports.HoverCard = HoverCard;
@@ -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.toActionableMetadata = exports.getSimulatedMetadata = exports.SMART_CARD_ANALYTICS_DISPLAY = void 0;
8
+ exports.toActionableMetadata = exports.getSimulatedMetadata = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -15,9 +15,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
15
15
 
16
16
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
- var SMART_CARD_ANALYTICS_DISPLAY = 'flexible';
19
- exports.SMART_CARD_ANALYTICS_DISPLAY = SMART_CARD_ANALYTICS_DISPLAY;
20
-
21
18
  var getSimulatedMetadata = function getSimulatedMetadata() {
22
19
  var extensionKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
23
20
  var types = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -125,7 +125,8 @@ var InlineCardUnauthorizedView = /*#__PURE__*/function (_React$Component) {
125
125
  if (showAuthTooltip) {
126
126
  return /*#__PURE__*/_react.default.createElement(_HoverCard.HoverCard, {
127
127
  url: url,
128
- onAuthorize: this.props.onAuthorise
128
+ onAuthorize: this.props.onAuthorise,
129
+ id: this.props.id
129
130
  }, inlineCardUnauthenticatedView);
130
131
  }
131
132
 
@@ -129,7 +129,8 @@ var InlineCard = function InlineCard(_ref) {
129
129
  onClick: handleFrameClick,
130
130
  onAuthorise: handleAuthorize,
131
131
  testId: testIdWithStatus,
132
- showAuthTooltip: showAuthTooltip
132
+ showAuthTooltip: showAuthTooltip,
133
+ id: id
133
134
  });
134
135
 
135
136
  case 'forbidden':
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -9,7 +11,7 @@ exports.default = void 0;
9
11
 
10
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
13
 
12
- var _react = _interopRequireDefault(require("react"));
14
+ var _react = _interopRequireWildcard(require("react"));
13
15
 
14
16
  var _reactIntlNext = require("react-intl-next");
15
17
 
@@ -17,6 +19,10 @@ var _messages = require("../../messages");
17
19
 
18
20
  var _constants = require("../../constants");
19
21
 
22
+ 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); }
23
+
24
+ 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; }
25
+
20
26
  /**
21
27
  * This component is used in unauthorized views of a smart link.
22
28
  * It represents the main text that provides a user with information on how to connect their account
@@ -24,7 +30,11 @@ var _constants = require("../../constants");
24
30
  var UnauthorisedViewContent = function UnauthorisedViewContent(_ref) {
25
31
  var providerName = _ref.providerName,
26
32
  _ref$testId = _ref.testId,
27
- testId = _ref$testId === void 0 ? 'unauthorised-view-content' : _ref$testId;
33
+ testId = _ref$testId === void 0 ? 'unauthorised-view-content' : _ref$testId,
34
+ analytics = _ref.analytics;
35
+ var handleLearnMoreClick = (0, _react.useCallback)(function () {
36
+ analytics === null || analytics === void 0 ? void 0 : analytics.ui.learnMoreClickedEvent();
37
+ }, [analytics === null || analytics === void 0 ? void 0 : analytics.ui]);
28
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, {
29
39
  values: {
30
40
  context: providerName
@@ -32,7 +42,8 @@ var UnauthorisedViewContent = function UnauthorisedViewContent(_ref) {
32
42
  })) : /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.connect_unauthorised_account_description_no_provider), ' ', /*#__PURE__*/_react.default.createElement("a", {
33
43
  href: _constants.CONTENT_URL_SECURITY_AND_PERMISSIONS,
34
44
  target: "_blank",
35
- "data-testid": "".concat(testId, "-learn-more")
45
+ "data-testid": "".concat(testId, "-learn-more"),
46
+ onClick: handleLearnMoreClick
36
47
  }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.learn_more_about_smart_links)));
37
48
  };
38
49
 
@@ -230,4 +230,15 @@ export let MediaPlacement;
230
230
  (function (MediaPlacement) {
231
231
  MediaPlacement["Left"] = "left";
232
232
  MediaPlacement["Right"] = "right";
233
- })(MediaPlacement || (MediaPlacement = {}));
233
+ })(MediaPlacement || (MediaPlacement = {}));
234
+
235
+ export let CardDisplay;
236
+
237
+ (function (CardDisplay) {
238
+ CardDisplay["Inline"] = "inline";
239
+ CardDisplay["Block"] = "block";
240
+ CardDisplay["Embed"] = "embed";
241
+ CardDisplay["EmbedPreview"] = "embedPreview";
242
+ CardDisplay["Flexible"] = "flexible";
243
+ CardDisplay["HoverCardPreview"] = "hoverCardPreview";
244
+ })(CardDisplay || (CardDisplay = {}));
@@ -1,6 +1,7 @@
1
1
  import { extractDownloadUrl } from '../detail';
2
2
  import { extractPreview, extractProvider } from '@atlaskit/linking-common/extractors';
3
3
  import { PreviewAction } from '../../../view/BlockCard';
4
+ import { CardDisplay } from '../../../constants';
4
5
 
5
6
  const getMetadataFromJsonLd = (jsonLd, platform) => {
6
7
  const download = extractDownloadUrl(jsonLd);
@@ -31,7 +32,7 @@ const getInvokeOpts = (key, action, source) => ({
31
32
  // the actions on the preview state are invoked from the
32
33
  // preview card. Hence, we have a `source` for distinguishing
33
34
  // between the two.
34
- source: source || 'preview',
35
+ source: source || CardDisplay.EmbedPreview,
35
36
  action: {
36
37
  type: action,
37
38
  promise: () => Promise.resolve()