@atlaskit/smart-card 19.1.27 → 19.1.30

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 (85) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/constants.js +3 -1
  3. package/dist/cjs/extractors/flexible/index.js +4 -2
  4. package/dist/cjs/extractors/flexible/utils.js +24 -2
  5. package/dist/cjs/extractors/hover/extractMetadata.js +3 -2
  6. package/dist/cjs/version.json +1 -1
  7. package/dist/cjs/view/CardWithUrl/component.js +9 -1
  8. package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +1 -1
  9. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  10. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  11. package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +2 -0
  12. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  13. package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +2 -0
  14. package/dist/cjs/view/FlexibleCard/components/elements/index.js +17 -3
  15. package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +2 -0
  16. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  17. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +3 -1
  18. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +2 -0
  19. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +20 -12
  20. package/dist/cjs/view/HoverCard/components/hover-card-content.js +12 -5
  21. package/dist/cjs/view/HoverCard/index.js +1 -1
  22. package/dist/cjs/view/HoverCard/styled.js +8 -5
  23. package/dist/cjs/view/HoverCard/utils.js +27 -3
  24. package/dist/es2019/constants.js +3 -1
  25. package/dist/es2019/extractors/flexible/index.js +5 -3
  26. package/dist/es2019/extractors/flexible/utils.js +9 -1
  27. package/dist/es2019/extractors/hover/extractMetadata.js +3 -2
  28. package/dist/es2019/version.json +1 -1
  29. package/dist/es2019/view/CardWithUrl/component.js +8 -1
  30. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +11 -1
  31. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +5 -3
  32. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  33. package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +2 -0
  34. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  35. package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +2 -0
  36. package/dist/es2019/view/FlexibleCard/components/elements/index.js +12 -0
  37. package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +2 -0
  38. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  39. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +2 -0
  40. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +2 -0
  41. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +26 -16
  42. package/dist/es2019/view/HoverCard/components/hover-card-content.js +11 -5
  43. package/dist/es2019/view/HoverCard/index.js +1 -1
  44. package/dist/es2019/view/HoverCard/styled.js +31 -5
  45. package/dist/es2019/view/HoverCard/utils.js +27 -4
  46. package/dist/esm/constants.js +3 -1
  47. package/dist/esm/extractors/flexible/index.js +5 -3
  48. package/dist/esm/extractors/flexible/utils.js +13 -0
  49. package/dist/esm/extractors/hover/extractMetadata.js +3 -2
  50. package/dist/esm/state/actions/index.js +1 -1
  51. package/dist/esm/state/hooks/usePrefetch.js +1 -1
  52. package/dist/esm/utils/mocks.js +1 -1
  53. package/dist/esm/version.json +1 -1
  54. package/dist/esm/view/BlockCard/actions/DownloadAction.js +1 -1
  55. package/dist/esm/view/BlockCard/actions/PreviewAction.js +1 -1
  56. package/dist/esm/view/BlockCard/actions/RetryAction.js +1 -1
  57. package/dist/esm/view/BlockCard/actions/ViewAction.js +1 -1
  58. package/dist/esm/view/CardWithUrl/component.js +8 -1
  59. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +2 -2
  60. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  61. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  62. package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +2 -0
  63. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  64. package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +2 -0
  65. package/dist/esm/view/FlexibleCard/components/elements/index.js +12 -0
  66. package/dist/esm/view/FlexibleCard/components/elements/link/index.js +2 -0
  67. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  68. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +3 -1
  69. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +2 -0
  70. package/dist/esm/view/FlexibleCard/components/elements/utils.js +20 -12
  71. package/dist/esm/view/HoverCard/components/hover-card-content.js +11 -5
  72. package/dist/esm/view/HoverCard/index.js +1 -1
  73. package/dist/esm/view/HoverCard/styled.js +8 -5
  74. package/dist/esm/view/HoverCard/utils.js +27 -3
  75. package/dist/types/constants.d.ts +3 -1
  76. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +11 -6
  77. package/dist/types/extractors/flexible/utils.d.ts +2 -0
  78. package/dist/types/state/flexible-ui-context/types.d.ts +22 -10
  79. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +15 -1
  80. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +10 -0
  81. package/dist/types/view/FlexibleCard/components/elements/types.d.ts +7 -1
  82. package/dist/types/view/HoverCard/types.d.ts +1 -0
  83. package/dist/types/view/HoverCard/utils.d.ts +1 -1
  84. package/package.json +2 -2
  85. package/report.api.md +505 -0
@@ -1,5 +1,5 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { useMemo, useCallback } from 'react';
4
4
  import { auth } from '@atlaskit/outbound-auth-flow-client';
5
5
  import { APIError } from '@atlaskit/linking-common';
@@ -1,5 +1,5 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { useCallback } from 'react';
4
4
  import { useSmartLinkContext } from '@atlaskit/link-provider';
5
5
  export function usePrefetch(url) {
@@ -1,10 +1,10 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
3
  import _createClass from "@babel/runtime/helpers/createClass";
5
4
  import _inherits from "@babel/runtime/helpers/inherits";
6
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
8
8
 
9
9
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
10
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "19.1.27",
3
+ "version": "19.1.30",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,5 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import React from 'react';
4
4
  import { FormattedMessage } from 'react-intl-next';
5
5
  import { downloadUrl } from '@atlaskit/media-common';
@@ -1,10 +1,10 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _extends from "@babel/runtime/helpers/extends";
3
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
4
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
6
5
  var _excluded = ["popupMountPointId", "onClose"],
7
6
  _excluded2 = ["details"];
7
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
8
8
 
9
9
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
10
 
@@ -1,5 +1,5 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import React from 'react';
4
4
  import { FormattedMessage } from 'react-intl-next';
5
5
  import { messages } from '../../../messages';
@@ -1,5 +1,5 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import React from 'react';
4
4
  import { FormattedMessage } from 'react-intl-next';
5
5
  import { messages } from '../../../messages';
@@ -1,4 +1,5 @@
1
1
  import React, { useEffect, useCallback, useMemo } from 'react';
2
+ import { useFeatureFlag } from '@atlaskit/link-provider';
2
3
  import { isSpecialEvent } from '../../utils';
3
4
  import * as measure from '../../utils/performance';
4
5
  import { getDefinitionId, getServices, isFinalState, getClickUrl, getResourceType, getExtensionKey, getSubproduct, getProduct } from '../../state/helpers';
@@ -47,7 +48,13 @@ export function CardWithUrlContent(_ref) {
47
48
  var services = getServices(state.details);
48
49
  var isFlexibleUi = useMemo(function () {
49
50
  return isFlexibleUiCard(children);
50
- }, [children]); // Setup UI handlers.
51
+ }, [children]);
52
+ var showHoverPreviewFlag = useFeatureFlag('showHoverPreview');
53
+
54
+ if (showHoverPreview === undefined && showHoverPreviewFlag !== undefined) {
55
+ showHoverPreview = showHoverPreviewFlag;
56
+ } // Setup UI handlers.
57
+
51
58
 
52
59
  var handleClick = useCallback(function (event) {
53
60
  var clickUrl = getClickUrl(url, state.details);
@@ -5,11 +5,11 @@ var _templateObject;
5
5
  /** @jsx jsx */
6
6
  import React from 'react';
7
7
  import { css, jsx } from '@emotion/core';
8
- import { SmartLinkDirection, SmartLinkSize } from '../../../../../constants';
8
+ import { ElementName, SmartLinkDirection, SmartLinkSize } from '../../../../../constants';
9
9
  import { getBaseStyles, getGapSize, renderChildren } from '../utils';
10
10
 
11
11
  var getBlockStyles = function getBlockStyles(direction, size) {
12
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n justify-content: flex-start;\n [data-separator] + [data-separator]:before {\n content: '\u2022';\n margin-right: ", "rem;\n }\n"])), getBaseStyles(direction, size), getGapSize(size));
12
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n justify-content: flex-start;\n [data-separator] + [data-separator]:before {\n content: '\u2022';\n margin-right: ", "rem;\n }\n // Pull request elements: source branch \u2192 target branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2192';\n }\n // Pull request elements: target branch \u2190 source branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2190';\n }\n"])), getBaseStyles(direction, size), getGapSize(size), ElementName.SourceBranch, ElementName.TargetBranch, ElementName.TargetBranch, ElementName.SourceBranch);
13
13
  };
14
14
  /**
15
15
  * A block represents a collection of elements and actions that are arranged
@@ -20,7 +20,7 @@ import * as Actions from '../actions';
20
20
  import { isFlexibleUiElement } from '../../../../utils/flexible';
21
21
  import ActionGroup from './action-group';
22
22
  import ElementGroup from './element-group';
23
- export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_ElementDisplaySchema, ElementName.AuthorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CollaboratorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CommentCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ViewCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ReactCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.VoteCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.LinkIcon, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Preview, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.Priority, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Snippet, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.State, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.SubscriberCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Title, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Provider, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.LatestCommit, ['inline']), _ElementDisplaySchema);
23
+ export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_ElementDisplaySchema, ElementName.AuthorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CollaboratorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CommentCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ViewCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ReactCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.VoteCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.LatestCommit, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.LinkIcon, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Preview, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.Priority, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Provider, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Snippet, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.SourceBranch, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.State, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.SubscriberCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.TargetBranch, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Title, ['inline']), _ElementDisplaySchema);
24
24
 
25
25
  var getDirectionStyles = function getDirectionStyles(direction) {
26
26
  switch (direction) {
@@ -38,6 +38,7 @@ var AvatarGroup = function AvatarGroup(_ref) {
38
38
  items = _ref$items === void 0 ? [] : _ref$items,
39
39
  _ref$maxCount = _ref.maxCount,
40
40
  maxCount = _ref$maxCount === void 0 ? MAX_COUNT : _ref$maxCount,
41
+ name = _ref.name,
41
42
  overrideCss = _ref.overrideCss,
42
43
  _ref$size = _ref.size,
43
44
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
@@ -51,6 +52,7 @@ var AvatarGroup = function AvatarGroup(_ref) {
51
52
  return jsx("span", {
52
53
  css: [getStyles(size), overrideCss],
53
54
  "data-fit-to-content": true,
55
+ "data-smart-element": name,
54
56
  "data-smart-element-avatar-group": true,
55
57
  "data-testid": testId
56
58
  }, jsx(AtlaskitAvatarGroup, {
@@ -65,6 +65,7 @@ var renderImageIcon = function renderImageIcon(url, testId) {
65
65
  var Badge = function Badge(_ref) {
66
66
  var icon = _ref.icon,
67
67
  label = _ref.label,
68
+ name = _ref.name,
68
69
  overrideCss = _ref.overrideCss,
69
70
  _ref$testId = _ref.testId,
70
71
  testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId,
@@ -79,6 +80,7 @@ var Badge = function Badge(_ref) {
79
80
  return jsx("span", {
80
81
  css: [badgeStyles, overrideCss],
81
82
  "data-fit-to-content": true,
83
+ "data-smart-element": name,
82
84
  "data-smart-element-badge": true,
83
85
  "data-testid": testId
84
86
  }, jsx("span", {
@@ -32,6 +32,7 @@ var typeToDescriptorMap = {
32
32
 
33
33
  var DateTime = function DateTime(_ref) {
34
34
  var date = _ref.date,
35
+ name = _ref.name,
35
36
  overrideCss = _ref.overrideCss,
36
37
  type = _ref.type,
37
38
  _ref$testId = _ref.testId,
@@ -71,6 +72,7 @@ var DateTime = function DateTime(_ref) {
71
72
  return jsx("span", {
72
73
  css: [styles, overrideCss],
73
74
  "data-separator": true,
75
+ "data-smart-element": name,
74
76
  "data-smart-element-date-time": true,
75
77
  "data-testid": testId
76
78
  }, text ? "".concat(text, " ").concat(context) : jsx(FormattedMessage, _extends({}, typeToDescriptorMap[type][typeVariant], {
@@ -68,6 +68,7 @@ var Icon = function Icon(_ref) {
68
68
  var icon = _ref.icon,
69
69
  _ref$label = _ref.label,
70
70
  label = _ref$label === void 0 ? 'Link' : _ref$label,
71
+ name = _ref.name,
71
72
  _ref$position = _ref.position,
72
73
  position = _ref$position === void 0 ? SmartLinkPosition.Top : _ref$position,
73
74
  overrideCss = _ref.overrideCss,
@@ -87,6 +88,7 @@ var Icon = function Icon(_ref) {
87
88
  return jsx("div", {
88
89
  css: [styles, renderStyles, overrideCss],
89
90
  "data-fit-to-content": true,
91
+ "data-smart-element": name,
90
92
  "data-smart-element-icon": true,
91
93
  "data-testid": testId
92
94
  }, element);
@@ -92,6 +92,12 @@ export var ReactCount = createElement(ElementName.ReactCount);
92
92
  */
93
93
 
94
94
  export var Snippet = createElement(ElementName.Snippet);
95
+ /**
96
+ * Creates a SourceBranch Text element using the data from sourceBranch in the Flexible UI Context.
97
+ * @see Text
98
+ */
99
+
100
+ export var SourceBranch = createElement(ElementName.SourceBranch);
95
101
  /**
96
102
  * Creates a State Lozenge element using the data from State in the Flexible UI Context.
97
103
  * @see Lozenge
@@ -104,6 +110,12 @@ export var State = createElement(ElementName.State);
104
110
  */
105
111
 
106
112
  export var SubscriberCount = createElement(ElementName.SubscriberCount);
113
+ /**
114
+ * Creates a TargetBranch Text element using the data from targetBranch in the Flexible UI Context.
115
+ * @see Text
116
+ */
117
+
118
+ export var TargetBranch = createElement(ElementName.TargetBranch);
107
119
  /**
108
120
  * Creates a Title Link element using the data from Title in the Flexible UI Context.
109
121
  * This represents the main link text within the Smart Link.
@@ -62,6 +62,7 @@ var Link = function Link(_ref) {
62
62
  var hideTooltip = _ref.hideTooltip,
63
63
  _ref$maxLines = _ref.maxLines,
64
64
  maxLines = _ref$maxLines === void 0 ? DEFAULT_MAX_LINES : _ref$maxLines,
65
+ name = _ref.name,
65
66
  overrideCss = _ref.overrideCss,
66
67
  _ref$size = _ref.size,
67
68
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
@@ -78,6 +79,7 @@ var Link = function Link(_ref) {
78
79
  }, [text]);
79
80
  var anchor = jsx("a", {
80
81
  css: [getAnchorStyles(size, theme, getMaxLines(maxLines), hasSpace), overrideCss],
82
+ "data-smart-element": name,
81
83
  "data-smart-element-link": true,
82
84
  "data-testid": testId,
83
85
  onClick: onClick,
@@ -17,6 +17,7 @@ var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["
17
17
  var Lozenge = function Lozenge(_ref) {
18
18
  var _ref$appearance = _ref.appearance,
19
19
  appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
20
+ name = _ref.name,
20
21
  overrideCss = _ref.overrideCss,
21
22
  text = _ref.text,
22
23
  _ref$testId = _ref.testId,
@@ -29,6 +30,7 @@ var Lozenge = function Lozenge(_ref) {
29
30
  return jsx("span", {
30
31
  css: [styles, overrideCss],
31
32
  "data-fit-to-content": true,
33
+ "data-smart-element": name,
32
34
  "data-smart-element-lozenge": true,
33
35
  "data-testid": testId
34
36
  }, jsx(AtlaskitLozenge, {
@@ -26,7 +26,8 @@ var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["
26
26
  */
27
27
 
28
28
  var Media = function Media(_ref) {
29
- var overrideCss = _ref.overrideCss,
29
+ var name = _ref.name,
30
+ overrideCss = _ref.overrideCss,
30
31
  _ref$testId = _ref.testId,
31
32
  testId = _ref$testId === void 0 ? 'smart-element-media' : _ref$testId,
32
33
  type = _ref.type,
@@ -38,6 +39,7 @@ var Media = function Media(_ref) {
38
39
 
39
40
  return jsx("div", {
40
41
  css: [styles, overrideCss],
42
+ "data-smart-element": name,
41
43
  "data-smart-element-media": true,
42
44
  "data-testid": testId
43
45
  }, jsx(ImageIcon, {
@@ -24,6 +24,7 @@ var Text = function Text(_ref) {
24
24
  _ref$maxLines = _ref.maxLines,
25
25
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
26
26
  message = _ref.message,
27
+ name = _ref.name,
27
28
  overrideCss = _ref.overrideCss,
28
29
  _ref$testId = _ref.testId,
29
30
  testId = _ref$testId === void 0 ? 'smart-element-text' : _ref$testId;
@@ -35,6 +36,7 @@ var Text = function Text(_ref) {
35
36
  return jsx("span", {
36
37
  css: [getStyles(maxLines), overrideCss],
37
38
  "data-separator": true,
39
+ "data-smart-element": name,
38
40
  "data-smart-element-text": true,
39
41
  "data-testid": testId
40
42
  }, getFormattedMessage(message) || content);
@@ -45,10 +45,19 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
45
45
  }
46
46
  }), _defineProperty(_elementMappings, ElementName.CreatedBy, {
47
47
  component: Text
48
+ }), _defineProperty(_elementMappings, ElementName.CreatedOn, {
49
+ component: DateTime
50
+ }), _defineProperty(_elementMappings, ElementName.LatestCommit, {
51
+ component: Badge,
52
+ props: {
53
+ icon: IconType.Commit
54
+ }
48
55
  }), _defineProperty(_elementMappings, ElementName.LinkIcon, {
49
56
  component: Icon
50
57
  }), _defineProperty(_elementMappings, ElementName.ModifiedBy, {
51
58
  component: Text
59
+ }), _defineProperty(_elementMappings, ElementName.ModifiedOn, {
60
+ component: DateTime
52
61
  }), _defineProperty(_elementMappings, ElementName.Preview, {
53
62
  component: Media
54
63
  }), _defineProperty(_elementMappings, ElementName.Priority, {
@@ -58,12 +67,16 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
58
67
  props: {
59
68
  icon: IconType.ProgrammingLanguage
60
69
  }
70
+ }), _defineProperty(_elementMappings, ElementName.Provider, {
71
+ component: Badge
61
72
  }), _defineProperty(_elementMappings, ElementName.Snippet, {
62
73
  component: Text,
63
74
  props: {
64
75
  maxLines: SNIPPET_DEFAULT_MAX_LINES,
65
76
  overrideCss: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n "])), tokens.snippet)
66
77
  }
78
+ }), _defineProperty(_elementMappings, ElementName.SourceBranch, {
79
+ component: Text
67
80
  }), _defineProperty(_elementMappings, ElementName.State, {
68
81
  component: Lozenge
69
82
  }), _defineProperty(_elementMappings, ElementName.SubscriberCount, {
@@ -71,19 +84,10 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
71
84
  props: {
72
85
  icon: IconType.Subscriber
73
86
  }
87
+ }), _defineProperty(_elementMappings, ElementName.TargetBranch, {
88
+ component: Text
74
89
  }), _defineProperty(_elementMappings, ElementName.Title, {
75
90
  component: Link
76
- }), _defineProperty(_elementMappings, ElementName.CreatedOn, {
77
- component: DateTime
78
- }), _defineProperty(_elementMappings, ElementName.ModifiedOn, {
79
- component: DateTime
80
- }), _defineProperty(_elementMappings, ElementName.Provider, {
81
- component: Badge
82
- }), _defineProperty(_elementMappings, ElementName.LatestCommit, {
83
- component: Badge,
84
- props: {
85
- icon: IconType.Commit
86
- }
87
91
  }), _elementMappings);
88
92
 
89
93
  var getContextKey = function getContextKey(name) {
@@ -126,6 +130,8 @@ var getData = function getData(elementName, contextKey, context) {
126
130
  return toDateTimeProps('modified', context.modifiedOn);
127
131
 
128
132
  case ElementName.Snippet:
133
+ case ElementName.SourceBranch:
134
+ case ElementName.TargetBranch:
129
135
  return toTextProps(data);
130
136
 
131
137
  case ElementName.Title:
@@ -193,6 +199,8 @@ export var createElement = function createElement(name) {
193
199
  return function (overrides) {
194
200
  var context = useContext(FlexibleUiContext);
195
201
  var data = getData(name, contextKey, context);
196
- return data ? /*#__PURE__*/React.createElement(BaseElement, _extends({}, props, data, overrides)) : null;
202
+ return data ? /*#__PURE__*/React.createElement(BaseElement, _extends({}, props, data, overrides, {
203
+ name: name
204
+ })) : null;
197
205
  };
198
206
  };
@@ -9,6 +9,7 @@ import { isSpecialEvent } from '../../../utils';
9
9
  import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
10
10
  import { getExtensionKey } from '../../../state/helpers';
11
11
  import { titleBlockCss, metadataBlockCss, footerBlockCss } from '../styled';
12
+ import { extractType } from '../../../extractors/common/primitives/extractType';
12
13
  var flexibleUiOptions = {
13
14
  hideElevation: true,
14
15
  size: SmartLinkSize.Medium,
@@ -73,13 +74,16 @@ var HoverCardContent = function HoverCardContent(_ref) {
73
74
  }, [url, analytics]);
74
75
  var footerActions = useMemo(function () {
75
76
  return toFooterActions(cardActions);
76
- }, [cardActions]); //TODO: EDM-3224 deleted simulated and use real JsonLd
77
+ }, [cardActions]);
78
+ var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
79
+ var types = data ? extractType(data) : undefined; //TODO: EDM-3224 deleted simulated and use real JsonLd
77
80
 
78
- var _extractMetadata = extractMetadata(getSimulatedMetadata(extensionKey)),
81
+ var _extractMetadata = extractMetadata(getSimulatedMetadata(extensionKey, types)),
79
82
  primary = _extractMetadata.primary,
80
- secondary = _extractMetadata.secondary;
83
+ secondary = _extractMetadata.secondary,
84
+ subtitle = _extractMetadata.subtitle;
81
85
 
82
- var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
86
+ var titleMaxLines = subtitle && subtitle.length > 0 ? 1 : 2;
83
87
  var body = data && extractPreview(data) ? /*#__PURE__*/React.createElement(PreviewBlock, null) : /*#__PURE__*/React.createElement(SnippetBlock, null);
84
88
  return /*#__PURE__*/React.createElement(FlexibleCard, {
85
89
  cardState: cardState,
@@ -90,9 +94,11 @@ var HoverCardContent = function HoverCardContent(_ref) {
90
94
  url: url
91
95
  }, /*#__PURE__*/React.createElement(TitleBlock, {
92
96
  actions: titleActions,
97
+ maxLines: titleMaxLines,
93
98
  overrideCss: titleBlockCss,
94
99
  size: SmartLinkSize.Large,
95
- position: SmartLinkPosition.Center
100
+ position: SmartLinkPosition.Center,
101
+ subtitle: subtitle
96
102
  }), /*#__PURE__*/React.createElement(MetadataBlock, {
97
103
  primary: primary,
98
104
  secondary: secondary,
@@ -99,7 +99,7 @@ export var HoverCardComponent = function HoverCardComponent(_ref) {
99
99
  onMouseLeave: initHideCard
100
100
  }), children);
101
101
  },
102
- zIndex: 501 // Temporary fix for Confluence inline comment on editor mod has z-index of 500
102
+ zIndex: 511 // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
103
103
 
104
104
  });
105
105
  };
@@ -1,10 +1,13 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
4
4
 
5
5
  import { css } from '@emotion/core';
6
6
  import { loadingPlaceholderClassName } from '../../index';
7
- export var HoverCardContainer = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: 24rem;\n padding: 1rem;\n\n .", " {\n display: none;\n }\n"])), loadingPlaceholderClassName);
8
- export var titleBlockCss = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n gap: 0.5rem;\n"])));
9
- export var metadataBlockCss = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n gap: 0px;\n\n /* primary element group */\n [data-smart-element-group]:first-of-type {\n flex-grow: 7;\n /* horizontal spacing between elements in group */\n > span {\n margin-right: 0.5rem;\n }\n }\n /* secondary element group */\n [data-smart-element-group]:last-of-type {\n flex-grow: 3;\n /* horizontal spacing between elements in group */\n > span {\n margin-left: 0.5rem;\n }\n }\n"])));
10
- export var footerBlockCss = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n padding-top: 0.25rem;\n"])));
7
+ var blockGap = '0.5rem';
8
+ var elementGap = '0.5rem';
9
+ var separatorCss = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n [data-separator] + [data-separator]:before {\n margin-right: ", ";\n }\n"])), elementGap);
10
+ export var HoverCardContainer = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: 24rem;\n padding: 1rem;\n\n .", " {\n display: none;\n }\n"])), loadingPlaceholderClassName);
11
+ export var titleBlockCss = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n gap: ", ";\n\n ", "\n\n // title and subtitle element group\n [data-smart-element-group] {\n // gap between title and subtitle\n gap: 0.06rem;\n\n /* subtitle element group */\n > [data-smart-element-group] {\n > span {\n margin-right: ", ";\n }\n }\n }\n"])), blockGap, separatorCss, elementGap);
12
+ export var metadataBlockCss = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n gap: 0px;\n\n /* primary element group */\n [data-smart-element-group]:nth-of-type(1) {\n flex-grow: 7;\n\n // a separator between text-based element\n ", "\n\n /* horizontal spacing between elements in group */\n > span {\n margin-right: ", ";\n }\n }\n /* secondary element group */\n [data-smart-element-group]:nth-of-type(2) {\n flex-grow: 3;\n /* horizontal spacing between elements in group */\n > span {\n margin-left: ", ";\n }\n }\n"])), separatorCss, elementGap, elementGap);
13
+ export var footerBlockCss = css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n padding-top: 0.25rem;\n"])));
@@ -2,13 +2,35 @@ import { ElementName } from '../../constants';
2
2
  export var HOVER_CARD_ANALYTICS_DISPLAY = 'flexible';
3
3
  export var getSimulatedMetadata = function getSimulatedMetadata() {
4
4
  var extensionKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
5
+ var types = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
5
6
 
6
7
  switch (extensionKey) {
8
+ case 'bitbucket-object-provider':
9
+ case 'native-bitbucket-object-provider':
10
+ if (types.includes('atlassian:SourceCodePullRequest')) {
11
+ return {
12
+ metadata: {
13
+ primary: [ElementName.AuthorGroup, ElementName.ModifiedOn, ElementName.SubscriberCount, ElementName.State],
14
+ secondary: [],
15
+ subtitle: [ElementName.SourceBranch, ElementName.TargetBranch]
16
+ }
17
+ };
18
+ }
19
+
20
+ return {
21
+ metadata: {
22
+ primary: [ElementName.ModifiedOn, ElementName.CreatedBy],
23
+ secondary: [],
24
+ subtitle: []
25
+ }
26
+ };
27
+
7
28
  case 'confluence-object-provider':
8
29
  return {
9
30
  metadata: {
10
31
  primary: [ElementName.AuthorGroup, ElementName.CreatedBy],
11
- secondary: [ElementName.CommentCount, ElementName.ReactCount]
32
+ secondary: [ElementName.CommentCount, ElementName.ReactCount],
33
+ subtitle: []
12
34
  }
13
35
  };
14
36
 
@@ -16,7 +38,8 @@ export var getSimulatedMetadata = function getSimulatedMetadata() {
16
38
  return {
17
39
  metadata: {
18
40
  primary: [ElementName.AuthorGroup, ElementName.State, ElementName.Priority],
19
- secondary: []
41
+ secondary: [],
42
+ subtitle: []
20
43
  }
21
44
  };
22
45
 
@@ -24,7 +47,8 @@ export var getSimulatedMetadata = function getSimulatedMetadata() {
24
47
  return {
25
48
  metadata: {
26
49
  primary: [ElementName.ModifiedOn, ElementName.CreatedBy],
27
- secondary: []
50
+ secondary: [],
51
+ subtitle: []
28
52
  }
29
53
  };
30
54
  }
@@ -68,7 +68,7 @@ export declare enum SmartLinkWidth {
68
68
  * When adding an element...
69
69
  * 1) Create base element if it doesn't already exist.
70
70
  * Base element are inside src/view/FlexibleCard/components/elements.
71
- * E.g. Badge,DateTime, Icon, Lozenge, etc.
71
+ * E.g. Badge, DateTime, Icon, Lozenge, etc.
72
72
  * 2) Update FlexibleUiContext with the new prop for data representing
73
73
  * the element, preferably with the same name as the element itself.
74
74
  * (src/state/flexible-ui-context/types.ts)
@@ -94,8 +94,10 @@ export declare enum ElementName {
94
94
  Provider = "Provider",
95
95
  ReactCount = "ReactCount",
96
96
  Snippet = "Snippet",
97
+ SourceBranch = "SourceBranch",
97
98
  State = "State",
98
99
  SubscriberCount = "SubscriberCount",
100
+ TargetBranch = "TargetBranch",
99
101
  Title = "Title",
100
102
  ViewCount = "ViewCount",
101
103
  VoteCount = "VoteCount",
@@ -17,6 +17,7 @@ export declare const TEST_BASE_DATA: JsonLd.Data.BaseData;
17
17
  export declare const TEST_DATA_WITH_EMOJI: JsonLd.Data.BaseData;
18
18
  export declare const TEST_DATA_WITH_NO_PREFIX: JsonLd.Data.BaseData;
19
19
  export declare const TEST_PROJECT: JsonLd.Data.Project;
20
+ export declare const TEST_PULL_REQUEST: JsonLd.Data.SourceCodePullRequest;
20
21
  export declare const TEST_TASK: JsonLd.Data.Task;
21
22
  export declare const TEST_META_DATA: JsonLd.Meta.BaseMeta;
22
23
  export declare const TEST_DOCUMENT: JsonLd.Data.Document;
@@ -30,19 +31,19 @@ export declare const TEST_DOCUMENT_WITH_ACTIONS: {
30
31
  '@type': "Collection" | "Document" | "schema:BlogPosting" | "schema:TextDigitalDocument" | "schema:DigitalDocument" | "schema:PresentationDigitalDocument" | "schema:SpreadsheetDigitalDocument" | "atlassian:UndefinedLink" | ("Object" | "Document")[] | (JsonLd.Data.DocumentChildType | JsonLd.Data.DocumentParentType)[] | ("Document" | "schema:DigitalDocument")[];
31
32
  'schema:fileFormat'?: string | undefined;
32
33
  'atlassian:fileSize'?: number | undefined;
33
- 'schema:dateCreated'?: string | undefined;
34
- 'atlassian:updatedBy'?: JsonLd.Primitives.Link | JsonLd.Primitives.Person<any> | undefined;
35
34
  'schema:commentCount'?: number | undefined;
36
35
  'atlassian:isDeleted'?: boolean | undefined;
37
36
  'atlassian:dateViewed'?: string | undefined;
38
37
  'atlassian:reactCount'?: number | undefined;
39
- 'atlassian:state'?: string | undefined;
38
+ 'atlassian:state'?: string | JsonLd.Primitives.Object<any> | undefined;
40
39
  'atlassian:viewCount'?: number | undefined;
41
40
  'atlassian:voteCount'?: number | undefined;
42
41
  '@context': JsonLd.Primitives.Context;
43
42
  'atlassian:downloadUrl'?: string | undefined;
44
43
  'atlassian:visitUrl'?: string | undefined;
45
44
  'atlassian:titlePrefix'?: JsonLd.Data.TitlePrefix | undefined;
45
+ 'atlassian:updatedBy'?: JsonLd.Primitives.Link | JsonLd.Primitives.Person<any> | JsonLd.Primitives.Collection<JsonLd.Primitives.Link | JsonLd.Primitives.Person<any>> | undefined;
46
+ 'schema:dateCreated'?: string | undefined;
46
47
  '@id'?: string | undefined;
47
48
  attachment?: JsonLd.Primitives.Property<JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link> | undefined;
48
49
  attributedTo?: JsonLd.Primitives.Property<(JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link) & {
@@ -85,20 +86,20 @@ export declare const TEST_DOCUMENT_WITH_PREVIEW: {
85
86
  '@type': "Collection" | "Document" | "schema:BlogPosting" | "schema:TextDigitalDocument" | "schema:DigitalDocument" | "schema:PresentationDigitalDocument" | "schema:SpreadsheetDigitalDocument" | "atlassian:UndefinedLink" | ("Object" | "Document")[] | (JsonLd.Data.DocumentChildType | JsonLd.Data.DocumentParentType)[] | ("Document" | "schema:DigitalDocument")[];
86
87
  'schema:fileFormat'?: string | undefined;
87
88
  'atlassian:fileSize'?: number | undefined;
88
- 'schema:dateCreated'?: string | undefined;
89
- 'atlassian:updatedBy'?: JsonLd.Primitives.Link | JsonLd.Primitives.Person<any> | undefined;
90
89
  'schema:commentCount'?: number | undefined;
91
90
  'atlassian:isDeleted'?: boolean | undefined;
92
91
  'schema:potentialAction'?: JsonLd.Primitives.Property<JsonLd.Data.DocumentAction> | undefined;
93
92
  'atlassian:dateViewed'?: string | undefined;
94
93
  'atlassian:reactCount'?: number | undefined;
95
- 'atlassian:state'?: string | undefined;
94
+ 'atlassian:state'?: string | JsonLd.Primitives.Object<any> | undefined;
96
95
  'atlassian:viewCount'?: number | undefined;
97
96
  'atlassian:voteCount'?: number | undefined;
98
97
  '@context': JsonLd.Primitives.Context;
99
98
  'atlassian:downloadUrl'?: string | undefined;
100
99
  'atlassian:visitUrl'?: string | undefined;
101
100
  'atlassian:titlePrefix'?: JsonLd.Data.TitlePrefix | undefined;
101
+ 'atlassian:updatedBy'?: JsonLd.Primitives.Link | JsonLd.Primitives.Person<any> | JsonLd.Primitives.Collection<JsonLd.Primitives.Link | JsonLd.Primitives.Person<any>> | undefined;
102
+ 'schema:dateCreated'?: string | undefined;
102
103
  '@id'?: string | undefined;
103
104
  attachment?: JsonLd.Primitives.Property<JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link> | undefined;
104
105
  attributedTo?: JsonLd.Primitives.Property<(JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link) & {
@@ -145,6 +146,8 @@ export declare const TEST_DATA_WITH_LATEST_COMMIT_OBJ: {
145
146
  'atlassian:downloadUrl'?: string | undefined;
146
147
  'atlassian:visitUrl'?: string | undefined;
147
148
  'atlassian:titlePrefix'?: JsonLd.Data.TitlePrefix | undefined;
149
+ 'atlassian:updatedBy'?: JsonLd.Primitives.Link | JsonLd.Primitives.Person<any> | JsonLd.Primitives.Collection<JsonLd.Primitives.Link | JsonLd.Primitives.Person<any>> | undefined;
150
+ 'schema:dateCreated'?: string | undefined;
148
151
  '@id'?: string | undefined;
149
152
  attachment?: JsonLd.Primitives.Property<JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link> | undefined;
150
153
  attributedTo?: JsonLd.Primitives.Property<(JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link) & {
@@ -189,6 +192,8 @@ export declare const TEST_DATA_WITH_LATEST_COMMIT_TEXT: {
189
192
  'atlassian:downloadUrl'?: string | undefined;
190
193
  'atlassian:visitUrl'?: string | undefined;
191
194
  'atlassian:titlePrefix'?: JsonLd.Data.TitlePrefix | undefined;
195
+ 'atlassian:updatedBy'?: JsonLd.Primitives.Link | JsonLd.Primitives.Person<any> | JsonLd.Primitives.Collection<JsonLd.Primitives.Link | JsonLd.Primitives.Person<any>> | undefined;
196
+ 'schema:dateCreated'?: string | undefined;
192
197
  '@id'?: string | undefined;
193
198
  attachment?: JsonLd.Primitives.Property<JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link> | undefined;
194
199
  attributedTo?: JsonLd.Primitives.Property<(JsonLd.Primitives.Object<any> | JsonLd.Primitives.Link) & {
@@ -6,4 +6,6 @@ export declare const extractVoteCount: (data: JsonLd.Data.BaseData) => number |
6
6
  export declare const extractCreatedBy: (data: JsonLd.Data.BaseData) => string | undefined;
7
7
  export declare const extractModifiedBy: (data: JsonLd.Data.BaseData) => string | undefined;
8
8
  export declare const extractProgrammingLanguage: (data: JsonLd.Data.BaseData) => string | undefined;
9
+ export declare const extractSourceBranch: (data: JsonLd.Data.SourceCodePullRequest) => string | undefined;
9
10
  export declare const extractSubscriberCount: (data: JsonLd.Data.BaseData) => number | undefined;
11
+ export declare const extractTargetBranch: (data: JsonLd.Data.SourceCodePullRequest) => string | undefined;