@atlaskit/smart-card 40.11.0 → 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 (52) hide show
  1. package/CHANGELOG.md +7 -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 +10 -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/es2019/extractors/action/extract-invoke-preview-action.js +49 -27
  15. package/dist/es2019/extractors/flexible/actions/extract-preview-action.js +2 -4
  16. package/dist/es2019/extractors/flexible/actions/index.js +6 -2
  17. package/dist/es2019/extractors/flexible/extract-state.js +9 -7
  18. package/dist/es2019/extractors/flexible/index.js +7 -2
  19. package/dist/es2019/messages.js +10 -0
  20. package/dist/es2019/state/hooks-external/useSmartLinkActions.js +9 -2
  21. package/dist/es2019/utils/analytics/analytics.js +1 -1
  22. package/dist/es2019/view/CardWithUrl/component.js +1 -0
  23. package/dist/es2019/view/FlexibleCard/components/actions/preview-action/index.js +29 -4
  24. package/dist/es2019/view/FlexibleCard/index.js +9 -2
  25. package/dist/es2019/view/LinkUrl/index.js +1 -1
  26. package/dist/esm/extractors/action/extract-invoke-preview-action.js +69 -42
  27. package/dist/esm/extractors/flexible/actions/extract-preview-action.js +2 -4
  28. package/dist/esm/extractors/flexible/actions/index.js +6 -2
  29. package/dist/esm/extractors/flexible/extract-state.js +9 -7
  30. package/dist/esm/extractors/flexible/index.js +8 -3
  31. package/dist/esm/messages.js +10 -0
  32. package/dist/esm/state/hooks-external/useSmartLinkActions.js +8 -2
  33. package/dist/esm/utils/analytics/analytics.js +1 -1
  34. package/dist/esm/view/CardWithUrl/component.js +1 -0
  35. package/dist/esm/view/FlexibleCard/components/actions/preview-action/index.js +29 -4
  36. package/dist/esm/view/FlexibleCard/index.js +8 -2
  37. package/dist/esm/view/LinkUrl/index.js +1 -1
  38. package/dist/types/extractors/action/extract-invoke-preview-action.d.ts +15 -1
  39. package/dist/types/extractors/flexible/actions/index.d.ts +10 -1
  40. package/dist/types/extractors/flexible/extract-state.d.ts +8 -1
  41. package/dist/types/extractors/flexible/index.d.ts +1 -1
  42. package/dist/types/messages.d.ts +1 -1
  43. package/dist/types/state/flexible-ui-context/types.d.ts +1 -0
  44. package/dist/types/view/FlexibleCard/types.d.ts +9 -0
  45. package/dist/types-ts4.5/extractors/action/extract-invoke-preview-action.d.ts +15 -1
  46. package/dist/types-ts4.5/extractors/flexible/actions/index.d.ts +10 -1
  47. package/dist/types-ts4.5/extractors/flexible/extract-state.d.ts +8 -1
  48. package/dist/types-ts4.5/extractors/flexible/index.d.ts +1 -1
  49. package/dist/types-ts4.5/messages.d.ts +1 -1
  50. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +1 -0
  51. package/dist/types-ts4.5/view/FlexibleCard/types.d.ts +9 -0
  52. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
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
+
3
10
  ## 40.11.0
4
11
 
5
12
  ### Minor 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',
@@ -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.10"
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.10",
22
+ packageVersion: "40.11.0",
23
23
  componentName: 'linkUrl'
24
24
  };
25
25
  var Anchor = (0, _click.withLinkClickedEvent)('a');
@@ -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),
@@ -18,8 +18,8 @@ const toInvokeRequest = (extensionKey, resourceIdentifiers, actionType, details)
18
18
  details
19
19
  };
20
20
  };
21
- const extractAction = (response, id, actionOptions, appearance, origin, fireEvent, resolve) => {
22
- var _action$dataRetrieval, _action$dataUpdateAct;
21
+ const extractAction = (response, id, actionOptions, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel) => {
22
+ var _action$dataRetrieval, _extractInvokePreview, _action$dataUpdateAct;
23
23
  const extensionKey = getExtensionKey(response);
24
24
  const data = response === null || response === void 0 ? void 0 : response.data;
25
25
  const actions = extractServerAction(data);
@@ -32,15 +32,17 @@ const extractAction = (response, id, actionOptions, appearance, origin, fireEven
32
32
  }
33
33
  const read = toInvokeRequest(extensionKey, action.resourceIdentifiers, (_action$dataRetrieval = action.dataRetrievalAction) === null || _action$dataRetrieval === void 0 ? void 0 : _action$dataRetrieval.name);
34
34
  const url = extractLink(data);
35
- const invokePreviewAction = response ? extractInvokePreviewAction({
35
+ const invokePreviewAction = response ? (_extractInvokePreview = extractInvokePreviewAction({
36
36
  actionOptions,
37
37
  appearance,
38
38
  fireEvent,
39
39
  id,
40
40
  onClose: resolve ? () => url && resolve(url, true) : undefined,
41
41
  origin,
42
- response
43
- }) : undefined;
42
+ response,
43
+ isPreviewPanelAvailable,
44
+ openPreviewPanel
45
+ })) === null || _extractInvokePreview === void 0 ? void 0 : _extractInvokePreview.invokeAction : undefined;
44
46
  const details = {
45
47
  id,
46
48
  url,
@@ -52,7 +54,7 @@ const extractAction = (response, id, actionOptions, appearance, origin, fireEven
52
54
  update
53
55
  } : undefined;
54
56
  };
55
- const extractState = (response, actionOptions, id, appearance, origin, fireEvent, resolve) => {
57
+ const extractState = (response, actionOptions, id, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel) => {
56
58
  if (!response || !response.data) {
57
59
  return;
58
60
  }
@@ -63,7 +65,7 @@ const extractState = (response, actionOptions, id, appearance, origin, fireEvent
63
65
  if (!canShowAction(CardAction.ChangeStatusAction, actionOptions)) {
64
66
  return lozenge;
65
67
  }
66
- const action = extractAction(response, id, actionOptions, appearance, origin, fireEvent, resolve);
68
+ const action = extractAction(response, id, actionOptions, appearance, origin, fireEvent, resolve, isPreviewPanelAvailable, openPreviewPanel);
67
69
  return {
68
70
  ...lozenge,
69
71
  action