@atlaskit/smart-card 18.0.13 → 18.0.16

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 (243) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cjs/extractors/common/context/extractProvider.js +14 -4
  3. package/dist/cjs/extractors/common/detail/extractCommentCount.js +3 -1
  4. package/dist/cjs/extractors/common/detail/extractProgrammingLanguage.js +3 -1
  5. package/dist/cjs/extractors/common/detail/extractSubscriberCount.js +3 -1
  6. package/dist/cjs/extractors/common/primitives/extractTitleTextColor.js +3 -1
  7. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +9 -0
  8. package/dist/cjs/state/flexible-ui-context/index.js +4 -0
  9. package/dist/cjs/utils/analytics/analytics.js +52 -2
  10. package/dist/cjs/utils/analytics/index.js +18 -0
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/cjs/view/BlockCard/components/Frame.js +10 -7
  13. package/dist/cjs/view/BlockCard/components/Link.js +3 -1
  14. package/dist/cjs/view/BlockCard/components/Provider.js +3 -1
  15. package/dist/cjs/view/BlockCard/views/ErroredView.js +3 -1
  16. package/dist/cjs/view/BlockCard/views/ForbiddenView.js +3 -1
  17. package/dist/cjs/view/BlockCard/views/NotFoundView.js +3 -1
  18. package/dist/cjs/view/BlockCard/views/ResolvingView.js +4 -2
  19. package/dist/cjs/view/CardWithUrl/component.js +4 -2
  20. package/dist/cjs/view/CardWithUrl/loader.js +4 -2
  21. package/dist/cjs/view/EmbedCard/components/styled.js +15 -13
  22. package/dist/cjs/view/EmbedCard/views/ErroredView.js +3 -1
  23. package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +26 -4
  24. package/dist/cjs/view/FlexibleCard/components/actions/index.js +18 -2
  25. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +6 -0
  26. package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +9 -2
  27. package/dist/cjs/view/FlexibleCard/components/blocks/element-group/index.js +9 -2
  28. package/dist/cjs/view/FlexibleCard/components/blocks/footer-block/index.js +6 -0
  29. package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +9 -2
  30. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +5 -0
  31. package/dist/cjs/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -0
  32. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/errored/index.js +39 -19
  33. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +92 -17
  34. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +45 -9
  35. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolving/index.js +23 -12
  36. package/dist/cjs/view/FlexibleCard/components/common/atlaskit-icon/index.js +8 -2
  37. package/dist/cjs/view/FlexibleCard/components/common/image-icon/index.js +3 -1
  38. package/dist/cjs/view/FlexibleCard/components/container/index.js +5 -0
  39. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +12 -1
  40. package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +18 -3
  41. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +9 -1
  42. package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +9 -1
  43. package/dist/cjs/view/FlexibleCard/components/elements/index.js +96 -0
  44. package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +10 -1
  45. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +11 -3
  46. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +9 -2
  47. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +12 -6
  48. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +7 -3
  49. package/dist/cjs/view/FlexibleCard/index.js +6 -0
  50. package/dist/cjs/view/HoverCard/index.js +48 -10
  51. package/dist/cjs/view/HoverCard/styled.js +3 -1
  52. package/dist/cjs/view/InlineCard/ErroredView/index.js +3 -1
  53. package/dist/cjs/view/InlineCard/ForbiddenView/index.js +4 -2
  54. package/dist/cjs/view/InlineCard/Frame/styled.js +16 -13
  55. package/dist/cjs/view/InlineCard/Icon.js +3 -1
  56. package/dist/cjs/view/InlineCard/UnauthorisedView/index.js +4 -2
  57. package/dist/cjs/view/InlineCard/styled.js +6 -4
  58. package/dist/cjs/view/common/Byline.js +3 -1
  59. package/dist/cjs/view/common/Metadata.js +3 -1
  60. package/dist/cjs/view/common/ModalHeader.js +4 -2
  61. package/dist/es2019/extractors/common/context/extractProvider.js +13 -4
  62. package/dist/es2019/extractors/common/detail/extractCommentCount.js +2 -1
  63. package/dist/es2019/extractors/common/detail/extractProgrammingLanguage.js +2 -1
  64. package/dist/es2019/extractors/common/detail/extractSubscriberCount.js +2 -1
  65. package/dist/es2019/extractors/common/primitives/extractTitleTextColor.js +2 -1
  66. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +7 -2
  67. package/dist/es2019/state/flexible-ui-context/index.js +5 -0
  68. package/dist/es2019/utils/analytics/analytics.js +35 -0
  69. package/dist/es2019/utils/analytics/index.js +1 -1
  70. package/dist/es2019/version.json +1 -1
  71. package/dist/es2019/view/BlockCard/components/Frame.js +9 -7
  72. package/dist/es2019/view/BlockCard/components/Link.js +2 -1
  73. package/dist/es2019/view/BlockCard/components/Provider.js +2 -1
  74. package/dist/es2019/view/BlockCard/views/ErroredView.js +2 -1
  75. package/dist/es2019/view/BlockCard/views/ForbiddenView.js +2 -1
  76. package/dist/es2019/view/BlockCard/views/NotFoundView.js +2 -1
  77. package/dist/es2019/view/BlockCard/views/ResolvingView.js +3 -2
  78. package/dist/es2019/view/CardWithUrl/component.js +4 -2
  79. package/dist/es2019/view/CardWithUrl/loader.js +4 -2
  80. package/dist/es2019/view/EmbedCard/components/styled.js +15 -15
  81. package/dist/es2019/view/EmbedCard/views/ErroredView.js +2 -1
  82. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +37 -4
  83. package/dist/es2019/view/FlexibleCard/components/actions/index.js +18 -2
  84. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +6 -0
  85. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +9 -2
  86. package/dist/es2019/view/FlexibleCard/components/blocks/element-group/index.js +8 -2
  87. package/dist/es2019/view/FlexibleCard/components/blocks/footer-block/index.js +6 -0
  88. package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +9 -2
  89. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +5 -0
  90. package/dist/es2019/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -0
  91. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/errored/index.js +31 -15
  92. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +77 -15
  93. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +35 -8
  94. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolving/index.js +20 -11
  95. package/dist/es2019/view/FlexibleCard/components/common/atlaskit-icon/index.js +8 -3
  96. package/dist/es2019/view/FlexibleCard/components/common/image-icon/index.js +7 -6
  97. package/dist/es2019/view/FlexibleCard/components/container/index.js +5 -0
  98. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +12 -1
  99. package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +18 -3
  100. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +9 -1
  101. package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +9 -1
  102. package/dist/es2019/view/FlexibleCard/components/elements/index.js +96 -0
  103. package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +10 -1
  104. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +11 -3
  105. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +8 -1
  106. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +11 -4
  107. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +5 -2
  108. package/dist/es2019/view/FlexibleCard/index.js +6 -0
  109. package/dist/es2019/view/HoverCard/index.js +40 -10
  110. package/dist/es2019/view/HoverCard/styled.js +6 -1
  111. package/dist/es2019/view/InlineCard/ErroredView/index.js +2 -1
  112. package/dist/es2019/view/InlineCard/ForbiddenView/index.js +3 -2
  113. package/dist/es2019/view/InlineCard/Frame/styled.js +15 -12
  114. package/dist/es2019/view/InlineCard/Icon.js +7 -6
  115. package/dist/es2019/view/InlineCard/UnauthorisedView/index.js +3 -2
  116. package/dist/es2019/view/InlineCard/styled.js +5 -4
  117. package/dist/es2019/view/common/Byline.js +2 -1
  118. package/dist/es2019/view/common/Metadata.js +2 -1
  119. package/dist/es2019/view/common/ModalHeader.js +3 -2
  120. package/dist/esm/extractors/common/context/extractProvider.js +13 -4
  121. package/dist/esm/extractors/common/detail/extractCommentCount.js +2 -1
  122. package/dist/esm/extractors/common/detail/extractProgrammingLanguage.js +2 -1
  123. package/dist/esm/extractors/common/detail/extractSubscriberCount.js +2 -1
  124. package/dist/esm/extractors/common/primitives/extractTitleTextColor.js +2 -1
  125. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +10 -1
  126. package/dist/esm/state/flexible-ui-context/index.js +5 -0
  127. package/dist/esm/utils/analytics/analytics.js +41 -0
  128. package/dist/esm/utils/analytics/index.js +1 -1
  129. package/dist/esm/version.json +1 -1
  130. package/dist/esm/view/BlockCard/components/Frame.js +9 -7
  131. package/dist/esm/view/BlockCard/components/Link.js +2 -1
  132. package/dist/esm/view/BlockCard/components/Provider.js +2 -1
  133. package/dist/esm/view/BlockCard/views/ErroredView.js +2 -1
  134. package/dist/esm/view/BlockCard/views/ForbiddenView.js +2 -1
  135. package/dist/esm/view/BlockCard/views/NotFoundView.js +2 -1
  136. package/dist/esm/view/BlockCard/views/ResolvingView.js +3 -2
  137. package/dist/esm/view/CardWithUrl/component.js +4 -2
  138. package/dist/esm/view/CardWithUrl/loader.js +4 -2
  139. package/dist/esm/view/EmbedCard/components/styled.js +14 -13
  140. package/dist/esm/view/EmbedCard/views/ErroredView.js +2 -1
  141. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +25 -4
  142. package/dist/esm/view/FlexibleCard/components/actions/index.js +18 -2
  143. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +6 -0
  144. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +9 -2
  145. package/dist/esm/view/FlexibleCard/components/blocks/element-group/index.js +8 -2
  146. package/dist/esm/view/FlexibleCard/components/blocks/footer-block/index.js +6 -0
  147. package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +9 -2
  148. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +5 -0
  149. package/dist/esm/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -0
  150. package/dist/esm/view/FlexibleCard/components/blocks/title-block/errored/index.js +33 -16
  151. package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +79 -17
  152. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +39 -8
  153. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolving/index.js +22 -11
  154. package/dist/esm/view/FlexibleCard/components/common/atlaskit-icon/index.js +8 -3
  155. package/dist/esm/view/FlexibleCard/components/common/image-icon/index.js +2 -1
  156. package/dist/esm/view/FlexibleCard/components/container/index.js +5 -0
  157. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +12 -1
  158. package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +18 -3
  159. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +9 -1
  160. package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +9 -1
  161. package/dist/esm/view/FlexibleCard/components/elements/index.js +96 -0
  162. package/dist/esm/view/FlexibleCard/components/elements/link/index.js +10 -1
  163. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +11 -3
  164. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +9 -2
  165. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +12 -6
  166. package/dist/esm/view/FlexibleCard/components/elements/utils.js +5 -3
  167. package/dist/esm/view/FlexibleCard/index.js +6 -0
  168. package/dist/esm/view/HoverCard/index.js +42 -10
  169. package/dist/esm/view/HoverCard/styled.js +2 -1
  170. package/dist/esm/view/InlineCard/ErroredView/index.js +2 -1
  171. package/dist/esm/view/InlineCard/ForbiddenView/index.js +3 -2
  172. package/dist/esm/view/InlineCard/Frame/styled.js +16 -13
  173. package/dist/esm/view/InlineCard/Icon.js +2 -1
  174. package/dist/esm/view/InlineCard/UnauthorisedView/index.js +3 -2
  175. package/dist/esm/view/InlineCard/styled.js +5 -4
  176. package/dist/esm/view/common/Byline.js +2 -1
  177. package/dist/esm/view/common/Metadata.js +2 -1
  178. package/dist/esm/view/common/ModalHeader.js +3 -2
  179. package/dist/types/client/errors.d.ts +3 -2
  180. package/dist/types/extractors/block/index.d.ts +2 -2
  181. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +46 -66
  182. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +1 -1
  183. package/dist/types/extractors/common/title-prefix/extractTitlePrefix.d.ts +2 -1
  184. package/dist/types/extractors/embed/index.d.ts +1 -1
  185. package/dist/types/extractors/flexible/icon/extract-url-icon.d.ts +1 -1
  186. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +4 -0
  187. package/dist/types/state/flexible-ui-context/index.d.ts +4 -0
  188. package/dist/types/state/flexible-ui-context/types.d.ts +102 -0
  189. package/dist/types/state/hooks/useSmartLink.d.ts +3 -0
  190. package/dist/types/utils/analytics/analytics.d.ts +5 -1
  191. package/dist/types/utils/analytics/index.d.ts +1 -1
  192. package/dist/types/utils/types.d.ts +2 -2
  193. package/dist/types/view/BlockCard/utils/handlers.d.ts +1 -1
  194. package/dist/types/view/Card/index.d.ts +1 -1
  195. package/dist/types/view/Card/types.d.ts +1 -0
  196. package/dist/types/view/CardWithUrl/component.d.ts +1 -1
  197. package/dist/types/view/CardWithUrl/types.d.ts +1 -0
  198. package/dist/types/view/EmbedCard/components/styled.d.ts +9 -9
  199. package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +8 -0
  200. package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +4 -2
  201. package/dist/types/view/FlexibleCard/components/actions/index.d.ts +15 -0
  202. package/dist/types/view/FlexibleCard/components/blocks/action-group/index.d.ts +6 -0
  203. package/dist/types/view/FlexibleCard/components/blocks/action-group/types.d.ts +1 -1
  204. package/dist/types/view/FlexibleCard/components/blocks/block/index.d.ts +6 -0
  205. package/dist/types/view/FlexibleCard/components/blocks/element-group/index.d.ts +6 -0
  206. package/dist/types/view/FlexibleCard/components/blocks/element-group/types.d.ts +2 -2
  207. package/dist/types/view/FlexibleCard/components/blocks/footer-block/index.d.ts +6 -0
  208. package/dist/types/view/FlexibleCard/components/blocks/metadata-block/index.d.ts +6 -0
  209. package/dist/types/view/FlexibleCard/components/blocks/preview-block/index.d.ts +5 -0
  210. package/dist/types/view/FlexibleCard/components/blocks/snippet-block/index.d.ts +5 -0
  211. package/dist/types/view/FlexibleCard/components/blocks/title-block/errored/index.d.ts +9 -2
  212. package/dist/types/view/FlexibleCard/components/blocks/title-block/index.d.ts +11 -0
  213. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +7 -3
  214. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolving/index.d.ts +8 -2
  215. package/dist/types/view/FlexibleCard/components/blocks/title-block/types.d.ts +10 -1
  216. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +7 -5
  217. package/dist/types/view/FlexibleCard/components/blocks/utils.d.ts +2 -1
  218. package/dist/types/view/FlexibleCard/components/container/index.d.ts +4 -0
  219. package/dist/types/view/FlexibleCard/components/container/types.d.ts +2 -2
  220. package/dist/types/view/FlexibleCard/components/elements/avatar-group/index.d.ts +7 -0
  221. package/dist/types/view/FlexibleCard/components/elements/badge/index.d.ts +13 -0
  222. package/dist/types/view/FlexibleCard/components/elements/date-time/index.d.ts +7 -0
  223. package/dist/types/view/FlexibleCard/components/elements/icon/index.d.ts +6 -0
  224. package/dist/types/view/FlexibleCard/components/elements/icon/types.d.ts +5 -1
  225. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +77 -0
  226. package/dist/types/view/FlexibleCard/components/elements/link/index.d.ts +6 -0
  227. package/dist/types/view/FlexibleCard/components/elements/lozenge/index.d.ts +6 -0
  228. package/dist/types/view/FlexibleCard/components/elements/media/index.d.ts +6 -0
  229. package/dist/types/view/FlexibleCard/components/elements/text/index.d.ts +6 -0
  230. package/dist/types/view/FlexibleCard/components/elements/text/types.d.ts +1 -2
  231. package/dist/types/view/FlexibleCard/components/elements/types.d.ts +2 -0
  232. package/dist/types/view/FlexibleCard/index.d.ts +6 -0
  233. package/dist/types/view/HoverCard/index.d.ts +3 -2
  234. package/dist/types/view/HoverCard/types.d.ts +5 -2
  235. package/dist/types/view/InlineCard/Icon.d.ts +3 -3
  236. package/dist/types/view/InlineCard/IconAndTitleLayout/styled.d.ts +9 -9
  237. package/dist/types/view/InlineCard/ResolvingView/styled.d.ts +3 -3
  238. package/dist/types/view/InlineCard/styled.d.ts +4 -4
  239. package/package.json +9 -4
  240. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/utils.js +0 -105
  241. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/utils.js +0 -71
  242. package/dist/esm/view/FlexibleCard/components/blocks/title-block/utils.js +0 -76
  243. package/dist/types/view/FlexibleCard/components/blocks/title-block/utils.d.ts +0 -11
@@ -1,11 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["actionGroup", "testId", "title"];
2
4
 
3
5
  /** @jsx jsx */
4
6
  import React from 'react';
5
7
  import { jsx } from '@emotion/core';
6
8
  import Spinner from '@atlaskit/spinner';
9
+ import Block from '../../block';
7
10
  import { SmartLinkSize } from '../../../../../../constants';
8
- import { BaseTitleBlockComponent } from '../utils';
9
11
 
10
12
  var getSpinnerSize = function getSpinnerSize(size) {
11
13
  // Spinner sizes should be equivalent or smaller than Icon size
@@ -25,19 +27,28 @@ var getSpinnerSize = function getSpinnerSize(size) {
25
27
  return 12;
26
28
  }
27
29
  };
30
+ /**
31
+ * This represents a TitleBlock for a Smart Link that is currently waiting
32
+ * for a request to finish.
33
+ * This should render when a Smart Link has sent a request.
34
+ * @see TitleBlock
35
+ */
28
36
 
29
- var TitleBlockResolvingView = function TitleBlockResolvingView(props) {
30
- var _props$size = props.size,
31
- size = _props$size === void 0 ? SmartLinkSize.Medium : _props$size,
32
- testId = props.testId;
33
- var spinnerIcon = jsx(Spinner, {
37
+
38
+ var TitleBlockResolvingView = function TitleBlockResolvingView(_ref) {
39
+ var actionGroup = _ref.actionGroup,
40
+ testId = _ref.testId,
41
+ title = _ref.title,
42
+ blockProps = _objectWithoutProperties(_ref, _excluded);
43
+
44
+ var _blockProps$size = blockProps.size,
45
+ size = _blockProps$size === void 0 ? SmartLinkSize.Medium : _blockProps$size;
46
+ return jsx(Block, _extends({}, blockProps, {
47
+ testId: "".concat(testId, "-resolving-view")
48
+ }), jsx(Spinner, {
34
49
  size: getSpinnerSize(size),
35
50
  testId: "".concat(testId, "-resolving-spinner")
36
- });
37
- return jsx(BaseTitleBlockComponent, _extends({}, props, {
38
- blockIcon: spinnerIcon,
39
- blockTestIdPostfix: "resolving-view"
40
- }));
51
+ }), title, actionGroup);
41
52
  };
42
53
 
43
54
  export default TitleBlockResolvingView;
@@ -6,7 +6,8 @@ import React from 'react';
6
6
  import Loadable from 'react-loadable';
7
7
  import { B200, B400, N700, R400 } from '@atlaskit/theme/colors';
8
8
  import { IconType } from '../../../../../constants';
9
- // prettier-ignore
9
+ import { token } from '@atlaskit/tokens'; // prettier-ignore
10
+
10
11
  var importIconMapper = (_importIconMapper = {}, _defineProperty(_importIconMapper, IconType.Archive, function () {
11
12
  return import(
12
13
  /* webpackChunkName: "glyphArchive" */
@@ -295,10 +296,14 @@ var AtlaskitIcon = function AtlaskitIcon(_ref3) {
295
296
  return /*#__PURE__*/React.createElement(ImportedIcon, {
296
297
  "data-testid": testId // Confluence and Jira imports don't have native testId prop
297
298
  ,
298
- textColor: N700,
299
+ textColor: token('color.text.subtle', N700)
300
+ /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
301
+ ,
299
302
  iconColor: B200,
300
303
  iconGradientStart: B400,
301
304
  iconGradientStop: B200
305
+ /* eslint-enable @atlaskit/design-system/ensure-design-token-usage */
306
+
302
307
  });
303
308
 
304
309
  case IconType.Error:
@@ -306,7 +311,7 @@ var AtlaskitIcon = function AtlaskitIcon(_ref3) {
306
311
  return /*#__PURE__*/React.createElement(ImportedIcon, {
307
312
  label: label,
308
313
  testId: testId,
309
- primaryColor: R400
314
+ primaryColor: token('color.icon.danger', R400)
310
315
  });
311
316
 
312
317
  default:
@@ -6,8 +6,9 @@ var _templateObject, _templateObject2;
6
6
  import React from 'react';
7
7
  import { css, jsx, keyframes } from '@emotion/core';
8
8
  import ImageLoader from 'react-render-image';
9
+ import { token } from '@atlaskit/tokens';
9
10
  var placeholderShimmer = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0% { background-position: -20px 0; }\n 100% { background-position: 20px 0; }\n"])));
10
- var shimmer = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: 2px;\n user-select: none;\n\n background: #f6f7f8;\n background-image: linear-gradient(\n to right,\n #f6f7f8 0%,\n #edeef1 20%,\n #f6f7f8 40%,\n #f6f7f8 100%\n );\n background-repeat: no-repeat;\n background-size: 280% 100%;\n display: inline-block;\n\n animation-duration: 1s;\n animation-fill-mode: forwards;\n animation-iteration-count: infinite;\n animation-name: ", ";\n animation-timing-function: linear;\n"])), placeholderShimmer);
11
+ var shimmer = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: 2px;\n user-select: none;\n background: ", ";\n // TODO: https://product-fabric.atlassian.net/browse/DSP-4236\n background-image: linear-gradient(\n to right,\n ", " 0%,\n ", " 20%,\n ", " 40%,\n ", "100%\n );\n background-repeat: no-repeat;\n background-size: 280% 100%;\n display: inline-block;\n\n animation-duration: 1s;\n animation-fill-mode: forwards;\n animation-iteration-count: infinite;\n animation-name: ", ";\n animation-timing-function: linear;\n"])), token('color.skeleton.subtle', '#f6f7f8'), token('color.skeleton.subtle', '#f6f7f8'), token('color.skeleton', '#edeef1'), token('color.skeleton.subtle', '#f6f7f8'), token('color.skeleton.subtle', '#f6f7f8'), placeholderShimmer);
11
12
 
12
13
  var ImageIcon = function ImageIcon(_ref) {
13
14
  var defaultIcon = _ref.defaultIcon,
@@ -62,6 +62,11 @@ var renderChildren = function renderChildren(children, containerSize, containerT
62
62
  }
63
63
  });
64
64
  };
65
+ /**
66
+ * This represents the container in which all Flexible UI Smart Links are rendered.
67
+ * @see Block
68
+ */
69
+
65
70
 
66
71
  var Container = function Container(_ref) {
67
72
  var children = _ref.children,
@@ -22,12 +22,21 @@ var getStyles = function getStyles(size) {
22
22
  return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n li {\n span,\n svg {\n max-height: 1.25rem;\n max-width: 1.25rem;\n }\n }\n "])));
23
23
  }
24
24
  };
25
+ /**
26
+ * An element that displays a group of avatars.
27
+ * @public
28
+ * @param {AvatarGroupProps} AvatarGroupProps - The props necessary for the AvatarGroup.
29
+ * @see AuthorGroup
30
+ * @see CollaboratorGroup
31
+ */
32
+
25
33
 
26
34
  var AvatarGroup = function AvatarGroup(_ref) {
27
35
  var _ref$items = _ref.items,
28
36
  items = _ref$items === void 0 ? [] : _ref$items,
29
37
  _ref$maxCount = _ref.maxCount,
30
38
  maxCount = _ref$maxCount === void 0 ? MAX_COUNT : _ref$maxCount,
39
+ overrideCss = _ref.overrideCss,
31
40
  _ref$size = _ref.size,
32
41
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
33
42
  _ref$testId = _ref.testId,
@@ -38,7 +47,9 @@ var AvatarGroup = function AvatarGroup(_ref) {
38
47
  }
39
48
 
40
49
  return jsx("span", {
41
- css: getStyles(size)
50
+ css: [getStyles(size), overrideCss],
51
+ "data-smart-element-avatar-group": true,
52
+ "data-testid": testId
42
53
  }, jsx(AtlaskitAvatarGroup, {
43
54
  maxCount: maxCount,
44
55
  appearance: "stack",
@@ -47,13 +47,28 @@ var renderImageIcon = function renderImageIcon(url, testId) {
47
47
  });
48
48
  }
49
49
  };
50
+ /**
51
+ * An element that displays some text with an associated icon.
52
+ * @public
53
+ * @param {BadgeProps} BadgeProps - The props necessary for the Badge.
54
+ * @see CommentCount
55
+ * @see ViewCount
56
+ * @see ReactCount
57
+ * @see VoteCount
58
+ * @see SubscriberCount
59
+ * @see Priority
60
+ * @see ProgrammingLanguage
61
+ * @see Provider
62
+ */
63
+
50
64
 
51
65
  var Badge = function Badge(_ref) {
52
66
  var icon = _ref.icon,
53
- url = _ref.url,
54
67
  label = _ref.label,
68
+ overrideCss = _ref.overrideCss,
55
69
  _ref$testId = _ref.testId,
56
- testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId;
70
+ testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId,
71
+ url = _ref.url;
57
72
  var formattedMessageOrLabel = getFormattedMessageFromIcon(icon) || label;
58
73
  var badgeIcon = renderAtlaskitIcon(icon, testId) || renderImageIcon(url, testId);
59
74
 
@@ -62,7 +77,7 @@ var Badge = function Badge(_ref) {
62
77
  }
63
78
 
64
79
  return jsx("div", {
65
- css: badgeStyles,
80
+ css: [badgeStyles, overrideCss],
66
81
  "data-fit-to-content": true,
67
82
  "data-smart-element-badge": true,
68
83
  "data-testid": testId
@@ -16,9 +16,17 @@ var typeToDescriptorMap = {
16
16
  created: messages.created_on,
17
17
  modified: messages.modified_on
18
18
  };
19
+ /**
20
+ * An element that displays an ISO Timestamp in text.
21
+ * @public
22
+ * @param {DateTimeProps} DateTimeProps - The props necessary for the DateTime element.
23
+ * @see CreatedOn
24
+ * @see ModifiedOn
25
+ */
19
26
 
20
27
  var DateTime = function DateTime(_ref) {
21
28
  var date = _ref.date,
29
+ overrideCss = _ref.overrideCss,
22
30
  type = _ref.type,
23
31
  _ref$testId = _ref.testId,
24
32
  testId = _ref$testId === void 0 ? 'smart-element-date-time' : _ref$testId;
@@ -38,7 +46,7 @@ var DateTime = function DateTime(_ref) {
38
46
  numeric: 'auto'
39
47
  });
40
48
  return jsx("span", {
41
- css: styles,
49
+ css: [styles, overrideCss],
42
50
  "data-separator": true,
43
51
  "data-smart-element-date-time": true,
44
52
  "data-testid": testId
@@ -73,6 +73,13 @@ var renderImageIcon = function renderImageIcon(defaultIcon, icon, url, testId) {
73
73
  });
74
74
  }
75
75
  };
76
+ /**
77
+ * An element that displays an Icon or favicon.
78
+ * @public
79
+ * @param {IconProps} IconProps - The props necessary for the Icon element.
80
+ * @see LinkIcon
81
+ */
82
+
76
83
 
77
84
  var Icon = function Icon(_ref) {
78
85
  var icon = _ref.icon,
@@ -80,6 +87,7 @@ var Icon = function Icon(_ref) {
80
87
  label = _ref$label === void 0 ? 'Link' : _ref$label,
81
88
  _ref$position = _ref.position,
82
89
  position = _ref$position === void 0 ? SmartLinkPosition.Top : _ref$position,
90
+ overrideCss = _ref.overrideCss,
83
91
  render = _ref.render,
84
92
  _ref$size = _ref.size,
85
93
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
@@ -94,7 +102,7 @@ var Icon = function Icon(_ref) {
94
102
  var styles = getIconStyles(size, position, width);
95
103
  var renderStyles = render ? getCustomRenderStyles(width) : undefined;
96
104
  return jsx("div", {
97
- css: [styles, renderStyles],
105
+ css: [styles, renderStyles, overrideCss],
98
106
  "data-fit-to-content": true,
99
107
  "data-smart-element-icon": true,
100
108
  "data-testid": testId
@@ -3,22 +3,118 @@ import { ElementName } from '../../../../constants';
3
3
  // Attention: Keep the export name and element name the same.
4
4
  // This will help reducing the code for mapping elements inside
5
5
  // createElement and renderElementItems
6
+
7
+ /**
8
+ * Creates an AvatarGroup element using the data from AuthorGroup in the Flexible UI Context.
9
+ * @see AvatarGroup
10
+ */
6
11
  export var AuthorGroup = createElement(ElementName.AuthorGroup);
12
+ /**
13
+ * Creates an AvatarGroup element using the data from CollaboratorGroup in the Flexible UI Context.
14
+ * @see AvatarGroup
15
+ */
16
+
7
17
  export var CollaboratorGroup = createElement(ElementName.CollaboratorGroup);
18
+ /**
19
+ * Creates a CommentCount Badge element using the data from CommentCount in the Flexible UI Context.
20
+ * @see Badge
21
+ */
22
+
8
23
  export var CommentCount = createElement(ElementName.CommentCount);
24
+ /**
25
+ * Creates a ViewCount Badge element using the data from ViewCount in the Flexible UI Context.
26
+ * @see Badge
27
+ */
28
+
9
29
  export var ViewCount = createElement(ElementName.ViewCount);
30
+ /**
31
+ * Creates a ReactCount Badge element using the data from ReactCount in the Flexible UI Context.
32
+ * @see Badge
33
+ */
34
+
10
35
  export var ReactCount = createElement(ElementName.ReactCount);
36
+ /**
37
+ * Creates a VoteCount Badge element using the data from VoteCount in the Flexible UI Context.
38
+ * @see Badge
39
+ */
40
+
11
41
  export var VoteCount = createElement(ElementName.VoteCount);
42
+ /**
43
+ * Creates a CreatedBy text element using the data from CreatedBy in the Flexible UI Context.
44
+ * @see Text
45
+ */
46
+
12
47
  export var CreatedBy = createElement(ElementName.CreatedBy);
48
+ /**
49
+ * Creates a CreatedOn DateTime element using the data from CreatedOn in the Flexible UI Context.
50
+ * @see DateTime
51
+ */
52
+
13
53
  export var CreatedOn = createElement(ElementName.CreatedOn);
54
+ /**
55
+ * Creates a LinkIcon Icon element using the data from LinkIcon in the Flexible UI Context.
56
+ * @see Icon
57
+ */
58
+
14
59
  export var LinkIcon = createElement(ElementName.LinkIcon);
60
+ /**
61
+ * Creates a ModifiedBy Text element using the data from ModifiedBy in the Flexible UI Context.
62
+ * @see Text
63
+ */
64
+
15
65
  export var ModifiedBy = createElement(ElementName.ModifiedBy);
66
+ /**
67
+ * Creates a ModifiedOn DateTime element using the data from ModifiedOn in the Flexible UI Context.
68
+ * @see DateTime
69
+ */
70
+
16
71
  export var ModifiedOn = createElement(ElementName.ModifiedOn);
72
+ /**
73
+ * Creates a Preview element using the data from Preview in the Flexible UI Context.
74
+ * @see Preview
75
+ */
76
+
17
77
  export var Preview = createElement(ElementName.Preview);
78
+ /**
79
+ * Creates a Priority Badge element using the data from Priority in the Flexible UI Context.
80
+ * @see Badge
81
+ */
82
+
18
83
  export var Priority = createElement(ElementName.Priority);
84
+ /**
85
+ * Creates a ProgrammingLanguage Badge element using the data from ProgrammingLanguage in the Flexible UI Context.
86
+ * @see Badge
87
+ */
88
+
19
89
  export var ProgrammingLanguage = createElement(ElementName.ProgrammingLanguage);
90
+ /**
91
+ * Creates a Snippet element using the data from Snippet in the Flexible UI Context.
92
+ * @see Text
93
+ */
94
+
20
95
  export var Snippet = createElement(ElementName.Snippet);
96
+ /**
97
+ * Creates a State Lozenge element using the data from State in the Flexible UI Context.
98
+ * @see Lozenge
99
+ */
100
+
21
101
  export var State = createElement(ElementName.State);
102
+ /**
103
+ * Creates a SubscriberCount Badge element using the data from SubscriberCount in the Flexible UI Context.
104
+ * @see Badge
105
+ */
106
+
22
107
  export var SubscriberCount = createElement(ElementName.SubscriberCount);
108
+ /**
109
+ * Creates a Title Link element using the data from Title in the Flexible UI Context.
110
+ * This represents the main link text within the Smart Link.
111
+ * @see Link
112
+ */
113
+
23
114
  export var Title = createElement(ElementName.Title);
115
+ /**
116
+ * Creates a Provider Badge element using the data from Provider in the Flexible UI Context.
117
+ * @see Badge
118
+ */
119
+
24
120
  export var Provider = createElement(ElementName.Provider);
@@ -16,6 +16,7 @@ var containerStyles = css(_templateObject || (_templateObject = _taggedTemplateL
16
16
 
17
17
  var getThemeStyles = function getThemeStyles(theme) {
18
18
  switch (theme) {
19
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
19
20
  case SmartLinkTheme.Black:
20
21
  return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n color: ", ";\n :active {\n color: ", ";\n }\n :hover {\n color: ", ";\n text-decoration: underline;\n }\n "])), tokens.blackLink, tokens.blackLinkPressed, tokens.blackLink);
21
22
 
@@ -41,10 +42,18 @@ var getMaxLines = function getMaxLines(maxLines) {
41
42
 
42
43
  return maxLines;
43
44
  };
45
+ /**
46
+ * An element that represent.
47
+ * @public
48
+ * @param {LinkProps} LinkProps - The props necessary for the Icon element.
49
+ * @see LinkIcon
50
+ */
51
+
44
52
 
45
53
  var Link = function Link(_ref) {
46
54
  var _ref$maxLines = _ref.maxLines,
47
55
  maxLines = _ref$maxLines === void 0 ? DEFAULT_MAX_LINES : _ref$maxLines,
56
+ overrideCss = _ref.overrideCss,
48
57
  _ref$size = _ref.size,
49
58
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
50
59
  _ref$testId = _ref.testId,
@@ -62,7 +71,7 @@ var Link = function Link(_ref) {
62
71
  testId: "".concat(testId, "-tooltip"),
63
72
  tag: "span"
64
73
  }, jsx("a", {
65
- css: getAnchorStyles(size, theme, getMaxLines(maxLines)),
74
+ css: [getAnchorStyles(size, theme, getMaxLines(maxLines)), overrideCss],
66
75
  "data-smart-element-link": true,
67
76
  "data-testid": testId,
68
77
  onClick: onClick,
@@ -7,10 +7,17 @@ import React from 'react';
7
7
  import { css, jsx } from '@emotion/core';
8
8
  import AtlaskitLozenge from '@atlaskit/lozenge';
9
9
  var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n line-height: inherit;\n"])));
10
+ /**
11
+ * An element that displays a Lozenge.
12
+ * @public
13
+ * @param {LozengeProps} LozengeProps - The props necessary for the Lozenge element.
14
+ * @see State
15
+ */
10
16
 
11
17
  var Lozenge = function Lozenge(_ref) {
12
18
  var _ref$appearance = _ref.appearance,
13
19
  appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
20
+ overrideCss = _ref.overrideCss,
14
21
  text = _ref.text,
15
22
  _ref$testId = _ref.testId,
16
23
  testId = _ref$testId === void 0 ? 'smart-element-lozenge' : _ref$testId;
@@ -20,12 +27,13 @@ var Lozenge = function Lozenge(_ref) {
20
27
  }
21
28
 
22
29
  return jsx("span", {
23
- css: styles,
30
+ css: [styles, overrideCss],
24
31
  "data-fit-to-content": true,
25
- "data-smart-element-lozenge": true
32
+ "data-smart-element-lozenge": true,
33
+ "data-testid": testId
26
34
  }, jsx(AtlaskitLozenge, {
27
35
  appearance: appearance,
28
- testId: testId
36
+ testId: "".concat(testId, "-lozenge")
29
37
  }, text));
30
38
  };
31
39
 
@@ -18,9 +18,16 @@ import ImageIcon from '../../common/image-icon';
18
18
  * contents within the element's box.
19
19
  */
20
20
  var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n aspect-ratio: 16 / 9;\n display: flex;\n width: 100%;\n\n // fallback\n @supports not (aspect-ratio: auto) {\n padding-top: 56.25%; // 16:9 ratio (9 / 16 = 0.5625)\n height: 0;\n position: relative;\n overflow: hidden;\n }\n\n > img {\n min-height: 100%;\n min-width: 100%;\n max-height: 100%;\n max-width: 100%;\n object-fit: cover;\n object-position: center center;\n\n // fallback\n @supports not (aspect-ratio: auto) {\n position: absolute;\n transform: translate(-50%, -50%);\n left: 50%;\n top: 50%;\n width: auto;\n height: auto;\n }\n }\n"])));
21
+ /**
22
+ * An element that displays a Media.
23
+ * @public
24
+ * @param {MediaProps} MediaProps - The props necessary for the Media element.
25
+ * @see Preview
26
+ */
21
27
 
22
28
  var Media = function Media(_ref) {
23
- var _ref$testId = _ref.testId,
29
+ var overrideCss = _ref.overrideCss,
30
+ _ref$testId = _ref.testId,
24
31
  testId = _ref$testId === void 0 ? 'smart-element-media' : _ref$testId,
25
32
  type = _ref.type,
26
33
  url = _ref.url;
@@ -30,7 +37,7 @@ var Media = function Media(_ref) {
30
37
  }
31
38
 
32
39
  return jsx("div", {
33
- css: styles,
40
+ css: [styles, overrideCss],
34
41
  "data-smart-element-media": true,
35
42
  "data-testid": testId
36
43
  }, jsx(ImageIcon, {
@@ -8,17 +8,23 @@ import { css, jsx } from '@emotion/core';
8
8
  import { getFormattedMessage, getTruncateStyles } from '../../utils';
9
9
  import { tokens } from '../../../../../utils/token';
10
10
 
11
- var getStyles = function getStyles(maxLines, color) {
12
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), color, getTruncateStyles(maxLines));
11
+ var getStyles = function getStyles(maxLines) {
12
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), tokens.text, getTruncateStyles(maxLines));
13
13
  };
14
+ /**
15
+ * An element that displays some Text.
16
+ * @public
17
+ * @param {TextProps} TextProps - The props necessary for the Text element.
18
+ * @see Title
19
+ */
20
+
14
21
 
15
22
  var Text = function Text(_ref) {
16
- var _ref$color = _ref.color,
17
- color = _ref$color === void 0 ? tokens.text : _ref$color,
18
- content = _ref.content,
23
+ var content = _ref.content,
19
24
  _ref$maxLines = _ref.maxLines,
20
25
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
21
26
  message = _ref.message,
27
+ overrideCss = _ref.overrideCss,
22
28
  _ref$testId = _ref.testId,
23
29
  testId = _ref$testId === void 0 ? 'smart-element-text' : _ref$testId;
24
30
 
@@ -27,7 +33,7 @@ var Text = function Text(_ref) {
27
33
  }
28
34
 
29
35
  return jsx("span", {
30
- css: getStyles(maxLines, color),
36
+ css: [getStyles(maxLines), overrideCss],
31
37
  "data-separator": true,
32
38
  "data-smart-element-text": true,
33
39
  "data-testid": testId
@@ -1,9 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
3
4
 
4
- var _elementMappings;
5
+ var _templateObject, _elementMappings;
5
6
 
6
7
  import React, { useContext } from 'react';
8
+ import { css } from '@emotion/core';
7
9
  import { ElementName, IconType } from '../../../../constants';
8
10
  import Icon from './icon';
9
11
  import Link from './link';
@@ -59,8 +61,8 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
59
61
  }), _defineProperty(_elementMappings, ElementName.Snippet, {
60
62
  component: Text,
61
63
  props: {
62
- color: tokens.snippet,
63
- maxLines: SNIPPET_DEFAULT_MAX_LINES
64
+ maxLines: SNIPPET_DEFAULT_MAX_LINES,
65
+ overrideCss: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n "])), tokens.snippet)
64
66
  }
65
67
  }), _defineProperty(_elementMappings, ElementName.State, {
66
68
  component: Lozenge
@@ -3,6 +3,12 @@ import React from 'react';
3
3
  import Container from './components/container';
4
4
  import { FlexibleUiContext } from '../../state/flexible-ui-context';
5
5
  import { getContextByStatus, getRetryOptions } from './utils';
6
+ /**
7
+ * This represents a Flexible Card: a link represented by a card with metadata.
8
+ * This is the container in which all Flexible UI Blocks and Elements exist.
9
+ * Note: TitleBlock is mandatory for a Flexible Card to render.
10
+ * @see Container
11
+ */
6
12
 
7
13
  var FlexibleCard = function FlexibleCard(_ref) {
8
14
  var cardState = _ref.cardState,
@@ -11,9 +11,18 @@ import { SmartLinkSize, ActionName } from '../../constants';
11
11
  import { useSmartLinkActions } from '../../state/hooks-external/useSmartLinkActions';
12
12
  import { HoverCardContainer } from './styled';
13
13
  import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
14
- export var HoverCard = function HoverCard(_ref) {
14
+ import { withAnalyticsEvents, withAnalyticsContext } from '@atlaskit/analytics-next';
15
+ import { fireSmartLinkEvent } from '../../utils/analytics';
16
+ import { useSmartCardState as useLinkState } from '../../state/store';
17
+ import { useSmartLinkAnalytics } from '../../state/analytics';
18
+ import { getExtensionKey, getDefinitionId } from '../../state/helpers';
19
+ export var HoverCardComponent = function HoverCardComponent(_ref) {
15
20
  var children = _ref.children,
16
- url = _ref.url;
21
+ url = _ref.url,
22
+ createAnalyticsEvent = _ref.createAnalyticsEvent;
23
+ var analyticsHandler = useCallback(function (analyticsPayload) {
24
+ fireSmartLinkEvent(analyticsPayload, createAnalyticsEvent);
25
+ }, [createAnalyticsEvent]);
17
26
  var delay = 300;
18
27
 
19
28
  var _React$useState = React.useState(false),
@@ -23,26 +32,45 @@ export var HoverCard = function HoverCard(_ref) {
23
32
 
24
33
  var fadeOutTimeoutId = useRef();
25
34
  var fadeInTimeoutId = useRef();
35
+ var cardOpenTime = useRef();
36
+ var linkState = useLinkState(url);
37
+ var analytics = useSmartLinkAnalytics(analyticsHandler);
38
+ var extensionKey = useMemo(function () {
39
+ return getExtensionKey(linkState.details);
40
+ }, [linkState]);
41
+ var definitionId = useMemo(function () {
42
+ return getDefinitionId(linkState.details);
43
+ }, [linkState]);
26
44
  var initHideCard = useCallback(function () {
27
45
  if (fadeInTimeoutId.current) {
28
46
  clearTimeout(fadeInTimeoutId.current);
29
47
  }
30
48
 
31
49
  fadeOutTimeoutId.current = setTimeout(function () {
50
+ //Check its previously open to avoid firing events when moving between the child and hover card components
51
+ if (isOpen === true && cardOpenTime.current) {
52
+ var hoverTime = Date.now() - cardOpenTime.current;
53
+ analytics.ui.hoverCardDismissedEvent('card', hoverTime, definitionId, extensionKey);
54
+ }
55
+
32
56
  setIsOpen(false);
33
57
  }, delay);
34
- }, [delay]);
58
+ }, [delay, isOpen, definitionId, extensionKey, analytics]);
35
59
  var initShowCard = useCallback(function () {
36
60
  if (fadeOutTimeoutId.current) {
37
61
  clearTimeout(fadeOutTimeoutId.current);
38
62
  }
39
63
 
40
64
  fadeInTimeoutId.current = setTimeout(function () {
65
+ //Check if its previously closed to avoid firing events when moving between the child and hover card components
66
+ if (isOpen === false) {
67
+ cardOpenTime.current = Date.now();
68
+ analytics.ui.hoverCardViewedEvent('card', definitionId, extensionKey);
69
+ }
70
+
41
71
  setIsOpen(true);
42
72
  }, delay);
43
- }, [delay]); //TODO: EDM-2905: Add analytics events
44
-
45
- var analyticsHandler = useCallback(function () {}, []);
73
+ }, [delay, isOpen, definitionId, extensionKey, analytics]);
46
74
  var linkActions = useSmartLinkActions({
47
75
  url: url,
48
76
  appearance: 'block',
@@ -69,11 +97,12 @@ export var HoverCard = function HoverCard(_ref) {
69
97
  }),
70
98
  iconPosition: 'before',
71
99
  onClick: function onClick() {
72
- return window.open(url, '_blank');
100
+ window.open(url, '_blank');
101
+ analytics.ui.hoverCardOpenLinkClickedEvent('card', definitionId, extensionKey);
73
102
  },
74
103
  testId: 'hover-card-open-button'
75
104
  };
76
- }, [url]);
105
+ }, [url, definitionId, extensionKey, analytics]);
77
106
 
78
107
  var cardComponent = function cardComponent() {
79
108
  return jsx("div", {
@@ -101,7 +130,7 @@ export var HoverCard = function HoverCard(_ref) {
101
130
  testId: "hover-card",
102
131
  isOpen: isOpen,
103
132
  onClose: onClose,
104
- placement: "bottom",
133
+ placement: "bottom-start",
105
134
  content: cardComponent,
106
135
  trigger: function trigger(triggerProps) {
107
136
  return jsx("span", _extends({}, triggerProps, {
@@ -110,4 +139,7 @@ export var HoverCard = function HoverCard(_ref) {
110
139
  }), children);
111
140
  }
112
141
  });
113
- };
142
+ };
143
+ export var HoverCard = withAnalyticsContext({
144
+ source: 'smartLinkPreviewHoverCard'
145
+ })(withAnalyticsEvents()(HoverCardComponent));
@@ -3,4 +3,5 @@ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral
3
3
  var _templateObject;
4
4
 
5
5
  import { css } from '@emotion/core';
6
- export var HoverCardContainer = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: none;\n border-width: 0;\n max-width: 500px;\n padding: 0;\n"])));
6
+ import { loadingPlaceholderClassName } from '../../index';
7
+ export var HoverCardContainer = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: none;\n border-width: 0;\n max-width: 350px;\n padding: 0;\n\n .", " {\n display: none;\n }\n"])), loadingPlaceholderClassName);