@atlaskit/smart-card 19.1.15 → 19.1.18

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 (156) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/extractors/block/index.js +2 -1
  3. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +2 -1
  4. package/dist/cjs/i18n/cs.js +29 -115
  5. package/dist/cjs/i18n/da.js +31 -116
  6. package/dist/cjs/i18n/de.js +30 -116
  7. package/dist/cjs/i18n/en.js +29 -115
  8. package/dist/cjs/i18n/en_GB.js +29 -115
  9. package/dist/cjs/i18n/en_ZZ.js +10 -129
  10. package/dist/cjs/i18n/es.js +29 -115
  11. package/dist/cjs/i18n/fi.js +29 -115
  12. package/dist/cjs/i18n/fr.js +30 -116
  13. package/dist/cjs/i18n/hu.js +30 -116
  14. package/dist/cjs/i18n/it.js +29 -115
  15. package/dist/cjs/i18n/ja.js +29 -115
  16. package/dist/cjs/i18n/ko.js +29 -115
  17. package/dist/cjs/i18n/nb.js +30 -116
  18. package/dist/cjs/i18n/nl.js +29 -115
  19. package/dist/cjs/i18n/pl.js +30 -116
  20. package/dist/cjs/i18n/pt_BR.js +29 -115
  21. package/dist/cjs/i18n/ru.js +30 -116
  22. package/dist/cjs/i18n/sv.js +29 -115
  23. package/dist/cjs/i18n/th.js +29 -115
  24. package/dist/cjs/i18n/tr.js +30 -116
  25. package/dist/cjs/i18n/uk.js +29 -115
  26. package/dist/cjs/i18n/vi.js +29 -115
  27. package/dist/cjs/i18n/zh.js +30 -116
  28. package/dist/cjs/i18n/zh_TW.js +29 -115
  29. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +12 -12
  30. package/dist/cjs/state/hooks-external/useSmartLinkActions.js +2 -1
  31. package/dist/cjs/utils/analytics/analytics.js +8 -4
  32. package/dist/cjs/version.json +1 -1
  33. package/dist/cjs/view/CardWithUrl/component-lazy/LazyFallback.js +4 -2
  34. package/dist/cjs/view/CardWithUrl/loader.js +4 -2
  35. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +3 -2
  36. package/dist/cjs/view/HoverCard/components/hover-card-content.js +125 -0
  37. package/dist/cjs/view/HoverCard/index.js +22 -89
  38. package/dist/cjs/view/HoverCard/utils.js +3 -1
  39. package/dist/cjs/view/LinkView/index.js +1 -1
  40. package/dist/es2019/extractors/block/index.js +2 -1
  41. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +2 -2
  42. package/dist/es2019/i18n/cs.js +29 -115
  43. package/dist/es2019/i18n/da.js +31 -116
  44. package/dist/es2019/i18n/de.js +30 -116
  45. package/dist/es2019/i18n/en.js +29 -115
  46. package/dist/es2019/i18n/en_GB.js +29 -115
  47. package/dist/es2019/i18n/en_ZZ.js +10 -129
  48. package/dist/es2019/i18n/es.js +29 -115
  49. package/dist/es2019/i18n/fi.js +29 -115
  50. package/dist/es2019/i18n/fr.js +30 -116
  51. package/dist/es2019/i18n/hu.js +30 -116
  52. package/dist/es2019/i18n/it.js +29 -115
  53. package/dist/es2019/i18n/ja.js +29 -115
  54. package/dist/es2019/i18n/ko.js +29 -115
  55. package/dist/es2019/i18n/nb.js +30 -116
  56. package/dist/es2019/i18n/nl.js +29 -115
  57. package/dist/es2019/i18n/pl.js +30 -116
  58. package/dist/es2019/i18n/pt_BR.js +29 -115
  59. package/dist/es2019/i18n/ru.js +30 -116
  60. package/dist/es2019/i18n/sv.js +29 -115
  61. package/dist/es2019/i18n/th.js +29 -115
  62. package/dist/es2019/i18n/tr.js +30 -116
  63. package/dist/es2019/i18n/uk.js +29 -115
  64. package/dist/es2019/i18n/vi.js +29 -115
  65. package/dist/es2019/i18n/zh.js +30 -116
  66. package/dist/es2019/i18n/zh_TW.js +29 -115
  67. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +4 -4
  68. package/dist/es2019/state/hooks-external/useSmartLinkActions.js +2 -1
  69. package/dist/es2019/utils/analytics/analytics.js +8 -4
  70. package/dist/es2019/version.json +1 -1
  71. package/dist/es2019/view/CardWithUrl/component-lazy/LazyFallback.js +13 -9
  72. package/dist/es2019/view/CardWithUrl/loader.js +4 -2
  73. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +3 -2
  74. package/dist/es2019/view/HoverCard/components/hover-card-content.js +85 -0
  75. package/dist/es2019/view/HoverCard/index.js +23 -78
  76. package/dist/es2019/view/HoverCard/utils.js +1 -0
  77. package/dist/es2019/view/LinkView/index.js +1 -1
  78. package/dist/esm/extractors/block/index.js +2 -1
  79. package/dist/esm/extractors/common/actions/extractPreviewAction.js +2 -1
  80. package/dist/esm/i18n/cs.js +29 -115
  81. package/dist/esm/i18n/da.js +31 -116
  82. package/dist/esm/i18n/de.js +30 -116
  83. package/dist/esm/i18n/en.js +29 -115
  84. package/dist/esm/i18n/en_GB.js +29 -115
  85. package/dist/esm/i18n/en_ZZ.js +10 -129
  86. package/dist/esm/i18n/es.js +29 -115
  87. package/dist/esm/i18n/fi.js +29 -115
  88. package/dist/esm/i18n/fr.js +30 -116
  89. package/dist/esm/i18n/hu.js +30 -116
  90. package/dist/esm/i18n/it.js +29 -115
  91. package/dist/esm/i18n/ja.js +29 -115
  92. package/dist/esm/i18n/ko.js +29 -115
  93. package/dist/esm/i18n/nb.js +30 -116
  94. package/dist/esm/i18n/nl.js +29 -115
  95. package/dist/esm/i18n/pl.js +30 -116
  96. package/dist/esm/i18n/pt_BR.js +29 -115
  97. package/dist/esm/i18n/ru.js +30 -116
  98. package/dist/esm/i18n/sv.js +29 -115
  99. package/dist/esm/i18n/th.js +29 -115
  100. package/dist/esm/i18n/tr.js +30 -116
  101. package/dist/esm/i18n/uk.js +29 -115
  102. package/dist/esm/i18n/vi.js +29 -115
  103. package/dist/esm/i18n/zh.js +30 -116
  104. package/dist/esm/i18n/zh_TW.js +29 -115
  105. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +12 -12
  106. package/dist/esm/state/hooks-external/useSmartLinkActions.js +2 -1
  107. package/dist/esm/utils/analytics/analytics.js +8 -4
  108. package/dist/esm/version.json +1 -1
  109. package/dist/esm/view/CardWithUrl/component-lazy/LazyFallback.js +4 -2
  110. package/dist/esm/view/CardWithUrl/loader.js +4 -2
  111. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +3 -2
  112. package/dist/esm/view/HoverCard/components/hover-card-content.js +99 -0
  113. package/dist/esm/view/HoverCard/index.js +25 -87
  114. package/dist/esm/view/HoverCard/utils.js +1 -0
  115. package/dist/esm/view/LinkView/index.js +1 -1
  116. package/dist/types/extractors/block/types.d.ts +2 -0
  117. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +2 -1
  118. package/dist/types/i18n/cs.d.ts +28 -114
  119. package/dist/types/i18n/da.d.ts +28 -113
  120. package/dist/types/i18n/de.d.ts +28 -114
  121. package/dist/types/i18n/en.d.ts +28 -114
  122. package/dist/types/i18n/en_GB.d.ts +28 -114
  123. package/dist/types/i18n/en_ZZ.d.ts +9 -128
  124. package/dist/types/i18n/es.d.ts +28 -114
  125. package/dist/types/i18n/fi.d.ts +28 -114
  126. package/dist/types/i18n/fr.d.ts +28 -114
  127. package/dist/types/i18n/hu.d.ts +28 -114
  128. package/dist/types/i18n/it.d.ts +28 -114
  129. package/dist/types/i18n/ja.d.ts +28 -114
  130. package/dist/types/i18n/ko.d.ts +28 -114
  131. package/dist/types/i18n/nb.d.ts +28 -114
  132. package/dist/types/i18n/nl.d.ts +28 -114
  133. package/dist/types/i18n/pl.d.ts +28 -114
  134. package/dist/types/i18n/pt_BR.d.ts +28 -114
  135. package/dist/types/i18n/ru.d.ts +28 -114
  136. package/dist/types/i18n/sv.d.ts +28 -114
  137. package/dist/types/i18n/th.d.ts +28 -114
  138. package/dist/types/i18n/tr.d.ts +28 -114
  139. package/dist/types/i18n/uk.d.ts +28 -114
  140. package/dist/types/i18n/vi.d.ts +28 -114
  141. package/dist/types/i18n/zh.d.ts +28 -114
  142. package/dist/types/i18n/zh_TW.d.ts +28 -114
  143. package/dist/types/state/actions/index.d.ts +2 -1
  144. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +2 -2
  145. package/dist/types/state/hooks/useSmartLink.d.ts +3 -3
  146. package/dist/types/state/hooks-external/useSmartLinkActions.d.ts +2 -2
  147. package/dist/types/utils/analytics/analytics.d.ts +4 -4
  148. package/dist/types/view/Card/index.d.ts +1 -1
  149. package/dist/types/view/Card/types.d.ts +1 -0
  150. package/dist/types/view/CardWithUrl/types.d.ts +1 -0
  151. package/dist/types/view/FlexibleCard/components/elements/date-time/types.d.ts +4 -0
  152. package/dist/types/view/HoverCard/components/hover-card-content.d.ts +4 -0
  153. package/dist/types/view/HoverCard/types.d.ts +12 -0
  154. package/dist/types/view/HoverCard/utils.d.ts +1 -0
  155. package/dist/types/view/LinkView/index.d.ts +4 -1
  156. package/package.json +1 -1
@@ -205,13 +205,14 @@ export var uiCardClickedEvent = function uiCardClickedEvent(id, display, status,
205
205
  })
206
206
  };
207
207
  };
208
- export var uiActionClickedEvent = function uiActionClickedEvent(actionType, extensionKey, display) {
208
+ export var uiActionClickedEvent = function uiActionClickedEvent(id, actionType, extensionKey, display) {
209
209
  return {
210
210
  action: 'clicked',
211
211
  actionSubject: 'button',
212
212
  actionSubjectId: uiActionSubjectIds[actionType],
213
213
  eventType: 'ui',
214
214
  attributes: _objectSpread(_objectSpread({}, context), {}, {
215
+ id: id,
215
216
  display: display,
216
217
  extensionKey: extensionKey || '',
217
218
  actionType: actionType
@@ -265,12 +266,13 @@ export var uiRenderFailedEvent = function uiRenderFailedEvent(display, error, er
265
266
  }
266
267
  };
267
268
  };
268
- export var uiHoverCardViewedEvent = function uiHoverCardViewedEvent(previewDisplay, definitionId, extensionKey, previewInvokeMethod) {
269
+ export var uiHoverCardViewedEvent = function uiHoverCardViewedEvent(id, previewDisplay, definitionId, extensionKey, previewInvokeMethod) {
269
270
  return {
270
271
  action: 'viewed',
271
272
  actionSubject: 'hoverCard',
272
273
  eventType: 'ui',
273
274
  attributes: _objectSpread(_objectSpread({}, context), {}, {
275
+ id: id,
274
276
  definitionId: definitionId || '',
275
277
  extensionKey: extensionKey || '',
276
278
  previewDisplay: previewDisplay,
@@ -278,12 +280,13 @@ export var uiHoverCardViewedEvent = function uiHoverCardViewedEvent(previewDispl
278
280
  })
279
281
  };
280
282
  };
281
- export var uiHoverCardDismissedEvent = function uiHoverCardDismissedEvent(previewDisplay, hoverTime, definitionId, extensionKey, previewInvokeMethod) {
283
+ export var uiHoverCardDismissedEvent = function uiHoverCardDismissedEvent(id, previewDisplay, hoverTime, definitionId, extensionKey, previewInvokeMethod) {
282
284
  return {
283
285
  action: 'dismissed',
284
286
  actionSubject: 'hoverCard',
285
287
  eventType: 'ui',
286
288
  attributes: _objectSpread(_objectSpread({}, context), {}, {
289
+ id: id,
287
290
  definitionId: definitionId || '',
288
291
  extensionKey: extensionKey || '',
289
292
  hoverTime: hoverTime,
@@ -292,13 +295,14 @@ export var uiHoverCardDismissedEvent = function uiHoverCardDismissedEvent(previe
292
295
  })
293
296
  };
294
297
  };
295
- export var uiHoverCardOpenLinkClickedEvent = function uiHoverCardOpenLinkClickedEvent(previewDisplay, definitionId, extensionKey, previewInvokeMethod) {
298
+ export var uiHoverCardOpenLinkClickedEvent = function uiHoverCardOpenLinkClickedEvent(id, previewDisplay, definitionId, extensionKey, previewInvokeMethod) {
296
299
  return {
297
300
  action: 'clicked',
298
301
  actionSubject: 'button',
299
302
  actionSubjectId: 'shortcutGoToLink',
300
303
  eventType: 'ui',
301
304
  attributes: _objectSpread(_objectSpread({}, context), {}, {
305
+ id: id,
302
306
  definitionId: definitionId || '',
303
307
  extensionKey: extensionKey || '',
304
308
  previewDisplay: previewDisplay,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "19.1.15",
3
+ "version": "19.1.18",
4
4
  "sideEffects": false
5
5
  }
@@ -3,13 +3,15 @@ import { CardLinkView } from '../../../view/LinkView';
3
3
  export var loadingPlaceholderClassName = 'smart-link-loading-placeholder';
4
4
  export var LoadingCardLink = function LoadingCardLink(_ref) {
5
5
  var isSelected = _ref.isSelected,
6
- url = _ref.url;
6
+ url = _ref.url,
7
+ placeholder = _ref.placeholder;
7
8
  return /*#__PURE__*/React.createElement(CardLinkView, {
8
9
  key: 'lazy-render-key',
9
10
  testId: 'lazy-render-placeholder',
10
11
  "data-trello-do-not-use-override": "lazy-render-placeholder-trello",
11
12
  isSelected: isSelected,
12
13
  link: url,
13
- className: loadingPlaceholderClassName
14
+ className: loadingPlaceholderClassName,
15
+ placeholder: placeholder
14
16
  });
15
17
  };
@@ -42,7 +42,8 @@ export function CardWithURLRenderer(props) {
42
42
  children = props.children,
43
43
  ui = props.ui,
44
44
  showHoverPreview = props.showHoverPreview,
45
- analyticsEvents = props.analyticsEvents; // Wrapper around analytics.
45
+ analyticsEvents = props.analyticsEvents,
46
+ placeholder = props.placeholder; // Wrapper around analytics.
46
47
 
47
48
  var dispatchAnalytics = useCallback(function (analyticsPayload) {
48
49
  if (analyticsPayload && analyticsPayload.attributes) {
@@ -100,7 +101,8 @@ export function CardWithURLRenderer(props) {
100
101
  inlinePreloaderStyle: inlinePreloaderStyle,
101
102
  ui: ui,
102
103
  showHoverPreview: showHoverPreview,
103
- analyticsEvents: analyticsEvents
104
+ analyticsEvents: analyticsEvents,
105
+ placeholder: placeholder
104
106
  };
105
107
  return /*#__PURE__*/React.createElement(ErrorBoundary, {
106
108
  FallbackComponent: ErrorFallback,
@@ -35,7 +35,8 @@ var DateTime = function DateTime(_ref) {
35
35
  overrideCss = _ref.overrideCss,
36
36
  type = _ref.type,
37
37
  _ref$testId = _ref.testId,
38
- testId = _ref$testId === void 0 ? 'smart-element-date-time' : _ref$testId;
38
+ testId = _ref$testId === void 0 ? 'smart-element-date-time' : _ref$testId,
39
+ text = _ref.text;
39
40
 
40
41
  var _useIntl = useIntl(),
41
42
  formatRelativeTime = _useIntl.formatRelativeTime,
@@ -72,7 +73,7 @@ var DateTime = function DateTime(_ref) {
72
73
  "data-separator": true,
73
74
  "data-smart-element-date-time": true,
74
75
  "data-testid": testId
75
- }, jsx(FormattedMessage, _extends({}, typeToDescriptorMap[type][typeVariant], {
76
+ }, text ? "".concat(text, " ").concat(context) : jsx(FormattedMessage, _extends({}, typeToDescriptorMap[type][typeVariant], {
76
77
  values: {
77
78
  context: context
78
79
  }
@@ -0,0 +1,99 @@
1
+ import React, { useCallback, useEffect, useMemo } from 'react';
2
+ import { extractMetadata } from '../../../extractors/hover/extractMetadata';
3
+ import { getSimulatedMetadata, HOVER_CARD_ANALYTICS_DISPLAY } from '../utils';
4
+ import extractPreview from '../../../extractors/flexible/extract-preview';
5
+ import { ActionName, SmartLinkSize, SmartLinkTheme } from '../../../constants';
6
+ import FlexibleCard from '../../FlexibleCard';
7
+ import { FooterBlock, MetadataBlock, PreviewBlock, SnippetBlock, TitleBlock } from '../../FlexibleCard/components/blocks';
8
+ import { isSpecialEvent } from '../../../utils';
9
+ import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
10
+ import { getExtensionKey } from '../../../state/helpers';
11
+ var flexibleUiOptions = {
12
+ hideElevation: true,
13
+ size: SmartLinkSize.Large,
14
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
15
+ theme: SmartLinkTheme.Black
16
+ };
17
+
18
+ var getOpenAction = function getOpenAction(url, analytics) {
19
+ return {
20
+ name: ActionName.CustomAction,
21
+ icon: /*#__PURE__*/React.createElement(ShortcutIcon, {
22
+ label: "open in new tab",
23
+ size: "medium"
24
+ }),
25
+ iconPosition: 'before',
26
+ onClick: function onClick() {
27
+ window.open(url, '_blank');
28
+ analytics.ui.hoverCardOpenLinkClickedEvent('card');
29
+ },
30
+ testId: 'hover-card-open-button'
31
+ };
32
+ };
33
+
34
+ var toFooterActions = function toFooterActions(cardActions) {
35
+ return cardActions.map(function (action) {
36
+ return {
37
+ content: action.text,
38
+ name: ActionName.CustomAction,
39
+ onClick: function onClick() {
40
+ return action.invoke();
41
+ },
42
+ testId: action.id
43
+ };
44
+ });
45
+ };
46
+
47
+ var HoverCardContent = function HoverCardContent(_ref) {
48
+ var _cardState$details;
49
+
50
+ var analytics = _ref.analytics,
51
+ _ref$cardActions = _ref.cardActions,
52
+ cardActions = _ref$cardActions === void 0 ? [] : _ref$cardActions,
53
+ cardState = _ref.cardState,
54
+ onResolve = _ref.onResolve,
55
+ renderers = _ref.renderers,
56
+ url = _ref.url;
57
+ useEffect(function () {
58
+ // Since hover preview only render on resolved status,
59
+ // there is no need to check for statuses.
60
+ analytics.ui.renderSuccessEvent(HOVER_CARD_ANALYTICS_DISPLAY, cardState.status);
61
+ }, [analytics.ui, cardState.status]);
62
+ var extensionKey = useMemo(function () {
63
+ return getExtensionKey(cardState.details);
64
+ }, [cardState.details]);
65
+ var onClick = useCallback(function (event) {
66
+ var isModifierKeyPressed = isSpecialEvent(event);
67
+ analytics.ui.cardClickedEvent(undefined, HOVER_CARD_ANALYTICS_DISPLAY, cardState.status, undefined, undefined, isModifierKeyPressed);
68
+ }, [cardState.status, analytics.ui]);
69
+ var titleActions = useMemo(function () {
70
+ return [getOpenAction(url, analytics)];
71
+ }, [url, analytics]);
72
+ var footerActions = useMemo(function () {
73
+ return toFooterActions(cardActions);
74
+ }, [cardActions]); //TODO: EDM-3224 deleted simulated and use real JsonLd
75
+
76
+ var _extractMetadata = extractMetadata(getSimulatedMetadata(extensionKey)),
77
+ primary = _extractMetadata.primary,
78
+ secondary = _extractMetadata.secondary;
79
+
80
+ var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
81
+ var body = data && extractPreview(data) ? /*#__PURE__*/React.createElement(PreviewBlock, null) : /*#__PURE__*/React.createElement(SnippetBlock, null);
82
+ return /*#__PURE__*/React.createElement(FlexibleCard, {
83
+ cardState: cardState,
84
+ onClick: onClick,
85
+ onResolve: onResolve,
86
+ renderers: renderers,
87
+ ui: flexibleUiOptions,
88
+ url: url
89
+ }, /*#__PURE__*/React.createElement(TitleBlock, {
90
+ actions: titleActions
91
+ }), /*#__PURE__*/React.createElement(MetadataBlock, {
92
+ primary: primary,
93
+ secondary: secondary
94
+ }), body, /*#__PURE__*/React.createElement(FooterBlock, {
95
+ actions: footerActions
96
+ }));
97
+ };
98
+
99
+ export default HoverCardContent;
@@ -3,22 +3,17 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
 
4
4
  /** @jsx jsx */
5
5
  import { jsx } from '@emotion/core';
6
- import React, { useCallback, useRef, useMemo } from 'react';
7
- import { TitleBlock, SnippetBlock, FooterBlock, MetadataBlock, PreviewBlock } from '../FlexibleCard/components/blocks';
8
- import { Card } from '../Card';
6
+ import React, { useCallback, useRef } from 'react';
9
7
  import Popup from '@atlaskit/popup';
10
- import { SmartLinkSize, ActionName, SmartLinkTheme } from '../../constants';
11
8
  import { useSmartLinkActions } from '../../state/hooks-external/useSmartLinkActions';
12
9
  import { HoverCardContainer } from './styled';
13
- import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
14
- import { withAnalyticsEvents, withAnalyticsContext } from '@atlaskit/analytics-next';
10
+ import { withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
15
11
  import { fireSmartLinkEvent } from '../../utils/analytics';
16
12
  import { useSmartCardState as useLinkState } from '../../state/store';
17
13
  import { useSmartLinkAnalytics } from '../../state/analytics';
18
- import { getExtensionKey, getDefinitionId } from '../../state/helpers';
19
- import { extractMetadata } from '../../extractors/hover/extractMetadata';
20
- import { getSimulatedMetadata } from './utils';
21
- import extractPreview from '../../extractors/flexible/extract-preview';
14
+ import { useSmartLinkRenderers } from '../../state/renderers';
15
+ import HoverCardContent from './components/hover-card-content';
16
+ import { HOVER_CARD_ANALYTICS_DISPLAY } from './utils';
22
17
  export var HoverCardComponent = function HoverCardComponent(_ref) {
23
18
  var children = _ref.children,
24
19
  id = _ref.id,
@@ -37,14 +32,9 @@ export var HoverCardComponent = function HoverCardComponent(_ref) {
37
32
  var fadeOutTimeoutId = useRef();
38
33
  var fadeInTimeoutId = useRef();
39
34
  var cardOpenTime = useRef();
35
+ var renderers = useSmartLinkRenderers();
40
36
  var linkState = useLinkState(url);
41
37
  var analytics = useSmartLinkAnalytics(url, analyticsHandler, id);
42
- var extensionKey = useMemo(function () {
43
- return getExtensionKey(linkState.details);
44
- }, [linkState]);
45
- var definitionId = useMemo(function () {
46
- return getDefinitionId(linkState.details);
47
- }, [linkState]);
48
38
  var initHideCard = useCallback(function () {
49
39
  if (fadeInTimeoutId.current) {
50
40
  clearTimeout(fadeInTimeoutId.current);
@@ -54,12 +44,12 @@ export var HoverCardComponent = function HoverCardComponent(_ref) {
54
44
  //Check its previously open to avoid firing events when moving between the child and hover card components
55
45
  if (isOpen === true && cardOpenTime.current) {
56
46
  var hoverTime = Date.now() - cardOpenTime.current;
57
- analytics.ui.hoverCardDismissedEvent('card', hoverTime, definitionId, extensionKey, 'mouse_hover');
47
+ analytics.ui.hoverCardDismissedEvent('card', hoverTime, 'mouse_hover');
58
48
  }
59
49
 
60
50
  setIsOpen(false);
61
51
  }, delay);
62
- }, [delay, isOpen, definitionId, extensionKey, analytics]);
52
+ }, [delay, isOpen, analytics.ui]);
63
53
  var initShowCard = useCallback(function () {
64
54
  if (fadeOutTimeoutId.current) {
65
55
  clearTimeout(fadeOutTimeoutId.current);
@@ -69,78 +59,17 @@ export var HoverCardComponent = function HoverCardComponent(_ref) {
69
59
  //Check if its previously closed to avoid firing events when moving between the child and hover card components
70
60
  if (isOpen === false) {
71
61
  cardOpenTime.current = Date.now();
72
- analytics.ui.hoverCardViewedEvent('card', definitionId, extensionKey, 'mouse_hover');
62
+ analytics.ui.hoverCardViewedEvent('card', 'mouse_hover');
73
63
  }
74
64
 
75
65
  setIsOpen(true);
76
66
  }, delay);
77
- }, [delay, isOpen, definitionId, extensionKey, analytics]);
67
+ }, [delay, isOpen, analytics.ui]);
78
68
  var linkActions = useSmartLinkActions({
79
69
  url: url,
80
- appearance: 'block',
70
+ appearance: HOVER_CARD_ANALYTICS_DISPLAY,
81
71
  analyticsHandler: analyticsHandler
82
72
  });
83
- var smartlinkActions = useMemo(function () {
84
- return linkActions.map(function (action) {
85
- return {
86
- content: action.text,
87
- name: ActionName.CustomAction,
88
- onClick: function onClick() {
89
- return action.invoke();
90
- },
91
- testId: action.id
92
- };
93
- });
94
- }, [linkActions]);
95
- var openAction = useMemo(function () {
96
- return {
97
- name: ActionName.CustomAction,
98
- icon: jsx(ShortcutIcon, {
99
- label: "open in new tab",
100
- size: "medium"
101
- }),
102
- iconPosition: 'before',
103
- onClick: function onClick() {
104
- window.open(url, '_blank');
105
- analytics.ui.hoverCardOpenLinkClickedEvent('card', definitionId, extensionKey);
106
- },
107
- testId: 'hover-card-open-button'
108
- };
109
- }, [url, definitionId, extensionKey, analytics]);
110
-
111
- var CardComponent = function CardComponent(_ref2) {
112
- var _linkState$details;
113
-
114
- var update = _ref2.update;
115
- //TODO: EDM-3224 deleted simulated and use real JsonLd
116
- var metadataElements = extractMetadata(getSimulatedMetadata(extensionKey));
117
- var linkData = (_linkState$details = linkState.details) === null || _linkState$details === void 0 ? void 0 : _linkState$details.data;
118
- var content = extractPreview(linkData) ? jsx(PreviewBlock, null) : jsx(SnippetBlock, null);
119
- return jsx("div", {
120
- onMouseEnter: initShowCard,
121
- onMouseLeave: initHideCard,
122
- css: HoverCardContainer
123
- }, jsx(Card, {
124
- id: id,
125
- appearance: "block",
126
- url: url,
127
- ui: {
128
- hideElevation: true,
129
- size: SmartLinkSize.Large,
130
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
131
- theme: SmartLinkTheme.Black
132
- },
133
- onResolve: update
134
- }, jsx(TitleBlock, {
135
- actions: [openAction]
136
- }), jsx(MetadataBlock, {
137
- primary: metadataElements.primary,
138
- secondary: metadataElements.secondary
139
- }), content, jsx(FooterBlock, {
140
- actions: smartlinkActions
141
- })));
142
- };
143
-
144
73
  var onClose = useCallback(function () {
145
74
  return setIsOpen(false);
146
75
  }, []);
@@ -149,11 +78,20 @@ export var HoverCardComponent = function HoverCardComponent(_ref) {
149
78
  isOpen: isOpen,
150
79
  onClose: onClose,
151
80
  placement: "bottom-start",
152
- content: function content(_ref3) {
153
- var update = _ref3.update;
154
- return jsx(CardComponent, {
155
- update: update
156
- });
81
+ content: function content(_ref2) {
82
+ var update = _ref2.update;
83
+ return jsx("div", {
84
+ onMouseEnter: initShowCard,
85
+ onMouseLeave: initHideCard,
86
+ css: HoverCardContainer
87
+ }, jsx(HoverCardContent, {
88
+ analytics: analytics,
89
+ cardActions: linkActions,
90
+ cardState: linkState,
91
+ onResolve: update,
92
+ renderers: renderers,
93
+ url: url
94
+ }));
157
95
  },
158
96
  trigger: function trigger(triggerProps) {
159
97
  return jsx("span", _extends({}, triggerProps, {
@@ -1,3 +1,4 @@
1
+ export var HOVER_CARD_ANALYTICS_DISPLAY = 'flexible';
1
2
  export var getSimulatedMetadata = function getSimulatedMetadata() {
2
3
  var extensionKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
3
4
 
@@ -27,7 +27,7 @@ export var CardLinkView = /*#__PURE__*/function (_React$PureComponent) {
27
27
  value: function render() {
28
28
  return /*#__PURE__*/React.createElement(Frame, _extends({
29
29
  withoutBackground: true
30
- }, this.props), this.props.link);
30
+ }, this.props), this.props.placeholder || this.props.link);
31
31
  }
32
32
  }]);
33
33
 
@@ -1,8 +1,10 @@
1
1
  import { InvokeHandler } from '../../model/invoke-handler';
2
2
  import { AnalyticsHandler } from '../../utils/types';
3
+ import { CardInnerAppearance } from '../../view/Card/types';
3
4
  export interface ExtractBlockOpts {
4
5
  handleInvoke: InvokeHandler;
5
6
  handleAnalytics: AnalyticsHandler;
6
7
  extensionKey?: string;
8
+ source?: CardInnerAppearance;
7
9
  testId?: string;
8
10
  }
@@ -1,5 +1,6 @@
1
1
  import { JsonLd } from 'json-ld-types';
2
2
  import { InvokeHandler } from '../../../model/invoke-handler';
3
+ import { CardInnerAppearance } from '../../../view/Card/types';
3
4
  import { AnalyticsHandler } from '../../../utils/types';
4
5
  import { BlockCardResolvedViewProps } from '../../../view/BlockCard';
5
- export declare const extractPreviewAction: (extensionKey: string | undefined, viewProps: BlockCardResolvedViewProps, jsonLd: JsonLd.Data.BaseData, handleInvoke: InvokeHandler, handleAnalytics: AnalyticsHandler, testId?: string | undefined, platform?: JsonLd.Primitives.Platforms | undefined) => import("../../../view/BlockCard/components/Action").ActionProps | undefined;
6
+ export declare const extractPreviewAction: (extensionKey: string | undefined, viewProps: BlockCardResolvedViewProps, jsonLd: JsonLd.Data.BaseData, handleInvoke: InvokeHandler, handleAnalytics: AnalyticsHandler, testId?: string | undefined, platform?: JsonLd.Primitives.Platforms | undefined, source?: CardInnerAppearance | undefined) => import("../../../view/BlockCard/components/Action").ActionProps | undefined;
@@ -1,152 +1,66 @@
1
1
  declare const _default: {
2
- 'fabric.linking.cannot_connect': string;
3
- 'fabric.linking.cannot_find_link': string;
4
- 'fabric.linking.join_to_view': string;
5
- 'fabric.linking.create_on': string;
6
- 'fabric.linking.created_by': string;
7
- 'fabric.linking.delete': string;
8
- 'fabric.linking.edit': string;
9
- 'fabric.linking.forbidden_access': string;
10
- 'fabric.linking.restricted_link': string;
11
- 'fabric.linking.modified_on': string;
12
- 'fabric.linking.pending_request': string;
13
- 'fabric.linking.priority_blocker': string;
14
- 'fabric.linking.priority_critical': string;
15
- 'fabric.linking.priority_high': string;
16
- 'fabric.linking.priority_highest': string;
17
- 'fabric.linking.priority_low': string;
18
- 'fabric.linking.priority_lowest': string;
19
- 'fabric.linking.priority_major': string;
20
- 'fabric.linking.priority_medium': string;
21
- 'fabric.linking.priority_minor': string;
22
- 'fabric.linking.priority_trivial': string;
23
- 'fabric.linking.priority_undefined': string;
24
- 'fabric.linking.request_access_to_view': string;
25
- 'fabric.linking.request_denied': string;
26
- 'fabric.linking.updated_by': string;
27
- 'fabric.linking.accounts': string;
28
2
  'fabric.linking.actions': string;
29
3
  'fabric.linking.add_account': string;
30
- 'fabric.linking.annotate': string;
31
- 'fabric.linking.annotate.confirmation.close.anyway': string;
32
- 'fabric.linking.annotate.confirmation.content': string;
33
- 'fabric.linking.annotate.confirmation.heading': string;
34
- 'fabric.linking.annotate.tool.arrow': string;
35
- 'fabric.linking.annotate.tool.blur': string;
36
- 'fabric.linking.annotate.tool.brush': string;
37
- 'fabric.linking.annotate.tool.color': string;
38
- 'fabric.linking.annotate.tool.line.thickness': string;
39
- 'fabric.linking.annotate.tool.shape': string;
40
- 'fabric.linking.annotate.tool.text': string;
41
- 'fabric.linking.archive': string;
42
- 'fabric.linking.audio': string;
43
4
  'fabric.linking.cancel': string;
44
- 'fabric.linking.cant_preview_file_type': string;
45
- 'fabric.linking.cant_retrieve_files': string;
46
- 'fabric.linking.cant_retrieve_gifs': string;
47
- 'fabric.linking.change_view': string;
48
- 'fabric.linking.check_your_network': string;
5
+ 'fabric.linking.cannot_connect': string;
6
+ 'fabric.linking.cannot_find_link': string;
49
7
  'fabric.linking.click_to_join': string;
50
8
  'fabric.linking.click_to_join_description': string;
51
9
  'fabric.linking.close': string;
52
- 'fabric.linking.close_and_reopen': string;
53
10
  'fabric.linking.connect_account_description': string;
54
11
  'fabric.linking.connect_link_account': string;
55
12
  'fabric.linking.connect_link_account_card_view': string;
56
13
  'fabric.linking.connect_link_account_card_view_description': string;
57
14
  'fabric.linking.connect_link_account_card_view_name': string;
58
15
  'fabric.linking.connect_to': string;
59
- 'fabric.linking.could_not_load_editor': string;
60
- 'fabric.linking.could_not_save_image': string;
61
- 'fabric.linking.couldnt_generate_encrypted_entry_preview': string;
62
- 'fabric.linking.couldnt_generate_preview': string;
63
- 'fabric.linking.couldnt_load_file': string;
64
16
  'fabric.linking.couldnt_load_link': string;
65
- 'fabric.linking.creating_preview': string;
66
- 'fabric.linking.default_avatars': string;
67
- 'fabric.linking.disable_fullscreen': string;
68
- 'fabric.linking.display_thumbnail': string;
69
- 'fabric.linking.document': string;
17
+ 'fabric.linking.create_on_absolute': string;
18
+ 'fabric.linking.create_on_relative': string;
19
+ 'fabric.linking.created_by': string;
20
+ 'fabric.linking.delete': string;
70
21
  'fabric.linking.download': string;
71
- 'fabric.linking.drag_and_drop_images_here': string;
72
- 'fabric.linking.drag_and_drop_your_files': string;
73
- 'fabric.linking.drag_and_drop_your_files_and_folders': string;
74
- 'fabric.linking.drop_your_files': string;
75
- 'fabric.linking.drop_your_files_here': string;
76
- 'fabric.linking.email': string;
77
- 'fabric.linking.enable_fullscreen': string;
78
- 'fabric.linking.error_429': string;
79
- 'fabric.linking.error_generating_preview': string;
80
- 'fabric.linking.error_hint_critical': string;
81
- 'fabric.linking.error_hint_retry': string;
82
- 'fabric.linking.error_loading_file': string;
83
- 'fabric.linking.failed_to_load': string;
84
- 'fabric.linking.failed_to_upload': string;
22
+ 'fabric.linking.edit': string;
23
+ 'fabric.linking.forbidden_access': string;
85
24
  'fabric.linking.forbidden_description': string;
86
- 'fabric.linking.give_feedback': string;
87
- 'fabric.linking.image': string;
88
- 'fabric.linking.image_format_invalid_error': string;
89
- 'fabric.linking.image_size_too_large_error': string;
90
- 'fabric.linking.image_url_invalid_error': string;
91
- 'fabric.linking.insert_files': string;
92
25
  'fabric.linking.invalid_permissions': string;
93
26
  'fabric.linking.invalid_permissions_description': string;
94
- 'fabric.linking.item_not_found_in_list': string;
95
- 'fabric.linking.learn_more': string;
96
- 'fabric.linking.load_more_gifs': string;
27
+ 'fabric.linking.join_to_view': string;
97
28
  'fabric.linking.loading': string;
98
- 'fabric.linking.loading_file': string;
99
- 'fabric.linking.might_be_a_hiccup': string;
100
- 'fabric.linking.no_gifs_found': string;
101
- 'fabric.linking.no_gifs_found_suggestion': string;
102
- 'fabric.linking.no_pdf_artifacts': string;
29
+ 'fabric.linking.modified_on_absolute': string;
30
+ 'fabric.linking.modified_on_relative': string;
31
+ 'fabric.linking.more_actions': string;
103
32
  'fabric.linking.not_found_description': string;
104
33
  'fabric.linking.not_found_title': string;
105
- 'fabric.linking.or': string;
106
- 'fabric.linking.pause': string;
107
- 'fabric.linking.play': string;
108
- 'fabric.linking.playback_default_speed': string;
109
- 'fabric.linking.playback_speed': string;
34
+ 'fabric.linking.pending_request': string;
110
35
  'fabric.linking.preview': string;
111
- 'fabric.linking.preview_currently_unavailable': string;
112
- 'fabric.linking.preview_unavailable': string;
113
- 'fabric.linking.recent_uploads': string;
114
- 'fabric.linking.remove_image': string;
36
+ 'fabric.linking.priority_blocker': string;
37
+ 'fabric.linking.priority_critical': string;
38
+ 'fabric.linking.priority_high': string;
39
+ 'fabric.linking.priority_highest': string;
40
+ 'fabric.linking.priority_low': string;
41
+ 'fabric.linking.priority_lowest': string;
42
+ 'fabric.linking.priority_major': string;
43
+ 'fabric.linking.priority_medium': string;
44
+ 'fabric.linking.priority_minor': string;
45
+ 'fabric.linking.priority_trivial': string;
46
+ 'fabric.linking.priority_undefined': string;
115
47
  'fabric.linking.request_access': string;
116
48
  'fabric.linking.request_access_description': string;
117
49
  'fabric.linking.request_access_pending': string;
118
50
  'fabric.linking.request_access_pending_description': string;
51
+ 'fabric.linking.request_access_to_view': string;
52
+ 'fabric.linking.request_denied': string;
119
53
  'fabric.linking.request_denied_description': string;
54
+ 'fabric.linking.restricted_link': string;
120
55
  'fabric.linking.retry': string;
121
56
  'fabric.linking.save': string;
122
- 'fabric.linking.search': string;
123
- 'fabric.linking.search_all_gifs': string;
124
- 'fabric.linking.share_files_instantly': string;
125
- 'fabric.linking.skip_backward': string;
126
- 'fabric.linking.skip_forward': string;
127
- 'fabric.linking.something_went_wrong': string;
128
57
  'fabric.linking.srclink': string;
129
58
  'fabric.linking.srclinkunknown': string;
130
- 'fabric.linking.text': string;
131
59
  'fabric.linking.try_again': string;
132
60
  'fabric.linking.try_another_account': string;
133
- 'fabric.linking.try_downloading_file': string;
134
- 'fabric.linking.unable_to_annotate_image': string;
135
- 'fabric.linking.unknown': string;
136
61
  'fabric.linking.unlink_account': string;
137
- 'fabric.linking.upload': string;
138
- 'fabric.linking.upload_an_avatar': string;
139
- 'fabric.linking.upload_file': string;
140
- 'fabric.linking.upload_file_from': string;
141
- 'fabric.linking.upload_image': string;
142
- 'fabric.linking.upload_photo': string;
143
- 'fabric.linking.video': string;
62
+ 'fabric.linking.updated_by': string;
144
63
  'fabric.linking.view': string;
145
- 'fabric.linking.viewer_rateLimited': string;
146
- 'fabric.linking.webgl_warning_description': string;
147
- 'fabric.linking.zip_entry_load_failed': string;
148
- 'fabric.linking.zoom_in': string;
149
- 'fabric.linking.zoom_out': string;
150
64
  };
151
65
  /**
152
66
  * NOTE: