@atlaskit/smart-card 44.20.3 → 44.22.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 (40) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/state/actions/index.js +36 -16
  3. package/dist/cjs/state/hooks/use-inline-tailored-action-experiment/index.js +55 -0
  4. package/dist/cjs/utils/analytics/analytics.js +1 -1
  5. package/dist/cjs/view/BlockCard/views/ResolvedView.js +6 -6
  6. package/dist/cjs/view/FlexibleCard/components/actions/rovo-chat-action/index.js +15 -337
  7. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +3 -3
  8. package/dist/cjs/view/InlineCard/ResolvedView/InlineCardResolvedViewFunctional.js +10 -1
  9. package/dist/cjs/view/InlineCard/common/rovo-actions-cta/index.js +43 -5
  10. package/dist/cjs/view/LinkUrl/index.js +1 -1
  11. package/dist/cjs/view/common/rovo-chat-utils/index.js +332 -0
  12. package/dist/es2019/state/actions/index.js +34 -16
  13. package/dist/es2019/state/hooks/use-inline-tailored-action-experiment/index.js +49 -0
  14. package/dist/es2019/utils/analytics/analytics.js +1 -1
  15. package/dist/es2019/view/BlockCard/views/ResolvedView.js +1 -1
  16. package/dist/es2019/view/FlexibleCard/components/actions/rovo-chat-action/index.js +2 -321
  17. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +1 -1
  18. package/dist/es2019/view/InlineCard/ResolvedView/InlineCardResolvedViewFunctional.js +12 -2
  19. package/dist/es2019/view/InlineCard/common/rovo-actions-cta/index.js +44 -3
  20. package/dist/es2019/view/LinkUrl/index.js +1 -1
  21. package/dist/es2019/view/common/rovo-chat-utils/index.js +322 -0
  22. package/dist/esm/state/actions/index.js +36 -16
  23. package/dist/esm/state/hooks/use-inline-tailored-action-experiment/index.js +48 -0
  24. package/dist/esm/utils/analytics/analytics.js +1 -1
  25. package/dist/esm/view/BlockCard/views/ResolvedView.js +1 -1
  26. package/dist/esm/view/FlexibleCard/components/actions/rovo-chat-action/index.js +13 -335
  27. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +1 -1
  28. package/dist/esm/view/InlineCard/ResolvedView/InlineCardResolvedViewFunctional.js +11 -2
  29. package/dist/esm/view/InlineCard/common/rovo-actions-cta/index.js +41 -3
  30. package/dist/esm/view/LinkUrl/index.js +1 -1
  31. package/dist/esm/view/common/rovo-chat-utils/index.js +325 -0
  32. package/dist/types/state/hooks/use-inline-tailored-action-experiment/index.d.ts +24 -0
  33. package/dist/types/view/FlexibleCard/components/actions/rovo-chat-action/index.d.ts +1 -15
  34. package/dist/types/view/InlineCard/common/rovo-actions-cta/index.d.ts +4 -4
  35. package/dist/types/view/common/rovo-chat-utils/index.d.ts +25 -0
  36. package/dist/types-ts4.5/state/hooks/use-inline-tailored-action-experiment/index.d.ts +24 -0
  37. package/dist/types-ts4.5/view/FlexibleCard/components/actions/rovo-chat-action/index.d.ts +1 -15
  38. package/dist/types-ts4.5/view/InlineCard/common/rovo-actions-cta/index.d.ts +4 -4
  39. package/dist/types-ts4.5/view/common/rovo-chat-utils/index.d.ts +25 -0
  40. package/package.json +5 -2
@@ -8,8 +8,10 @@ exports.InlineCardResolvedViewBase = InlineCardResolvedViewBase;
8
8
  exports.InlineCardResolvedViewFunctional = void 0;
9
9
  exports.InlineCardResolvedViewFunctionalWithRovoActions = InlineCardResolvedViewFunctionalWithRovoActions;
10
10
  var _react = _interopRequireDefault(require("react"));
11
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
11
12
  var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react");
12
13
  var _useInlineActionNudgeExperiment = _interopRequireDefault(require("../../../state/hooks/use-inline-action-nudge-experiment"));
14
+ var _useInlineTailoredActionExperiment = _interopRequireDefault(require("../../../state/hooks/use-inline-tailored-action-experiment"));
13
15
  var _HoverCard = require("../../HoverCard");
14
16
  var _rovoActionsCta = require("../common/rovo-actions-cta");
15
17
  var _Frame = require("../Frame");
@@ -90,6 +92,8 @@ function InlineCardResolvedViewFunctionalWithRovoActions(_ref2) {
90
92
  lozenge = _ref2.lozenge;
91
93
  var _useInlineActionNudge = (0, _useInlineActionNudgeExperiment.default)(link, showHoverPreview, actionOptions),
92
94
  isEnabled = _useInlineActionNudge.isEnabled;
95
+ var _useInlineTailoredAct = (0, _useInlineTailoredActionExperiment.default)(link, showHoverPreview, actionOptions),
96
+ isInlineTailoredRovoActionEnabled = _useInlineTailoredAct.isEnabled;
93
97
 
94
98
  // TODO https://hello.jira.atlassian.cloud/browse/NAVX-4436: fire analytics with cohort
95
99
  var frame = /*#__PURE__*/_react.default.createElement(_Frame.Frame, {
@@ -108,8 +112,11 @@ function InlineCardResolvedViewFunctionalWithRovoActions(_ref2) {
108
112
  titleTextColor: titleTextColor,
109
113
  type: type,
110
114
  hideIconLoadingSkeleton: hideIconLoadingSkeleton
111
- }), (0, _renderLozenge.renderLozenge)(lozenge), isEnabled && /*#__PURE__*/_react.default.createElement(_rovoActionsCta.RovoActionsCta, {
115
+ }), (0, _renderLozenge.renderLozenge)(lozenge), isEnabled && !(0, _platformFeatureFlags.fg)('platform_sl_3p_auth_inline_tailored_cta_killswitch') && /*#__PURE__*/_react.default.createElement(_rovoActionsCta.RovoActionsCta, {
112
116
  testId: "".concat(testId, "-rovo-actions-cta")
117
+ }), isInlineTailoredRovoActionEnabled && /*#__PURE__*/_react.default.createElement(_rovoActionsCta.InlineRovoActionButton, {
118
+ testId: "".concat(testId, "-rovo-actions-cta"),
119
+ url: link
113
120
  }));
114
121
  if (!showHoverPreview || !link) {
115
122
  return frame;
@@ -121,4 +128,6 @@ function InlineCardResolvedViewFunctionalWithRovoActions(_ref2) {
121
128
  hoverPreviewOptions: hoverPreviewOptions
122
129
  }, frame);
123
130
  }
131
+
132
+ // Todo: replace with platform_sl_3p_auth_inline_tailored_cta_killswitch after cleanup of rovogrowth-640-inline-action-nudge-fg
124
133
  var InlineCardResolvedViewFunctional = exports.InlineCardResolvedViewFunctional = (0, _platformFeatureFlagsReact.componentWithFG)('rovogrowth-640-inline-action-nudge-fg', InlineCardResolvedViewFunctionalWithRovoActions, InlineCardResolvedViewBase);
@@ -6,26 +6,64 @@ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.RovoActionsCta = void 0;
9
+ exports.RovoActionsCta = exports.InlineRovoActionButton = void 0;
10
10
  require("./index.compiled.css");
11
- var React = _interopRequireWildcard(require("react"));
12
11
  var _runtime = require("@compiled/react/runtime");
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _reactIntl = require("react-intl");
13
14
  var _css = require("@atlaskit/css");
15
+ var _aiGenerativeTextSummary = _interopRequireDefault(require("@atlaskit/icon/core/ai-generative-text-summary"));
14
16
  var _rovoChat = _interopRequireDefault(require("@atlaskit/icon/core/rovo-chat"));
15
17
  var _compiled = require("@atlaskit/primitives/compiled");
18
+ var _useRovoChat2 = _interopRequireDefault(require("../../../../state/hooks/use-rovo-chat"));
19
+ var _rovoChatUtils = require("../../../common/rovo-chat-utils");
20
+ var _actionButton = require("../action-button");
16
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); }
17
22
  var styles = {
18
23
  innerContainer: "_1e0c1nu9 _1y1m1u8q _16d9qvcn _19bv12x7 _u5f312x7",
19
- rovoIcon: "_syaz15cr _80omtlke _bfhkjmqp _qrwqlb4i _1o0zlb4i _ca0qv77o _n3tdv77o"
24
+ rovoIcon: "_syaz15cr _80omtlke _bfhkjmqp _qrwqlb4i _1o0zlb4i _ca0qv77o _n3tdv77o",
25
+ text: "_1e0c1nu9 _19bv12x7"
20
26
  };
21
27
  var RovoActionsCta = exports.RovoActionsCta = function RovoActionsCta(_ref) {
22
28
  var testId = _ref.testId;
23
- return /*#__PURE__*/React.createElement(_compiled.Box, {
29
+ return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
24
30
  xcss: (0, _css.cx)(styles.innerContainer, styles.rovoIcon),
25
31
  testId: testId
26
- }, /*#__PURE__*/React.createElement(_rovoChat.default, {
32
+ }, /*#__PURE__*/_react.default.createElement(_rovoChat.default, {
27
33
  label: "Rovo",
28
34
  color: "var(--ds-icon-inverse, #FFFFFF)",
29
35
  size: "small"
30
36
  }));
37
+ };
38
+ var InlineRovoActionButton = exports.InlineRovoActionButton = function InlineRovoActionButton(_ref2) {
39
+ var testId = _ref2.testId,
40
+ url = _ref2.url;
41
+ var _useRovoChat = (0, _useRovoChat2.default)(),
42
+ sendPromptMessage = _useRovoChat.sendPromptMessage,
43
+ isRovoChatEnabled = _useRovoChat.isRovoChatEnabled;
44
+ var intl = (0, _reactIntl.useIntl)();
45
+
46
+ // TODO: NAVX-5109 implement tailored rovo chat actions here
47
+ var _ref3 = (0, _rovoChatUtils.getPromptAction)(_rovoChatUtils.RovoChatPromptKey.SUMMARIZE_LINK, intl, url) || {},
48
+ promptData = _ref3.data,
49
+ content = _ref3.content;
50
+ var handleClick = (0, _react.useCallback)(function (event) {
51
+ event.preventDefault();
52
+ event.stopPropagation();
53
+ if (isRovoChatEnabled && promptData) {
54
+ sendPromptMessage(promptData);
55
+ }
56
+ }, [sendPromptMessage, isRovoChatEnabled, promptData]);
57
+ return promptData && content ? /*#__PURE__*/_react.default.createElement(_actionButton.ActionButton, {
58
+ onClick: handleClick,
59
+ testId: testId
60
+ }, /*#__PURE__*/_react.default.createElement(_aiGenerativeTextSummary.default, {
61
+ label: "Rovo",
62
+ color: "var(--ds-icon, #292A2E)",
63
+ size: "small"
64
+ }), /*#__PURE__*/_react.default.createElement(_compiled.Box, {
65
+ xcss: styles.text
66
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
67
+ size: "small"
68
+ }, content))) : null;
31
69
  };
@@ -19,7 +19,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLink
19
19
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
20
20
  var PACKAGE_DATA = {
21
21
  packageName: "@atlaskit/smart-card",
22
- packageVersion: "44.20.2",
22
+ packageVersion: "44.21.0",
23
23
  componentName: 'linkUrl'
24
24
  };
25
25
  var LinkUrl = function LinkUrl(_ref) {
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getPromptAction = exports.RovoChatPromptKey = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _aiSearch = _interopRequireDefault(require("@atlaskit/icon-lab/core/ai-search"));
10
+ var _aiChat = _interopRequireDefault(require("@atlaskit/icon/core/ai-chat"));
11
+ var _aiGenerativeTextSummary = _interopRequireDefault(require("@atlaskit/icon/core/ai-generative-text-summary"));
12
+ var _rovoChat = _interopRequireDefault(require("@atlaskit/icon/core/rovo-chat"));
13
+ var _logo = require("@atlaskit/logo");
14
+ var _constants = require("../../../constants");
15
+ var _messages = require("../../../messages");
16
+ var _useBlockCardRovoActionExperiment = require("../../../state/hooks/use-block-card-rovo-action-experiment");
17
+ var _aiChapterIcon = _interopRequireDefault(require("../../FlexibleCard/assets/ai-chapter-icon"));
18
+ var _aiEditIcon = _interopRequireDefault(require("../../FlexibleCard/assets/ai-edit-icon"));
19
+ var _aiSearchIcon = _interopRequireDefault(require("../../FlexibleCard/assets/ai-search-icon"));
20
+ var _htmlToAdf = _interopRequireDefault(require("../../FlexibleCard/components/actions/rovo-chat-action/html-to-adf"));
21
+ var RovoChatPromptKey = exports.RovoChatPromptKey = /*#__PURE__*/function (RovoChatPromptKey) {
22
+ RovoChatPromptKey["RECOMMEND_OTHER_SOURCES"] = "recommend-other-sources";
23
+ RovoChatPromptKey["SHOW_OTHER_MENTIONS"] = "show-other-mentions";
24
+ RovoChatPromptKey["SUGGEST_IMPROVEMENT"] = "suggest-improvement";
25
+ RovoChatPromptKey["SUMMARIZE_LINK"] = "summarize-link";
26
+ RovoChatPromptKey["KEY_HIGHLIGHTS"] = "key-highlights";
27
+ RovoChatPromptKey["ASK_ROVO_ANYTHING"] = "ask-rovo-anything";
28
+ RovoChatPromptKey["IDENTIFY_KEY_POINTS"] = "identify-key-points";
29
+ RovoChatPromptKey["IDENTIFY_KEY_TRENDS"] = "identify-key-trends";
30
+ RovoChatPromptKey["FIND_OPEN_QUESTIONS"] = "find-open-questions";
31
+ RovoChatPromptKey["HIGHLIGHT_RELEVANT_CONTENT"] = "highlight-relevant-content";
32
+ RovoChatPromptKey["SUMMARIZE_THIS_FOR_ME"] = "summarize-this-for-me";
33
+ RovoChatPromptKey["ASK_A_SPECIFIC_QUESTION"] = "ask-a-specific-question";
34
+ RovoChatPromptKey["SHOW_ME_WHATS_RELEVANT"] = "show-me-whats-relevant";
35
+ return RovoChatPromptKey;
36
+ }({});
37
+ var getContext = function getContext(intl, product) {
38
+ switch (product) {
39
+ case 'CONFLUENCE':
40
+ return {
41
+ contextLong: intl.formatMessage(_messages.messages.rovo_prompt_context_confluence_page),
42
+ contextShort: intl.formatMessage(_messages.messages.rovo_prompt_context_confluence_page_short)
43
+ };
44
+ case 'JSW':
45
+ case 'JWM':
46
+ case 'JSM':
47
+ case 'JPD':
48
+ return {
49
+ contextLong: intl.formatMessage(_messages.messages.rovo_prompt_context_jira_work_item),
50
+ contextShort: intl.formatMessage(_messages.messages.rovo_prompt_context_jira_work_item_short)
51
+ };
52
+ }
53
+ };
54
+ var getPromptAction = exports.getPromptAction = function getPromptAction(promptKey, intl) {
55
+ var _getContext;
56
+ var url = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
57
+ var product = arguments.length > 3 ? arguments[3] : undefined;
58
+ var iconSize = arguments.length > 4 ? arguments[4] : undefined;
59
+ var cardAppearance = arguments.length > 5 ? arguments[5] : undefined;
60
+ var _ref = (_getContext = getContext(intl, product)) !== null && _getContext !== void 0 ? _getContext : {
61
+ contextLong: intl.formatMessage(_messages.messages.rovo_prompt_context_generic),
62
+ contextShort: intl.formatMessage(_messages.messages.rovo_prompt_context_generic)
63
+ },
64
+ contextLong = _ref.contextLong,
65
+ contextShort = _ref.contextShort;
66
+ var isBlockCard3PExperimentEnabled = (0, _useBlockCardRovoActionExperiment.isBlockCardRovoActionExperimentEnabled)(product);
67
+ switch (promptKey) {
68
+ case RovoChatPromptKey.RECOMMEND_OTHER_SOURCES:
69
+ var label_recommend = intl.formatMessage(_messages.messages.rovo_prompt_button_recommend_other_sources);
70
+ var html_recommend = intl.formatMessage(_messages.messages.rovo_prompt_message_recommend_other_sources, {
71
+ context: contextLong,
72
+ url: url
73
+ }, {
74
+ ignoreTag: true
75
+ });
76
+ return {
77
+ icon: /*#__PURE__*/_react.default.createElement(_aiEditIcon.default, null),
78
+ content: label_recommend,
79
+ tooltipMessage: label_recommend,
80
+ data: {
81
+ name: label_recommend,
82
+ dialogues: [],
83
+ prompt: (0, _htmlToAdf.default)(html_recommend)
84
+ }
85
+ };
86
+ case RovoChatPromptKey.SHOW_OTHER_MENTIONS:
87
+ var label_other_mentions = intl.formatMessage(_messages.messages.rovo_prompt_button_show_other_mentions);
88
+ var html_other_mentions = intl.formatMessage(_messages.messages.rovo_prompt_message_show_other_mentions, {
89
+ context: contextLong,
90
+ url: url
91
+ }, {
92
+ ignoreTag: true
93
+ });
94
+ return {
95
+ icon: /*#__PURE__*/_react.default.createElement(_aiChapterIcon.default, null),
96
+ content: label_other_mentions,
97
+ tooltipMessage: label_other_mentions,
98
+ data: {
99
+ name: label_other_mentions,
100
+ dialogues: [],
101
+ prompt: (0, _htmlToAdf.default)(html_other_mentions)
102
+ }
103
+ };
104
+ case RovoChatPromptKey.SUGGEST_IMPROVEMENT:
105
+ var label_improvement = intl.formatMessage(_messages.messages.rovo_prompt_button_suggest_improvement, {
106
+ context: contextShort
107
+ });
108
+ var html_improvement = intl.formatMessage(_messages.messages.rovo_prompt_message_suggest_improvement, {
109
+ context: contextLong,
110
+ url: url
111
+ }, {
112
+ ignoreTag: true
113
+ });
114
+ return {
115
+ icon: /*#__PURE__*/_react.default.createElement(_aiSearchIcon.default, null),
116
+ content: label_improvement,
117
+ tooltipMessage: label_improvement,
118
+ data: {
119
+ name: label_improvement,
120
+ dialogues: [],
121
+ prompt: (0, _htmlToAdf.default)(html_improvement)
122
+ }
123
+ };
124
+ case RovoChatPromptKey.SUMMARIZE_LINK:
125
+ var label_summarize = intl.formatMessage(_messages.messages.ai_summarize);
126
+ var html_summarize = intl.formatMessage(_messages.messages.rovo_prompt_message_summarize, {
127
+ url: url
128
+ }, {
129
+ ignoreTag: true
130
+ });
131
+ return {
132
+ icon: cardAppearance === _constants.CardDisplay.Block && isBlockCard3PExperimentEnabled ? /*#__PURE__*/_react.default.createElement(_aiChat.default, {
133
+ label: label_summarize,
134
+ size: iconSize
135
+ }) : /*#__PURE__*/_react.default.createElement(_aiEditIcon.default, null),
136
+ content: label_summarize,
137
+ tooltipMessage: label_summarize,
138
+ data: {
139
+ name: label_summarize,
140
+ dialogues: [],
141
+ prompt: (0, _htmlToAdf.default)(html_summarize),
142
+ mode: {
143
+ fastModeEnabled: true
144
+ }
145
+ }
146
+ };
147
+ case RovoChatPromptKey.SUMMARIZE_THIS_FOR_ME:
148
+ var label_summarize_this_for_me = intl.formatMessage(_messages.messages.rovo_prompt_button_summarize_this);
149
+ var html_summarize_this_for_me = intl.formatMessage(_messages.messages.rovo_prompt_message_summarize, {
150
+ url: url
151
+ }, {
152
+ ignoreTag: true
153
+ });
154
+ return {
155
+ icon: /*#__PURE__*/_react.default.createElement(_aiGenerativeTextSummary.default, {
156
+ label: label_summarize_this_for_me
157
+ }),
158
+ content: label_summarize_this_for_me,
159
+ tooltipMessage: label_summarize_this_for_me,
160
+ data: {
161
+ name: label_summarize_this_for_me,
162
+ dialogues: [],
163
+ prompt: (0, _htmlToAdf.default)(html_summarize_this_for_me),
164
+ mode: {
165
+ fastModeEnabled: true
166
+ }
167
+ }
168
+ };
169
+ case RovoChatPromptKey.HIGHLIGHT_RELEVANT_CONTENT:
170
+ var label_highlight_relevant_content = intl.formatMessage(_messages.messages.rovo_prompt_button_highlight_relevant_content);
171
+ var html_highlight_relevant_content = intl.formatMessage(_messages.messages.rovo_prompt_message_highlight_relevant_content, {
172
+ context: contextLong,
173
+ url: url
174
+ }, {
175
+ ignoreTag: true
176
+ });
177
+ return {
178
+ icon: /*#__PURE__*/_react.default.createElement(_aiChapterIcon.default, null),
179
+ content: label_highlight_relevant_content,
180
+ tooltipMessage: label_highlight_relevant_content,
181
+ data: {
182
+ name: label_highlight_relevant_content,
183
+ dialogues: [],
184
+ prompt: (0, _htmlToAdf.default)(html_highlight_relevant_content),
185
+ mode: {
186
+ fastModeEnabled: true
187
+ }
188
+ }
189
+ };
190
+ case RovoChatPromptKey.ASK_ROVO_ANYTHING:
191
+ var label_ask_rovo_anything = intl.formatMessage(_messages.messages.rovo_prompt_button_ask_rovo_anything);
192
+ var prompt_ask_rovo_anything = intl.formatMessage(_messages.messages.rovo_prompt_message_ask_rovo_anything, {
193
+ url: url
194
+ });
195
+ return {
196
+ icon: cardAppearance === _constants.CardDisplay.Block && isBlockCard3PExperimentEnabled ? /*#__PURE__*/_react.default.createElement(_logo.RovoIcon, {
197
+ label: label_ask_rovo_anything,
198
+ size: 'xxsmall',
199
+ shouldUseHexLogo: true
200
+ }) : /*#__PURE__*/_react.default.createElement(_aiSearchIcon.default, null),
201
+ content: label_ask_rovo_anything,
202
+ tooltipMessage: label_ask_rovo_anything,
203
+ data: {
204
+ name: label_ask_rovo_anything,
205
+ dialogues: [],
206
+ prompt: prompt_ask_rovo_anything,
207
+ isPromptPlaceholder: true,
208
+ placeholderType: 'generic'
209
+ }
210
+ };
211
+ case RovoChatPromptKey.ASK_A_SPECIFIC_QUESTION:
212
+ var label_ask_a_specific_question = intl.formatMessage(_messages.messages.rovo_prompt_button_ask_a_specific_question);
213
+ var prompt_ask_a_specific_question = intl.formatMessage(_messages.messages.rovo_prompt_message_ask_rovo_anything, {
214
+ url: url
215
+ });
216
+ return {
217
+ icon: /*#__PURE__*/_react.default.createElement(_rovoChat.default, {
218
+ label: label_ask_a_specific_question
219
+ }),
220
+ content: label_ask_a_specific_question,
221
+ tooltipMessage: label_ask_a_specific_question,
222
+ data: {
223
+ name: label_ask_a_specific_question,
224
+ dialogues: [],
225
+ prompt: prompt_ask_a_specific_question,
226
+ isPromptPlaceholder: true,
227
+ placeholderType: 'generic'
228
+ }
229
+ };
230
+ case RovoChatPromptKey.KEY_HIGHLIGHTS:
231
+ var label_key_highlights = intl.formatMessage(_messages.messages.rovo_prompt_button_key_highlights);
232
+ var html_key_highlights = intl.formatMessage(_messages.messages.rovo_prompt_message_key_highlights, {
233
+ context: contextLong,
234
+ url: url
235
+ }, {
236
+ ignoreTag: true
237
+ });
238
+ return {
239
+ icon: /*#__PURE__*/_react.default.createElement(_aiChat.default, {
240
+ label: label_key_highlights,
241
+ size: iconSize
242
+ }),
243
+ content: label_key_highlights,
244
+ tooltipMessage: label_key_highlights,
245
+ data: {
246
+ name: label_key_highlights,
247
+ dialogues: [],
248
+ prompt: (0, _htmlToAdf.default)(html_key_highlights)
249
+ }
250
+ };
251
+ case RovoChatPromptKey.SHOW_ME_WHATS_RELEVANT:
252
+ var label_show_me_whats_relevant = intl.formatMessage(_messages.messages.rovo_prompt_button_show_me_whats_relevant);
253
+ var html_show_me_whats_relevant = intl.formatMessage(_messages.messages.rovo_prompt_message_highlight_relevant_content, {
254
+ context: contextLong,
255
+ url: url
256
+ }, {
257
+ ignoreTag: true
258
+ });
259
+ return {
260
+ icon: /*#__PURE__*/_react.default.createElement(_aiSearch.default, {
261
+ label: label_show_me_whats_relevant
262
+ }),
263
+ content: label_show_me_whats_relevant,
264
+ tooltipMessage: label_show_me_whats_relevant,
265
+ data: {
266
+ name: label_show_me_whats_relevant,
267
+ dialogues: [],
268
+ prompt: (0, _htmlToAdf.default)(html_show_me_whats_relevant)
269
+ }
270
+ };
271
+ case RovoChatPromptKey.IDENTIFY_KEY_TRENDS:
272
+ var label_identify_key_trends = intl.formatMessage(_messages.messages.rovo_prompt_button_identify_key_trends);
273
+ var html_identify_key_trends = intl.formatMessage(_messages.messages.rovo_prompt_message_identify_key_trends, {
274
+ url: url
275
+ }, {
276
+ ignoreTag: true
277
+ });
278
+ return {
279
+ icon: /*#__PURE__*/_react.default.createElement(_aiChat.default, {
280
+ label: label_identify_key_trends,
281
+ size: iconSize
282
+ }),
283
+ content: label_identify_key_trends,
284
+ tooltipMessage: label_identify_key_trends,
285
+ data: {
286
+ name: label_identify_key_trends,
287
+ dialogues: [],
288
+ prompt: (0, _htmlToAdf.default)(html_identify_key_trends)
289
+ }
290
+ };
291
+ case RovoChatPromptKey.IDENTIFY_KEY_POINTS:
292
+ var label_identify_key_points = intl.formatMessage(_messages.messages.rovo_prompt_button_identify_key_points);
293
+ var html_identify_key_points = intl.formatMessage(_messages.messages.rovo_prompt_message_identify_key_points, {
294
+ url: url
295
+ }, {
296
+ ignoreTag: true
297
+ });
298
+ return {
299
+ icon: /*#__PURE__*/_react.default.createElement(_aiChat.default, {
300
+ label: label_identify_key_points,
301
+ size: iconSize
302
+ }),
303
+ content: label_identify_key_points,
304
+ tooltipMessage: label_identify_key_points,
305
+ data: {
306
+ name: label_identify_key_points,
307
+ dialogues: [],
308
+ prompt: (0, _htmlToAdf.default)(html_identify_key_points)
309
+ }
310
+ };
311
+ case RovoChatPromptKey.FIND_OPEN_QUESTIONS:
312
+ var label_find_open_questions = intl.formatMessage(_messages.messages.rovo_prompt_button_find_open_questions);
313
+ var html_find_open_questions = intl.formatMessage(_messages.messages.rovo_prompt_message_find_open_questions, {
314
+ url: url
315
+ }, {
316
+ ignoreTag: true
317
+ });
318
+ return {
319
+ icon: /*#__PURE__*/_react.default.createElement(_aiChat.default, {
320
+ label: label_find_open_questions,
321
+ size: iconSize
322
+ }),
323
+ content: label_find_open_questions,
324
+ tooltipMessage: label_find_open_questions,
325
+ data: {
326
+ name: label_find_open_questions,
327
+ dialogues: [],
328
+ prompt: (0, _htmlToAdf.default)(html_find_open_questions)
329
+ }
330
+ };
331
+ }
332
+ };
@@ -18,7 +18,24 @@ import useInvokeClientAction from '../hooks/use-invoke-client-action';
18
18
  import useResolve from '../hooks/use-resolve';
19
19
  const POST_AUTH_CHAT_EXTENSION_KEY = 'google-object-provider';
20
20
  const SMART_LINK_TO_ROVO_SOURCE = 'smart-link';
21
+ const getPostAuthChatPayloadId = () => {
22
+ if (typeof crypto !== 'undefined') {
23
+ if (typeof crypto.randomUUID === 'function') {
24
+ return crypto.randomUUID();
25
+ }
26
+ if (typeof crypto.getRandomValues === 'function') {
27
+ const values = new Uint32Array(4);
28
+ crypto.getRandomValues(values);
29
+ return `smart-link-post-auth-chat-${Array.from(values, value => value.toString(16)).join('-')}`;
30
+ }
31
+ }
32
+ return `smart-link-post-auth-chat-${Date.now()}`;
33
+ };
21
34
  const sendPostAuthChatOpenMessage = url => {
35
+ var _window$parent;
36
+ if (typeof window === 'undefined' || typeof ((_window$parent = window.parent) === null || _window$parent === void 0 ? void 0 : _window$parent.postMessage) !== 'function') {
37
+ return;
38
+ }
22
39
  const payload = {
23
40
  type: 'chat-new',
24
41
  source: SMART_LINK_TO_ROVO_SOURCE,
@@ -43,7 +60,7 @@ const sendPostAuthChatOpenMessage = url => {
43
60
  window.parent.postMessage({
44
61
  eventType: ROVO_POST_MESSAGE_EVENT_TYPE,
45
62
  payload,
46
- payloadId: crypto.randomUUID()
63
+ payloadId: getPostAuthChatPayloadId()
47
64
  }, '*');
48
65
  };
49
66
  export const useSmartCardActions = (id, url) => {
@@ -155,28 +172,29 @@ export const useSmartCardActions = (id, url) => {
155
172
  fireEvent('operational.smartLink.connectSucceeded', {
156
173
  definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
157
174
  });
158
- if (status === 'unauthorized' && fg('platform_sl_connect_account_flag')) {
159
- const provider = extractSmartLinkProvider(details);
160
- flags === null || flags === void 0 ? void 0 : flags.showConnectFlag({
161
- id: `smart-link-connect-success-${extensionKey}`,
162
- provider
163
- });
164
- }
165
- reload();
166
175
 
167
176
  // Post-auth Chat onboarding: auto-open Rovo Chat mini-modal with the
168
177
  // authed 3P link as context, for supported providers (e.g. Google Drive).
169
178
  // Provider eligibility is derived from the pre-auth SmartLink state.
170
179
  const isEligibleForPostAuthChat = status === 'unauthorized' && isSupportedPostAuthChatExtensionKey && fg('platform_sl_3p_post_auth_chat_open_fg') && getIsRovoChatEnabled(rovoOptionsRef.current);
171
- if (isEligibleForPostAuthChat) {
172
- // Experiment check: fires exposure for both control and treatment.
173
- // Only reached after eligibility preconditions + kill switch pass, so
174
- // exposure is counted for the triggered eligible pool.
175
- const isEnabled = expValEquals('platform_sl_3p_post_auth_chat_open_exp', 'isEnabled', true);
176
- if (isEnabled) {
177
- sendPostAuthChatOpenMessage(url);
180
+
181
+ // Experiment check: fires exposure for both control and treatment.
182
+ // Only reached after eligibility preconditions + kill switch pass, so
183
+ // exposure is counted for the triggered eligible pool.
184
+ const isPostAuthChatTreatment = isEligibleForPostAuthChat && expValEquals('platform_sl_3p_post_auth_chat_open_exp', 'isEnabled', true);
185
+ if (status === 'unauthorized' && !isPostAuthChatTreatment) {
186
+ if (fg('platform_sl_connect_account_flag')) {
187
+ const provider = extractSmartLinkProvider(details);
188
+ flags === null || flags === void 0 ? void 0 : flags.showConnectFlag({
189
+ id: `smart-link-connect-success-${extensionKey}`,
190
+ provider
191
+ });
178
192
  }
179
193
  }
194
+ reload();
195
+ if (isPostAuthChatTreatment) {
196
+ sendPostAuthChatOpenMessage(url);
197
+ }
180
198
  }, err => {
181
199
  var _err$type;
182
200
  startUfoExperience('smart-link-authenticated', id, {
@@ -0,0 +1,49 @@
1
+ import { useMemo } from 'react';
2
+ import { fg } from "@atlaskit/platform-feature-flags";
3
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
4
+ import { getIsRovoChatEnabled } from '../../../utils/rovo';
5
+ import { getExtensionKey } from '../../helpers';
6
+ import { useSmartCardState } from '../../store';
7
+ import useRovoConfig from '../use-rovo-config';
8
+ const ELIGIBLE_EXTENSION_KEYS = new Set(['slack-object-provider', 'google-object-provider', 'onedrive-object-provider', 'github-object-provider', 'ms-teams-object-provider', 'gitlab-object-provider', 'salesforce-object-provider']);
9
+ const NOT_ENABLED_RESULT = {
10
+ isEnabled: false
11
+ };
12
+
13
+ /**
14
+ * Returns whether the platform_sl_3p_auth_inline_tailored_cta experiment
15
+ * is enabled for the current user and link context.
16
+ *
17
+ * All eligibility criteria are consolidated here:
18
+ * 1. Rovo chat must be enabled for the tenant.
19
+ * 2. The consumer must have opted in via actionOptions.rovoChatAction.optIn.
20
+ * 3. The link must support the RovoActions feature.
21
+ * 4. The extension key must be one of the supported options.
22
+ * 5. The experiment value must be true (via tmp-editor-statsig).
23
+ *
24
+ * The extension key is derived from the card store via the resolved URL,
25
+ * so callers don't need to thread it as a prop.
26
+ */
27
+ const useInlineTailoredActionExperiment = (url, showHoverPreview, actionOptions) => {
28
+ var _actionOptions$rovoCh, _actionOptions$rovoCh2;
29
+ const {
30
+ rovoOptions: rovoConfig
31
+ } = useRovoConfig();
32
+ const isRovoChatEnabled = getIsRovoChatEnabled(rovoConfig);
33
+ const cardState = useSmartCardState(url !== null && url !== void 0 ? url : '');
34
+ const extensionKey = getExtensionKey(cardState.details);
35
+ const isRovoChatActionOptedIn = (_actionOptions$rovoCh = actionOptions === null || actionOptions === void 0 ? void 0 : (_actionOptions$rovoCh2 = actionOptions.rovoChatAction) === null || _actionOptions$rovoCh2 === void 0 ? void 0 : _actionOptions$rovoCh2.optIn) !== null && _actionOptions$rovoCh !== void 0 ? _actionOptions$rovoCh : false;
36
+ return useMemo(() => {
37
+ if (!isRovoChatEnabled || !showHoverPreview || !url || !isRovoChatActionOptedIn) {
38
+ return NOT_ENABLED_RESULT;
39
+ }
40
+ if (!extensionKey || !ELIGIBLE_EXTENSION_KEYS.has(extensionKey)) {
41
+ return NOT_ENABLED_RESULT;
42
+ }
43
+ const isEnabled = fg('platform_sl_3p_auth_inline_tailored_cta_killswitch') && expValEquals('platform_sl_3p_auth_inline_tailored_cta', 'isEnabled', true);
44
+ return {
45
+ isEnabled
46
+ };
47
+ }, [isRovoChatEnabled, extensionKey, showHoverPreview, url, isRovoChatActionOptedIn]);
48
+ };
49
+ export default useInlineTailoredActionExperiment;
@@ -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: "44.20.2" || ''
5
+ packageVersion: "44.21.0" || ''
6
6
  };
7
7
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
8
8
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -11,8 +11,8 @@ import extractRovoChatAction from '../../../extractors/flexible/actions/extract-
11
11
  import { getExtensionKey } from '../../../state/helpers';
12
12
  import useBlockCardRovoActionExperiment from '../../../state/hooks/use-block-card-rovo-action-experiment';
13
13
  import useRovoConfig from '../../../state/hooks/use-rovo-config';
14
+ import { RovoChatPromptKey } from '../../common/rovo-chat-utils';
14
15
  import FlexibleCard from '../../FlexibleCard';
15
- import { RovoChatPromptKey } from '../../FlexibleCard/components/actions/rovo-chat-action';
16
16
  import { FooterBlock, MetadataBlock, PreviewBlock, SnippetBlock, TitleBlock } from '../../FlexibleCard/components/blocks';
17
17
  import { FlexibleCardUiOptions, getSimulatedBetterMetadata, PreviewBlockOptions, titleBlockOptions } from './utils';
18
18
  import { withFlexibleUIBlockCardStyle } from './utils/withFlexibleUIBlockCardStyle';