@atlaskit/smart-card 38.14.2 → 38.16.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 (51) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cjs/constants.js +1 -0
  3. package/dist/cjs/extractors/flexible/index.js +3 -1
  4. package/dist/cjs/extractors/flexible/utils.js +5 -1
  5. package/dist/cjs/messages.js +5 -0
  6. package/dist/cjs/state/hooks/use-ai-summary/ai-summary-service/index.js +13 -5
  7. package/dist/cjs/utils/analytics/analytics.js +1 -1
  8. package/dist/cjs/view/BlockCard/views/utils/index.js +11 -0
  9. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  10. package/dist/cjs/view/FlexibleCard/components/elements/index.js +7 -0
  11. package/dist/cjs/view/FlexibleCard/components/elements/team-member-count-element/index.js +27 -0
  12. package/dist/cjs/view/LinkUrl/index.js +1 -1
  13. package/dist/es2019/constants.js +1 -0
  14. package/dist/es2019/extractors/flexible/index.js +4 -1
  15. package/dist/es2019/extractors/flexible/utils.js +4 -0
  16. package/dist/es2019/messages.js +5 -0
  17. package/dist/es2019/state/hooks/use-ai-summary/ai-summary-service/index.js +10 -1
  18. package/dist/es2019/utils/analytics/analytics.js +1 -1
  19. package/dist/es2019/view/BlockCard/views/utils/index.js +11 -0
  20. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +1 -0
  21. package/dist/es2019/view/FlexibleCard/components/elements/index.js +1 -0
  22. package/dist/es2019/view/FlexibleCard/components/elements/team-member-count-element/index.js +20 -0
  23. package/dist/es2019/view/LinkUrl/index.js +1 -1
  24. package/dist/esm/constants.js +1 -0
  25. package/dist/esm/extractors/flexible/index.js +4 -2
  26. package/dist/esm/extractors/flexible/utils.js +4 -0
  27. package/dist/esm/messages.js +5 -0
  28. package/dist/esm/state/hooks/use-ai-summary/ai-summary-service/index.js +13 -5
  29. package/dist/esm/utils/analytics/analytics.js +1 -1
  30. package/dist/esm/view/BlockCard/views/utils/index.js +11 -0
  31. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  32. package/dist/esm/view/FlexibleCard/components/elements/index.js +1 -0
  33. package/dist/esm/view/FlexibleCard/components/elements/team-member-count-element/index.js +20 -0
  34. package/dist/esm/view/LinkUrl/index.js +1 -1
  35. package/dist/types/constants.d.ts +1 -0
  36. package/dist/types/extractors/flexible/utils.d.ts +1 -0
  37. package/dist/types/messages.d.ts +1 -1
  38. package/dist/types/state/flexible-ui-context/types.d.ts +6 -0
  39. package/dist/types/state/hooks/use-ai-summary/ai-summary-service/types.d.ts +6 -0
  40. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +8 -1
  41. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +1 -0
  42. package/dist/types/view/FlexibleCard/components/elements/team-member-count-element/index.d.ts +5 -0
  43. package/dist/types-ts4.5/constants.d.ts +1 -0
  44. package/dist/types-ts4.5/extractors/flexible/utils.d.ts +1 -0
  45. package/dist/types-ts4.5/messages.d.ts +1 -1
  46. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +6 -0
  47. package/dist/types-ts4.5/state/hooks/use-ai-summary/ai-summary-service/types.d.ts +6 -0
  48. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/types.d.ts +8 -1
  49. package/dist/types-ts4.5/view/FlexibleCard/components/elements/index.d.ts +1 -0
  50. package/dist/types-ts4.5/view/FlexibleCard/components/elements/team-member-count-element/index.d.ts +5 -0
  51. package/package.json +10 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 38.16.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#176285](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/176285)
8
+ [`1b51eca9c45fb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1b51eca9c45fb) -
9
+ Added Team Member Count component
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
15
+ ## 38.15.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#176835](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/176835)
20
+ [`0b00de2560126`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0b00de2560126) -
21
+ Move test utility mocks to @atlaskit/link-test-helpers to reduce future duplications
22
+
23
+ ### Patch Changes
24
+
25
+ - [#170012](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/170012)
26
+ [`0dc5dd2eb0dc8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0dc5dd2eb0dc8) -
27
+ Update ai summary endpoint to convo-ai (fg: platform-linking-ai-summary-migration-to-convo-ai)
28
+ - Updated dependencies
29
+
3
30
  ## 38.14.2
4
31
 
5
32
  ### Patch Changes
@@ -136,6 +136,7 @@ var ElementName = exports.ElementName = /*#__PURE__*/function (ElementName) {
136
136
  ElementName["SubTasksProgress"] = "SubTasksProgress";
137
137
  ElementName["StoryPoints"] = "StoryPoints";
138
138
  ElementName["TargetBranch"] = "TargetBranch";
139
+ ElementName["TeamMemberCount"] = "TeamMemberCount";
139
140
  ElementName["Title"] = "Title";
140
141
  ElementName["ViewCount"] = "ViewCount";
141
142
  ElementName["VoteCount"] = "VoteCount";
@@ -43,7 +43,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
43
43
  var data = response.data;
44
44
  var meta = response.meta;
45
45
  var url = (0, _linkExtractors.extractSmartLinkUrl)(response);
46
- return _objectSpread(_objectSpread(_objectSpread(_objectSpread({
46
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
47
47
  actions: (0, _actions.extractFlexibleCardActions)({
48
48
  actionOptions: actionOptions,
49
49
  aiSummaryConfig: aiSummaryConfig,
@@ -94,6 +94,8 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
94
94
  targetBranch: (0, _utils.extractTargetBranch)(data)
95
95
  }, (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? undefined : {
96
96
  title: (0, _linkExtractors.extractSmartLinkTitle)(response) || url
97
+ }), (0, _platformFeatureFlags.fg)('platform-linking-team-member-count-component') && {
98
+ teamMemberCount: (0, _utils.extractTeamMemberCount)(data)
97
99
  }), {}, {
98
100
  url: url,
99
101
  ari: (0, _linkExtractors.extractSmartLinkAri)(response)
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.extractVoteCount = exports.extractViewCount = exports.extractTargetBranch = exports.extractSubscriberCount = exports.extractSubTasksProgress = exports.extractStoryPoints = exports.extractSourceBranch = exports.extractSentOn = exports.extractReadTime = exports.extractReactCount = exports.extractProgrammingLanguage = exports.extractPersonAssignedToAsArray = exports.extractOwnedBy = exports.extractModifiedBy = exports.extractMetaTenantId = exports.extractMetaResourceType = exports.extractMetaObjectId = exports.extractLocation = exports.extractDueOn = exports.extractCreatedBy = exports.extractCommentCount = exports.extractChecklistProgress = exports.extractAttachmentCount = exports.extractAssignedTo = exports.extractAppliedToComponentsCount = void 0;
7
+ exports.extractVoteCount = exports.extractViewCount = exports.extractTeamMemberCount = exports.extractTargetBranch = exports.extractSubscriberCount = exports.extractSubTasksProgress = exports.extractStoryPoints = exports.extractSourceBranch = exports.extractSentOn = exports.extractReadTime = exports.extractReactCount = exports.extractProgrammingLanguage = exports.extractPersonAssignedToAsArray = exports.extractOwnedBy = exports.extractModifiedBy = exports.extractMetaTenantId = exports.extractMetaResourceType = exports.extractMetaObjectId = exports.extractLocation = exports.extractDueOn = exports.extractCreatedBy = exports.extractCommentCount = exports.extractChecklistProgress = exports.extractAttachmentCount = exports.extractAssignedTo = exports.extractAppliedToComponentsCount = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _linkExtractors = require("@atlaskit/link-extractors");
10
10
  var extractLinkName = function extractLinkName(link) {
@@ -70,6 +70,10 @@ var extractSourceBranch = exports.extractSourceBranch = function extractSourceBr
70
70
  var extractSubscriberCount = exports.extractSubscriberCount = function extractSubscriberCount(data) {
71
71
  return extractValue(data, 'atlassian:subscriberCount');
72
72
  };
73
+ var extractTeamMemberCount = exports.extractTeamMemberCount = function extractTeamMemberCount(data) {
74
+ var val = data !== null && data !== void 0 && data.attributedTo ? Array.isArray(data === null || data === void 0 ? void 0 : data.attributedTo) ? data === null || data === void 0 ? void 0 : data.attributedTo.length : 0 : 0;
75
+ return val;
76
+ };
73
77
  var extractAttachmentCount = exports.extractAttachmentCount = function extractAttachmentCount(data) {
74
78
  return extractValue(data, 'atlassian:attachmentCount');
75
79
  };
@@ -804,5 +804,10 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
804
804
  id: 'fabric.linking.status_change_permission_error-issue-term-refresh',
805
805
  defaultMessage: 'You don’t have permission to transition this work item. ',
806
806
  description: 'Informs the user that they do not have enough permissions to update a status'
807
+ },
808
+ team_members_count: {
809
+ id: 'fabric.linking.team_members_count',
810
+ defaultMessage: '{context} members',
811
+ description: 'Indicates the count of team member'
807
812
  }
808
813
  });
@@ -12,16 +12,18 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
  var _uuid = _interopRequireDefault(require("uuid"));
14
14
  var _linkingCommon = require("@atlaskit/linking-common");
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
16
  var _readStream = require("./readStream");
16
17
  var _types = require("./types");
17
18
  var _utils = require("./utils");
18
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
19
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
21
20
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
22
21
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
22
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
24
  function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
24
25
  function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(r) { var n = this.s.return; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, throw: function _throw(r) { var n = this.s.return; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); }
26
+ var CONVO_AI_ENDPOINT = 'ai/v2/ai-feature/smartlinksummary/stream';
25
27
  var AISummaryService = exports.AISummaryService = /*#__PURE__*/function () {
26
28
  function AISummaryService(props) {
27
29
  var _this = this,
@@ -33,7 +35,7 @@ var AISummaryService = exports.AISummaryService = /*#__PURE__*/function () {
33
35
  });
34
36
  (0, _defineProperty2.default)(this, "subscribedStateSetters", new Set());
35
37
  (0, _defineProperty2.default)(this, "getRequestUrl", function (envKey, baseUrlOverride) {
36
- var path = 'assist/chat/v1/invoke_agent/stream';
38
+ var path = (0, _platformFeatureFlags.fg)('platform-linking-ai-summary-migration-to-convo-ai') ? CONVO_AI_ENDPOINT : 'assist/chat/v1/invoke_agent/stream';
37
39
  if (baseUrlOverride || envKey) {
38
40
  var baseUrl = baseUrlOverride || (0, _linkingCommon.getBaseUrl)(envKey);
39
41
  return (0, _utils.addPath)(baseUrl, path);
@@ -45,7 +47,7 @@ var AISummaryService = exports.AISummaryService = /*#__PURE__*/function () {
45
47
  return _regenerator.default.wrap(function _callee$(_context) {
46
48
  while (1) switch (_context.prev = _context.next) {
47
49
  case 0:
48
- payload = {
50
+ payload = _objectSpread({
49
51
  recipient_agent_named_id: 'smartlink_summary_agent',
50
52
  agent_input_context: {
51
53
  content_url: _this.url,
@@ -54,7 +56,13 @@ var AISummaryService = exports.AISummaryService = /*#__PURE__*/function () {
54
56
  summary_output_mimetype: 'text/markdown',
55
57
  locale: _this.locale
56
58
  }
57
- };
59
+ }, {
60
+ ai_feature_input: (0, _platformFeatureFlags.fg)('platform-linking-ai-summary-migration-to-convo-ai') ? {
61
+ content_url: _this.url,
62
+ content_ari: _this.ari,
63
+ locale: _this.locale
64
+ } : undefined
65
+ });
58
66
  options = {
59
67
  method: 'POST',
60
68
  headers: _this.config.headers,
@@ -11,7 +11,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
11
11
  var context = exports.context = {
12
12
  componentName: 'smart-cards',
13
13
  packageName: "@atlaskit/smart-card",
14
- packageVersion: "38.14.1"
14
+ packageVersion: "38.15.0"
15
15
  };
16
16
  var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
17
17
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -142,6 +142,17 @@ var getSimulatedBetterMetadata = exports.getSimulatedBetterMetadata = function g
142
142
  }].concat(baseTopMetadata),
143
143
  bottomMetadata: defaultBottomMetadata
144
144
  };
145
+ case 'legion-object-provider':
146
+ case 'profile-object-provider':
147
+ return {
148
+ titleMetadata: defaultTitleMetadata,
149
+ topMetadata: [{
150
+ name: _constants.ElementName.AuthorGroup
151
+ }, {
152
+ name: _constants.ElementName.TeamMemberCount
153
+ }].concat(baseTopMetadata),
154
+ bottomMetadata: defaultBottomMetadata
155
+ };
145
156
  default:
146
157
  return {
147
158
  titleMetadata: defaultTitleMetadata,
@@ -21,7 +21,7 @@ var _ElementDisplaySchema;
21
21
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
22
22
  // Determine whether the element can be display as inline/block.
23
23
 
24
- var ElementDisplaySchema = exports.ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AssignedTo, ['inline']), _constants.ElementName.AssignedToGroup, ['inline']), _constants.ElementName.AttachmentCount, ['inline']), _constants.ElementName.AuthorGroup, ['inline']), _constants.ElementName.AppliedToComponentsCount, ['inline']), _constants.ElementName.ChecklistProgress, ['inline']), _constants.ElementName.CollaboratorGroup, ['inline']), _constants.ElementName.CommentCount, ['inline']), _constants.ElementName.CreatedBy, ['inline']), _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.DueOn, ['inline']), _constants.ElementName.LatestCommit, ['inline']), _constants.ElementName.LinkIcon, ['inline']), _constants.ElementName.Location, ['inline']), _constants.ElementName.ModifiedBy, ['inline']), _constants.ElementName.ModifiedOn, ['inline']), _constants.ElementName.OwnedBy, ['inline']), _constants.ElementName.OwnedByGroup, ['inline']), _constants.ElementName.Preview, ['block']), _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), _constants.ElementName.Provider, ['inline']), _constants.ElementName.ReactCount, ['inline']), _constants.ElementName.ReadTime, ['inline']), _constants.ElementName.Snippet, ['block']), _constants.ElementName.SourceBranch, ['inline']), _constants.ElementName.SentOn, ['inline']), _constants.ElementName.State, ['inline']), _constants.ElementName.SubscriberCount, ['inline']), _constants.ElementName.SubTasksProgress, ['inline']), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.StoryPoints, ['inline']), _constants.ElementName.TargetBranch, ['inline']), _constants.ElementName.Title, ['inline']), _constants.ElementName.ViewCount, ['inline']), _constants.ElementName.VoteCount, ['inline']));
24
+ var ElementDisplaySchema = exports.ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AssignedTo, ['inline']), _constants.ElementName.AssignedToGroup, ['inline']), _constants.ElementName.AttachmentCount, ['inline']), _constants.ElementName.AuthorGroup, ['inline']), _constants.ElementName.AppliedToComponentsCount, ['inline']), _constants.ElementName.ChecklistProgress, ['inline']), _constants.ElementName.CollaboratorGroup, ['inline']), _constants.ElementName.CommentCount, ['inline']), _constants.ElementName.CreatedBy, ['inline']), _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.DueOn, ['inline']), _constants.ElementName.LatestCommit, ['inline']), _constants.ElementName.LinkIcon, ['inline']), _constants.ElementName.Location, ['inline']), _constants.ElementName.ModifiedBy, ['inline']), _constants.ElementName.ModifiedOn, ['inline']), _constants.ElementName.OwnedBy, ['inline']), _constants.ElementName.OwnedByGroup, ['inline']), _constants.ElementName.Preview, ['block']), _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), _constants.ElementName.Provider, ['inline']), _constants.ElementName.ReactCount, ['inline']), _constants.ElementName.ReadTime, ['inline']), _constants.ElementName.Snippet, ['block']), _constants.ElementName.SourceBranch, ['inline']), _constants.ElementName.SentOn, ['inline']), _constants.ElementName.State, ['inline']), _constants.ElementName.SubscriberCount, ['inline']), _constants.ElementName.TeamMemberCount, ['inline']), (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubTasksProgress, ['inline']), _constants.ElementName.StoryPoints, ['inline']), _constants.ElementName.TargetBranch, ['inline']), _constants.ElementName.Title, ['inline']), _constants.ElementName.ViewCount, ['inline']), _constants.ElementName.VoteCount, ['inline']));
25
25
 
26
26
  /**
27
27
  * Get gap size between elements inside a block
@@ -208,6 +208,12 @@ Object.defineProperty(exports, "TargetBranch", {
208
208
  return _targetBranchElement.default;
209
209
  }
210
210
  });
211
+ Object.defineProperty(exports, "TeamMemberCount", {
212
+ enumerable: true,
213
+ get: function get() {
214
+ return _teamMemberCountElement.default;
215
+ }
216
+ });
211
217
  Object.defineProperty(exports, "Title", {
212
218
  enumerable: true,
213
219
  get: function get() {
@@ -257,6 +263,7 @@ var _subscriberCountElement = _interopRequireDefault(require("./subscriber-count
257
263
  var _subTasksProgressElement = _interopRequireDefault(require("./sub-tasks-progress-element"));
258
264
  var _storyPointsElement = _interopRequireDefault(require("./story-points-element"));
259
265
  var _targetBranchElement = _interopRequireDefault(require("./target-branch-element"));
266
+ var _teamMemberCountElement = _interopRequireDefault(require("./team-member-count-element"));
260
267
  var _titleElement = _interopRequireDefault(require("./title-element"));
261
268
  var _viewCountElement = _interopRequireDefault(require("./view-count-element"));
262
269
  var _voteCountElement = _interopRequireDefault(require("./vote-count-element"));
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _constants = require("../../../../../constants");
11
+ var _messages = require("../../../../../messages");
12
+ var _flexibleUiContext = require("../../../../../state/flexible-ui-context");
13
+ var _common = require("../common");
14
+ var MAX_TEAM_MEMBER_LIMIT = 50;
15
+ var TeamMemberCountElement = function TeamMemberCountElement(props) {
16
+ var _context$teamMemberCo;
17
+ var context = (0, _flexibleUiContext.useFlexibleUiContext)();
18
+ if (!(context !== null && context !== void 0 && context.teamMemberCount)) {
19
+ return null;
20
+ }
21
+ var count = context !== null && context !== void 0 && context.teamMemberCount && (context === null || context === void 0 ? void 0 : context.teamMemberCount) > MAX_TEAM_MEMBER_LIMIT ? "".concat(MAX_TEAM_MEMBER_LIMIT, "+") : context === null || context === void 0 || (_context$teamMemberCo = context.teamMemberCount) === null || _context$teamMemberCo === void 0 ? void 0 : _context$teamMemberCo.toString();
22
+ var data = count ? (0, _common.toFormattedTextProps)(_messages.messages.team_members_count, count) : null;
23
+ return data ? /*#__PURE__*/_react.default.createElement(_common.BaseTextElement, (0, _extends2.default)({}, data, props, {
24
+ name: _constants.ElementName.TeamMemberCount
25
+ })) : null;
26
+ };
27
+ var _default = exports.default = TeamMemberCountElement;
@@ -20,7 +20,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLink
20
20
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
21
21
  var PACKAGE_DATA = {
22
22
  packageName: "@atlaskit/smart-card",
23
- packageVersion: "38.14.1",
23
+ packageVersion: "38.15.0",
24
24
  componentName: 'linkUrl'
25
25
  };
26
26
  var Anchor = (0, _click.withLinkClickedEvent)('a');
@@ -137,6 +137,7 @@ export let ElementName = /*#__PURE__*/function (ElementName) {
137
137
  ElementName["SubTasksProgress"] = "SubTasksProgress";
138
138
  ElementName["StoryPoints"] = "StoryPoints";
139
139
  ElementName["TargetBranch"] = "TargetBranch";
140
+ ElementName["TeamMemberCount"] = "TeamMemberCount";
140
141
  ElementName["Title"] = "Title";
141
142
  ElementName["ViewCount"] = "ViewCount";
142
143
  ElementName["VoteCount"] = "VoteCount";
@@ -10,7 +10,7 @@ import extractState from './extract-state';
10
10
  import { extractSmartLinkIcon } from './icon';
11
11
  import { extractSmartLinkProviderIcon } from './icon/extract-provider-icon';
12
12
  import { extractLatestCommit } from './latest-commit';
13
- import { extractAppliedToComponentsCount, extractAssignedTo, extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractDueOn, extractLocation, extractMetaObjectId, extractMetaResourceType, extractMetaTenantId, extractOwnedBy, extractPersonAssignedToAsArray, extractProgrammingLanguage, extractReactCount, extractReadTime, extractSentOn, extractSourceBranch, extractStoryPoints, extractSubscriberCount, extractSubTasksProgress, extractTargetBranch, extractViewCount, extractVoteCount } from './utils';
13
+ import { extractAppliedToComponentsCount, extractAssignedTo, extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractDueOn, extractLocation, extractMetaObjectId, extractMetaResourceType, extractMetaTenantId, extractOwnedBy, extractPersonAssignedToAsArray, extractProgrammingLanguage, extractReactCount, extractReadTime, extractSentOn, extractSourceBranch, extractStoryPoints, extractSubscriberCount, extractSubTasksProgress, extractTargetBranch, extractTeamMemberCount, extractViewCount, extractVoteCount } from './utils';
14
14
  const extractFlexibleUiContext = ({
15
15
  appearance,
16
16
  fireEvent,
@@ -83,6 +83,9 @@ const extractFlexibleUiContext = ({
83
83
  ...(fg('platform-linking-flexible-card-context') ? undefined : {
84
84
  title: extractSmartLinkTitle(response) || url
85
85
  }),
86
+ ...(fg('platform-linking-team-member-count-component') && {
87
+ teamMemberCount: extractTeamMemberCount(data)
88
+ }),
86
89
  url,
87
90
  ari: extractSmartLinkAri(response),
88
91
  ...(fg('platform-linking-visual-refresh-v2') && {
@@ -44,6 +44,10 @@ export const extractModifiedBy = data => {
44
44
  export const extractProgrammingLanguage = data => extractValue(data, 'schema:programmingLanguage');
45
45
  export const extractSourceBranch = data => extractLinkName(data['atlassian:mergeSource']);
46
46
  export const extractSubscriberCount = data => extractValue(data, 'atlassian:subscriberCount');
47
+ export const extractTeamMemberCount = data => {
48
+ const val = data !== null && data !== void 0 && data.attributedTo ? Array.isArray(data === null || data === void 0 ? void 0 : data.attributedTo) ? data === null || data === void 0 ? void 0 : data.attributedTo.length : 0 : 0;
49
+ return val;
50
+ };
47
51
  export const extractAttachmentCount = data => extractValue(data, 'atlassian:attachmentCount');
48
52
  export const extractTargetBranch = data => extractLinkName(data['atlassian:mergeDestination']);
49
53
  export const extractChecklistProgress = data => {
@@ -798,5 +798,10 @@ export const messages = defineMessages({
798
798
  id: 'fabric.linking.status_change_permission_error-issue-term-refresh',
799
799
  defaultMessage: 'You don’t have permission to transition this work item. ',
800
800
  description: 'Informs the user that they do not have enough permissions to update a status'
801
+ },
802
+ team_members_count: {
803
+ id: 'fabric.linking.team_members_count',
804
+ defaultMessage: '{context} members',
805
+ description: 'Indicates the count of team member'
801
806
  }
802
807
  });
@@ -1,9 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import uuid from 'uuid';
3
3
  import { getBaseUrl } from '@atlaskit/linking-common';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
4
5
  import { readStream } from './readStream';
5
6
  import { ChunkProcessingError } from './types';
6
7
  import { addPath, getXProductHeaderValue } from './utils';
8
+ const CONVO_AI_ENDPOINT = 'ai/v2/ai-feature/smartlinksummary/stream';
7
9
  export class AISummaryService {
8
10
  constructor(props) {
9
11
  var _getXProductHeaderVal;
@@ -13,7 +15,7 @@ export class AISummaryService {
13
15
  });
14
16
  _defineProperty(this, "subscribedStateSetters", new Set());
15
17
  _defineProperty(this, "getRequestUrl", (envKey, baseUrlOverride) => {
16
- const path = 'assist/chat/v1/invoke_agent/stream';
18
+ const path = fg('platform-linking-ai-summary-migration-to-convo-ai') ? CONVO_AI_ENDPOINT : 'assist/chat/v1/invoke_agent/stream';
17
19
  if (baseUrlOverride || envKey) {
18
20
  const baseUrl = baseUrlOverride || getBaseUrl(envKey);
19
21
  return addPath(baseUrl, path);
@@ -29,6 +31,13 @@ export class AISummaryService {
29
31
  prompt_id: 'smart_links',
30
32
  summary_output_mimetype: 'text/markdown',
31
33
  locale: this.locale
34
+ },
35
+ ...{
36
+ ai_feature_input: fg('platform-linking-ai-summary-migration-to-convo-ai') ? {
37
+ content_url: this.url,
38
+ content_ari: this.ari,
39
+ locale: this.locale
40
+ } : undefined
32
41
  }
33
42
  };
34
43
  const options = {
@@ -2,7 +2,7 @@ export const ANALYTICS_CHANNEL = 'media';
2
2
  export const context = {
3
3
  componentName: 'smart-cards',
4
4
  packageName: "@atlaskit/smart-card",
5
- packageVersion: "38.14.1"
5
+ packageVersion: "38.15.0"
6
6
  };
7
7
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
8
8
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -136,6 +136,17 @@ export const getSimulatedBetterMetadata = cardDetails => {
136
136
  }, ...baseTopMetadata],
137
137
  bottomMetadata: defaultBottomMetadata
138
138
  };
139
+ case 'legion-object-provider':
140
+ case 'profile-object-provider':
141
+ return {
142
+ titleMetadata: defaultTitleMetadata,
143
+ topMetadata: [{
144
+ name: ElementName.AuthorGroup
145
+ }, {
146
+ name: ElementName.TeamMemberCount
147
+ }, ...baseTopMetadata],
148
+ bottomMetadata: defaultBottomMetadata
149
+ };
139
150
  default:
140
151
  return {
141
152
  titleMetadata: defaultTitleMetadata,
@@ -38,6 +38,7 @@ export const ElementDisplaySchema = {
38
38
  [ElementName.SentOn]: ['inline'],
39
39
  [ElementName.State]: ['inline'],
40
40
  [ElementName.SubscriberCount]: ['inline'],
41
+ [ElementName.TeamMemberCount]: ['inline'],
41
42
  [ElementName.SubTasksProgress]: ['inline'],
42
43
  [ElementName.StoryPoints]: ['inline'],
43
44
  [ElementName.TargetBranch]: ['inline'],
@@ -29,6 +29,7 @@ export { default as SubscriberCount } from './subscriber-count-element';
29
29
  export { default as SubTasksProgress } from './sub-tasks-progress-element';
30
30
  export { default as StoryPoints } from './story-points-element';
31
31
  export { default as TargetBranch } from './target-branch-element';
32
+ export { default as TeamMemberCount } from './team-member-count-element';
32
33
  export { default as Title } from './title-element';
33
34
  export { default as ViewCount } from './view-count-element';
34
35
  export { default as VoteCount } from './vote-count-element';
@@ -0,0 +1,20 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { ElementName } from '../../../../../constants';
4
+ import { messages } from '../../../../../messages';
5
+ import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
6
+ import { BaseTextElement, toFormattedTextProps } from '../common';
7
+ const MAX_TEAM_MEMBER_LIMIT = 50;
8
+ const TeamMemberCountElement = props => {
9
+ var _context$teamMemberCo;
10
+ const context = useFlexibleUiContext();
11
+ if (!(context !== null && context !== void 0 && context.teamMemberCount)) {
12
+ return null;
13
+ }
14
+ const count = context !== null && context !== void 0 && context.teamMemberCount && (context === null || context === void 0 ? void 0 : context.teamMemberCount) > MAX_TEAM_MEMBER_LIMIT ? `${MAX_TEAM_MEMBER_LIMIT}+` : context === null || context === void 0 ? void 0 : (_context$teamMemberCo = context.teamMemberCount) === null || _context$teamMemberCo === void 0 ? void 0 : _context$teamMemberCo.toString();
15
+ const data = count ? toFormattedTextProps(messages.team_members_count, count) : null;
16
+ return data ? /*#__PURE__*/React.createElement(BaseTextElement, _extends({}, data, props, {
17
+ name: ElementName.TeamMemberCount
18
+ })) : null;
19
+ };
20
+ export default TeamMemberCountElement;
@@ -10,7 +10,7 @@ import LinkWarningModal from './LinkWarningModal';
10
10
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
11
11
  const PACKAGE_DATA = {
12
12
  packageName: "@atlaskit/smart-card",
13
- packageVersion: "38.14.1",
13
+ packageVersion: "38.15.0",
14
14
  componentName: 'linkUrl'
15
15
  };
16
16
  const Anchor = withLinkClickedEvent('a');
@@ -137,6 +137,7 @@ export var ElementName = /*#__PURE__*/function (ElementName) {
137
137
  ElementName["SubTasksProgress"] = "SubTasksProgress";
138
138
  ElementName["StoryPoints"] = "StoryPoints";
139
139
  ElementName["TargetBranch"] = "TargetBranch";
140
+ ElementName["TeamMemberCount"] = "TeamMemberCount";
140
141
  ElementName["Title"] = "Title";
141
142
  ElementName["ViewCount"] = "ViewCount";
142
143
  ElementName["VoteCount"] = "VoteCount";
@@ -15,7 +15,7 @@ import extractState from './extract-state';
15
15
  import { extractSmartLinkIcon } from './icon';
16
16
  import { extractSmartLinkProviderIcon } from './icon/extract-provider-icon';
17
17
  import { extractLatestCommit } from './latest-commit';
18
- import { extractAppliedToComponentsCount, extractAssignedTo, extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractDueOn, extractLocation, extractMetaObjectId, extractMetaResourceType, extractMetaTenantId, extractOwnedBy, extractPersonAssignedToAsArray, extractProgrammingLanguage, extractReactCount, extractReadTime, extractSentOn, extractSourceBranch, extractStoryPoints, extractSubscriberCount, extractSubTasksProgress, extractTargetBranch, extractViewCount, extractVoteCount } from './utils';
18
+ import { extractAppliedToComponentsCount, extractAssignedTo, extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractDueOn, extractLocation, extractMetaObjectId, extractMetaResourceType, extractMetaTenantId, extractOwnedBy, extractPersonAssignedToAsArray, extractProgrammingLanguage, extractReactCount, extractReadTime, extractSentOn, extractSourceBranch, extractStoryPoints, extractSubscriberCount, extractSubTasksProgress, extractTargetBranch, extractTeamMemberCount, extractViewCount, extractVoteCount } from './utils';
19
19
  var extractFlexibleUiContext = function extractFlexibleUiContext() {
20
20
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
21
21
  var appearance = _ref.appearance,
@@ -36,7 +36,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
36
36
  var data = response.data;
37
37
  var meta = response.meta;
38
38
  var url = extractSmartLinkUrl(response);
39
- return _objectSpread(_objectSpread(_objectSpread(_objectSpread({
39
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
40
40
  actions: extractFlexibleCardActions({
41
41
  actionOptions: actionOptions,
42
42
  aiSummaryConfig: aiSummaryConfig,
@@ -87,6 +87,8 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
87
87
  targetBranch: extractTargetBranch(data)
88
88
  }, fg('platform-linking-flexible-card-context') ? undefined : {
89
89
  title: extractSmartLinkTitle(response) || url
90
+ }), fg('platform-linking-team-member-count-component') && {
91
+ teamMemberCount: extractTeamMemberCount(data)
90
92
  }), {}, {
91
93
  url: url,
92
94
  ari: extractSmartLinkAri(response)
@@ -63,6 +63,10 @@ export var extractSourceBranch = function extractSourceBranch(data) {
63
63
  export var extractSubscriberCount = function extractSubscriberCount(data) {
64
64
  return extractValue(data, 'atlassian:subscriberCount');
65
65
  };
66
+ export var extractTeamMemberCount = function extractTeamMemberCount(data) {
67
+ var val = data !== null && data !== void 0 && data.attributedTo ? Array.isArray(data === null || data === void 0 ? void 0 : data.attributedTo) ? data === null || data === void 0 ? void 0 : data.attributedTo.length : 0 : 0;
68
+ return val;
69
+ };
66
70
  export var extractAttachmentCount = function extractAttachmentCount(data) {
67
71
  return extractValue(data, 'atlassian:attachmentCount');
68
72
  };
@@ -798,5 +798,10 @@ export var messages = defineMessages({
798
798
  id: 'fabric.linking.status_change_permission_error-issue-term-refresh',
799
799
  defaultMessage: 'You don’t have permission to transition this work item. ',
800
800
  description: 'Informs the user that they do not have enough permissions to update a status'
801
+ },
802
+ team_members_count: {
803
+ id: 'fabric.linking.team_members_count',
804
+ defaultMessage: '{context} members',
805
+ description: 'Indicates the count of team member'
801
806
  }
802
807
  });
@@ -2,19 +2,21 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
3
  import _createClass from "@babel/runtime/helpers/createClass";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
5
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
8
6
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
7
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
8
  import _regeneratorRuntime from "@babel/runtime/regenerator";
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
11
  function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
12
12
  function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function _return(r) { var n = this.s.return; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, throw: function _throw(r) { var n = this.s.return; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); }
13
13
  import uuid from 'uuid';
14
14
  import { getBaseUrl } from '@atlaskit/linking-common';
15
+ import { fg } from '@atlaskit/platform-feature-flags';
15
16
  import { readStream } from './readStream';
16
17
  import { ChunkProcessingError } from './types';
17
18
  import { addPath, getXProductHeaderValue } from './utils';
19
+ var CONVO_AI_ENDPOINT = 'ai/v2/ai-feature/smartlinksummary/stream';
18
20
  export var AISummaryService = /*#__PURE__*/function () {
19
21
  function AISummaryService(props) {
20
22
  var _this = this,
@@ -26,7 +28,7 @@ export var AISummaryService = /*#__PURE__*/function () {
26
28
  });
27
29
  _defineProperty(this, "subscribedStateSetters", new Set());
28
30
  _defineProperty(this, "getRequestUrl", function (envKey, baseUrlOverride) {
29
- var path = 'assist/chat/v1/invoke_agent/stream';
31
+ var path = fg('platform-linking-ai-summary-migration-to-convo-ai') ? CONVO_AI_ENDPOINT : 'assist/chat/v1/invoke_agent/stream';
30
32
  if (baseUrlOverride || envKey) {
31
33
  var baseUrl = baseUrlOverride || getBaseUrl(envKey);
32
34
  return addPath(baseUrl, path);
@@ -38,7 +40,7 @@ export var AISummaryService = /*#__PURE__*/function () {
38
40
  return _regeneratorRuntime.wrap(function _callee$(_context) {
39
41
  while (1) switch (_context.prev = _context.next) {
40
42
  case 0:
41
- payload = {
43
+ payload = _objectSpread({
42
44
  recipient_agent_named_id: 'smartlink_summary_agent',
43
45
  agent_input_context: {
44
46
  content_url: _this.url,
@@ -47,7 +49,13 @@ export var AISummaryService = /*#__PURE__*/function () {
47
49
  summary_output_mimetype: 'text/markdown',
48
50
  locale: _this.locale
49
51
  }
50
- };
52
+ }, {
53
+ ai_feature_input: fg('platform-linking-ai-summary-migration-to-convo-ai') ? {
54
+ content_url: _this.url,
55
+ content_ari: _this.ari,
56
+ locale: _this.locale
57
+ } : undefined
58
+ });
51
59
  options = {
52
60
  method: 'POST',
53
61
  headers: _this.config.headers,
@@ -4,7 +4,7 @@ export var ANALYTICS_CHANNEL = 'media';
4
4
  export var context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card",
7
- packageVersion: "38.14.1"
7
+ packageVersion: "38.15.0"
8
8
  };
9
9
  export var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -136,6 +136,17 @@ export var getSimulatedBetterMetadata = function getSimulatedBetterMetadata(card
136
136
  }].concat(baseTopMetadata),
137
137
  bottomMetadata: defaultBottomMetadata
138
138
  };
139
+ case 'legion-object-provider':
140
+ case 'profile-object-provider':
141
+ return {
142
+ titleMetadata: defaultTitleMetadata,
143
+ topMetadata: [{
144
+ name: ElementName.AuthorGroup
145
+ }, {
146
+ name: ElementName.TeamMemberCount
147
+ }].concat(baseTopMetadata),
148
+ bottomMetadata: defaultBottomMetadata
149
+ };
139
150
  default:
140
151
  return {
141
152
  titleMetadata: defaultTitleMetadata,
@@ -13,7 +13,7 @@ import ElementGroup from './element-group';
13
13
 
14
14
  // Determine whether the element can be display as inline/block.
15
15
 
16
- export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.AssignedTo, ['inline']), ElementName.AssignedToGroup, ['inline']), ElementName.AttachmentCount, ['inline']), ElementName.AuthorGroup, ['inline']), ElementName.AppliedToComponentsCount, ['inline']), ElementName.ChecklistProgress, ['inline']), ElementName.CollaboratorGroup, ['inline']), ElementName.CommentCount, ['inline']), ElementName.CreatedBy, ['inline']), ElementName.CreatedOn, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.DueOn, ['inline']), ElementName.LatestCommit, ['inline']), ElementName.LinkIcon, ['inline']), ElementName.Location, ['inline']), ElementName.ModifiedBy, ['inline']), ElementName.ModifiedOn, ['inline']), ElementName.OwnedBy, ['inline']), ElementName.OwnedByGroup, ['inline']), ElementName.Preview, ['block']), ElementName.Priority, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), ElementName.Provider, ['inline']), ElementName.ReactCount, ['inline']), ElementName.ReadTime, ['inline']), ElementName.Snippet, ['block']), ElementName.SourceBranch, ['inline']), ElementName.SentOn, ['inline']), ElementName.State, ['inline']), ElementName.SubscriberCount, ['inline']), ElementName.SubTasksProgress, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.StoryPoints, ['inline']), ElementName.TargetBranch, ['inline']), ElementName.Title, ['inline']), ElementName.ViewCount, ['inline']), ElementName.VoteCount, ['inline']));
16
+ export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.AssignedTo, ['inline']), ElementName.AssignedToGroup, ['inline']), ElementName.AttachmentCount, ['inline']), ElementName.AuthorGroup, ['inline']), ElementName.AppliedToComponentsCount, ['inline']), ElementName.ChecklistProgress, ['inline']), ElementName.CollaboratorGroup, ['inline']), ElementName.CommentCount, ['inline']), ElementName.CreatedBy, ['inline']), ElementName.CreatedOn, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.DueOn, ['inline']), ElementName.LatestCommit, ['inline']), ElementName.LinkIcon, ['inline']), ElementName.Location, ['inline']), ElementName.ModifiedBy, ['inline']), ElementName.ModifiedOn, ['inline']), ElementName.OwnedBy, ['inline']), ElementName.OwnedByGroup, ['inline']), ElementName.Preview, ['block']), ElementName.Priority, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), ElementName.Provider, ['inline']), ElementName.ReactCount, ['inline']), ElementName.ReadTime, ['inline']), ElementName.Snippet, ['block']), ElementName.SourceBranch, ['inline']), ElementName.SentOn, ['inline']), ElementName.State, ['inline']), ElementName.SubscriberCount, ['inline']), ElementName.TeamMemberCount, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.SubTasksProgress, ['inline']), ElementName.StoryPoints, ['inline']), ElementName.TargetBranch, ['inline']), ElementName.Title, ['inline']), ElementName.ViewCount, ['inline']), ElementName.VoteCount, ['inline']));
17
17
 
18
18
  /**
19
19
  * Get gap size between elements inside a block
@@ -29,6 +29,7 @@ export { default as SubscriberCount } from './subscriber-count-element';
29
29
  export { default as SubTasksProgress } from './sub-tasks-progress-element';
30
30
  export { default as StoryPoints } from './story-points-element';
31
31
  export { default as TargetBranch } from './target-branch-element';
32
+ export { default as TeamMemberCount } from './team-member-count-element';
32
33
  export { default as Title } from './title-element';
33
34
  export { default as ViewCount } from './view-count-element';
34
35
  export { default as VoteCount } from './vote-count-element';
@@ -0,0 +1,20 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { ElementName } from '../../../../../constants';
4
+ import { messages } from '../../../../../messages';
5
+ import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
6
+ import { BaseTextElement, toFormattedTextProps } from '../common';
7
+ var MAX_TEAM_MEMBER_LIMIT = 50;
8
+ var TeamMemberCountElement = function TeamMemberCountElement(props) {
9
+ var _context$teamMemberCo;
10
+ var context = useFlexibleUiContext();
11
+ if (!(context !== null && context !== void 0 && context.teamMemberCount)) {
12
+ return null;
13
+ }
14
+ var count = context !== null && context !== void 0 && context.teamMemberCount && (context === null || context === void 0 ? void 0 : context.teamMemberCount) > MAX_TEAM_MEMBER_LIMIT ? "".concat(MAX_TEAM_MEMBER_LIMIT, "+") : context === null || context === void 0 || (_context$teamMemberCo = context.teamMemberCount) === null || _context$teamMemberCo === void 0 ? void 0 : _context$teamMemberCo.toString();
15
+ var data = count ? toFormattedTextProps(messages.team_members_count, count) : null;
16
+ return data ? /*#__PURE__*/React.createElement(BaseTextElement, _extends({}, data, props, {
17
+ name: ElementName.TeamMemberCount
18
+ })) : null;
19
+ };
20
+ export default TeamMemberCountElement;
@@ -13,7 +13,7 @@ import LinkWarningModal from './LinkWarningModal';
13
13
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
14
14
  var PACKAGE_DATA = {
15
15
  packageName: "@atlaskit/smart-card",
16
- packageVersion: "38.14.1",
16
+ packageVersion: "38.15.0",
17
17
  componentName: 'linkUrl'
18
18
  };
19
19
  var Anchor = withLinkClickedEvent('a');
@@ -119,6 +119,7 @@ export declare enum ElementName {
119
119
  SubTasksProgress = "SubTasksProgress",
120
120
  StoryPoints = "StoryPoints",
121
121
  TargetBranch = "TargetBranch",
122
+ TeamMemberCount = "TeamMemberCount",
122
123
  Title = "Title",
123
124
  ViewCount = "ViewCount",
124
125
  VoteCount = "VoteCount",
@@ -18,6 +18,7 @@ export declare const extractProgrammingLanguage: (data: JsonLd.Data.BaseData) =>
18
18
  export declare const extractSourceBranch: (data: JsonLd.Data.SourceCodePullRequest) => string | undefined;
19
19
  export type LinkSubscriberType = JsonLd.Data.SourceCodeRepository | JsonLd.Data.Task | JsonLd.Data.TaskType;
20
20
  export declare const extractSubscriberCount: (data: JsonLd.Data.BaseData) => number | undefined;
21
+ export declare const extractTeamMemberCount: (data: JsonLd.Data.BaseData) => number;
21
22
  export type LinkAttachmentType = JsonLd.Data.Document | JsonLd.Data.Task | JsonLd.Data.TaskType | JsonLd.Data.Project;
22
23
  export declare const extractAttachmentCount: (data: JsonLd.Data.BaseData) => number | undefined;
23
24
  export declare const extractTargetBranch: (data: JsonLd.Data.SourceCodePullRequest) => string | undefined;
@@ -1,6 +1,6 @@
1
1
  import { type MessageDescriptor } from 'react-intl-next';
2
2
  export type RequestAccessMessageKey = 'click_to_join' | 'click_to_join_description' | 'forbidden_description' | 'request_access' | 'request_access_description' | 'request_access_pending' | 'request_access_pending_title' | 'request_access_pending_description' | 'request_denied_description' | 'default_no_access_title' | 'direct_access_title' | 'direct_access_description' | 'direct_access' | 'access_exists_description' | 'not_found_description' | 'not_found_title';
3
- export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'compass_applied_components_count' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related' | 'generic_error_message' | 'related_links_modal_error_header' | 'related_links_modal_error_title' | 'related_links_modal_error_message' | 'related_links_modal_error_description' | 'related_links_modal_unavailable_header' | 'related_links_modal_unavailable_title' | 'related_links_modal_unavailable_message' | 'related_links_modal_unavailable_description' | 'related_links_modal_title' | 'related_links_modal_title_v2' | 'related_links_view_related_urls' | 'related_links_view_related_links' | 'related_links_found_in' | 'related_links_found_in_v2' | 'related_links_includes_links_to' | 'related_links_includes_links_to_v2' | 'related_links_not_found' | 'join_to_viewIssueTermRefresh' | 'open_issue_in_jiraIssueTermRefresh' | 'request_access_to_viewIssueTermRefresh' | 'status_change_permission_errorIssueTermRefresh';
3
+ export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'compass_applied_components_count' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related' | 'generic_error_message' | 'related_links_modal_error_header' | 'related_links_modal_error_title' | 'related_links_modal_error_message' | 'related_links_modal_error_description' | 'related_links_modal_unavailable_header' | 'related_links_modal_unavailable_title' | 'related_links_modal_unavailable_message' | 'related_links_modal_unavailable_description' | 'related_links_modal_title' | 'related_links_modal_title_v2' | 'related_links_view_related_urls' | 'related_links_view_related_links' | 'related_links_found_in' | 'related_links_found_in_v2' | 'related_links_includes_links_to' | 'related_links_includes_links_to_v2' | 'related_links_not_found' | 'join_to_viewIssueTermRefresh' | 'open_issue_in_jiraIssueTermRefresh' | 'request_access_to_viewIssueTermRefresh' | 'team_members_count' | 'status_change_permission_errorIssueTermRefresh';
4
4
  type Messages = {
5
5
  [K in MessageKey]: MessageDescriptor;
6
6
  };
@@ -191,6 +191,12 @@ export type FlexibleUiDataContext = {
191
191
  * @see SubscriberCount
192
192
  */
193
193
  subscriberCount?: number;
194
+ /**
195
+ * Contains the number of team members of the linked resource.
196
+ * @type number
197
+ * @see TeamMemberCount
198
+ */
199
+ teamMemberCount?: number;
194
200
  /**
195
201
  * A string displaying progress on subtasks
196
202
  */
@@ -33,6 +33,7 @@ export type PostAgentPayload = {
33
33
  recipient_agent_named_id: 'smartlink_summary_agent';
34
34
  agent_input_context: AgentInputContext;
35
35
  user_intent?: string;
36
+ ai_feature_input?: FeatureInputContext;
36
37
  };
37
38
  export type AgentInputContext = {
38
39
  content_url: string;
@@ -41,6 +42,11 @@ export type AgentInputContext = {
41
42
  summary_output_mimetype?: SummaryOutputMimeType;
42
43
  locale?: string;
43
44
  };
45
+ export type FeatureInputContext = {
46
+ content_url: string;
47
+ content_ari?: string;
48
+ locale?: string;
49
+ };
44
50
  export type PromptId = 'smart_links';
45
51
  export type SummaryOutputMimeType = 'text/adf' | 'text/markdown' | 'text/json';
46
52
  export declare const errorMessages: readonly ["NETWORK_ERROR", "NO_ANSWER", "RATE_LIMIT", "NO_AGENT", "PLUGIN_ERRORED", "OPENAI_RATE_LIMIT_USER_ABUSE", "ACCEPTABLE_USE_VIOLATIONS", "AI_DISABLED", "UNEXPECTED", "HIPAA_CONTENT_DETECTED", "EXCEEDING_CONTEXT_LENGTH_ERROR"];
@@ -194,7 +194,7 @@ export type OnActionMenuOpenChangeOptions = {
194
194
  /**
195
195
  * A type that contains all the possible combinations of elements with their corresponding props.
196
196
  */
197
- export type ElementItemProps = AssignedTo | AssignedToGroup | AttachmentCount | AuthorGroup | AppliedToComponentsCount | ChecklistProgress | CollaboratorGroup | CommentCount | CreatedBy | CreatedOn | DueOn | LatestCommit | LinkIcon | Location | ModifiedBy | ModifiedOn | OwnedBy | OwnedByGroup | Preview | Priority | ProgrammingLanguage | Provider | ReactCount | ReadTime | SentOn | Snippet | SourceBranch | State | SubscriberCount | SubTasksProgress | StoryPoints | TargetBranch | Title | ViewCount | VoteCount;
197
+ export type ElementItemProps = AssignedTo | AssignedToGroup | AttachmentCount | AuthorGroup | AppliedToComponentsCount | ChecklistProgress | CollaboratorGroup | CommentCount | CreatedBy | CreatedOn | DueOn | LatestCommit | LinkIcon | Location | ModifiedBy | ModifiedOn | OwnedBy | OwnedByGroup | Preview | Priority | ProgrammingLanguage | Provider | ReactCount | ReadTime | SentOn | Snippet | SourceBranch | State | SubscriberCount | SubTasksProgress | StoryPoints | TargetBranch | Title | TeamMemberCount | ViewCount | VoteCount;
198
198
  /**
199
199
  * Represents the props available for an AttachmentCount element.
200
200
  * @see AttachmentCount
@@ -421,6 +421,13 @@ export type State = {
421
421
  export type SubscriberCount = {
422
422
  name: ElementName.SubscriberCount;
423
423
  };
424
+ /**
425
+ * Represents the props available for a TeamMemberCount element.
426
+ * @see TeamMemberCount
427
+ */
428
+ export type TeamMemberCount = {
429
+ name: ElementName.TeamMemberCount;
430
+ };
424
431
  /**
425
432
  * Represents the props available for a SubtasksProgress element.
426
433
  */
@@ -52,6 +52,7 @@ export { default as SubscriberCount } from './subscriber-count-element';
52
52
  export { default as SubTasksProgress } from './sub-tasks-progress-element';
53
53
  export { default as StoryPoints } from './story-points-element';
54
54
  export { default as TargetBranch } from './target-branch-element';
55
+ export { default as TeamMemberCount } from './team-member-count-element';
55
56
  export { default as Title } from './title-element';
56
57
  export { default as ViewCount } from './view-count-element';
57
58
  export { default as VoteCount } from './vote-count-element';
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { type BaseTextElementProps } from '../common';
3
+ export type TeamMemberCountElementProps = BaseTextElementProps;
4
+ declare const TeamMemberCountElement: (props: TeamMemberCountElementProps) => JSX.Element | null;
5
+ export default TeamMemberCountElement;
@@ -119,6 +119,7 @@ export declare enum ElementName {
119
119
  SubTasksProgress = "SubTasksProgress",
120
120
  StoryPoints = "StoryPoints",
121
121
  TargetBranch = "TargetBranch",
122
+ TeamMemberCount = "TeamMemberCount",
122
123
  Title = "Title",
123
124
  ViewCount = "ViewCount",
124
125
  VoteCount = "VoteCount",
@@ -18,6 +18,7 @@ export declare const extractProgrammingLanguage: (data: JsonLd.Data.BaseData) =>
18
18
  export declare const extractSourceBranch: (data: JsonLd.Data.SourceCodePullRequest) => string | undefined;
19
19
  export type LinkSubscriberType = JsonLd.Data.SourceCodeRepository | JsonLd.Data.Task | JsonLd.Data.TaskType;
20
20
  export declare const extractSubscriberCount: (data: JsonLd.Data.BaseData) => number | undefined;
21
+ export declare const extractTeamMemberCount: (data: JsonLd.Data.BaseData) => number;
21
22
  export type LinkAttachmentType = JsonLd.Data.Document | JsonLd.Data.Task | JsonLd.Data.TaskType | JsonLd.Data.Project;
22
23
  export declare const extractAttachmentCount: (data: JsonLd.Data.BaseData) => number | undefined;
23
24
  export declare const extractTargetBranch: (data: JsonLd.Data.SourceCodePullRequest) => string | undefined;
@@ -1,6 +1,6 @@
1
1
  import { type MessageDescriptor } from 'react-intl-next';
2
2
  export type RequestAccessMessageKey = 'click_to_join' | 'click_to_join_description' | 'forbidden_description' | 'request_access' | 'request_access_description' | 'request_access_pending' | 'request_access_pending_title' | 'request_access_pending_description' | 'request_denied_description' | 'default_no_access_title' | 'direct_access_title' | 'direct_access_description' | 'direct_access' | 'access_exists_description' | 'not_found_description' | 'not_found_title';
3
- export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'compass_applied_components_count' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related' | 'generic_error_message' | 'related_links_modal_error_header' | 'related_links_modal_error_title' | 'related_links_modal_error_message' | 'related_links_modal_error_description' | 'related_links_modal_unavailable_header' | 'related_links_modal_unavailable_title' | 'related_links_modal_unavailable_message' | 'related_links_modal_unavailable_description' | 'related_links_modal_title' | 'related_links_modal_title_v2' | 'related_links_view_related_urls' | 'related_links_view_related_links' | 'related_links_found_in' | 'related_links_found_in_v2' | 'related_links_includes_links_to' | 'related_links_includes_links_to_v2' | 'related_links_not_found' | 'join_to_viewIssueTermRefresh' | 'open_issue_in_jiraIssueTermRefresh' | 'request_access_to_viewIssueTermRefresh' | 'status_change_permission_errorIssueTermRefresh';
3
+ export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'compass_applied_components_count' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related' | 'generic_error_message' | 'related_links_modal_error_header' | 'related_links_modal_error_title' | 'related_links_modal_error_message' | 'related_links_modal_error_description' | 'related_links_modal_unavailable_header' | 'related_links_modal_unavailable_title' | 'related_links_modal_unavailable_message' | 'related_links_modal_unavailable_description' | 'related_links_modal_title' | 'related_links_modal_title_v2' | 'related_links_view_related_urls' | 'related_links_view_related_links' | 'related_links_found_in' | 'related_links_found_in_v2' | 'related_links_includes_links_to' | 'related_links_includes_links_to_v2' | 'related_links_not_found' | 'join_to_viewIssueTermRefresh' | 'open_issue_in_jiraIssueTermRefresh' | 'request_access_to_viewIssueTermRefresh' | 'team_members_count' | 'status_change_permission_errorIssueTermRefresh';
4
4
  type Messages = {
5
5
  [K in MessageKey]: MessageDescriptor;
6
6
  };
@@ -191,6 +191,12 @@ export type FlexibleUiDataContext = {
191
191
  * @see SubscriberCount
192
192
  */
193
193
  subscriberCount?: number;
194
+ /**
195
+ * Contains the number of team members of the linked resource.
196
+ * @type number
197
+ * @see TeamMemberCount
198
+ */
199
+ teamMemberCount?: number;
194
200
  /**
195
201
  * A string displaying progress on subtasks
196
202
  */
@@ -33,6 +33,7 @@ export type PostAgentPayload = {
33
33
  recipient_agent_named_id: 'smartlink_summary_agent';
34
34
  agent_input_context: AgentInputContext;
35
35
  user_intent?: string;
36
+ ai_feature_input?: FeatureInputContext;
36
37
  };
37
38
  export type AgentInputContext = {
38
39
  content_url: string;
@@ -41,6 +42,11 @@ export type AgentInputContext = {
41
42
  summary_output_mimetype?: SummaryOutputMimeType;
42
43
  locale?: string;
43
44
  };
45
+ export type FeatureInputContext = {
46
+ content_url: string;
47
+ content_ari?: string;
48
+ locale?: string;
49
+ };
44
50
  export type PromptId = 'smart_links';
45
51
  export type SummaryOutputMimeType = 'text/adf' | 'text/markdown' | 'text/json';
46
52
  export declare const errorMessages: readonly [
@@ -194,7 +194,7 @@ export type OnActionMenuOpenChangeOptions = {
194
194
  /**
195
195
  * A type that contains all the possible combinations of elements with their corresponding props.
196
196
  */
197
- export type ElementItemProps = AssignedTo | AssignedToGroup | AttachmentCount | AuthorGroup | AppliedToComponentsCount | ChecklistProgress | CollaboratorGroup | CommentCount | CreatedBy | CreatedOn | DueOn | LatestCommit | LinkIcon | Location | ModifiedBy | ModifiedOn | OwnedBy | OwnedByGroup | Preview | Priority | ProgrammingLanguage | Provider | ReactCount | ReadTime | SentOn | Snippet | SourceBranch | State | SubscriberCount | SubTasksProgress | StoryPoints | TargetBranch | Title | ViewCount | VoteCount;
197
+ export type ElementItemProps = AssignedTo | AssignedToGroup | AttachmentCount | AuthorGroup | AppliedToComponentsCount | ChecklistProgress | CollaboratorGroup | CommentCount | CreatedBy | CreatedOn | DueOn | LatestCommit | LinkIcon | Location | ModifiedBy | ModifiedOn | OwnedBy | OwnedByGroup | Preview | Priority | ProgrammingLanguage | Provider | ReactCount | ReadTime | SentOn | Snippet | SourceBranch | State | SubscriberCount | SubTasksProgress | StoryPoints | TargetBranch | Title | TeamMemberCount | ViewCount | VoteCount;
198
198
  /**
199
199
  * Represents the props available for an AttachmentCount element.
200
200
  * @see AttachmentCount
@@ -421,6 +421,13 @@ export type State = {
421
421
  export type SubscriberCount = {
422
422
  name: ElementName.SubscriberCount;
423
423
  };
424
+ /**
425
+ * Represents the props available for a TeamMemberCount element.
426
+ * @see TeamMemberCount
427
+ */
428
+ export type TeamMemberCount = {
429
+ name: ElementName.TeamMemberCount;
430
+ };
424
431
  /**
425
432
  * Represents the props available for a SubtasksProgress element.
426
433
  */
@@ -52,6 +52,7 @@ export { default as SubscriberCount } from './subscriber-count-element';
52
52
  export { default as SubTasksProgress } from './sub-tasks-progress-element';
53
53
  export { default as StoryPoints } from './story-points-element';
54
54
  export { default as TargetBranch } from './target-branch-element';
55
+ export { default as TeamMemberCount } from './team-member-count-element';
55
56
  export { default as Title } from './title-element';
56
57
  export { default as ViewCount } from './view-count-element';
57
58
  export { default as VoteCount } from './vote-count-element';
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { type BaseTextElementProps } from '../common';
3
+ export type TeamMemberCountElementProps = BaseTextElementProps;
4
+ declare const TeamMemberCountElement: (props: TeamMemberCountElementProps) => JSX.Element | null;
5
+ export default TeamMemberCountElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "38.14.2",
3
+ "version": "38.16.0",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -45,15 +45,16 @@
45
45
  "@atlaskit/icon-object": "^7.1.0",
46
46
  "@atlaskit/icon-priority": "^6.3.0",
47
47
  "@atlaskit/image": "^3.0.0",
48
- "@atlaskit/json-ld-types": "^1.2.0",
48
+ "@atlaskit/json-ld-types": "^1.3.0",
49
49
  "@atlaskit/legacy-custom-icons": "^0.22.0",
50
50
  "@atlaskit/link": "^3.2.0",
51
51
  "@atlaskit/link-analytics": "^10.0.0",
52
52
  "@atlaskit/link-client-extension": "^5.0.0",
53
53
  "@atlaskit/link-extractors": "^2.4.0",
54
+ "@atlaskit/link-test-helpers": "^8.1.0",
54
55
  "@atlaskit/linking-common": "^9.1.0",
55
56
  "@atlaskit/linking-types": "^13.0.0",
56
- "@atlaskit/logo": "^19.2.0",
57
+ "@atlaskit/logo": "^19.3.0",
57
58
  "@atlaskit/lozenge": "^13.0.0",
58
59
  "@atlaskit/menu": "^8.0.0",
59
60
  "@atlaskit/modal-dialog": "^14.2.0",
@@ -95,7 +96,6 @@
95
96
  "@af/visual-regression": "workspace:^",
96
97
  "@atlaskit/analytics-listeners": "^9.0.0",
97
98
  "@atlaskit/css-reset": "^7.3.0",
98
- "@atlaskit/link-test-helpers": "^8.0.0",
99
99
  "@atlaskit/media-test-helpers": "^37.0.0",
100
100
  "@atlaskit/react-ufo": "^3.14.0",
101
101
  "@atlaskit/ssr": "workspace:^",
@@ -234,6 +234,9 @@
234
234
  "platform-linking-additional-flexible-element-props": {
235
235
  "type": "boolean"
236
236
  },
237
+ "platform-linking-ai-summary-migration-to-convo-ai": {
238
+ "type": "boolean"
239
+ },
237
240
  "platform-linking-flexible-card-context": {
238
241
  "type": "boolean"
239
242
  },
@@ -251,6 +254,9 @@
251
254
  },
252
255
  "platform_fix_block_card_img_icon_vc": {
253
256
  "type": "boolean"
257
+ },
258
+ "platform-linking-team-member-count-component": {
259
+ "type": "boolean"
254
260
  }
255
261
  },
256
262
  "compassUnitTestMetricSourceId": "ari:cloud:compass:a436116f-02ce-4520-8fbb-7301462a1674:metric-source/c5751cc6-3513-4070-9deb-af31e86aed34/f74ef1bc-7240-4aac-9dc8-9dc43b502089"