@atlaskit/smart-card 26.51.0 → 26.52.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 (78) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/analytics.spec.yaml +18 -0
  3. package/dist/cjs/extractors/flexible/actions/index.js +5 -2
  4. package/dist/cjs/extractors/flexible/index.js +1 -5
  5. package/dist/cjs/utils/analytics/analytics.js +1 -1
  6. package/dist/cjs/view/BlockCard/views/flexible/FlexibleNotFoundView.js +0 -1
  7. package/dist/cjs/view/FlexibleCard/components/actions/download-action/index.js +76 -0
  8. package/dist/cjs/view/FlexibleCard/components/actions/follow-action/index.js +8 -9
  9. package/dist/cjs/view/FlexibleCard/components/actions/follow-action/types.js +5 -0
  10. package/dist/cjs/view/FlexibleCard/components/actions/index.js +9 -8
  11. package/dist/cjs/view/FlexibleCard/components/actions/utils.js +0 -13
  12. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-event-summary-viewed/index.js +7 -0
  13. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +46 -26
  14. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +0 -8
  15. package/dist/cjs/view/HoverCard/components/ContentContainer.js +1 -0
  16. package/dist/cjs/view/HoverCard/components/views/resolved/index.js +1 -0
  17. package/dist/cjs/view/LinkUrl/index.js +1 -1
  18. package/dist/es2019/extractors/flexible/actions/index.js +6 -2
  19. package/dist/es2019/extractors/flexible/index.js +1 -5
  20. package/dist/es2019/utils/analytics/analytics.js +1 -1
  21. package/dist/es2019/view/BlockCard/views/flexible/FlexibleNotFoundView.js +0 -1
  22. package/dist/es2019/view/FlexibleCard/components/actions/download-action/index.js +47 -0
  23. package/dist/es2019/view/FlexibleCard/components/actions/follow-action/index.js +7 -5
  24. package/dist/es2019/view/FlexibleCard/components/actions/index.js +1 -7
  25. package/dist/es2019/view/FlexibleCard/components/actions/utils.js +0 -14
  26. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-event-summary-viewed/index.js +7 -0
  27. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +48 -22
  28. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +0 -8
  29. package/dist/es2019/view/HoverCard/components/ContentContainer.js +1 -0
  30. package/dist/es2019/view/HoverCard/components/views/resolved/index.js +1 -0
  31. package/dist/es2019/view/LinkUrl/index.js +1 -1
  32. package/dist/esm/extractors/flexible/actions/index.js +5 -2
  33. package/dist/esm/extractors/flexible/index.js +1 -5
  34. package/dist/esm/utils/analytics/analytics.js +1 -1
  35. package/dist/esm/view/BlockCard/views/flexible/FlexibleNotFoundView.js +0 -1
  36. package/dist/esm/view/FlexibleCard/components/actions/download-action/index.js +66 -0
  37. package/dist/esm/view/FlexibleCard/components/actions/download-action/types.js +1 -0
  38. package/dist/esm/view/FlexibleCard/components/actions/follow-action/index.js +9 -7
  39. package/dist/esm/view/FlexibleCard/components/actions/follow-action/types.js +1 -0
  40. package/dist/esm/view/FlexibleCard/components/actions/index.js +1 -7
  41. package/dist/esm/view/FlexibleCard/components/actions/utils.js +0 -13
  42. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-event-summary-viewed/index.js +7 -0
  43. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +46 -26
  44. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +0 -8
  45. package/dist/esm/view/HoverCard/components/ContentContainer.js +1 -0
  46. package/dist/esm/view/HoverCard/components/views/resolved/index.js +1 -0
  47. package/dist/esm/view/LinkUrl/index.js +1 -1
  48. package/dist/types/__fixtures__/dropbox-file.d.ts +3 -0
  49. package/dist/types/common/analytics/generated/analytics.types.d.ts +10 -4
  50. package/dist/types/extractors/flexible/actions/index.d.ts +1 -1
  51. package/dist/types/state/flexible-ui-context/types.d.ts +2 -12
  52. package/dist/types/view/FlexibleCard/components/actions/download-action/index.d.ts +4 -0
  53. package/dist/types/view/FlexibleCard/components/actions/download-action/types.d.ts +2 -0
  54. package/dist/types/view/FlexibleCard/components/actions/follow-action/index.d.ts +2 -2
  55. package/dist/types/view/FlexibleCard/components/actions/follow-action/types.d.ts +2 -0
  56. package/dist/types/view/FlexibleCard/components/actions/index.d.ts +1 -7
  57. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.d.ts +11 -2
  58. package/dist/types-ts4.5/__fixtures__/dropbox-file.d.ts +3 -0
  59. package/dist/types-ts4.5/common/analytics/generated/analytics.types.d.ts +10 -4
  60. package/dist/types-ts4.5/extractors/flexible/actions/index.d.ts +1 -1
  61. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +2 -12
  62. package/dist/types-ts4.5/view/FlexibleCard/components/actions/download-action/index.d.ts +4 -0
  63. package/dist/types-ts4.5/view/FlexibleCard/components/actions/download-action/types.d.ts +2 -0
  64. package/dist/types-ts4.5/view/FlexibleCard/components/actions/follow-action/index.d.ts +2 -2
  65. package/dist/types-ts4.5/view/FlexibleCard/components/actions/follow-action/types.d.ts +2 -0
  66. package/dist/types-ts4.5/view/FlexibleCard/components/actions/index.d.ts +1 -7
  67. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.d.ts +11 -2
  68. package/package.json +6 -6
  69. package/dist/cjs/view/FlexibleCard/components/actions/action/download-action/index.js +0 -72
  70. package/dist/es2019/view/FlexibleCard/components/actions/action/download-action/index.js +0 -47
  71. package/dist/esm/view/FlexibleCard/components/actions/action/download-action/index.js +0 -65
  72. package/dist/types/view/FlexibleCard/components/actions/action/download-action/index.d.ts +0 -4
  73. package/dist/types/view/FlexibleCard/components/actions/action/download-action/types.d.ts +0 -5
  74. package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/download-action/index.d.ts +0 -4
  75. package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/download-action/types.d.ts +0 -5
  76. /package/dist/cjs/view/FlexibleCard/components/actions/{action/download-action → download-action}/types.js +0 -0
  77. /package/dist/es2019/view/FlexibleCard/components/actions/{action/download-action → download-action}/types.js +0 -0
  78. /package/dist/{esm/view/FlexibleCard/components/actions/action/download-action → es2019/view/FlexibleCard/components/actions/follow-action}/types.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 26.52.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#87946](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87946) [`784121aa50b4`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/784121aa50b4) - Add ai mau analytics
8
+ - Updated dependencies
9
+
10
+ ## 26.52.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [#87468](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87468) [`c93de2e39c73`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c93de2e39c73) - [ux] Removes image for 'not found' links in Flexible Block Card
15
+
16
+ ### Patch Changes
17
+
18
+ - [#87862](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87862) [`f47cde6d6abd`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f47cde6d6abd) - Refactoring FollowAction to context.action
19
+ - [#87097](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87097) [`5d81dab96f45`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5d81dab96f45) - Refactor FelibleCard's DownloadAction creation
20
+ - [#87006](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87006) [`9b1883e717d2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/9b1883e717d2) - Refactor AISummaryBlockResolvedView to support VR testing
21
+
3
22
  ## 26.51.0
4
23
 
5
24
  ### Minor Changes
@@ -72,6 +72,18 @@ context:
72
72
  required: false
73
73
  description: An indicator that a link can be converted to datasource view
74
74
 
75
+ aiInteractionAttributes: &aiInteractionAttributes
76
+ aiFeatureName:
77
+ type: string
78
+ description: The name of the AI feature as shared with AI team
79
+ proactiveAIGenerated:
80
+ type: number
81
+ description: Attribute that captures the fact that an AI generated result was proactively served to a user.
82
+ userGeneratedAI:
83
+ type: number
84
+ description: Attribute that captures the fact that a user interaction with a feature lead to generation of an AI result.
85
+
86
+
75
87
  events:
76
88
  - button clicked (aiSummary):
77
89
  type: ui
@@ -110,3 +122,9 @@ events:
110
122
  required: false
111
123
  type: string
112
124
  description: failure reason
125
+
126
+ - aiInteraction initiated:
127
+ type: track
128
+ description: fired when an explicit request is made to use an AI-powered feature
129
+ attributes:
130
+ <<: [*PackageMetaDataContext, *aiInteractionAttributes]
@@ -7,9 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _constants = require("../../../constants");
10
+ var _extractDownloadAction = require("./extract-download-action");
10
11
  var _extractPreviewAction = require("./extract-preview-action");
11
- var extractActions = function extractActions(response, actionOptions) {
12
- var action = (0, _defineProperty2.default)({}, _constants.ActionName.PreviewAction, (0, _extractPreviewAction.extractPreviewAction)(response, actionOptions));
12
+ var _extractFollowAction = _interopRequireDefault(require("./extract-follow-action"));
13
+ var extractActions = function extractActions(response, data, actionOptions, id) {
14
+ var _action;
15
+ var action = (_action = {}, (0, _defineProperty2.default)(_action, _constants.ActionName.PreviewAction, (0, _extractPreviewAction.extractPreviewAction)(response, actionOptions)), (0, _defineProperty2.default)(_action, _constants.ActionName.DownloadAction, (0, _extractDownloadAction.extractDownloadAction)(data, actionOptions)), (0, _defineProperty2.default)(_action, _constants.ActionName.FollowAction, (0, _extractFollowAction.default)(response, actionOptions, id)), _action);
13
16
  return Object.values(action).some(function (value) {
14
17
  return Boolean(value);
15
18
  }) ? action : undefined;
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _primitives = require("../common/primitives");
9
9
  var _actions = _interopRequireDefault(require("./actions"));
10
- var _extractFollowAction = _interopRequireDefault(require("./actions/extract-follow-action"));
11
10
  var _icon = require("./icon");
12
11
  var _utils = require("./utils");
13
12
  var _collaboratorGroup = require("./collaboratorGroup");
@@ -17,7 +16,6 @@ var _extractProviderIcon = _interopRequireDefault(require("./icon/extract-provid
17
16
  var _extractPreview = _interopRequireDefault(require("./extract-preview"));
18
17
  var _extractState = _interopRequireDefault(require("./extract-state"));
19
18
  var _latestCommit = require("./latest-commit");
20
- var _extractDownloadAction = require("./actions/extract-download-action");
21
19
  var _extractViewAction = require("./actions/extract-view-action");
22
20
  var extractFlexibleUiContext = function extractFlexibleUiContext() {
23
21
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
@@ -31,7 +29,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
31
29
  var data = response.data;
32
30
  var url = (0, _linkExtractors.extractLink)(data);
33
31
  return {
34
- actions: (0, _actions.default)(response, actionOptions),
32
+ actions: (0, _actions.default)(response, data, actionOptions, id),
35
33
  assignedToGroup: (0, _utils.extractPersonAssignedToAsArray)(data),
36
34
  attachmentCount: (0, _utils.extractAttachmentCount)(data),
37
35
  authorGroup: (0, _linkExtractors.extractPersonCreatedBy)(data),
@@ -47,9 +45,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
47
45
  assignedTo: (0, _utils.extractAssignedTo)(data),
48
46
  createdOn: (0, _linkExtractors.extractDateCreated)(data),
49
47
  dueOn: (0, _utils.extractDueOn)(data),
50
- followAction: (0, _extractFollowAction.default)(response, actionOptions, id),
51
48
  viewAction: (0, _extractViewAction.extractViewAction)(data, actionOptions),
52
- downloadAction: (0, _extractDownloadAction.extractDownloadAction)(data, actionOptions),
53
49
  latestCommit: (0, _latestCommit.extractLatestCommit)(data),
54
50
  linkIcon: (0, _icon.extractLinkIcon)(response, renderers),
55
51
  location: (0, _utils.extractLocation)(data),
@@ -22,7 +22,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
22
22
  var context = exports.context = {
23
23
  componentName: 'smart-cards',
24
24
  packageName: "@atlaskit/smart-card",
25
- packageVersion: "26.51.0"
25
+ packageVersion: "26.52.1"
26
26
  };
27
27
  var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
28
28
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -49,7 +49,6 @@ var FlexibleNotFoundView = function FlexibleNotFoundView(_ref) {
49
49
  };
50
50
  }, []);
51
51
  return /*#__PURE__*/_react.default.createElement(_unresolvedView.default, (0, _extends2.default)({}, props, {
52
- showPreview: true,
53
52
  testId: testId,
54
53
  title: title
55
54
  }), /*#__PURE__*/_react.default.createElement(_lock.default, {
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _utils = require("../../../../../utils");
15
+ var _reactIntlNext = require("react-intl-next");
16
+ var _constants = require("../../../../../constants");
17
+ var _messages = require("../../../../../messages");
18
+ var _action = _interopRequireDefault(require("../action"));
19
+ var _flexibleUiContext = require("../../../../../state/flexible-ui-context");
20
+ var _useInvokeClientAction = _interopRequireDefault(require("../../../../../state/hooks/use-invoke-client-action"));
21
+ var _download = _interopRequireDefault(require("@atlaskit/icon/glyph/download"));
22
+ var _excluded = ["onClick"];
23
+ 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); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
+ var DownloadAction = function DownloadAction(_ref) {
26
+ var _context$actions;
27
+ var onClickCallback = _ref.onClick,
28
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
29
+ var context = (0, _flexibleUiContext.useFlexibleUiContext)();
30
+ var analytics = (0, _flexibleUiContext.useFlexibleUiAnalyticsContext)();
31
+ var invoke = (0, _useInvokeClientAction.default)({
32
+ analytics: analytics
33
+ });
34
+ var data = context === null || context === void 0 || (_context$actions = context.actions) === null || _context$actions === void 0 ? void 0 : _context$actions[_constants.ActionName.DownloadAction];
35
+ var onClick = (0, _react.useCallback)(function () {
36
+ if (data !== null && data !== void 0 && data.downloadUrl) {
37
+ invoke({
38
+ actionType: _constants.ActionName.DownloadAction,
39
+ actionFn: function () {
40
+ var _actionFn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
41
+ return _regenerator.default.wrap(function _callee$(_context) {
42
+ while (1) switch (_context.prev = _context.next) {
43
+ case 0:
44
+ return _context.abrupt("return", (0, _utils.downloadUrl)(data === null || data === void 0 ? void 0 : data.downloadUrl));
45
+ case 1:
46
+ case "end":
47
+ return _context.stop();
48
+ }
49
+ }, _callee);
50
+ }));
51
+ function actionFn() {
52
+ return _actionFn.apply(this, arguments);
53
+ }
54
+ return actionFn;
55
+ }(),
56
+ // These values have already been set in analytics context.
57
+ // We only pass these here for ufo experience.
58
+ display: analytics === null || analytics === void 0 ? void 0 : analytics.display,
59
+ extensionKey: analytics === null || analytics === void 0 ? void 0 : analytics.extensionKey
60
+ });
61
+ if (onClickCallback) {
62
+ onClickCallback();
63
+ }
64
+ }
65
+ }, [analytics, data === null || data === void 0 ? void 0 : data.downloadUrl, invoke, onClickCallback]);
66
+ return data ? /*#__PURE__*/_react.default.createElement(_action.default, (0, _extends2.default)({
67
+ content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.download),
68
+ icon: /*#__PURE__*/_react.default.createElement(_download.default, {
69
+ label: "Download"
70
+ }),
71
+ onClick: onClick,
72
+ testId: "smart-action-download-action",
73
+ tooltipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.download)
74
+ }, data, props)) : null;
75
+ };
76
+ var _default = exports.default = DownloadAction;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -9,23 +8,23 @@ exports.default = void 0;
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
10
  var _inviteTeam = _interopRequireDefault(require("@atlaskit/icon/glyph/invite-team"));
12
- var _react = _interopRequireWildcard(require("react"));
11
+ var _react = _interopRequireDefault(require("react"));
13
12
  var _reactIntlNext = require("react-intl-next");
13
+ var _constants = require("../../../../../constants");
14
14
  var _messages = require("../../../../../messages");
15
15
  var _flexibleUiContext = require("../../../../../state/flexible-ui-context");
16
16
  var _serverAction = _interopRequireDefault(require("../action/server-action"));
17
17
  var _unfollowIcon = _interopRequireDefault(require("./unfollow-icon"));
18
18
  var _excluded = ["value"];
19
- 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); }
20
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
19
  var FollowAction = function FollowAction(props) {
22
- var context = (0, _react.useContext)(_flexibleUiContext.FlexibleUiContext);
23
- if (!context || !context.followAction) {
20
+ var _context$actions, _context$actions2;
21
+ var context = (0, _flexibleUiContext.useFlexibleUiContext)();
22
+ if (!context || !(context !== null && context !== void 0 && (_context$actions = context.actions) !== null && _context$actions !== void 0 && _context$actions[_constants.ActionName.FollowAction])) {
24
23
  return null;
25
24
  }
26
- var _context$followAction = context.followAction,
27
- value = _context$followAction.value,
28
- data = (0, _objectWithoutProperties2.default)(_context$followAction, _excluded);
25
+ var _context$actions$Acti = context === null || context === void 0 || (_context$actions2 = context.actions) === null || _context$actions2 === void 0 ? void 0 : _context$actions2[_constants.ActionName.FollowAction],
26
+ value = _context$actions$Acti.value,
27
+ data = (0, _objectWithoutProperties2.default)(_context$actions$Acti, _excluded);
29
28
  var message = value ? _messages.messages.follow : _messages.messages.unfollow;
30
29
  var icon = value ? /*#__PURE__*/_react.default.createElement(_inviteTeam.default, {
31
30
  label: "Follow"
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -4,7 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.EditAction = exports.DownloadAction = exports.DeleteAction = exports.CustomAction = void 0;
7
+ exports.DeleteAction = exports.CustomAction = void 0;
8
+ Object.defineProperty(exports, "DownloadAction", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _downloadAction.default;
12
+ }
13
+ });
14
+ exports.EditAction = void 0;
8
15
  Object.defineProperty(exports, "FollowAction", {
9
16
  enumerable: true,
10
17
  get: function get() {
@@ -22,6 +29,7 @@ var _constants = require("../../../../constants");
22
29
  var _utils = require("./utils");
23
30
  var _followAction = _interopRequireDefault(require("./follow-action"));
24
31
  var _previewAction = _interopRequireDefault(require("./preview-action"));
32
+ var _downloadAction = _interopRequireDefault(require("./download-action"));
25
33
  /**
26
34
  * Creates a DeleteAction component. Accepts default ActionProps, but defaults
27
35
  * the icon to a cross icon.
@@ -42,13 +50,6 @@ var EditAction = exports.EditAction = (0, _utils.createUIAction)(_constants.Acti
42
50
  */
43
51
  var ViewAction = exports.ViewAction = (0, _utils.createDataAction)(_constants.ActionName.ViewAction);
44
52
 
45
- /**
46
- * Creates a DownloadAction component. Accepts default DownloadActionProps, and defaults
47
- * to the text 'Download' inside the button.
48
- * @see Action
49
- */
50
- var DownloadAction = exports.DownloadAction = (0, _utils.createDataAction)(_constants.ActionName.DownloadAction);
51
-
52
53
  /**
53
54
  * Creates a CustomAction component. Accepts default ActionProps. Required to provide
54
55
  * your own icon or text.
@@ -19,8 +19,6 @@ var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
19
19
  var _edit = _interopRequireDefault(require("@atlaskit/icon/glyph/edit"));
20
20
  var _viewAction = _interopRequireDefault(require("./action/view-action"));
21
21
  var _shortcut = _interopRequireDefault(require("@atlaskit/icon/glyph/shortcut"));
22
- var _downloadAction = _interopRequireDefault(require("./action/download-action"));
23
- var _download = _interopRequireDefault(require("@atlaskit/icon/glyph/download"));
24
22
  var _actionMappings;
25
23
  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); }
26
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -59,16 +57,6 @@ var actionMappings = (_actionMappings = {}, (0, _defineProperty2.default)(_actio
59
57
  }),
60
58
  tooltipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.view)
61
59
  }
62
- }), (0, _defineProperty2.default)(_actionMappings, _constants.ActionName.DownloadAction, {
63
- component: _downloadAction.default,
64
- props: {
65
- testId: 'smart-action-download-action',
66
- content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.download),
67
- icon: /*#__PURE__*/_react.default.createElement(_download.default, {
68
- label: "Download"
69
- }),
70
- tooltipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.download)
71
- }
72
60
  }), _actionMappings);
73
61
  var getContextKey = function getContextKey(name) {
74
62
  // Attempt to predict context prop name in advance to reduce the amount of
@@ -82,7 +70,6 @@ var getActionData = function getActionData(actionName, contextKey, context) {
82
70
  var data = context[contextKey];
83
71
  switch (actionName) {
84
72
  case _constants.ActionName.ViewAction:
85
- case _constants.ActionName.DownloadAction:
86
73
  return data;
87
74
  default:
88
75
  return undefined;
@@ -15,6 +15,13 @@ var AIEventSummaryViewed = function AIEventSummaryViewed(_ref) {
15
15
  fireEvent('ui.summary.viewed', {
16
16
  fromCache: fromCache
17
17
  });
18
+ if (fromCache) {
19
+ fireEvent('track.aiInteraction.initiated', {
20
+ aiFeatureName: 'Smart Links Summary',
21
+ proactiveAIGenerated: 1,
22
+ userGeneratedAI: 0
23
+ });
24
+ }
18
25
  }, [fireEvent, fromCache]);
19
26
  return null;
20
27
  };
@@ -5,10 +5,9 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.default = exports.AISummaryBlockStatusIndicator = exports.AISummaryBlockErrorIndicator = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _react = _interopRequireWildcard(require("react"));
13
12
  var _reactIntlNext = require("react-intl-next");
14
13
  var _primitives = require("@atlaskit/primitives");
@@ -26,18 +25,46 @@ var _aiSummary = _interopRequireDefault(require("../../../../../common/ai-summar
26
25
  var _useAnalyticsEvents2 = require("../../../../../../common/analytics/generated/use-analytics-events");
27
26
  var _aiEventSummaryViewed = _interopRequireDefault(require("../ai-event-summary-viewed"));
28
27
  var _aiEventErrorViewed = _interopRequireDefault(require("../ai-event-error-viewed"));
28
+ var _reactMagneticDi = require("react-magnetic-di");
29
29
  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); }
30
30
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
31
+ var AISummaryBlockErrorIndicator = exports.AISummaryBlockErrorIndicator = function AISummaryBlockErrorIndicator(_ref) {
32
+ var showErrorIndicator = _ref.showErrorIndicator,
33
+ error = _ref.error,
34
+ testId = _ref.testId;
35
+ return showErrorIndicator ? /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
36
+ grow: "fill"
37
+ }, /*#__PURE__*/_react.default.createElement(_aiEventErrorViewed.default, {
38
+ reason: error
39
+ }), /*#__PURE__*/_react.default.createElement(_aiStateIndicator.default, {
40
+ error: error,
41
+ state: 'error',
42
+ testId: testId
43
+ })) : null;
44
+ };
45
+ var AISummaryBlockStatusIndicator = exports.AISummaryBlockStatusIndicator = function AISummaryBlockStatusIndicator(_ref2) {
46
+ var showStatusIndicator = _ref2.showStatusIndicator,
47
+ metadata = _ref2.metadata,
48
+ status = _ref2.status,
49
+ testId = _ref2.testId;
50
+ var metadataElements = (0, _utils.renderElementItems)(metadata);
51
+ return showStatusIndicator ? /*#__PURE__*/_react.default.createElement(_aiStateIndicator.default, {
52
+ state: status,
53
+ testId: "".concat(testId, "-state-indicator")
54
+ }) : /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
55
+ width: _constants.SmartLinkWidth.FitToContent,
56
+ testId: "".concat(testId, "-metadata-group")
57
+ }, metadataElements);
58
+ };
31
59
  var AISummaryBlockResolvedView = function AISummaryBlockResolvedView(props) {
32
60
  var _props$actions = props.actions,
33
61
  actions = _props$actions === void 0 ? [] : _props$actions,
34
- metadata = props.metadata,
35
62
  onActionMenuOpenChange = props.onActionMenuOpenChange,
36
63
  _props$size = props.size,
37
64
  size = _props$size === void 0 ? _constants.SmartLinkSize.Medium : _props$size,
38
65
  testId = props.testId,
39
- aiSummaryMinHeight = props.aiSummaryMinHeight;
40
- var metadataElements = (0, _utils.renderElementItems)(metadata);
66
+ aiSummaryMinHeight = props.aiSummaryMinHeight,
67
+ metadata = props.metadata;
41
68
  var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
42
69
  fireEvent = _useAnalyticsEvents.fireEvent;
43
70
  var context = (0, _flexibleUiContext.useFlexibleUiContext)();
@@ -57,18 +84,11 @@ var AISummaryBlockResolvedView = function AISummaryBlockResolvedView(props) {
57
84
  status === 'loading' && !!content;
58
85
  var isSummarisedOnMountRef = (0, _react.useRef)(status === 'done');
59
86
  var isErroredOnMountRef = (0, _react.useRef)(status === 'error');
60
- var _useState = (0, _react.useState)(false),
61
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
62
- showAISummaryErrorMessage = _useState2[0],
63
- setShowAISummaryErrorMessage = _useState2[1];
64
87
  (0, _react.useEffect)(function () {
65
88
  // if the error was apparent on mount and the status is changed to loading we can
66
89
  // clear the initial error on mount state
67
90
  if (isErroredOnMountRef.current && status === 'loading') {
68
91
  isErroredOnMountRef.current = false;
69
- } else {
70
- // if a new error occurs and it was not an apparent error on mount, we can show the error message
71
- setShowAISummaryErrorMessage(!isErroredOnMountRef.current && status === 'error');
72
92
  }
73
93
  }, [status]);
74
94
  var combinedActions = (0, _react.useMemo)(function () {
@@ -78,6 +98,11 @@ var AISummaryBlockResolvedView = function AISummaryBlockResolvedView(props) {
78
98
  name: _constants.ActionName.CustomAction,
79
99
  onClick: function onClick() {
80
100
  fireEvent('ui.button.clicked.aiSummary', {});
101
+ fireEvent('track.aiInteraction.initiated', {
102
+ aiFeatureName: 'Smart Links Summary',
103
+ proactiveAIGenerated: 0,
104
+ userGeneratedAI: 1
105
+ });
81
106
  summariseUrl();
82
107
  },
83
108
  testId: "".concat(testId, "-ai-summary-action"),
@@ -111,25 +136,20 @@ var AISummaryBlockResolvedView = function AISummaryBlockResolvedView(props) {
111
136
  alignInline: "end",
112
137
  grow: "fill",
113
138
  spread: "space-between"
114
- }, /*#__PURE__*/_react.default.createElement(_primitives.Box, null, !isSummarisedOnMountRef.current && (status === 'loading' || status === 'done') ? /*#__PURE__*/_react.default.createElement(_aiStateIndicator.default, {
115
- state: status,
116
- testId: "".concat(testId, "-state-indicator")
117
- }) : /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
118
- width: _constants.SmartLinkWidth.FitToContent,
119
- testId: "".concat(testId, "-metadata-group")
120
- }, metadataElements)), /*#__PURE__*/_react.default.createElement(_primitives.Box, null, /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
139
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Box, null, /*#__PURE__*/_react.default.createElement(AISummaryBlockStatusIndicator, {
140
+ metadata: metadata,
141
+ showStatusIndicator: !isSummarisedOnMountRef.current && (status === 'loading' || status === 'done'),
142
+ status: status,
143
+ testId: testId
144
+ })), /*#__PURE__*/_react.default.createElement(_primitives.Box, null, /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
121
145
  onDropdownOpenChange: onDropdownOpenChange,
122
146
  items: combinedActions,
123
147
  appearance: "default",
124
148
  size: size
125
- }))), showAISummaryErrorMessage && /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
126
- grow: "fill"
127
- }, /*#__PURE__*/_react.default.createElement(_aiEventErrorViewed.default, {
128
- reason: error
129
- }), /*#__PURE__*/_react.default.createElement(_aiStateIndicator.default, {
149
+ }))), /*#__PURE__*/_react.default.createElement(AISummaryBlockErrorIndicator, {
150
+ showErrorIndicator: !isErroredOnMountRef.current && status === 'error',
130
151
  error: error,
131
- state: status,
132
152
  testId: testId
133
- })));
153
+ }));
134
154
  };
135
155
  var _default = exports.default = AISummaryBlockResolvedView;
@@ -108,14 +108,6 @@ var filterActionItems = exports.filterActionItems = function filterActionItems()
108
108
  case _constants.ActionName.CustomAction:
109
109
  // Named and custom actions that user defines.
110
110
  return Boolean(_constants.ActionName[item.name]);
111
- case _constants.ActionName.DownloadAction:
112
- // Remove once DownloadAction is refactored to context.action
113
- // https://product-fabric.atlassian.net/browse/EDM-9545
114
- return Boolean(context === null || context === void 0 ? void 0 : context.downloadAction);
115
- // Remove once FollowAction is refactored to context.action
116
- // https://product-fabric.atlassian.net/browse/EDM-9559
117
- case _constants.ActionName.FollowAction:
118
- return Boolean(context === null || context === void 0 ? void 0 : context.followAction);
119
111
  // Remove once ViewAction is retired
120
112
  // https://product-fabric.atlassian.net/browse/EDM-9547
121
113
  case _constants.ActionName.ViewAction:
@@ -17,6 +17,7 @@ var _HoverCardContent = require("./HoverCardContent");
17
17
  var _useAiSummary = require("../../../state/hooks/use-ai-summary");
18
18
  var _store = require("../../../state/store");
19
19
  var _linkExtractors = require("@atlaskit/link-extractors");
20
+ var _reactMagneticDi = require("react-magnetic-di");
20
21
  var _excluded = ["children", "isAIEnabled", "testId", "url"],
21
22
  _excluded2 = ["children", "isAIEnabled", "testId", "url"];
22
23
  /** @jsx jsx */
@@ -22,6 +22,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
22
22
  var _helpers = require("../../../../../state/helpers");
23
23
  var _useAiSummary = require("../../../../../state/hooks/use-ai-summary");
24
24
  var _linkExtractors = require("@atlaskit/link-extractors");
25
+ var _reactMagneticDi = require("react-magnetic-di");
25
26
  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); }
26
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
28
  var toFooterActions = exports.toFooterActions = function toFooterActions(cardActions, onActionClick) {
@@ -17,7 +17,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId"],
17
17
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
18
18
  var PACKAGE_DATA = {
19
19
  packageName: "@atlaskit/smart-card",
20
- packageVersion: "26.51.0",
20
+ packageVersion: "26.52.1",
21
21
  componentName: 'linkUrl'
22
22
  };
23
23
  var Link = (0, _click.withLinkClickedEvent)('a');
@@ -1,8 +1,12 @@
1
1
  import { ActionName } from '../../../constants';
2
+ import { extractDownloadAction } from './extract-download-action';
2
3
  import { extractPreviewAction } from './extract-preview-action';
3
- const extractActions = (response, actionOptions) => {
4
+ import extractFollowAction from './extract-follow-action';
5
+ const extractActions = (response, data, actionOptions, id) => {
4
6
  const action = {
5
- [ActionName.PreviewAction]: extractPreviewAction(response, actionOptions)
7
+ [ActionName.PreviewAction]: extractPreviewAction(response, actionOptions),
8
+ [ActionName.DownloadAction]: extractDownloadAction(data, actionOptions),
9
+ [ActionName.FollowAction]: extractFollowAction(response, actionOptions, id)
6
10
  };
7
11
  return Object.values(action).some(value => Boolean(value)) ? action : undefined;
8
12
  };
@@ -1,6 +1,5 @@
1
1
  import { extractSummary } from '../common/primitives';
2
2
  import extractActions from './actions';
3
- import extractFollowAction from './actions/extract-follow-action';
4
3
  import { extractLinkIcon } from './icon';
5
4
  import { extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount, extractSourceBranch, extractTargetBranch, extractDueOn, extractLocation, extractOwnedBy, extractAssignedTo, extractSubTasksProgress, extractStoryPoints, extractReadTime, extractSentOn, extractPersonAssignedToAsArray } from './utils';
6
5
  import { extractPersonsUpdatedBy } from './collaboratorGroup';
@@ -10,7 +9,6 @@ import extractProviderIcon from './icon/extract-provider-icon';
10
9
  import extractPreview from './extract-preview';
11
10
  import extractState from './extract-state';
12
11
  import { extractLatestCommit } from './latest-commit';
13
- import { extractDownloadAction } from './actions/extract-download-action';
14
12
  import { extractViewAction } from './actions/extract-view-action';
15
13
  const extractFlexibleUiContext = ({
16
14
  id,
@@ -24,7 +22,7 @@ const extractFlexibleUiContext = ({
24
22
  const data = response.data;
25
23
  const url = extractLink(data);
26
24
  return {
27
- actions: extractActions(response, actionOptions),
25
+ actions: extractActions(response, data, actionOptions, id),
28
26
  assignedToGroup: extractPersonAssignedToAsArray(data),
29
27
  attachmentCount: extractAttachmentCount(data),
30
28
  authorGroup: extractPersonCreatedBy(data),
@@ -40,9 +38,7 @@ const extractFlexibleUiContext = ({
40
38
  assignedTo: extractAssignedTo(data),
41
39
  createdOn: extractDateCreated(data),
42
40
  dueOn: extractDueOn(data),
43
- followAction: extractFollowAction(response, actionOptions, id),
44
41
  viewAction: extractViewAction(data, actionOptions),
45
- downloadAction: extractDownloadAction(data, actionOptions),
46
42
  latestCommit: extractLatestCommit(data),
47
43
  linkIcon: extractLinkIcon(response, renderers),
48
44
  location: extractLocation(data),
@@ -4,7 +4,7 @@ export const ANALYTICS_CHANNEL = 'media';
4
4
  export const context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card",
7
- packageVersion: "26.51.0"
7
+ packageVersion: "26.52.1"
8
8
  };
9
9
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -36,7 +36,6 @@ const FlexibleNotFoundView = ({
36
36
  descriptor: messages.not_found_description
37
37
  }), []);
38
38
  return /*#__PURE__*/React.createElement(UnresolvedView, _extends({}, props, {
39
- showPreview: true,
40
39
  testId: testId,
41
40
  title: title
42
41
  }), /*#__PURE__*/React.createElement(LockIcon, {
@@ -0,0 +1,47 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useCallback } from 'react';
3
+ import { downloadUrl as download } from '../../../../../utils';
4
+ import { FormattedMessage } from 'react-intl-next';
5
+ import { ActionName } from '../../../../../constants';
6
+ import { messages } from '../../../../../messages';
7
+ import Action from '../action';
8
+ import { useFlexibleUiAnalyticsContext, useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
9
+ import useInvokeClientAction from '../../../../../state/hooks/use-invoke-client-action';
10
+ import DownloadIcon from '@atlaskit/icon/glyph/download';
11
+ const DownloadAction = ({
12
+ onClick: onClickCallback,
13
+ ...props
14
+ }) => {
15
+ var _context$actions;
16
+ const context = useFlexibleUiContext();
17
+ const analytics = useFlexibleUiAnalyticsContext();
18
+ const invoke = useInvokeClientAction({
19
+ analytics
20
+ });
21
+ const data = context === null || context === void 0 ? void 0 : (_context$actions = context.actions) === null || _context$actions === void 0 ? void 0 : _context$actions[ActionName.DownloadAction];
22
+ const onClick = useCallback(() => {
23
+ if (data !== null && data !== void 0 && data.downloadUrl) {
24
+ invoke({
25
+ actionType: ActionName.DownloadAction,
26
+ actionFn: async () => download(data === null || data === void 0 ? void 0 : data.downloadUrl),
27
+ // These values have already been set in analytics context.
28
+ // We only pass these here for ufo experience.
29
+ display: analytics === null || analytics === void 0 ? void 0 : analytics.display,
30
+ extensionKey: analytics === null || analytics === void 0 ? void 0 : analytics.extensionKey
31
+ });
32
+ if (onClickCallback) {
33
+ onClickCallback();
34
+ }
35
+ }
36
+ }, [analytics, data === null || data === void 0 ? void 0 : data.downloadUrl, invoke, onClickCallback]);
37
+ return data ? /*#__PURE__*/React.createElement(Action, _extends({
38
+ content: /*#__PURE__*/React.createElement(FormattedMessage, messages.download),
39
+ icon: /*#__PURE__*/React.createElement(DownloadIcon, {
40
+ label: "Download"
41
+ }),
42
+ onClick: onClick,
43
+ testId: "smart-action-download-action",
44
+ tooltipMessage: /*#__PURE__*/React.createElement(FormattedMessage, messages.download)
45
+ }, data, props)) : null;
46
+ };
47
+ export default DownloadAction;