@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
@@ -190,12 +190,13 @@ export const uiCardClickedEvent = (id, display, status, definitionId, extensionK
190
190
  destinationProduct
191
191
  }
192
192
  });
193
- export const uiActionClickedEvent = (actionType, extensionKey, display) => ({
193
+ export const uiActionClickedEvent = (id, actionType, extensionKey, display) => ({
194
194
  action: 'clicked',
195
195
  actionSubject: 'button',
196
196
  actionSubjectId: uiActionSubjectIds[actionType],
197
197
  eventType: 'ui',
198
198
  attributes: { ...context,
199
+ id,
199
200
  display,
200
201
  extensionKey: extensionKey || '',
201
202
  actionType: actionType
@@ -240,22 +241,24 @@ export const uiRenderFailedEvent = (display, error, errorInfo) => ({
240
241
  display
241
242
  }
242
243
  });
243
- export const uiHoverCardViewedEvent = (previewDisplay, definitionId, extensionKey, previewInvokeMethod) => ({
244
+ export const uiHoverCardViewedEvent = (id, previewDisplay, definitionId, extensionKey, previewInvokeMethod) => ({
244
245
  action: 'viewed',
245
246
  actionSubject: 'hoverCard',
246
247
  eventType: 'ui',
247
248
  attributes: { ...context,
249
+ id,
248
250
  definitionId: definitionId || '',
249
251
  extensionKey: extensionKey || '',
250
252
  previewDisplay,
251
253
  previewInvokeMethod
252
254
  }
253
255
  });
254
- export const uiHoverCardDismissedEvent = (previewDisplay, hoverTime, definitionId, extensionKey, previewInvokeMethod) => ({
256
+ export const uiHoverCardDismissedEvent = (id, previewDisplay, hoverTime, definitionId, extensionKey, previewInvokeMethod) => ({
255
257
  action: 'dismissed',
256
258
  actionSubject: 'hoverCard',
257
259
  eventType: 'ui',
258
260
  attributes: { ...context,
261
+ id,
259
262
  definitionId: definitionId || '',
260
263
  extensionKey: extensionKey || '',
261
264
  hoverTime,
@@ -263,12 +266,13 @@ export const uiHoverCardDismissedEvent = (previewDisplay, hoverTime, definitionI
263
266
  previewInvokeMethod
264
267
  }
265
268
  });
266
- export const uiHoverCardOpenLinkClickedEvent = (previewDisplay, definitionId, extensionKey, previewInvokeMethod) => ({
269
+ export const uiHoverCardOpenLinkClickedEvent = (id, previewDisplay, definitionId, extensionKey, previewInvokeMethod) => ({
267
270
  action: 'clicked',
268
271
  actionSubject: 'button',
269
272
  actionSubjectId: 'shortcutGoToLink',
270
273
  eventType: 'ui',
271
274
  attributes: { ...context,
275
+ id,
272
276
  definitionId: definitionId || '',
273
277
  extensionKey: extensionKey || '',
274
278
  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,12 +3,16 @@ import { CardLinkView } from '../../../view/LinkView';
3
3
  export const loadingPlaceholderClassName = 'smart-link-loading-placeholder';
4
4
  export const LoadingCardLink = ({
5
5
  isSelected,
6
- url
7
- }) => /*#__PURE__*/React.createElement(CardLinkView, {
8
- key: 'lazy-render-key',
9
- testId: 'lazy-render-placeholder',
10
- "data-trello-do-not-use-override": "lazy-render-placeholder-trello",
11
- isSelected: isSelected,
12
- link: url,
13
- className: loadingPlaceholderClassName
14
- });
6
+ url,
7
+ placeholder
8
+ }) => {
9
+ return /*#__PURE__*/React.createElement(CardLinkView, {
10
+ key: 'lazy-render-key',
11
+ testId: 'lazy-render-placeholder',
12
+ "data-trello-do-not-use-override": "lazy-render-placeholder-trello",
13
+ isSelected: isSelected,
14
+ link: url,
15
+ className: loadingPlaceholderClassName,
16
+ placeholder: placeholder
17
+ });
18
+ };
@@ -35,7 +35,8 @@ export function CardWithURLRenderer(props) {
35
35
  children,
36
36
  ui,
37
37
  showHoverPreview,
38
- analyticsEvents
38
+ analyticsEvents,
39
+ placeholder
39
40
  } = props; // Wrapper around analytics.
40
41
 
41
42
  const dispatchAnalytics = useCallback(analyticsPayload => {
@@ -96,7 +97,8 @@ export function CardWithURLRenderer(props) {
96
97
  inlinePreloaderStyle,
97
98
  ui,
98
99
  showHoverPreview,
99
- analyticsEvents
100
+ analyticsEvents,
101
+ placeholder
100
102
  };
101
103
  return /*#__PURE__*/React.createElement(ErrorBoundary, {
102
104
  FallbackComponent: ErrorFallback,
@@ -36,7 +36,8 @@ const DateTime = ({
36
36
  date,
37
37
  overrideCss,
38
38
  type,
39
- testId = 'smart-element-date-time'
39
+ testId = 'smart-element-date-time',
40
+ text
40
41
  }) => {
41
42
  const {
42
43
  formatRelativeTime,
@@ -74,7 +75,7 @@ const DateTime = ({
74
75
  "data-separator": true,
75
76
  "data-smart-element-date-time": true,
76
77
  "data-testid": testId
77
- }, jsx(FormattedMessage, _extends({}, typeToDescriptorMap[type][typeVariant], {
78
+ }, text ? `${text} ${context}` : jsx(FormattedMessage, _extends({}, typeToDescriptorMap[type][typeVariant], {
78
79
  values: {
79
80
  context
80
81
  }
@@ -0,0 +1,85 @@
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
+ const 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
+ const getOpenAction = (url, analytics) => ({
19
+ name: ActionName.CustomAction,
20
+ icon: /*#__PURE__*/React.createElement(ShortcutIcon, {
21
+ label: "open in new tab",
22
+ size: "medium"
23
+ }),
24
+ iconPosition: 'before',
25
+ onClick: () => {
26
+ window.open(url, '_blank');
27
+ analytics.ui.hoverCardOpenLinkClickedEvent('card');
28
+ },
29
+ testId: 'hover-card-open-button'
30
+ });
31
+
32
+ const toFooterActions = cardActions => cardActions.map(action => ({
33
+ content: action.text,
34
+ name: ActionName.CustomAction,
35
+ onClick: () => action.invoke(),
36
+ testId: action.id
37
+ }));
38
+
39
+ const HoverCardContent = ({
40
+ analytics,
41
+ cardActions = [],
42
+ cardState,
43
+ onResolve,
44
+ renderers,
45
+ url
46
+ }) => {
47
+ var _cardState$details;
48
+
49
+ useEffect(() => {
50
+ // Since hover preview only render on resolved status,
51
+ // there is no need to check for statuses.
52
+ analytics.ui.renderSuccessEvent(HOVER_CARD_ANALYTICS_DISPLAY, cardState.status);
53
+ }, [analytics.ui, cardState.status]);
54
+ const extensionKey = useMemo(() => getExtensionKey(cardState.details), [cardState.details]);
55
+ const onClick = useCallback(event => {
56
+ const isModifierKeyPressed = isSpecialEvent(event);
57
+ analytics.ui.cardClickedEvent(undefined, HOVER_CARD_ANALYTICS_DISPLAY, cardState.status, undefined, undefined, isModifierKeyPressed);
58
+ }, [cardState.status, analytics.ui]);
59
+ const titleActions = useMemo(() => [getOpenAction(url, analytics)], [url, analytics]);
60
+ const footerActions = useMemo(() => toFooterActions(cardActions), [cardActions]); //TODO: EDM-3224 deleted simulated and use real JsonLd
61
+
62
+ const {
63
+ primary,
64
+ secondary
65
+ } = extractMetadata(getSimulatedMetadata(extensionKey));
66
+ const data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
67
+ const body = data && extractPreview(data) ? /*#__PURE__*/React.createElement(PreviewBlock, null) : /*#__PURE__*/React.createElement(SnippetBlock, null);
68
+ return /*#__PURE__*/React.createElement(FlexibleCard, {
69
+ cardState: cardState,
70
+ onClick: onClick,
71
+ onResolve: onResolve,
72
+ renderers: renderers,
73
+ ui: flexibleUiOptions,
74
+ url: url
75
+ }, /*#__PURE__*/React.createElement(TitleBlock, {
76
+ actions: titleActions
77
+ }), /*#__PURE__*/React.createElement(MetadataBlock, {
78
+ primary: primary,
79
+ secondary: secondary
80
+ }), body, /*#__PURE__*/React.createElement(FooterBlock, {
81
+ actions: footerActions
82
+ }));
83
+ };
84
+
85
+ export default HoverCardContent;
@@ -2,22 +2,17 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
 
3
3
  /** @jsx jsx */
4
4
  import { jsx } from '@emotion/core';
5
- import React, { useCallback, useRef, useMemo } from 'react';
6
- import { TitleBlock, SnippetBlock, FooterBlock, MetadataBlock, PreviewBlock } from '../FlexibleCard/components/blocks';
7
- import { Card } from '../Card';
5
+ import React, { useCallback, useRef } from 'react';
8
6
  import Popup from '@atlaskit/popup';
9
- import { SmartLinkSize, ActionName, SmartLinkTheme } from '../../constants';
10
7
  import { useSmartLinkActions } from '../../state/hooks-external/useSmartLinkActions';
11
8
  import { HoverCardContainer } from './styled';
12
- import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
13
- import { withAnalyticsEvents, withAnalyticsContext } from '@atlaskit/analytics-next';
9
+ import { withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
14
10
  import { fireSmartLinkEvent } from '../../utils/analytics';
15
11
  import { useSmartCardState as useLinkState } from '../../state/store';
16
12
  import { useSmartLinkAnalytics } from '../../state/analytics';
17
- import { getExtensionKey, getDefinitionId } from '../../state/helpers';
18
- import { extractMetadata } from '../../extractors/hover/extractMetadata';
19
- import { getSimulatedMetadata } from './utils';
20
- import extractPreview from '../../extractors/flexible/extract-preview';
13
+ import { useSmartLinkRenderers } from '../../state/renderers';
14
+ import HoverCardContent from './components/hover-card-content';
15
+ import { HOVER_CARD_ANALYTICS_DISPLAY } from './utils';
21
16
  export const HoverCardComponent = ({
22
17
  children,
23
18
  id,
@@ -32,10 +27,9 @@ export const HoverCardComponent = ({
32
27
  const fadeOutTimeoutId = useRef();
33
28
  const fadeInTimeoutId = useRef();
34
29
  const cardOpenTime = useRef();
30
+ const renderers = useSmartLinkRenderers();
35
31
  const linkState = useLinkState(url);
36
32
  const analytics = useSmartLinkAnalytics(url, analyticsHandler, id);
37
- const extensionKey = useMemo(() => getExtensionKey(linkState.details), [linkState]);
38
- const definitionId = useMemo(() => getDefinitionId(linkState.details), [linkState]);
39
33
  const initHideCard = useCallback(() => {
40
34
  if (fadeInTimeoutId.current) {
41
35
  clearTimeout(fadeInTimeoutId.current);
@@ -45,12 +39,12 @@ export const HoverCardComponent = ({
45
39
  //Check its previously open to avoid firing events when moving between the child and hover card components
46
40
  if (isOpen === true && cardOpenTime.current) {
47
41
  const hoverTime = Date.now() - cardOpenTime.current;
48
- analytics.ui.hoverCardDismissedEvent('card', hoverTime, definitionId, extensionKey, 'mouse_hover');
42
+ analytics.ui.hoverCardDismissedEvent('card', hoverTime, 'mouse_hover');
49
43
  }
50
44
 
51
45
  setIsOpen(false);
52
46
  }, delay);
53
- }, [delay, isOpen, definitionId, extensionKey, analytics]);
47
+ }, [delay, isOpen, analytics.ui]);
54
48
  const initShowCard = useCallback(() => {
55
49
  if (fadeOutTimeoutId.current) {
56
50
  clearTimeout(fadeOutTimeoutId.current);
@@ -60,73 +54,17 @@ export const HoverCardComponent = ({
60
54
  //Check if its previously closed to avoid firing events when moving between the child and hover card components
61
55
  if (isOpen === false) {
62
56
  cardOpenTime.current = Date.now();
63
- analytics.ui.hoverCardViewedEvent('card', definitionId, extensionKey, 'mouse_hover');
57
+ analytics.ui.hoverCardViewedEvent('card', 'mouse_hover');
64
58
  }
65
59
 
66
60
  setIsOpen(true);
67
61
  }, delay);
68
- }, [delay, isOpen, definitionId, extensionKey, analytics]);
62
+ }, [delay, isOpen, analytics.ui]);
69
63
  const linkActions = useSmartLinkActions({
70
64
  url,
71
- appearance: 'block',
65
+ appearance: HOVER_CARD_ANALYTICS_DISPLAY,
72
66
  analyticsHandler
73
67
  });
74
- const smartlinkActions = useMemo(() => linkActions.map(action => ({
75
- content: action.text,
76
- name: ActionName.CustomAction,
77
- onClick: () => action.invoke(),
78
- testId: action.id
79
- })), [linkActions]);
80
- const openAction = useMemo(() => {
81
- return {
82
- name: ActionName.CustomAction,
83
- icon: jsx(ShortcutIcon, {
84
- label: "open in new tab",
85
- size: "medium"
86
- }),
87
- iconPosition: 'before',
88
- onClick: () => {
89
- window.open(url, '_blank');
90
- analytics.ui.hoverCardOpenLinkClickedEvent('card', definitionId, extensionKey);
91
- },
92
- testId: 'hover-card-open-button'
93
- };
94
- }, [url, definitionId, extensionKey, analytics]);
95
-
96
- const CardComponent = ({
97
- update
98
- }) => {
99
- var _linkState$details;
100
-
101
- //TODO: EDM-3224 deleted simulated and use real JsonLd
102
- const metadataElements = extractMetadata(getSimulatedMetadata(extensionKey));
103
- const linkData = (_linkState$details = linkState.details) === null || _linkState$details === void 0 ? void 0 : _linkState$details.data;
104
- const content = extractPreview(linkData) ? jsx(PreviewBlock, null) : jsx(SnippetBlock, null);
105
- return jsx("div", {
106
- onMouseEnter: initShowCard,
107
- onMouseLeave: initHideCard,
108
- css: HoverCardContainer
109
- }, jsx(Card, {
110
- id: id,
111
- appearance: "block",
112
- url: url,
113
- ui: {
114
- hideElevation: true,
115
- size: SmartLinkSize.Large,
116
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
117
- theme: SmartLinkTheme.Black
118
- },
119
- onResolve: update
120
- }, jsx(TitleBlock, {
121
- actions: [openAction]
122
- }), jsx(MetadataBlock, {
123
- primary: metadataElements.primary,
124
- secondary: metadataElements.secondary
125
- }), content, jsx(FooterBlock, {
126
- actions: smartlinkActions
127
- })));
128
- };
129
-
130
68
  const onClose = useCallback(() => setIsOpen(false), []);
131
69
  return jsx(Popup, {
132
70
  testId: "hover-card",
@@ -135,11 +73,18 @@ export const HoverCardComponent = ({
135
73
  placement: "bottom-start",
136
74
  content: ({
137
75
  update
138
- }) => {
139
- return jsx(CardComponent, {
140
- update: update
141
- });
142
- },
76
+ }) => jsx("div", {
77
+ onMouseEnter: initShowCard,
78
+ onMouseLeave: initHideCard,
79
+ css: HoverCardContainer
80
+ }, jsx(HoverCardContent, {
81
+ analytics: analytics,
82
+ cardActions: linkActions,
83
+ cardState: linkState,
84
+ onResolve: update,
85
+ renderers: renderers,
86
+ url: url
87
+ })),
143
88
  trigger: triggerProps => jsx("span", _extends({}, triggerProps, {
144
89
  onMouseEnter: initShowCard,
145
90
  onMouseLeave: initHideCard
@@ -1,3 +1,4 @@
1
+ export const HOVER_CARD_ANALYTICS_DISPLAY = 'flexible';
1
2
  export const getSimulatedMetadata = (extensionKey = '') => {
2
3
  switch (extensionKey) {
3
4
  case 'confluence-object-provider':
@@ -5,7 +5,7 @@ export class CardLinkView extends React.PureComponent {
5
5
  render() {
6
6
  return /*#__PURE__*/React.createElement(Frame, _extends({
7
7
  withoutBackground: true
8
- }, this.props), this.props.link);
8
+ }, this.props), this.props.placeholder || this.props.link);
9
9
  }
10
10
 
11
11
  }
@@ -45,9 +45,10 @@ export var extractBlockActions = function extractBlockActions(props, jsonLd, opt
45
45
  var handleInvoke = opts.handleInvoke,
46
46
  handleAnalytics = opts.handleAnalytics,
47
47
  extensionKey = opts.extensionKey,
48
+ source = opts.source,
48
49
  testId = opts.testId;
49
50
  var actions = extractActions(jsonLd, handleInvoke);
50
- var previewAction = extractPreviewAction(extensionKey, props, jsonLd, handleInvoke, handleAnalytics, testId, platform); // The previewAction should always be the last action
51
+ var previewAction = extractPreviewAction(extensionKey, props, jsonLd, handleInvoke, handleAnalytics, testId, platform, source); // The previewAction should always be the last action
51
52
 
52
53
  if (previewAction) {
53
54
  actions.push(previewAction);
@@ -60,6 +60,7 @@ export var extractPreviewAction = function extractPreviewAction() {
60
60
  var handleAnalytics = arguments.length > 4 ? arguments[4] : undefined;
61
61
  var testId = arguments.length > 5 ? arguments[5] : undefined;
62
62
  var platform = arguments.length > 6 ? arguments[6] : undefined;
63
+ var source = arguments.length > 7 ? arguments[7] : undefined;
63
64
  // Extract metadata from view props & raw JSON-LD.
64
65
  var metadataFromJsonLd = getMetadataFromJsonLd(jsonLd, platform);
65
66
  var metadataFromViewProps = getMetadataFromResolvedProps(viewProps);
@@ -87,7 +88,7 @@ export var extractPreviewAction = function extractPreviewAction() {
87
88
  })); // Setup props to go through proper Redux 'invocation' flow
88
89
  // for analytics, further state management if required in future.
89
90
 
90
- var previewActionProps = getInvokeOpts(key, 'PreviewAction', 'block'); // - Promise invoked by the action invocation handler; open preview.
91
+ var previewActionProps = getInvokeOpts(key, 'PreviewAction', source !== null && source !== void 0 ? source : 'block'); // - Promise invoked by the action invocation handler; open preview.
91
92
 
92
93
  previewActionProps.action.promise = previewAction.promise; // - Promise invoked on click of `Preview` on block card; trigger above promise.
93
94
 
@@ -6,152 +6,66 @@
6
6
  */
7
7
  //Czech
8
8
  export default {
9
- 'fabric.linking.cannot_connect': 'Nelze se připojit, zkuste to znovu.',
10
- 'fabric.linking.cannot_find_link': 'Nepodařilo se najít odkaz.',
11
- 'fabric.linking.join_to_view': 'Chcete-li si zobrazit tento požadavek, připojte se ke službě {context}.',
12
- 'fabric.linking.create_on': 'Vytvořeno {context}',
13
- 'fabric.linking.created_by': 'Vytvořil(a) {context}',
14
- 'fabric.linking.delete': 'Odstranit',
15
- 'fabric.linking.edit': 'Upravit',
16
- 'fabric.linking.forbidden_access': 'Přístup byl odepřen',
17
- 'fabric.linking.restricted_link': 'Omezený odkaz, zkuste jiný účet.',
18
- 'fabric.linking.modified_on': 'Aktualizováno {context}',
19
- 'fabric.linking.pending_request': 'Vaše žádost o přístup čeká na vyřízení.',
20
- 'fabric.linking.priority_blocker': 'Blokující',
21
- 'fabric.linking.priority_critical': 'Kritická',
22
- 'fabric.linking.priority_high': 'Vysoká',
23
- 'fabric.linking.priority_highest': 'Nejvyšší',
24
- 'fabric.linking.priority_low': 'Nízká',
25
- 'fabric.linking.priority_lowest': 'Nejnižší',
26
- 'fabric.linking.priority_major': 'Vysoká',
27
- 'fabric.linking.priority_medium': 'Střední',
28
- 'fabric.linking.priority_minor': 'Nízká',
29
- 'fabric.linking.priority_trivial': 'Triviální',
30
- 'fabric.linking.priority_undefined': 'Nedefinováno',
31
- 'fabric.linking.request_access_to_view': 'Chcete-li si zobrazit tento požadavek, požádejte o přístup ke službě {context}.',
32
- 'fabric.linking.request_denied': 'Vaše žádost o přístup byla odmítnuta.',
33
- 'fabric.linking.updated_by': 'Upravil(a) {context}',
34
- 'fabric.linking.accounts': 'Účty',
35
9
  'fabric.linking.actions': 'Akce',
36
10
  'fabric.linking.add_account': 'Přidat účet',
37
- 'fabric.linking.annotate': 'Přidat poznámku',
38
- 'fabric.linking.annotate.confirmation.close.anyway': 'Přesto zavřít',
39
- 'fabric.linking.annotate.confirmation.content': 'Máte nějaké neuložené změny. Opravdu chcete odejít?',
40
- 'fabric.linking.annotate.confirmation.heading': 'Neuložené změny',
41
- 'fabric.linking.annotate.tool.arrow': 'Šipka',
42
- 'fabric.linking.annotate.tool.blur': 'Rozostření',
43
- 'fabric.linking.annotate.tool.brush': 'Štětec',
44
- 'fabric.linking.annotate.tool.color': 'Barva',
45
- 'fabric.linking.annotate.tool.line.thickness': 'Tloušťka čáry',
46
- 'fabric.linking.annotate.tool.shape': 'Tvar',
47
- 'fabric.linking.annotate.tool.text': 'Text',
48
- 'fabric.linking.archive': 'archivovat',
49
- 'fabric.linking.audio': 'zvuk',
50
11
  'fabric.linking.cancel': 'Zrušit',
51
- 'fabric.linking.cant_preview_file_type': 'Nemůžeme zobrazit náhled tohoto typu souboru.',
52
- 'fabric.linking.cant_retrieve_files': 'Jejda! Nepodařilo se nám načíst žádné soubory.',
53
- 'fabric.linking.cant_retrieve_gifs': 'Nepodařilo se nám dohledat žádné GIFy.',
54
- 'fabric.linking.change_view': 'Změnit zobrazení',
55
- 'fabric.linking.check_your_network': 'Zkontrolujte své připojení k síti.',
12
+ 'fabric.linking.cannot_connect': 'Nelze se připojit, zkuste to znovu.',
13
+ 'fabric.linking.cannot_find_link': 'Nepodařilo se najít odkaz.',
56
14
  'fabric.linking.click_to_join': 'Připojte se k {context}',
57
15
  'fabric.linking.click_to_join_description': 'Byli jste schváleni, takže se můžete okamžitě připojit k řešení {context}.',
58
16
  'fabric.linking.close': 'Zavřít',
59
- 'fabric.linking.close_and_reopen': 'Zkuste tento soubor zavřít a znovu otevřít.',
60
17
  'fabric.linking.connect_account_description': 'Otevřeme novou stránku, abychom vám pomohli připojit váš {name} účet.',
61
18
  'fabric.linking.connect_link_account': 'Pokud chcete zobrazit náhled, připojte svůj účet',
62
19
  'fabric.linking.connect_link_account_card_view': 'Připojit',
63
20
  'fabric.linking.connect_link_account_card_view_description': 'Pokud chcete zobrazit náhled tohoto odkazu, připojte svůj účet {context}.',
64
21
  'fabric.linking.connect_link_account_card_view_name': 'Připojte svůj účet {context}',
65
22
  'fabric.linking.connect_to': 'Připojit k {name}',
66
- 'fabric.linking.could_not_load_editor': 'Editor se nepodařilo načíst.',
67
- 'fabric.linking.could_not_save_image': 'Obrázek se nepodařilo uložit.',
68
- 'fabric.linking.couldnt_generate_encrypted_entry_preview': 'Náhled souborů chráněných šifrováním nebo heslem nelze zobrazit.',
69
- 'fabric.linking.couldnt_generate_preview': 'Náhled tohoto souboru se nepodařilo vytvořit.',
70
- 'fabric.linking.couldnt_load_file': 'Soubor se nepodařilo načíst.',
71
23
  'fabric.linking.couldnt_load_link': 'Tento odkaz se z neznámého důvodu nepodařilo načíst.',
72
- 'fabric.linking.creating_preview': 'Vytváří se náhled…',
73
- 'fabric.linking.default_avatars': 'Výchozí avatary',
74
- 'fabric.linking.disable_fullscreen': 'zakázat zobrazení na celou obrazovku',
75
- 'fabric.linking.display_thumbnail': 'Zobrazit miniaturu',
76
- 'fabric.linking.document': 'dokument',
24
+ 'fabric.linking.create_on_absolute': 'Vytvořeno: {context}',
25
+ 'fabric.linking.create_on_relative': 'Vytvořeno: {context}',
26
+ 'fabric.linking.created_by': 'Vytvořil(a) {context}',
27
+ 'fabric.linking.delete': 'Odstranit',
77
28
  'fabric.linking.download': 'Stáhnout',
78
- 'fabric.linking.drag_and_drop_images_here': 'Přetáhněte své obrázky sem.',
79
- 'fabric.linking.drag_and_drop_your_files': 'Přetáhněte své soubory kamkoli na stránku nebo',
80
- 'fabric.linking.drag_and_drop_your_files_and_folders': 'Přetáhněte své soubory a složky kamkoli na stránku nebo',
81
- 'fabric.linking.drop_your_files': 'Chcete-li nahrát soubory, přetáhněte je sem',
82
- 'fabric.linking.drop_your_files_here': 'Přetáhněte své soubory sem.',
83
- 'fabric.linking.email': 'E-mail',
84
- 'fabric.linking.enable_fullscreen': 'povolit zobrazení na celou obrazovku',
85
- 'fabric.linking.error_429': 'Chyba 429',
86
- 'fabric.linking.error_generating_preview': 'Chyba při vytváření náhledu',
87
- 'fabric.linking.error_hint_critical': 'Pokud problém přetrvává, kontaktujte podporu.',
88
- 'fabric.linking.error_hint_retry': 'Zkuste to znovu a my se o to také pokusíme.',
89
- 'fabric.linking.error_loading_file': 'Chyba při načítání souboru',
90
- 'fabric.linking.failed_to_load': 'Nepodařilo se načíst',
91
- 'fabric.linking.failed_to_upload': 'Nahrání se nezdařilo',
29
+ 'fabric.linking.edit': 'Upravit',
30
+ 'fabric.linking.forbidden_access': 'Přístup byl odepřen',
92
31
  'fabric.linking.forbidden_description': 'K tomuto náhledu nemáte přístup. Pokud potřebujete přístup, obraťte se na správce webu.',
93
- 'fabric.linking.give_feedback': 'Váš názor',
94
- 'fabric.linking.image': 'obrázek',
95
- 'fabric.linking.image_format_invalid_error': 'Nepodařilo se nahrát obrázek, formát je neplatný.',
96
- 'fabric.linking.image_size_too_large_error': 'Obrázek je příliš velký. Maximální velikost je {MAX_SIZE_MB} MB.',
97
- 'fabric.linking.image_url_invalid_error': 'Nepodařilo se nahrát obrázek, adresa URL je neplatná.',
98
- 'fabric.linking.insert_files': '{0, plural, one {Vložit {0} soubor} few {Vložit {0} soubory} many {Vložit {0} souboru} other {Vložit {0} souborů}}',
99
32
  'fabric.linking.invalid_permissions': 'Omezený odkaz',
100
33
  'fabric.linking.invalid_permissions_description': 'Pokud si chcete zobrazit tento náhled, požádejte o přístup nebo vyzkoušejte jiný účet.',
101
- 'fabric.linking.item_not_found_in_list': 'Vybraná položka nebyla v tomto seznamu nalezena.',
102
- 'fabric.linking.learn_more': 'Další informace',
103
- 'fabric.linking.load_more_gifs': 'Nahrát více GIFů',
34
+ 'fabric.linking.join_to_view': 'Chcete-li si zobrazit tento požadavek, připojte se ke službě {context}.',
104
35
  'fabric.linking.loading': 'Načítání…',
105
- 'fabric.linking.loading_file': 'Načítání souboru…',
106
- 'fabric.linking.might_be_a_hiccup': 'Chybička se vloudila, ale nevíme kam.',
107
- 'fabric.linking.no_gifs_found': 'Haló? Hledali jste mě?',
108
- 'fabric.linking.no_gifs_found_suggestion': 'Pro výraz „{query}“ jsme nic nenašli.',
109
- 'fabric.linking.no_pdf_artifacts': 'Pro tento soubor nebyly nalezeny žádné PDF artefakty.',
36
+ 'fabric.linking.modified_on_absolute': 'Aktualizováno: {context}',
37
+ 'fabric.linking.modified_on_relative': 'Aktualizováno: {context}',
38
+ 'fabric.linking.more_actions': 'Další akce',
110
39
  'fabric.linking.not_found_description': 'Odkaz se nepodařilo najít. Zkontrolujte adresu URL a zkuste ji upravit nebo vložit znovu.',
111
40
  'fabric.linking.not_found_title': 'Jejda. Tento odkaz se nepodařilo najít.',
112
- 'fabric.linking.or': 'nebo',
113
- 'fabric.linking.pause': 'Pozastavit',
114
- 'fabric.linking.play': 'Přehrát',
115
- 'fabric.linking.playback_default_speed': 'Výchozí',
116
- 'fabric.linking.playback_speed': 'Rychlost přehrávání',
41
+ 'fabric.linking.pending_request': 'Vaše žádost o přístup čeká na vyřízení.',
117
42
  'fabric.linking.preview': 'Náhled',
118
- 'fabric.linking.preview_currently_unavailable': 'Náhled aktuálně není k dispozici',
119
- 'fabric.linking.preview_unavailable': 'Náhled není k dispozici',
120
- 'fabric.linking.recent_uploads': 'Nedávno nahráno',
121
- 'fabric.linking.remove_image': 'Odstranit obrázek',
43
+ 'fabric.linking.priority_blocker': 'Blokující',
44
+ 'fabric.linking.priority_critical': 'Kritická',
45
+ 'fabric.linking.priority_high': 'Vysoká',
46
+ 'fabric.linking.priority_highest': 'Nejvyšší',
47
+ 'fabric.linking.priority_low': 'Nízká',
48
+ 'fabric.linking.priority_lowest': 'Nejnižší',
49
+ 'fabric.linking.priority_major': 'Vysoká',
50
+ 'fabric.linking.priority_medium': 'Střední',
51
+ 'fabric.linking.priority_minor': 'Nízká',
52
+ 'fabric.linking.priority_trivial': 'Triviální',
53
+ 'fabric.linking.priority_undefined': 'Nedefinováno',
122
54
  'fabric.linking.request_access': 'Požádat o přístup',
123
55
  'fabric.linking.request_access_description': 'Pokud si chcete zobrazit tento náhled, požádejte o přístup k řešení {context}.',
124
56
  'fabric.linking.request_access_pending': 'Čeká se na vyřízení přístupu',
125
57
  'fabric.linking.request_access_pending_description': 'Vaše žádost o přístup čeká na vyřízení.',
58
+ 'fabric.linking.request_access_to_view': 'Chcete-li si zobrazit tento požadavek, požádejte o přístup ke službě {context}.',
59
+ 'fabric.linking.request_denied': 'Vaše žádost o přístup byla odmítnuta.',
126
60
  'fabric.linking.request_denied_description': 'Vaše žádost o přístup byla odmítnuta. Pokud stále potřebujete přístup, obraťte se na správce webu.',
61
+ 'fabric.linking.restricted_link': 'Omezený odkaz, zkuste jiný účet.',
127
62
  'fabric.linking.retry': 'Zkusit znovu',
128
63
  'fabric.linking.save': 'Uložit',
129
- 'fabric.linking.search': 'vyhledat',
130
- 'fabric.linking.search_all_gifs': 'Prohledejte všechny GIFy!',
131
- 'fabric.linking.share_files_instantly': 'Okamžitě je nasdílíme.',
132
- 'fabric.linking.skip_backward': 'Zpět o 10 sekund',
133
- 'fabric.linking.skip_forward': 'Dopředu o 10 sekund',
134
- 'fabric.linking.something_went_wrong': 'Něco se pokazilo.',
135
64
  'fabric.linking.srclink': 'Zobrazit v',
136
65
  'fabric.linking.srclinkunknown': 'Zobrazit originál',
137
- 'fabric.linking.text': 'text',
138
66
  'fabric.linking.try_again': 'Zkusit znovu',
139
67
  'fabric.linking.try_another_account': 'Zkuste jiný účet',
140
- 'fabric.linking.try_downloading_file': 'Pokud chcete soubor zobrazit, zkuste ho stáhnout.',
141
- 'fabric.linking.unable_to_annotate_image': 'K tomuto obrázku nemůžete přidávat poznámky.',
142
- 'fabric.linking.unknown': 'neznámé',
143
68
  'fabric.linking.unlink_account': 'Odpojit účet',
144
- 'fabric.linking.upload': 'Nahrát',
145
- 'fabric.linking.upload_an_avatar': 'Nahrát avatar',
146
- 'fabric.linking.upload_file': 'Nahrát soubor',
147
- 'fabric.linking.upload_file_from': 'Nahrát soubor z: {name}',
148
- 'fabric.linking.upload_image': 'Nahrát obrázek',
149
- 'fabric.linking.upload_photo': 'Nahrát fotku',
150
- 'fabric.linking.video': 'video',
151
- 'fabric.linking.view': 'Zobrazit',
152
- 'fabric.linking.viewer_rateLimited': 'Při načítání vašeho souboru došlo k potížím.',
153
- 'fabric.linking.webgl_warning_description': 'Váš prohlížeč nepodporuje knihovnu WebGL. Chcete-li přidávat k obrázkům poznámky, použijte prohlížeč, který ji podporuje.',
154
- 'fabric.linking.zip_entry_load_failed': 'Načtení daného souboru ZIP potřebného k náhledu se nezdařilo',
155
- 'fabric.linking.zoom_in': 'přiblížit',
156
- 'fabric.linking.zoom_out': 'oddálit'
69
+ 'fabric.linking.updated_by': 'Upravil(a) {context}',
70
+ 'fabric.linking.view': 'Zobrazit'
157
71
  };