@atlaskit/smart-card 38.7.2 → 38.9.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 (71) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/utils/analytics/analytics.js +1 -1
  3. package/dist/cjs/view/BlockCard/index.js +4 -2
  4. package/dist/cjs/view/BlockCard/views/ResolvedView.js +8 -2
  5. package/dist/cjs/view/CardWithUrl/component.js +15 -10
  6. package/dist/cjs/view/FlexibleCard/components/blocks/action-block/action-footer/index.js +3 -2
  7. package/dist/cjs/view/FlexibleCard/components/blocks/snippet-block/index.js +4 -2
  8. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +3 -1
  9. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +4 -2
  10. package/dist/cjs/view/FlexibleCard/components/common/image-icon/index.js +47 -15
  11. package/dist/cjs/view/FlexibleCard/components/elements/common/base-icon-element/index.js +7 -3
  12. package/dist/cjs/view/FlexibleCard/components/elements/common/base-lozenge-element/lozenge-action/lozenge-action-trigger/index.js +5 -3
  13. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +2 -1
  14. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +5 -1
  15. package/dist/cjs/view/InlineCard/ErroredView/index.js +3 -3
  16. package/dist/cjs/view/LinkUrl/index.js +1 -1
  17. package/dist/es2019/utils/analytics/analytics.js +1 -1
  18. package/dist/es2019/view/BlockCard/index.js +4 -2
  19. package/dist/es2019/view/BlockCard/views/ResolvedView.js +8 -2
  20. package/dist/es2019/view/CardWithUrl/component.js +16 -11
  21. package/dist/es2019/view/FlexibleCard/components/blocks/action-block/action-footer/index.js +3 -2
  22. package/dist/es2019/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -3
  23. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +2 -0
  24. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +3 -1
  25. package/dist/es2019/view/FlexibleCard/components/common/image-icon/index.js +49 -22
  26. package/dist/es2019/view/FlexibleCard/components/elements/common/base-icon-element/index.js +7 -4
  27. package/dist/es2019/view/FlexibleCard/components/elements/common/base-lozenge-element/lozenge-action/lozenge-action-trigger/index.js +5 -3
  28. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +2 -1
  29. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +5 -1
  30. package/dist/es2019/view/InlineCard/ErroredView/index.js +4 -4
  31. package/dist/es2019/view/LinkUrl/index.js +1 -1
  32. package/dist/esm/utils/analytics/analytics.js +1 -1
  33. package/dist/esm/view/BlockCard/index.js +4 -2
  34. package/dist/esm/view/BlockCard/views/ResolvedView.js +8 -2
  35. package/dist/esm/view/CardWithUrl/component.js +16 -11
  36. package/dist/esm/view/FlexibleCard/components/blocks/action-block/action-footer/index.js +3 -2
  37. package/dist/esm/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -3
  38. package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +3 -1
  39. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +4 -2
  40. package/dist/esm/view/FlexibleCard/components/common/image-icon/index.js +46 -14
  41. package/dist/esm/view/FlexibleCard/components/elements/common/base-icon-element/index.js +7 -3
  42. package/dist/esm/view/FlexibleCard/components/elements/common/base-lozenge-element/lozenge-action/lozenge-action-trigger/index.js +5 -3
  43. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +2 -1
  44. package/dist/esm/view/HoverCard/components/HoverCardContent.js +5 -1
  45. package/dist/esm/view/InlineCard/ErroredView/index.js +4 -4
  46. package/dist/esm/view/LinkUrl/index.js +1 -1
  47. package/dist/types/ssr.d.ts +1 -0
  48. package/dist/types/view/BlockCard/index.d.ts +1 -1
  49. package/dist/types/view/BlockCard/types.d.ts +1 -0
  50. package/dist/types/view/BlockCard/views/types.d.ts +1 -1
  51. package/dist/types/view/CardWithUrl/types.d.ts +1 -0
  52. package/dist/types/view/FlexibleCard/components/blocks/title-block/index.d.ts +1 -1
  53. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +1 -1
  54. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +4 -0
  55. package/dist/types/view/FlexibleCard/components/common/image-icon/index.d.ts +1 -1
  56. package/dist/types/view/FlexibleCard/components/common/image-icon/types.d.ts +1 -0
  57. package/dist/types/view/FlexibleCard/components/elements/common/base-icon-element/index.d.ts +5 -1
  58. package/dist/types/view/FlexibleCard/types.d.ts +8 -0
  59. package/dist/types-ts4.5/ssr.d.ts +1 -0
  60. package/dist/types-ts4.5/view/BlockCard/index.d.ts +1 -1
  61. package/dist/types-ts4.5/view/BlockCard/types.d.ts +1 -0
  62. package/dist/types-ts4.5/view/BlockCard/views/types.d.ts +1 -1
  63. package/dist/types-ts4.5/view/CardWithUrl/types.d.ts +1 -0
  64. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/title-block/index.d.ts +1 -1
  65. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +1 -1
  66. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/types.d.ts +4 -0
  67. package/dist/types-ts4.5/view/FlexibleCard/components/common/image-icon/index.d.ts +1 -1
  68. package/dist/types-ts4.5/view/FlexibleCard/components/common/image-icon/types.d.ts +1 -0
  69. package/dist/types-ts4.5/view/FlexibleCard/components/elements/common/base-icon-element/index.d.ts +5 -1
  70. package/dist/types-ts4.5/view/FlexibleCard/types.d.ts +8 -0
  71. package/package.json +11 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 38.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#166270](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/166270)
8
+ [`231ec9798652d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/231ec9798652d) -
9
+ [ux] Added hideIconLoadingSkeleton prop to CardSSR to allow for hiding the loading skeleton for
10
+ image icons in the title of block cards. Set to true in the renderer.
11
+
12
+ ## 38.8.0
13
+
14
+ ### Minor Changes
15
+
16
+ - [#166380](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/166380)
17
+ [`769ada2231863`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/769ada2231863) -
18
+ Adds optional FlexibleUI property for enabling the SnippetRenderer
19
+
3
20
  ## 38.7.2
4
21
 
5
22
  ### Patch Changes
@@ -11,7 +11,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
11
11
  var context = exports.context = {
12
12
  componentName: 'smart-cards',
13
13
  packageName: "@atlaskit/smart-card",
14
- packageVersion: "38.7.2"
14
+ packageVersion: "38.9.0"
15
15
  };
16
16
  var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
17
17
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -30,7 +30,8 @@ var BlockCard = exports.BlockCard = function BlockCard(_ref) {
30
30
  onError = _ref.onError,
31
31
  testId = _ref.testId,
32
32
  actionOptions = _ref.actionOptions,
33
- CompetitorPrompt = _ref.CompetitorPrompt;
33
+ CompetitorPrompt = _ref.CompetitorPrompt,
34
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton;
34
35
  var status = cardState.status;
35
36
  var blockCardProps = {
36
37
  id: id,
@@ -44,7 +45,8 @@ var BlockCard = exports.BlockCard = function BlockCard(_ref) {
44
45
  onResolve: onResolve,
45
46
  renderers: renderers,
46
47
  actionOptions: actionOptions,
47
- CompetitorPrompt: CompetitorPrompt
48
+ CompetitorPrompt: CompetitorPrompt,
49
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton
48
50
  };
49
51
  var _useControlDataExport = (0, _useControlDataExportConfig.useControlDataExportConfig)(),
50
52
  _useControlDataExport2 = _useControlDataExport.shouldControlDataExport,
@@ -42,7 +42,8 @@ var ResolvedView = function ResolvedView(_ref) {
42
42
  _ref$testId = _ref.testId,
43
43
  testId = _ref$testId === void 0 ? 'smart-block-resolved-view' : _ref$testId,
44
44
  url = _ref.url,
45
- CompetitorPrompt = _ref.CompetitorPrompt;
45
+ CompetitorPrompt = _ref.CompetitorPrompt,
46
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton;
46
47
  var _useState = (0, _react.useState)(false),
47
48
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
48
49
  isPreviewBlockErrored = _useState2[0],
@@ -74,6 +75,10 @@ var ResolvedView = function ResolvedView(_ref) {
74
75
  }];
75
76
  }, []);
76
77
  var status = cardState.status;
78
+ var uiOptions = (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? _utils.FlexibleCardUiOptions : _utils.FlexibleCardUiOptionsOld;
79
+ if ((0, _platformFeatureFlags.fg)('cc-ai-linking-platform-snippet-renderer')) {
80
+ uiOptions.enableSnippetRenderer = true;
81
+ }
77
82
  return /*#__PURE__*/React.createElement(_FlexibleCard.default, {
78
83
  appearance: "block",
79
84
  cardState: cardState,
@@ -83,7 +88,7 @@ var ResolvedView = function ResolvedView(_ref) {
83
88
  origin: "smartLinkCard",
84
89
  actionOptions: actionOptions,
85
90
  testId: testId,
86
- ui: (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? _utils.FlexibleCardUiOptions : _utils.FlexibleCardUiOptionsOld,
91
+ ui: uiOptions,
87
92
  url: url
88
93
  }, /*#__PURE__*/React.createElement(_blocks.TitleBlock, (0, _extends2.default)({}, _utils.titleBlockOptions, {
89
94
  metadata: titleMetadata,
@@ -96,6 +101,7 @@ var ResolvedView = function ResolvedView(_ref) {
96
101
  }, {
97
102
  CompetitorPrompt: CompetitorPrompt,
98
103
  url: url,
104
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
99
105
  className: (0, _runtime.ax)([(0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v1') ? "_zulpu2gc _13mh1pd9 _2yhz14q2" : "_zulpcxkx _13mh1pd9"])
100
106
  })), /*#__PURE__*/React.createElement(_blocks.MetadataBlock, (0, _extends2.default)({
101
107
  primary: topMetadata,
@@ -50,7 +50,8 @@ function Component(_ref) {
50
50
  removeTextHighlightingFromTitle = _ref.removeTextHighlightingFromTitle,
51
51
  resolvingPlaceholder = _ref.resolvingPlaceholder,
52
52
  truncateInline = _ref.truncateInline,
53
- CompetitorPrompt = _ref.CompetitorPrompt;
53
+ CompetitorPrompt = _ref.CompetitorPrompt,
54
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton;
54
55
  var _useAnalyticsEventsNe = (0, _analyticsNext.useAnalyticsEvents)(),
55
56
  createAnalyticsEvent = _useAnalyticsEventsNe.createAnalyticsEvent;
56
57
  var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
@@ -80,12 +81,7 @@ function Component(_ref) {
80
81
 
81
82
  // Setup UI handlers.
82
83
  var handleClickWrapper = (0, _react.useCallback)(function (event) {
83
- var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
84
- // Ctrl+left click on mac typically doesn't trigger onClick
85
- // The event could have potentially had `e.preventDefault()` called on it by now
86
- // event by smart card internally
87
- // If it has been called then only then can `isModifierKeyPressed` be true.
88
- var target = isModifierKeyPressed ? '_blank' : '_self';
84
+ var isModifierKeyPressed = (0, _utils.isSpecialKey)(event) || (0, _utils.isSpecialClick)(event);
89
85
  fireEvent('ui.smartLink.clicked', {
90
86
  id: id,
91
87
  display: isFlexibleUi ? _constants.CardDisplay.Flexible : appearance,
@@ -97,9 +93,11 @@ function Component(_ref) {
97
93
  // delegate the click to the glance panel handler
98
94
  if (
99
95
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
100
- (0, _platformFeatureFlags.fg)('fun-1765_wire_up_glance_panel_to_smart_cards') && target !== '_blank' && ari && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
96
+ (0, _platformFeatureFlags.fg)('fun-1765_wire_up_glance_panel_to_smart_cards') && !isModifierKeyPressed && ari && openGlancePanel && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
101
97
  ari: ari
102
- }) && openGlancePanel) {
98
+ })) {
99
+ event.preventDefault();
100
+ event.stopPropagation();
103
101
  openGlancePanel({
104
102
  url: url,
105
103
  ari: ari,
@@ -113,6 +111,12 @@ function Component(_ref) {
113
111
  });
114
112
  } else if (!onClick && !isFlexibleUi) {
115
113
  var clickUrl = (0, _helpers.getClickUrl)(url, state.details);
114
+
115
+ // Ctrl+left click on mac typically doesn't trigger onClick
116
+ // The event could have potentially had `e.preventDefault()` called on it by now
117
+ // event by smart card internally
118
+ // If it has been called then only then can `isSpecialEvent` be true.
119
+ var target = (0, _utils.isSpecialEvent)(event) ? '_blank' : '_self';
116
120
  window.open(clickUrl, target);
117
121
  (0, _click.fireLinkClickedEvent)(createAnalyticsEvent)(event, {
118
122
  attributes: {
@@ -268,7 +272,8 @@ function Component(_ref) {
268
272
  onError: onError,
269
273
  testId: testId,
270
274
  actionOptions: actionOptions,
271
- CompetitorPrompt: CompetitorPrompt
275
+ CompetitorPrompt: CompetitorPrompt,
276
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton
272
277
  });
273
278
  case 'embed':
274
279
  return /*#__PURE__*/_react.default.createElement(_EmbedCard.EmbedCard, {
@@ -10,7 +10,7 @@ exports.ActionFooter = void 0;
10
10
  require("./index.compiled.css");
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _runtime = require("@compiled/react/runtime");
13
- var _error = _interopRequireDefault(require("@atlaskit/icon/utility/migration/error"));
13
+ var _error = _interopRequireDefault(require("@atlaskit/icon/core/migration/error"));
14
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
15
  var _compiled = require("@atlaskit/primitives/compiled");
16
16
  var _motionWrapper = _interopRequireDefault(require("../../../common/motion-wrapper"));
@@ -31,7 +31,8 @@ var getIcon = function getIcon(appearance) {
31
31
  label: "Error",
32
32
  LEGACY_size: "small",
33
33
  testId: "action-error-icon",
34
- LEGACY_margin: "0 ".concat("var(--ds-space-negative-025, -2px)")
34
+ LEGACY_margin: "0 ".concat("var(--ds-space-negative-025, -2px)"),
35
+ size: "small"
35
36
  });
36
37
  default:
37
38
  return null;
@@ -27,7 +27,7 @@ var MINIMUM_MAX_LINES = 1;
27
27
  * @see Block
28
28
  */
29
29
  var SnippetBlock = function SnippetBlock(_ref) {
30
- var _blockProps$size2, _cardContext$ui2, _ref2, _context$meta$objectI, _context$meta, _context$meta$resourc, _context$meta2, _context$meta$tenantI, _context$meta3;
30
+ var _useFlexibleUiOptionC, _blockProps$size2, _cardContext$ui2, _ref2, _context$meta$objectI, _context$meta, _context$meta$resourc, _context$meta2, _context$meta$tenantI, _context$meta3;
31
31
  var _ref$maxLines = _ref.maxLines,
32
32
  maxLines = _ref$maxLines === void 0 ? DEFAULT_MAX_LINES : _ref$maxLines,
33
33
  _ref$status = _ref.status,
@@ -44,6 +44,8 @@ var SnippetBlock = function SnippetBlock(_ref) {
44
44
  var renderers = (0, _platformFeatureFlags.fg)('cc-ai-linking-platform-snippet-renderer') ?
45
45
  // eslint-disable-next-line react-hooks/rules-of-hooks
46
46
  (0, _renderers.useSmartLinkRenderers)() : undefined;
47
+ var enableSnippetRenderer = (0, _platformFeatureFlags.fg)('cc-ai-linking-platform-snippet-renderer') ? // eslint-disable-next-line react-hooks/rules-of-hooks
48
+ (_useFlexibleUiOptionC = (0, _flexibleUiContext.useFlexibleUiOptionContext)()) === null || _useFlexibleUiOptionC === void 0 ? void 0 : _useFlexibleUiOptionC.enableSnippetRenderer : undefined;
47
49
  var cardContext = (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ?
48
50
  // eslint-disable-next-line react-hooks/rules-of-hooks
49
51
  (0, _flexibleUiContext.useFlexibleCardContext)() : undefined;
@@ -62,7 +64,7 @@ var SnippetBlock = function SnippetBlock(_ref) {
62
64
  maxLines: snippetMaxLines,
63
65
  content: text
64
66
  });
65
- if (!(0, _platformFeatureFlags.fg)('cc-ai-linking-platform-snippet-renderer')) {
67
+ if (!(0, _platformFeatureFlags.fg)('cc-ai-linking-platform-snippet-renderer') || !enableSnippetRenderer) {
66
68
  var _blockProps$size, _cardContext$ui;
67
69
  return /*#__PURE__*/_react.default.createElement(_block.default, (0, _extends2.default)({}, blockProps, (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? {
68
70
  size: (_blockProps$size = blockProps.size) !== null && _blockProps$size !== void 0 ? _blockProps$size : cardContext === null || cardContext === void 0 || (_cardContext$ui = cardContext.ui) === null || _cardContext$ui === void 0 ? void 0 : _cardContext$ui.size
@@ -23,7 +23,7 @@ var _actionGroup = _interopRequireDefault(require("../action-group"));
23
23
  var _errored = _interopRequireDefault(require("./errored"));
24
24
  var _resolved = _interopRequireDefault(require("./resolved"));
25
25
  var _resolving = _interopRequireDefault(require("./resolving"));
26
- var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onActionMenuOpenChange", "onClick", "status", "showActionOnHover", "testId", "text", "icon", "theme", "hideRetry", "metadataPosition", "hideIcon", "className", "anchorRef", "CompetitorPrompt", "url"];
26
+ var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onActionMenuOpenChange", "onClick", "status", "showActionOnHover", "testId", "text", "icon", "theme", "hideRetry", "metadataPosition", "hideIcon", "className", "anchorRef", "CompetitorPrompt", "url", "hideIconLoadingSkeleton"];
27
27
  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); }
28
28
  var actionStyles = null;
29
29
  var getTitleBlockViewComponent = function getTitleBlockViewComponent(status) {
@@ -80,6 +80,7 @@ var TitleBlock = function TitleBlock(_ref) {
80
80
  anchorRef = _ref.anchorRef,
81
81
  CompetitorPrompt = _ref.CompetitorPrompt,
82
82
  url = _ref.url,
83
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton,
83
84
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
84
85
  var cardContext = (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ?
85
86
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -139,6 +140,7 @@ var TitleBlock = function TitleBlock(_ref) {
139
140
  hideRetry: hideRetry
140
141
  } : undefined, {
141
142
  icon: icon,
143
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
142
144
  size: (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : ui === null || ui === void 0 ? void 0 : ui.size : props === null || props === void 0 ? void 0 : props.size
143
145
  }, (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? undefined : {
144
146
  theme: theme
@@ -19,7 +19,7 @@ var _elements = require("../../../elements");
19
19
  var _block = _interopRequireDefault(require("../../block"));
20
20
  var _elementGroup = _interopRequireDefault(require("../../element-group"));
21
21
  var _utils = require("../../utils");
22
- var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "icon", "title", "metadataPosition", "hideIcon", "CompetitorPrompt", "url"];
22
+ var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "icon", "title", "metadataPosition", "hideIcon", "CompetitorPrompt", "url", "hideIconLoadingSkeleton"];
23
23
  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); }
24
24
  var style = null;
25
25
  var styles = {
@@ -46,6 +46,7 @@ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
46
46
  hideIcon = _ref.hideIcon,
47
47
  CompetitorPrompt = _ref.CompetitorPrompt,
48
48
  url = _ref.url,
49
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton,
49
50
  blockProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
50
51
  var size = blockProps.size;
51
52
  var metadataElements = (0, _utils.renderElementItems)(metadata);
@@ -55,7 +56,8 @@ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
55
56
  }), !hideIcon && /*#__PURE__*/React.createElement(_elements.LinkIcon, {
56
57
  overrideIcon: icon,
57
58
  position: position,
58
- size: size
59
+ size: size,
60
+ hideLoadingSkeleton: hideIconLoadingSkeleton
59
61
  }), /*#__PURE__*/React.createElement(_elementGroup.default, {
60
62
  direction: _constants.SmartLinkDirection.Vertical,
61
63
  width: _constants.SmartLinkWidth.Flexible,
@@ -8,8 +8,10 @@ Object.defineProperty(exports, "__esModule", {
8
8
  });
9
9
  exports.default = void 0;
10
10
  require("./index.compiled.css");
11
- var React = _interopRequireWildcard(require("react"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var React = _react;
12
13
  var _runtime = require("@compiled/react/runtime");
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
15
  var _reactRenderImage = _interopRequireDefault(require("react-render-image"));
14
16
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
17
  var _loadingSkeleton = require("../loading-skeleton");
@@ -26,15 +28,23 @@ var ImageIcon = function ImageIcon(_ref) {
26
28
  _ref$appearance = _ref.appearance,
27
29
  appearance = _ref$appearance === void 0 ? 'square' : _ref$appearance,
28
30
  onError = _ref.onError,
29
- onLoad = _ref.onLoad;
30
- return /*#__PURE__*/React.createElement(_reactRenderImage.default, {
31
- src: url,
32
- loading: /*#__PURE__*/React.createElement(_loadingSkeleton.LoadingSkeleton, {
33
- testId: "".concat(testId, "-loading"),
34
- width: width,
35
- height: height
36
- }),
37
- loaded: /*#__PURE__*/React.createElement("img", {
31
+ onLoad = _ref.onLoad,
32
+ _ref$hideLoadingSkele = _ref.hideLoadingSkeleton,
33
+ hideLoadingSkeleton = _ref$hideLoadingSkele === void 0 ? false : _ref$hideLoadingSkele;
34
+ var _useState = (0, _react.useState)(false),
35
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
36
+ hasImageErrored = _useState2[0],
37
+ setHasImageErrored = _useState2[1];
38
+
39
+ // If url changes, reset state
40
+ (0, _react.useEffect)(function () {
41
+ setHasImageErrored(false);
42
+ }, [url]);
43
+ if (hasImageErrored) {
44
+ return defaultIcon;
45
+ }
46
+ if (hideLoadingSkeleton && (0, _platformFeatureFlags.fg)('platform_fix_block_card_img_icon_vc')) {
47
+ return /*#__PURE__*/React.createElement("img", {
38
48
  src: url,
39
49
  "data-testid": "".concat(testId, "-image"),
40
50
  alt: "",
@@ -42,11 +52,33 @@ var ImageIcon = function ImageIcon(_ref) {
42
52
  width: width,
43
53
  height: height
44
54
  },
55
+ onError: function onError() {
56
+ return setHasImageErrored(true);
57
+ },
45
58
  className: (0, _runtime.ax)([appearance === 'round' && (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') && styles.roundImg])
46
- }),
47
- errored: defaultIcon,
48
- onError: onError,
49
- onLoad: onLoad
50
- });
59
+ });
60
+ } else {
61
+ return /*#__PURE__*/React.createElement(_reactRenderImage.default, {
62
+ src: url,
63
+ loading: /*#__PURE__*/React.createElement(_loadingSkeleton.LoadingSkeleton, {
64
+ testId: "".concat(testId, "-loading"),
65
+ width: width,
66
+ height: height
67
+ }),
68
+ loaded: /*#__PURE__*/React.createElement("img", {
69
+ src: url,
70
+ "data-testid": "".concat(testId, "-image"),
71
+ alt: "",
72
+ style: {
73
+ width: width,
74
+ height: height
75
+ },
76
+ className: (0, _runtime.ax)([appearance === 'round' && (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') && styles.roundImg])
77
+ }),
78
+ errored: defaultIcon,
79
+ onError: onError,
80
+ onLoad: onLoad
81
+ });
82
+ }
51
83
  };
52
84
  var _default = exports.default = ImageIcon;
@@ -62,6 +62,7 @@ var renderDefaultIcon = function renderDefaultIcon(label, testId) {
62
62
  var renderImageIcon = function renderImageIcon(defaultIcon, url, testId) {
63
63
  var size = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.SmartLinkSize.Medium;
64
64
  var appearance = arguments.length > 4 ? arguments[4] : undefined;
65
+ var hideLoadingSkeleton = arguments.length > 5 ? arguments[5] : undefined;
65
66
  var width = size === _constants.SmartLinkSize.Large ? "var(--ds-space-300, 24px)" : "var(--ds-space-200, 16px)";
66
67
  if (url) {
67
68
  return /*#__PURE__*/React.createElement(_imageIcon.default, (0, _extends2.default)({
@@ -72,6 +73,8 @@ var renderImageIcon = function renderImageIcon(defaultIcon, url, testId) {
72
73
  height: width
73
74
  }, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') && {
74
75
  appearance: appearance
76
+ }, {
77
+ hideLoadingSkeleton: hideLoadingSkeleton
75
78
  }));
76
79
  }
77
80
  };
@@ -98,11 +101,12 @@ var IconElement = function IconElement(_ref) {
98
101
  testId = _ref$testId === void 0 ? 'smart-element-icon' : _ref$testId,
99
102
  url = _ref.url,
100
103
  _ref$appearance = _ref.appearance,
101
- appearance = _ref$appearance === void 0 ? 'square' : _ref$appearance;
104
+ appearance = _ref$appearance === void 0 ? 'square' : _ref$appearance,
105
+ hideLoadingSkeleton = _ref.hideLoadingSkeleton;
102
106
  var element = (0, _react.useMemo)(function () {
103
107
  var defaultIcon = renderDefaultIcon(label, testId);
104
- return overrideIcon || (render === null || render === void 0 ? void 0 : render()) || renderImageIcon(defaultIcon, url, testId, size, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') ? appearance : undefined) || renderAtlaskitIcon(icon, testId, size) || defaultIcon;
105
- }, [label, testId, overrideIcon, render, url, size, appearance, icon]);
108
+ return overrideIcon || (render === null || render === void 0 ? void 0 : render()) || renderImageIcon(defaultIcon, url, testId, size, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') ? appearance : undefined, hideLoadingSkeleton) || renderAtlaskitIcon(icon, testId, size) || defaultIcon;
109
+ }, [label, testId, overrideIcon, render, url, size, appearance, hideLoadingSkeleton, icon]);
106
110
  var width = (0, _utils2.getIconWidth)(size);
107
111
  return /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v1') ? {} : (0, _defineProperty2.default)({}, 'data-fit-to-content', true), {
108
112
  "data-smart-element": name,
@@ -15,7 +15,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
  var _react2 = require("@compiled/react");
18
- var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/utility/migration/chevron-down"));
18
+ var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/core/migration/chevron-down"));
19
19
  var _linkingCommon = require("@atlaskit/linking-common");
20
20
  var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
21
21
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
@@ -61,7 +61,8 @@ var LozengeActionTriggerOld = function LozengeActionTriggerOld(_ref) {
61
61
  color: "currentColor",
62
62
  label: "options",
63
63
  LEGACY_size: "medium",
64
- LEGACY_margin: "-4px -8px -4px -7px"
64
+ LEGACY_margin: "-4px -8px -4px -7px",
65
+ size: "small"
65
66
  }))));
66
67
  }, [appearance, isBold, text]);
67
68
  return /*#__PURE__*/React.createElement("button", (0, _extends2.default)({
@@ -151,7 +152,8 @@ var LozengeActionTrigger = function LozengeActionTrigger(_ref2) {
151
152
  color: "currentColor",
152
153
  label: "options",
153
154
  LEGACY_size: "medium",
154
- LEGACY_margin: "-4px -8px -4px -7px"
155
+ LEGACY_margin: "-4px -8px -4px -7px",
156
+ size: "small"
155
157
  })))));
156
158
  }, [appearance, isHovering, isPressing, text, isOpen, lozengeBackgroundColor, lozengeForegroundColor]);
157
159
  return /*#__PURE__*/React.createElement("button", (0, _extends2.default)({
@@ -241,6 +241,7 @@ var HoverCardComponent = exports.HoverCardComponent = function HoverCardComponen
241
241
  label: label
242
242
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
243
243
  ,
244
- popupComponent: _CustomPopupContainer.default
244
+ popupComponent: _CustomPopupContainer.default,
245
+ shouldRenderToParent: (0, _platformFeatureFlags.fg)('should-render-to-parent-should-be-true-linking-pla')
245
246
  });
246
247
  };
@@ -114,6 +114,10 @@ var HoverCardContent = function HoverCardContent(_ref) {
114
114
  position: _constants.SmartLinkPosition.Center,
115
115
  subtitle: subtitle
116
116
  };
117
+ var uiOptions = (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? _styled.flexibleUiOptions : _styled.flexibleUiOptionsOld;
118
+ if ((0, _platformFeatureFlags.fg)('cc-ai-linking-platform-snippet-renderer')) {
119
+ uiOptions.enableSnippetRenderer = true;
120
+ }
117
121
  var flexibleCardProps = {
118
122
  appearance: _constants.CardDisplay.HoverCardPreview,
119
123
  cardState: cardState,
@@ -122,7 +126,7 @@ var HoverCardContent = function HoverCardContent(_ref) {
122
126
  origin: 'smartLinkPreviewHoverCard',
123
127
  renderers: renderers,
124
128
  actionOptions: actionOptions,
125
- ui: (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? _styled.flexibleUiOptions : _styled.flexibleUiOptionsOld,
129
+ ui: uiOptions,
126
130
  url: url,
127
131
  children: null
128
132
  };
@@ -12,7 +12,6 @@ var _react = _interopRequireDefault(require("react"));
12
12
  var _reactIntlNext = require("react-intl-next");
13
13
  var _button = _interopRequireDefault(require("@atlaskit/button"));
14
14
  var _error = _interopRequireDefault(require("@atlaskit/icon/core/migration/error"));
15
- var _error2 = _interopRequireDefault(require("@atlaskit/icon/utility/migration/error"));
16
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
16
  var _compiled = require("@atlaskit/primitives/compiled");
18
17
  var _messages = require("../../../messages");
@@ -37,11 +36,12 @@ var fallbackIcon = function fallbackIcon() {
37
36
  return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
38
37
  as: "span",
39
38
  xcss: styles.iconWrapper
40
- }, /*#__PURE__*/_react.default.createElement(_error2.default, {
39
+ }, /*#__PURE__*/_react.default.createElement(_error.default, {
41
40
  color: "var(--ds-icon-danger, #C9372C)",
42
41
  label: "error",
43
42
  LEGACY_size: "small",
44
- testId: "errored-view-default-icon"
43
+ testId: "errored-view-default-icon",
44
+ size: "small"
45
45
  }));
46
46
  };
47
47
  var InlineCardErroredView = exports.InlineCardErroredView = function InlineCardErroredView(_ref) {
@@ -20,7 +20,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLink
20
20
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
21
21
  var PACKAGE_DATA = {
22
22
  packageName: "@atlaskit/smart-card",
23
- packageVersion: "38.7.2",
23
+ packageVersion: "38.9.0",
24
24
  componentName: 'linkUrl'
25
25
  };
26
26
  var Anchor = (0, _click.withLinkClickedEvent)('a');
@@ -2,7 +2,7 @@ export const ANALYTICS_CHANNEL = 'media';
2
2
  export const context = {
3
3
  componentName: 'smart-cards',
4
4
  packageName: "@atlaskit/smart-card",
5
- packageVersion: "38.7.2"
5
+ packageVersion: "38.9.0"
6
6
  };
7
7
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
8
8
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -23,7 +23,8 @@ export const BlockCard = ({
23
23
  onError,
24
24
  testId,
25
25
  actionOptions,
26
- CompetitorPrompt
26
+ CompetitorPrompt,
27
+ hideIconLoadingSkeleton
27
28
  }) => {
28
29
  const {
29
30
  status
@@ -38,7 +39,8 @@ export const BlockCard = ({
38
39
  onResolve,
39
40
  renderers,
40
41
  actionOptions,
41
- CompetitorPrompt
42
+ CompetitorPrompt,
43
+ hideIconLoadingSkeleton
42
44
  };
43
45
  const {
44
46
  shouldControlDataExport = false
@@ -31,7 +31,8 @@ const ResolvedView = ({
31
31
  actionOptions,
32
32
  testId = 'smart-block-resolved-view',
33
33
  url,
34
- CompetitorPrompt
34
+ CompetitorPrompt,
35
+ hideIconLoadingSkeleton
35
36
  }) => {
36
37
  const [isPreviewBlockErrored, setIsPreviewBlockErrored] = useState(false);
37
38
  const {
@@ -58,6 +59,10 @@ const ResolvedView = ({
58
59
  hideIcon: true
59
60
  }], []);
60
61
  const status = cardState.status;
62
+ const uiOptions = fg('platform-linking-flexible-card-context') ? FlexibleCardUiOptions : FlexibleCardUiOptionsOld;
63
+ if (fg('cc-ai-linking-platform-snippet-renderer')) {
64
+ uiOptions.enableSnippetRenderer = true;
65
+ }
61
66
  return /*#__PURE__*/React.createElement(FlexibleCard, {
62
67
  appearance: "block",
63
68
  cardState: cardState,
@@ -67,7 +72,7 @@ const ResolvedView = ({
67
72
  origin: "smartLinkCard",
68
73
  actionOptions: actionOptions,
69
74
  testId: testId,
70
- ui: fg('platform-linking-flexible-card-context') ? FlexibleCardUiOptions : FlexibleCardUiOptionsOld,
75
+ ui: uiOptions,
71
76
  url: url
72
77
  }, /*#__PURE__*/React.createElement(TitleBlock, _extends({}, titleBlockOptions, {
73
78
  metadata: titleMetadata,
@@ -80,6 +85,7 @@ const ResolvedView = ({
80
85
  }, {
81
86
  CompetitorPrompt: CompetitorPrompt,
82
87
  url: url,
88
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
83
89
  className: ax([fg('platform-linking-visual-refresh-v1') ? "_zulpu2gc _13mh1pd9 _2yhz14q2" : "_zulpcxkx _13mh1pd9"])
84
90
  })), /*#__PURE__*/React.createElement(MetadataBlock, _extends({
85
91
  primary: topMetadata,
@@ -7,7 +7,7 @@ import { useSmartLink } from '../../state';
7
7
  import { succeedUfoExperience } from '../../state/analytics';
8
8
  import { getClickUrl, getDefinitionId, getExtensionKey, getObjectAri, getObjectIconUrl, getObjectName, getResourceType, getServices, isFinalState } from '../../state/helpers';
9
9
  import { SmartLinkModalProvider } from '../../state/modal';
10
- import { isSpecialEvent } from '../../utils';
10
+ import { isSpecialClick, isSpecialEvent, isSpecialKey } from '../../utils';
11
11
  import { combineActionOptions } from '../../utils/actions/combine-action-options';
12
12
  import { fireLinkClickedEvent } from '../../utils/analytics/click';
13
13
  import { SmartLinkAnalyticsContext } from '../../utils/analytics/SmartLinkAnalyticsContext';
@@ -41,7 +41,8 @@ function Component({
41
41
  removeTextHighlightingFromTitle,
42
42
  resolvingPlaceholder,
43
43
  truncateInline,
44
- CompetitorPrompt
44
+ CompetitorPrompt,
45
+ hideIconLoadingSkeleton
45
46
  }) {
46
47
  const {
47
48
  createAnalyticsEvent
@@ -73,12 +74,7 @@ function Component({
73
74
 
74
75
  // Setup UI handlers.
75
76
  const handleClickWrapper = useCallback(event => {
76
- const isModifierKeyPressed = isSpecialEvent(event);
77
- // Ctrl+left click on mac typically doesn't trigger onClick
78
- // The event could have potentially had `e.preventDefault()` called on it by now
79
- // event by smart card internally
80
- // If it has been called then only then can `isModifierKeyPressed` be true.
81
- const target = isModifierKeyPressed ? '_blank' : '_self';
77
+ const isModifierKeyPressed = isSpecialKey(event) || isSpecialClick(event);
82
78
  fireEvent('ui.smartLink.clicked', {
83
79
  id,
84
80
  display: isFlexibleUi ? CardDisplay.Flexible : appearance,
@@ -90,9 +86,11 @@ function Component({
90
86
  // delegate the click to the glance panel handler
91
87
  if (
92
88
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
93
- fg('fun-1765_wire_up_glance_panel_to_smart_cards') && target !== '_blank' && ari && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
89
+ fg('fun-1765_wire_up_glance_panel_to_smart_cards') && !isModifierKeyPressed && ari && openGlancePanel && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
94
90
  ari
95
- }) && openGlancePanel) {
91
+ })) {
92
+ event.preventDefault();
93
+ event.stopPropagation();
96
94
  openGlancePanel({
97
95
  url,
98
96
  ari,
@@ -106,6 +104,12 @@ function Component({
106
104
  });
107
105
  } else if (!onClick && !isFlexibleUi) {
108
106
  const clickUrl = getClickUrl(url, state.details);
107
+
108
+ // Ctrl+left click on mac typically doesn't trigger onClick
109
+ // The event could have potentially had `e.preventDefault()` called on it by now
110
+ // event by smart card internally
111
+ // If it has been called then only then can `isSpecialEvent` be true.
112
+ const target = isSpecialEvent(event) ? '_blank' : '_self';
109
113
  window.open(clickUrl, target);
110
114
  fireLinkClickedEvent(createAnalyticsEvent)(event, {
111
115
  attributes: {
@@ -257,7 +261,8 @@ function Component({
257
261
  onError: onError,
258
262
  testId: testId,
259
263
  actionOptions: actionOptions,
260
- CompetitorPrompt: CompetitorPrompt
264
+ CompetitorPrompt: CompetitorPrompt,
265
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton
261
266
  });
262
267
  case 'embed':
263
268
  return /*#__PURE__*/React.createElement(EmbedCard, {
@@ -2,7 +2,7 @@
2
2
  import "./index.compiled.css";
3
3
  import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
- import ErrorIcon from '@atlaskit/icon/utility/migration/error';
5
+ import ErrorIcon from '@atlaskit/icon/core/migration/error';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { Box, Inline } from '@atlaskit/primitives/compiled';
8
8
  import MotionWrapper from '../../../common/motion-wrapper';
@@ -22,7 +22,8 @@ const getIcon = appearance => {
22
22
  label: "Error",
23
23
  LEGACY_size: "small",
24
24
  testId: "action-error-icon",
25
- LEGACY_margin: `0 ${"var(--ds-space-negative-025, -2px)"}`
25
+ LEGACY_margin: `0 ${"var(--ds-space-negative-025, -2px)"}`,
26
+ size: "small"
26
27
  });
27
28
  default:
28
29
  return null;