@atlaskit/smart-card 40.10.10 → 40.12.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 (55) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/extractors/action/extract-invoke-preview-action.js +68 -41
  3. package/dist/cjs/extractors/flexible/actions/extract-preview-action.js +2 -4
  4. package/dist/cjs/extractors/flexible/actions/index.js +6 -2
  5. package/dist/cjs/extractors/flexible/extract-state.js +9 -7
  6. package/dist/cjs/extractors/flexible/index.js +8 -3
  7. package/dist/cjs/messages.js +25 -0
  8. package/dist/cjs/state/hooks-external/useSmartLinkActions.js +8 -2
  9. package/dist/cjs/utils/analytics/analytics.js +1 -1
  10. package/dist/cjs/view/CardWithUrl/component.js +1 -0
  11. package/dist/cjs/view/FlexibleCard/components/actions/preview-action/index.js +29 -4
  12. package/dist/cjs/view/FlexibleCard/index.js +8 -2
  13. package/dist/cjs/view/LinkUrl/index.js +1 -1
  14. package/dist/cjs/view/common/UnauthorisedViewContent.js +4 -3
  15. package/dist/es2019/extractors/action/extract-invoke-preview-action.js +49 -27
  16. package/dist/es2019/extractors/flexible/actions/extract-preview-action.js +2 -4
  17. package/dist/es2019/extractors/flexible/actions/index.js +6 -2
  18. package/dist/es2019/extractors/flexible/extract-state.js +9 -7
  19. package/dist/es2019/extractors/flexible/index.js +7 -2
  20. package/dist/es2019/messages.js +25 -0
  21. package/dist/es2019/state/hooks-external/useSmartLinkActions.js +9 -2
  22. package/dist/es2019/utils/analytics/analytics.js +1 -1
  23. package/dist/es2019/view/CardWithUrl/component.js +1 -0
  24. package/dist/es2019/view/FlexibleCard/components/actions/preview-action/index.js +29 -4
  25. package/dist/es2019/view/FlexibleCard/index.js +9 -2
  26. package/dist/es2019/view/LinkUrl/index.js +1 -1
  27. package/dist/es2019/view/common/UnauthorisedViewContent.js +4 -3
  28. package/dist/esm/extractors/action/extract-invoke-preview-action.js +69 -42
  29. package/dist/esm/extractors/flexible/actions/extract-preview-action.js +2 -4
  30. package/dist/esm/extractors/flexible/actions/index.js +6 -2
  31. package/dist/esm/extractors/flexible/extract-state.js +9 -7
  32. package/dist/esm/extractors/flexible/index.js +8 -3
  33. package/dist/esm/messages.js +25 -0
  34. package/dist/esm/state/hooks-external/useSmartLinkActions.js +8 -2
  35. package/dist/esm/utils/analytics/analytics.js +1 -1
  36. package/dist/esm/view/CardWithUrl/component.js +1 -0
  37. package/dist/esm/view/FlexibleCard/components/actions/preview-action/index.js +29 -4
  38. package/dist/esm/view/FlexibleCard/index.js +8 -2
  39. package/dist/esm/view/LinkUrl/index.js +1 -1
  40. package/dist/esm/view/common/UnauthorisedViewContent.js +4 -3
  41. package/dist/types/extractors/action/extract-invoke-preview-action.d.ts +15 -1
  42. package/dist/types/extractors/flexible/actions/index.d.ts +10 -1
  43. package/dist/types/extractors/flexible/extract-state.d.ts +8 -1
  44. package/dist/types/extractors/flexible/index.d.ts +1 -1
  45. package/dist/types/messages.d.ts +1 -1
  46. package/dist/types/state/flexible-ui-context/types.d.ts +1 -0
  47. package/dist/types/view/FlexibleCard/types.d.ts +9 -0
  48. package/dist/types-ts4.5/extractors/action/extract-invoke-preview-action.d.ts +15 -1
  49. package/dist/types-ts4.5/extractors/flexible/actions/index.d.ts +10 -1
  50. package/dist/types-ts4.5/extractors/flexible/extract-state.d.ts +8 -1
  51. package/dist/types-ts4.5/extractors/flexible/index.d.ts +1 -1
  52. package/dist/types-ts4.5/messages.d.ts +1 -1
  53. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +1 -0
  54. package/dist/types-ts4.5/view/FlexibleCard/types.d.ts +9 -0
  55. package/package.json +5 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 40.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`4b9dfa0c0bf0d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4b9dfa0c0bf0d) -
8
+ [ux] Adds support for preview panel triggers to the hover card
9
+
10
+ ## 40.11.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [`cdc1b340de640`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/cdc1b340de640) -
15
+ Product/App term refresh
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+
3
21
  ## 40.10.10
4
22
 
5
23
  ### Patch Changes
@@ -8,6 +8,7 @@ exports.extractInvokePreviewAction = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _linkExtractors = require("@atlaskit/link-extractors");
11
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
11
12
  var _index = require("../../index");
12
13
  var _helpers = require("../../state/helpers");
13
14
  var _canShowAction = require("../../utils/actions/can-show-action");
@@ -25,54 +26,80 @@ var extractInvokePreviewAction = exports.extractInvokePreviewAction = function e
25
26
  onClose = param.onClose,
26
27
  id = param.id,
27
28
  origin = param.origin,
28
- response = param.response;
29
+ response = param.response,
30
+ isPreviewPanelAvailable = param.isPreviewPanelAvailable,
31
+ openPreviewPanel = param.openPreviewPanel;
32
+ var ari = (0, _linkExtractors.extractSmartLinkAri)(response);
33
+ var url = (0, _linkExtractors.extractSmartLinkUrl)(response);
34
+ var name = (0, _linkExtractors.extractSmartLinkTitle)(response);
35
+ var hasPreviewPanelParams = Boolean((0, _expValEquals.expValEquals)('platform_hover_card_preview_panel', 'cohort', 'test') && isPreviewPanelAvailable && openPreviewPanel && ari && url && name);
36
+ var hasPreviewPanel = hasPreviewPanelParams && isPreviewPanelAvailable({
37
+ ari: ari
38
+ });
39
+ var data = response.data;
40
+ var meta = response.meta;
29
41
  if (!(0, _canShowAction.canShowAction)(_index.CardAction.PreviewAction, actionOptions)) {
30
42
  return;
31
43
  }
32
- var data = response.data;
33
- var meta = response.meta;
34
44
  var src = (_extractPreviewData = (0, _linkExtractors.extractPreview)(data, 'web')) === null || _extractPreviewData === void 0 ? void 0 : _extractPreviewData.src;
35
45
  if (src) {
36
46
  var extensionKey = (0, _helpers.getExtensionKey)(response);
37
47
  return {
38
- actionFn: function () {
39
- var _actionFn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
40
- var _extractSmartLinkProv, _extractSmartLinkEmbe;
41
- return _regenerator.default.wrap(function _callee$(_context) {
42
- while (1) switch (_context.prev = _context.next) {
43
- case 0:
44
- return _context.abrupt("return", (0, _utils.openEmbedModal)({
45
- fireEvent: fireEvent,
46
- extensionKey: extensionKey,
47
- id: id,
48
- invokeDownloadAction: (0, _extractInvokeDownloadAction.extractInvokeDownloadAction)(param),
49
- invokeViewAction: (0, _extractInvokeViewAction.extractInvokeViewAction)(param, true),
50
- isSupportTheming: (0, _extractIsSupportTheming.extractIsSupportTheming)(meta),
51
- isTrusted: (0, _extractIsTrusted.extractIsTrusted)(meta),
52
- linkIcon: (0, _icon.extractLinkIcon)(response),
53
- providerName: (_extractSmartLinkProv = (0, _linkExtractors.extractSmartLinkProvider)(response)) === null || _extractSmartLinkProv === void 0 ? void 0 : _extractSmartLinkProv.text,
54
- onClose: onClose,
55
- origin: origin,
56
- src: (_extractSmartLinkEmbe = (0, _linkExtractors.extractSmartLinkEmbed)(response)) === null || _extractSmartLinkEmbe === void 0 ? void 0 : _extractSmartLinkEmbe.src,
57
- title: (0, _linkExtractors.extractSmartLinkTitle)(response),
58
- url: (0, _linkExtractors.extractSmartLinkUrl)(response)
59
- }));
60
- case 1:
61
- case "end":
62
- return _context.stop();
63
- }
64
- }, _callee);
65
- }));
66
- function actionFn() {
67
- return _actionFn.apply(this, arguments);
68
- }
69
- return actionFn;
70
- }(),
71
- actionSubjectId: 'invokePreviewScreen',
72
- actionType: _index.ActionName.PreviewAction,
73
- display: display,
74
- extensionKey: extensionKey,
75
- id: id
48
+ invokeAction: {
49
+ actionFn: function () {
50
+ var _actionFn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
51
+ var _extractSmartLinkProv, _extractSmartLinkEmbe;
52
+ return _regenerator.default.wrap(function _callee$(_context) {
53
+ while (1) switch (_context.prev = _context.next) {
54
+ case 0:
55
+ if (!hasPreviewPanel) {
56
+ _context.next = 4;
57
+ break;
58
+ }
59
+ openPreviewPanel({
60
+ ari: ari,
61
+ url: url,
62
+ name: name,
63
+ iconUrl: undefined
64
+ });
65
+ _context.next = 6;
66
+ break;
67
+ case 4:
68
+ _context.next = 6;
69
+ return (0, _utils.openEmbedModal)({
70
+ fireEvent: fireEvent,
71
+ extensionKey: extensionKey,
72
+ id: id,
73
+ invokeDownloadAction: (0, _extractInvokeDownloadAction.extractInvokeDownloadAction)(param),
74
+ invokeViewAction: (0, _extractInvokeViewAction.extractInvokeViewAction)(param, true),
75
+ isSupportTheming: (0, _extractIsSupportTheming.extractIsSupportTheming)(meta),
76
+ isTrusted: (0, _extractIsTrusted.extractIsTrusted)(meta),
77
+ linkIcon: (0, _icon.extractLinkIcon)(response),
78
+ providerName: (_extractSmartLinkProv = (0, _linkExtractors.extractSmartLinkProvider)(response)) === null || _extractSmartLinkProv === void 0 ? void 0 : _extractSmartLinkProv.text,
79
+ onClose: onClose,
80
+ origin: origin,
81
+ src: (_extractSmartLinkEmbe = (0, _linkExtractors.extractSmartLinkEmbed)(response)) === null || _extractSmartLinkEmbe === void 0 ? void 0 : _extractSmartLinkEmbe.src,
82
+ title: (0, _linkExtractors.extractSmartLinkTitle)(response),
83
+ url: url
84
+ });
85
+ case 6:
86
+ case "end":
87
+ return _context.stop();
88
+ }
89
+ }, _callee);
90
+ }));
91
+ function actionFn() {
92
+ return _actionFn.apply(this, arguments);
93
+ }
94
+ return actionFn;
95
+ }(),
96
+ actionSubjectId: 'invokePreviewScreen',
97
+ actionType: _index.ActionName.PreviewAction,
98
+ display: display,
99
+ extensionKey: extensionKey,
100
+ id: id
101
+ },
102
+ hasPreviewPanel: hasPreviewPanel
76
103
  };
77
104
  }
78
105
  };
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.extractPreviewClientAction = void 0;
7
7
  var _extractInvokePreviewAction = require("../../action/extract-invoke-preview-action");
8
8
  var extractPreviewClientAction = exports.extractPreviewClientAction = function extractPreviewClientAction(param) {
9
- var invokeAction = (0, _extractInvokePreviewAction.extractInvokePreviewAction)(param);
10
- return invokeAction ? {
11
- invokeAction: invokeAction
12
- } : undefined;
9
+ var result = (0, _extractInvokePreviewAction.extractInvokePreviewAction)(param);
10
+ return result ? result : undefined;
13
11
  };
@@ -22,7 +22,9 @@ var extractFlexibleCardActions = exports.extractFlexibleCardActions = function e
22
22
  id = _ref.id,
23
23
  origin = _ref.origin,
24
24
  response = _ref.response,
25
- url = _ref.url;
25
+ url = _ref.url,
26
+ isPreviewPanelAvailable = _ref.isPreviewPanelAvailable,
27
+ openPreviewPanel = _ref.openPreviewPanel;
26
28
  var action = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.ActionName.CopyLinkAction, (0, _extractCopyLinkAction.extractCopyLinkClientAction)({
27
29
  actionOptions: actionOptions,
28
30
  appearance: appearance,
@@ -39,7 +41,9 @@ var extractFlexibleCardActions = exports.extractFlexibleCardActions = function e
39
41
  fireEvent: fireEvent,
40
42
  id: id,
41
43
  origin: origin,
42
- response: response
44
+ response: response,
45
+ isPreviewPanelAvailable: isPreviewPanelAvailable,
46
+ openPreviewPanel: openPreviewPanel
43
47
  })), _constants.ActionName.AutomationAction, (0, _extractAutomationAction.extractAutomationAction)(response)), _constants.InternalActionName.AISummaryAction, (0, _extractAiSummaryAction.extractAISummaryAction)(response, url, actionOptions, aiSummaryConfig)), _constants.InternalActionName.ViewRelatedLinksAction, (0, _extractViewRelatedLinksAction.extractViewRelatedLinksAction)(response));
44
48
  return Object.values(action).some(function (value) {
45
49
  return Boolean(value);
@@ -28,8 +28,8 @@ var toInvokeRequest = function toInvokeRequest(extensionKey, resourceIdentifiers
28
28
  details: details
29
29
  };
30
30
  };
31
- var extractAction = function extractAction(response, id, actionOptions, appearance, origin, fireEvent, resolve) {
32
- var _action$dataRetrieval, _action$dataUpdateAct;
31
+ var extractAction = function extractAction(response, id, actionOptions, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel) {
32
+ var _action$dataRetrieval, _extractInvokePreview, _action$dataUpdateAct;
33
33
  var extensionKey = (0, _helpers.getExtensionKey)(response);
34
34
  var data = response === null || response === void 0 ? void 0 : response.data;
35
35
  var actions = (0, _extractServerAction.default)(data);
@@ -44,7 +44,7 @@ var extractAction = function extractAction(response, id, actionOptions, appearan
44
44
  }
45
45
  var read = toInvokeRequest(extensionKey, action.resourceIdentifiers, (_action$dataRetrieval = action.dataRetrievalAction) === null || _action$dataRetrieval === void 0 ? void 0 : _action$dataRetrieval.name);
46
46
  var url = (0, _linkExtractors.extractLink)(data);
47
- var invokePreviewAction = response ? (0, _extractInvokePreviewAction.extractInvokePreviewAction)({
47
+ var invokePreviewAction = response ? (_extractInvokePreview = (0, _extractInvokePreviewAction.extractInvokePreviewAction)({
48
48
  actionOptions: actionOptions,
49
49
  appearance: appearance,
50
50
  fireEvent: fireEvent,
@@ -53,8 +53,10 @@ var extractAction = function extractAction(response, id, actionOptions, appearan
53
53
  return url && resolve(url, true);
54
54
  } : undefined,
55
55
  origin: origin,
56
- response: response
57
- }) : undefined;
56
+ response: response,
57
+ isPreviewPanelAvailable: isPreviewPanelAvailable,
58
+ openPreviewPanel: openPreviewPanel
59
+ })) === null || _extractInvokePreview === void 0 ? void 0 : _extractInvokePreview.invokeAction : undefined;
58
60
  var details = {
59
61
  id: id,
60
62
  url: url,
@@ -66,7 +68,7 @@ var extractAction = function extractAction(response, id, actionOptions, appearan
66
68
  update: update
67
69
  } : undefined;
68
70
  };
69
- var extractState = function extractState(response, actionOptions, id, appearance, origin, fireEvent, resolve) {
71
+ var extractState = function extractState(response, actionOptions, id, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel) {
70
72
  if (!response || !response.data) {
71
73
  return;
72
74
  }
@@ -77,7 +79,7 @@ var extractState = function extractState(response, actionOptions, id, appearance
77
79
  if (!(0, _canShowAction.canShowAction)(_types.CardAction.ChangeStatusAction, actionOptions)) {
78
80
  return lozenge;
79
81
  }
80
- var action = extractAction(response, id, actionOptions, appearance, origin, fireEvent, resolve);
82
+ var action = extractAction(response, id, actionOptions, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel);
81
83
  return _objectSpread(_objectSpread({}, lozenge), {}, {
82
84
  action: action
83
85
  });
@@ -20,7 +20,7 @@ var _icon = require("./icon");
20
20
  var _extractProviderIcon = require("./icon/extract-provider-icon");
21
21
  var _latestCommit = require("./latest-commit");
22
22
  var _utils = require("./utils");
23
- var _excluded = ["appearance", "fireEvent", "id", "onClick", "origin", "renderers", "resolve", "actionOptions", "response", "status", "aiSummaryConfig"];
23
+ var _excluded = ["appearance", "fireEvent", "id", "onClick", "origin", "renderers", "resolve", "actionOptions", "response", "status", "aiSummaryConfig", "isPreviewPanelAvailable", "openPreviewPanel"];
24
24
  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; }
25
25
  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; }
26
26
  var extractFlexibleUiContext = function extractFlexibleUiContext() {
@@ -36,6 +36,8 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
36
36
  response = _ref.response,
37
37
  status = _ref.status,
38
38
  aiSummaryConfig = _ref.aiSummaryConfig,
39
+ isPreviewPanelAvailable = _ref.isPreviewPanelAvailable,
40
+ openPreviewPanel = _ref.openPreviewPanel,
39
41
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
40
42
  if (!response) {
41
43
  return undefined;
@@ -52,7 +54,10 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
52
54
  id: id,
53
55
  origin: origin,
54
56
  response: response,
55
- url: props.url // Use the original URL in edge cases, such as short links for AI summary and copy link actions.
57
+ url: props.url,
58
+ // Use the original URL in edge cases, such as short links for AI summary and copy link actions.
59
+ isPreviewPanelAvailable: isPreviewPanelAvailable,
60
+ openPreviewPanel: openPreviewPanel
56
61
  }),
57
62
  appliedToComponentsCount: (0, _utils.extractAppliedToComponentsCount)(data),
58
63
  assignedToGroup: (0, _utils.extractPersonAssignedToAsArray)(data),
@@ -85,7 +90,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
85
90
  snippet: (0, _extractSummary.extractSmartLinkSummary)(response) || undefined,
86
91
  // Explicitly set here to remove an empty string
87
92
  sourceBranch: (0, _utils.extractSourceBranch)(data),
88
- state: (0, _extractState.default)(response, actionOptions, id, appearance, origin, fireEvent, resolve),
93
+ state: (0, _extractState.default)(response, actionOptions, id, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel),
89
94
  subscriberCount: (0, _utils.extractSubscriberCount)(data),
90
95
  subTasksProgress: (0, _utils.extractSubTasksProgress)(data),
91
96
  storyPoints: (0, _utils.extractStoryPoints)(data),
@@ -390,6 +390,16 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
390
390
  defaultMessage: 'Open preview',
391
391
  description: 'Click to view a richer view of your content, without needing to navigate to it.'
392
392
  },
393
+ preview_modal: {
394
+ id: 'fabric.linking.preview_modal',
395
+ defaultMessage: 'Open preview modal',
396
+ description: 'Button used to view a modal view of your content without needing to navigate to it.'
397
+ },
398
+ preview_panel: {
399
+ id: 'fabric.linking.preview_panel',
400
+ defaultMessage: 'Open preview panel',
401
+ description: 'Button used to view a side panel view of your content without needing to navigate to it.'
402
+ },
393
403
  preview_close: {
394
404
  id: 'fabric.linking.preview_close',
395
405
  defaultMessage: 'Close preview',
@@ -814,5 +824,20 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
814
824
  id: 'fabric.linking.unfollow_project_error-galaxia',
815
825
  defaultMessage: 'We encountered an error while trying to unfollow the space. Check your connection or refresh the page and try again.',
816
826
  description: 'Shown when an unknown error occurs when unfollowing an Atlas project'
827
+ },
828
+ connect_unauthorised_account_description_appify: {
829
+ id: 'fabric.linking.connect_unauthorised_account_description-appify',
830
+ defaultMessage: 'Connect your {context} account to collaborate on work across Atlassian apps.',
831
+ description: 'Shown when a user does not have access to a link, but can connect their external account to view the link on card view.'
832
+ },
833
+ connect_unauthorised_account_description_no_provider_appify: {
834
+ id: 'fabric.linking.connect_unauthorised_account_description_no_provider-appify',
835
+ defaultMessage: 'Connect your account to collaborate on work across Atlassian apps.',
836
+ description: 'Shown when a user does not have access to a link, but can connect their external account to view the link on card view and we do not have the providers name.'
837
+ },
838
+ learn_more_about_connecting_account_appify: {
839
+ id: 'fabric.linking.learn_more_about_connecting_account-appify',
840
+ defaultMessage: 'Learn more about connecting your account to Atlassian apps.',
841
+ description: 'An anchor link to redirect user to a page about authorization with 3rd party accounts.'
817
842
  }
818
843
  });
@@ -8,6 +8,7 @@ exports.useSmartLinkActions = useSmartLinkActions;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _react = require("react");
10
10
  var _uuid = _interopRequireDefault(require("uuid"));
11
+ var _linkProvider = require("@atlaskit/link-provider");
11
12
  var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
12
13
  var _extractInvokeDownloadAction = require("../../extractors/action/extract-invoke-download-action");
13
14
  var _extractInvokePreviewAction = require("../../extractors/action/extract-invoke-preview-action");
@@ -29,6 +30,9 @@ function useSmartLinkActions(_ref) {
29
30
  var linkState = (0, _store.useSmartCardState)(url);
30
31
  var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
31
32
  fireEvent = _useAnalyticsEvents.fireEvent;
33
+ var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
34
+ isPreviewPanelAvailable = _useSmartLinkContext.isPreviewPanelAvailable,
35
+ openPreviewPanel = _useSmartLinkContext.openPreviewPanel;
32
36
  var invokeClientAction = (0, _useInvokeClientAction.default)({
33
37
  fireEvent: fireEvent
34
38
  });
@@ -50,10 +54,12 @@ function useSmartLinkActions(_ref) {
50
54
  }
51
55
  var previewActionProps = (0, _extractInvokePreviewAction.extractInvokePreviewAction)(_objectSpread(_objectSpread({}, invokeParam), {}, {
52
56
  fireEvent: fireEvent,
53
- origin: origin
57
+ origin: origin,
58
+ isPreviewPanelAvailable: isPreviewPanelAvailable,
59
+ openPreviewPanel: openPreviewPanel
54
60
  }));
55
61
  if (previewActionProps) {
56
- actions.push((0, _toAction.toAction)(previewActionProps, invokeClientAction, _messages.messages.preview_improved, 'preview-content'));
62
+ actions.push((0, _toAction.toAction)(previewActionProps.invokeAction, invokeClientAction, _messages.messages.preview_improved, 'preview-content'));
57
63
  }
58
64
  return actions;
59
65
  }
@@ -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: "40.10.9"
14
+ packageVersion: "40.11.0"
15
15
  };
16
16
  var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
17
17
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -135,6 +135,7 @@ function Component(_ref) {
135
135
  clickOutcome: 'previewPanel'
136
136
  }
137
137
  });
138
+ return;
138
139
  } else if (!onClick && !isFlexibleUi) {
139
140
  var clickUrl = (0, _helpers.getClickUrl)(url, state.details);
140
141
 
@@ -11,6 +11,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _reactIntlNext = require("react-intl-next");
13
13
  var _growDiagonalMediaServicesActualSize = _interopRequireDefault(require("@atlaskit/icon/core/migration/grow-diagonal--media-services-actual-size"));
14
+ var _panelRight = _interopRequireDefault(require("@atlaskit/icon/core/panel-right"));
15
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
14
16
  var _constants = require("../../../../../constants");
15
17
  var _messages = require("../../../../../messages");
16
18
  var _flexibleUiContext = require("../../../../../state/flexible-ui-context");
@@ -25,6 +27,7 @@ var PreviewAction = function PreviewAction(_ref) {
25
27
  var context = (0, _flexibleUiContext.useFlexibleUiContext)();
26
28
  var invoke = (0, _useInvokeClientAction.default)({});
27
29
  var data = context === null || context === void 0 || (_context$actions = context.actions) === null || _context$actions === void 0 ? void 0 : _context$actions[_constants.ActionName.PreviewAction];
30
+ var hasPreviewPanel = data === null || data === void 0 ? void 0 : data.hasPreviewPanel;
28
31
  var onClick = (0, _react.useCallback)(function () {
29
32
  if (data !== null && data !== void 0 && data.invokeAction) {
30
33
  invoke(data.invokeAction);
@@ -33,13 +36,35 @@ var PreviewAction = function PreviewAction(_ref) {
33
36
  }, [data, invoke, onClickCallback]);
34
37
  var isStackItem = props.as === 'stack-item';
35
38
  var tooltipMessage = isStackItem ? _messages.messages.preview_description : _messages.messages.preview_improved;
36
- return data ? /*#__PURE__*/_react.default.createElement(_action.default, (0, _extends2.default)({
37
- content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview_improved),
38
- icon: /*#__PURE__*/_react.default.createElement(_growDiagonalMediaServicesActualSize.default, {
39
+ var actionIcon = (0, _react.useCallback)(function () {
40
+ // Only use panel icon if experiment is enabled and hasPreviewPanel is true
41
+ if ((0, _expValEquals.expValEquals)('platform_hover_card_preview_panel', 'cohort', 'test') && hasPreviewPanel) {
42
+ return /*#__PURE__*/_react.default.createElement(_panelRight.default, {
43
+ color: "currentColor",
44
+ spacing: "spacious",
45
+ label: "Open preview panel"
46
+ });
47
+ }
48
+ return /*#__PURE__*/_react.default.createElement(_growDiagonalMediaServicesActualSize.default, {
39
49
  color: "currentColor",
40
50
  spacing: "spacious",
41
51
  label: "Open preview"
42
- }),
52
+ });
53
+ }, [hasPreviewPanel]);
54
+ var actionLabel = (0, _react.useCallback)(function () {
55
+ // Only use panel message if experiment is enabled and hasPreviewPanel is true
56
+ if ((0, _expValEquals.expValEquals)('platform_hover_card_preview_panel', 'cohort', 'test') && hasPreviewPanel) {
57
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview_panel);
58
+ }
59
+ // Fall back to modal message if experiment is enabled, otherwise use original preview message
60
+ if ((0, _expValEquals.expValEquals)('platform_hover_card_preview_panel', 'cohort', 'test')) {
61
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview_modal);
62
+ }
63
+ return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview_improved);
64
+ }, [hasPreviewPanel]);
65
+ return data ? /*#__PURE__*/_react.default.createElement(_action.default, (0, _extends2.default)({
66
+ content: actionLabel(),
67
+ icon: actionIcon(),
43
68
  onClick: onClick,
44
69
  testId: "smart-action-preview-action",
45
70
  tooltipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, tooltipMessage),
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
+ var _linkProvider = require("@atlaskit/link-provider");
11
12
  var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
12
13
  var _constants = require("../../constants");
13
14
  var _flexibleUiContext = require("../../state/flexible-ui-context");
@@ -43,6 +44,9 @@ var FlexibleCard = function FlexibleCard(_ref) {
43
44
  url = _ref.url;
44
45
  var aiSummaryConfig = (0, _useAiSummaryConfig.useAISummaryConfig)();
45
46
  var resolve = (0, _useResolve.default)();
47
+ var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
48
+ isPreviewPanelAvailable = _useSmartLinkContext.isPreviewPanelAvailable,
49
+ openPreviewPanel = _useSmartLinkContext.openPreviewPanel;
46
50
  var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
47
51
  fireEvent = _useAnalyticsEvents.fireEvent;
48
52
  var cardType = cardState.status,
@@ -62,9 +66,11 @@ var FlexibleCard = function FlexibleCard(_ref) {
62
66
  resolve: resolve,
63
67
  actionOptions: actionOptions,
64
68
  status: status,
65
- url: url
69
+ url: url,
70
+ isPreviewPanelAvailable: isPreviewPanelAvailable,
71
+ openPreviewPanel: openPreviewPanel
66
72
  });
67
- }, [aiSummaryConfig, appearance, fireEvent, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, status, url]);
73
+ }, [aiSummaryConfig, appearance, fireEvent, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, status, url, isPreviewPanelAvailable, openPreviewPanel]);
68
74
  var flexibleCardContext = (0, _react.useMemo)(function () {
69
75
  return {
70
76
  data: context,
@@ -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: "40.10.9",
22
+ packageVersion: "40.11.0",
23
23
  componentName: 'linkUrl'
24
24
  };
25
25
  var Anchor = (0, _click.withLinkClickedEvent)('a');
@@ -9,6 +9,7 @@ exports.default = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactIntlNext = require("react-intl-next");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
13
  var _compiled = require("@atlaskit/primitives/compiled");
13
14
  var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
14
15
  var _constants = require("../../constants");
@@ -28,12 +29,12 @@ var UnauthorisedViewContent = function UnauthorisedViewContent(_ref) {
28
29
  var handleLearnMoreClick = (0, _react.useCallback)(function () {
29
30
  fireEvent('ui.button.clicked.learnMore', {});
30
31
  }, [fireEvent]);
31
- var learnMoreMessage = isProductIntegrationSupported ? _messages.messages.learn_more_about_connecting_account : _messages.messages.learn_more_about_smart_links;
32
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, providerName ? /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.connect_unauthorised_account_description, {
32
+ var learnMoreMessage = isProductIntegrationSupported ? (0, _platformFeatureFlags.fg)('product-terminology-refresh') ? _messages.messages.learn_more_about_connecting_account_appify : _messages.messages.learn_more_about_connecting_account : _messages.messages.learn_more_about_smart_links;
33
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, providerName ? /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, (0, _platformFeatureFlags.fg)('product-terminology-refresh') ? _messages.messages.connect_unauthorised_account_description_appify : _messages.messages.connect_unauthorised_account_description, {
33
34
  values: {
34
35
  context: providerName
35
36
  }
36
- })) : /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.connect_unauthorised_account_description_no_provider), ' ', /*#__PURE__*/_react.default.createElement(_compiled.Anchor, {
37
+ })) : /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _platformFeatureFlags.fg)('product-terminology-refresh') ? _messages.messages.connect_unauthorised_account_description_no_provider_appify : _messages.messages.connect_unauthorised_account_description_no_provider), ' ', /*#__PURE__*/_react.default.createElement(_compiled.Anchor, {
37
38
  href: isProductIntegrationSupported ? _constants.CONTENT_URL_3P_ACCOUNT_AUTH : _constants.CONTENT_URL_SECURITY_AND_PERMISSIONS,
38
39
  target: "_blank",
39
40
  testId: "".concat(testId, "-learn-more"),
@@ -1,4 +1,5 @@
1
- import { extractPreview as extractPreviewData, extractSmartLinkEmbed, extractSmartLinkProvider, extractSmartLinkTitle, extractSmartLinkUrl } from '@atlaskit/link-extractors';
1
+ import { extractPreview as extractPreviewData, extractSmartLinkAri, extractSmartLinkEmbed, extractSmartLinkProvider, extractSmartLinkTitle, extractSmartLinkUrl } from '@atlaskit/link-extractors';
2
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
2
3
  import { ActionName, CardAction } from '../../index';
3
4
  import { getExtensionKey } from '../../state/helpers';
4
5
  import { canShowAction } from '../../utils/actions/can-show-action';
@@ -17,41 +18,62 @@ export const extractInvokePreviewAction = param => {
17
18
  onClose,
18
19
  id,
19
20
  origin,
20
- response
21
+ response,
22
+ isPreviewPanelAvailable,
23
+ openPreviewPanel
21
24
  } = param;
25
+ const ari = extractSmartLinkAri(response);
26
+ const url = extractSmartLinkUrl(response);
27
+ const name = extractSmartLinkTitle(response);
28
+ const hasPreviewPanelParams = Boolean(expValEquals('platform_hover_card_preview_panel', 'cohort', 'test') && isPreviewPanelAvailable && openPreviewPanel && ari && url && name);
29
+ const hasPreviewPanel = hasPreviewPanelParams && isPreviewPanelAvailable({
30
+ ari: ari
31
+ });
32
+ const data = response.data;
33
+ const meta = response.meta;
22
34
  if (!canShowAction(CardAction.PreviewAction, actionOptions)) {
23
35
  return;
24
36
  }
25
- const data = response.data;
26
- const meta = response.meta;
27
37
  const src = (_extractPreviewData = extractPreviewData(data, 'web')) === null || _extractPreviewData === void 0 ? void 0 : _extractPreviewData.src;
28
38
  if (src) {
29
39
  const extensionKey = getExtensionKey(response);
30
40
  return {
31
- actionFn: async () => {
32
- var _extractSmartLinkProv, _extractSmartLinkEmbe;
33
- return openEmbedModal({
34
- fireEvent,
35
- extensionKey,
36
- id,
37
- invokeDownloadAction: extractInvokeDownloadAction(param),
38
- invokeViewAction: extractInvokeViewAction(param, true),
39
- isSupportTheming: extractIsSupportTheming(meta),
40
- isTrusted: extractIsTrusted(meta),
41
- linkIcon: extractLinkIcon(response),
42
- providerName: (_extractSmartLinkProv = extractSmartLinkProvider(response)) === null || _extractSmartLinkProv === void 0 ? void 0 : _extractSmartLinkProv.text,
43
- onClose,
44
- origin,
45
- src: (_extractSmartLinkEmbe = extractSmartLinkEmbed(response)) === null || _extractSmartLinkEmbe === void 0 ? void 0 : _extractSmartLinkEmbe.src,
46
- title: extractSmartLinkTitle(response),
47
- url: extractSmartLinkUrl(response)
48
- });
41
+ invokeAction: {
42
+ actionFn: async () => {
43
+ if (hasPreviewPanel) {
44
+ openPreviewPanel({
45
+ ari: ari,
46
+ url: url,
47
+ name: name,
48
+ iconUrl: undefined
49
+ });
50
+ } else {
51
+ var _extractSmartLinkProv, _extractSmartLinkEmbe;
52
+ await openEmbedModal({
53
+ fireEvent,
54
+ extensionKey,
55
+ id,
56
+ invokeDownloadAction: extractInvokeDownloadAction(param),
57
+ invokeViewAction: extractInvokeViewAction(param, true),
58
+ isSupportTheming: extractIsSupportTheming(meta),
59
+ isTrusted: extractIsTrusted(meta),
60
+ linkIcon: extractLinkIcon(response),
61
+ providerName: (_extractSmartLinkProv = extractSmartLinkProvider(response)) === null || _extractSmartLinkProv === void 0 ? void 0 : _extractSmartLinkProv.text,
62
+ onClose,
63
+ origin,
64
+ src: (_extractSmartLinkEmbe = extractSmartLinkEmbed(response)) === null || _extractSmartLinkEmbe === void 0 ? void 0 : _extractSmartLinkEmbe.src,
65
+ title: extractSmartLinkTitle(response),
66
+ url
67
+ });
68
+ }
69
+ },
70
+ actionSubjectId: 'invokePreviewScreen',
71
+ actionType: ActionName.PreviewAction,
72
+ display,
73
+ extensionKey,
74
+ id
49
75
  },
50
- actionSubjectId: 'invokePreviewScreen',
51
- actionType: ActionName.PreviewAction,
52
- display,
53
- extensionKey,
54
- id
76
+ hasPreviewPanel: hasPreviewPanel
55
77
  };
56
78
  }
57
79
  };
@@ -1,7 +1,5 @@
1
1
  import { extractInvokePreviewAction } from '../../action/extract-invoke-preview-action';
2
2
  export const extractPreviewClientAction = param => {
3
- const invokeAction = extractInvokePreviewAction(param);
4
- return invokeAction ? {
5
- invokeAction
6
- } : undefined;
3
+ const result = extractInvokePreviewAction(param);
4
+ return result ? result : undefined;
7
5
  };
@@ -14,7 +14,9 @@ export const extractFlexibleCardActions = ({
14
14
  id,
15
15
  origin,
16
16
  response,
17
- url
17
+ url,
18
+ isPreviewPanelAvailable,
19
+ openPreviewPanel
18
20
  }) => {
19
21
  const action = {
20
22
  [ActionName.CopyLinkAction]: extractCopyLinkClientAction({
@@ -36,7 +38,9 @@ export const extractFlexibleCardActions = ({
36
38
  fireEvent,
37
39
  id,
38
40
  origin,
39
- response
41
+ response,
42
+ isPreviewPanelAvailable,
43
+ openPreviewPanel
40
44
  }),
41
45
  [ActionName.AutomationAction]: extractAutomationAction(response),
42
46
  [InternalActionName.AISummaryAction]: extractAISummaryAction(response, url, actionOptions, aiSummaryConfig),