@atlaskit/smart-card 19.1.29 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/constants.js +4 -1
  3. package/dist/cjs/extractors/block/index.js +9 -19
  4. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +3 -5
  5. package/dist/cjs/extractors/common/byline/extractByline.js +5 -11
  6. package/dist/cjs/extractors/common/context/index.js +0 -16
  7. package/dist/cjs/extractors/common/icon/extractIcon.js +11 -8
  8. package/dist/cjs/extractors/common/icon/priority.js +1 -0
  9. package/dist/cjs/extractors/common/lozenge/extractLozenge.js +9 -3
  10. package/dist/cjs/extractors/common/lozenge/extractState.js +2 -2
  11. package/dist/cjs/extractors/common/lozenge/extractTaskType.js +2 -2
  12. package/dist/cjs/extractors/common/primitives/index.js +0 -16
  13. package/dist/cjs/extractors/embed/index.js +5 -9
  14. package/dist/cjs/extractors/flexible/collaboratorGroup/index.js +2 -2
  15. package/dist/cjs/extractors/flexible/extract-preview.js +2 -2
  16. package/dist/cjs/extractors/flexible/extract-priority.js +2 -2
  17. package/dist/cjs/extractors/flexible/icon/extract-jsonld-data-icon.js +8 -2
  18. package/dist/cjs/extractors/flexible/icon/extract-provider-icon.js +2 -2
  19. package/dist/cjs/extractors/flexible/icon/extract-url-icon.js +2 -2
  20. package/dist/cjs/extractors/flexible/index.js +11 -12
  21. package/dist/cjs/extractors/flexible/utils.js +33 -5
  22. package/dist/cjs/extractors/hover/extractMetadata.js +3 -2
  23. package/dist/cjs/extractors/inline/index.js +4 -4
  24. package/dist/cjs/version.json +1 -1
  25. package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +1 -1
  26. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  27. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  28. package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +2 -0
  29. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  30. package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +2 -0
  31. package/dist/cjs/view/FlexibleCard/components/elements/index.js +25 -4
  32. package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +2 -0
  33. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  34. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +3 -1
  35. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +2 -0
  36. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +42 -12
  37. package/dist/cjs/view/FlexibleCard/utils.js +3 -1
  38. package/dist/cjs/view/HoverCard/components/hover-card-content.js +12 -5
  39. package/dist/cjs/view/HoverCard/styled.js +8 -5
  40. package/dist/cjs/view/HoverCard/utils.js +46 -3
  41. package/dist/cjs/view/InlineCard/index.js +5 -3
  42. package/dist/es2019/constants.js +4 -1
  43. package/dist/es2019/extractors/block/index.js +2 -7
  44. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +1 -2
  45. package/dist/es2019/extractors/common/byline/extractByline.js +1 -4
  46. package/dist/es2019/extractors/common/context/index.js +0 -2
  47. package/dist/es2019/extractors/common/icon/extractIcon.js +7 -3
  48. package/dist/es2019/extractors/common/icon/priority.js +1 -0
  49. package/dist/es2019/extractors/common/lozenge/extractLozenge.js +5 -1
  50. package/dist/es2019/extractors/common/lozenge/extractState.js +2 -2
  51. package/dist/es2019/extractors/common/lozenge/extractTaskType.js +1 -1
  52. package/dist/es2019/extractors/common/primitives/index.js +0 -2
  53. package/dist/es2019/extractors/embed/index.js +1 -3
  54. package/dist/es2019/extractors/flexible/collaboratorGroup/index.js +1 -1
  55. package/dist/es2019/extractors/flexible/extract-preview.js +1 -1
  56. package/dist/es2019/extractors/flexible/extract-priority.js +1 -1
  57. package/dist/es2019/extractors/flexible/icon/extract-jsonld-data-icon.js +7 -1
  58. package/dist/es2019/extractors/flexible/icon/extract-provider-icon.js +1 -1
  59. package/dist/es2019/extractors/flexible/icon/extract-url-icon.js +1 -1
  60. package/dist/es2019/extractors/flexible/index.js +8 -7
  61. package/dist/es2019/extractors/flexible/utils.js +11 -2
  62. package/dist/es2019/extractors/hover/extractMetadata.js +3 -2
  63. package/dist/es2019/extractors/inline/index.js +2 -2
  64. package/dist/es2019/version.json +1 -1
  65. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +11 -1
  66. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +6 -3
  67. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  68. package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +2 -0
  69. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  70. package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +2 -0
  71. package/dist/es2019/view/FlexibleCard/components/elements/index.js +18 -0
  72. package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +2 -0
  73. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  74. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +2 -0
  75. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +2 -0
  76. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +48 -16
  77. package/dist/es2019/view/FlexibleCard/utils.js +2 -1
  78. package/dist/es2019/view/HoverCard/components/hover-card-content.js +11 -5
  79. package/dist/es2019/view/HoverCard/styled.js +31 -5
  80. package/dist/es2019/view/HoverCard/utils.js +46 -4
  81. package/dist/es2019/view/InlineCard/index.js +2 -1
  82. package/dist/esm/constants.js +4 -1
  83. package/dist/esm/extractors/block/index.js +2 -7
  84. package/dist/esm/extractors/common/actions/extractPreviewAction.js +1 -2
  85. package/dist/esm/extractors/common/byline/extractByline.js +1 -4
  86. package/dist/esm/extractors/common/context/index.js +0 -2
  87. package/dist/esm/extractors/common/icon/extractIcon.js +7 -3
  88. package/dist/esm/extractors/common/icon/priority.js +1 -0
  89. package/dist/esm/extractors/common/lozenge/extractLozenge.js +8 -2
  90. package/dist/esm/extractors/common/lozenge/extractState.js +2 -2
  91. package/dist/esm/extractors/common/lozenge/extractTaskType.js +1 -1
  92. package/dist/esm/extractors/common/primitives/index.js +0 -2
  93. package/dist/esm/extractors/embed/index.js +1 -3
  94. package/dist/esm/extractors/flexible/collaboratorGroup/index.js +1 -1
  95. package/dist/esm/extractors/flexible/extract-preview.js +1 -1
  96. package/dist/esm/extractors/flexible/extract-priority.js +1 -1
  97. package/dist/esm/extractors/flexible/icon/extract-jsonld-data-icon.js +7 -1
  98. package/dist/esm/extractors/flexible/icon/extract-provider-icon.js +1 -1
  99. package/dist/esm/extractors/flexible/icon/extract-url-icon.js +1 -1
  100. package/dist/esm/extractors/flexible/index.js +8 -7
  101. package/dist/esm/extractors/flexible/utils.js +17 -1
  102. package/dist/esm/extractors/hover/extractMetadata.js +3 -2
  103. package/dist/esm/extractors/inline/index.js +2 -2
  104. package/dist/esm/version.json +1 -1
  105. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +2 -2
  106. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  107. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  108. package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +2 -0
  109. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  110. package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +2 -0
  111. package/dist/esm/view/FlexibleCard/components/elements/index.js +18 -0
  112. package/dist/esm/view/FlexibleCard/components/elements/link/index.js +2 -0
  113. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  114. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +3 -1
  115. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +2 -0
  116. package/dist/esm/view/FlexibleCard/components/elements/utils.js +41 -12
  117. package/dist/esm/view/FlexibleCard/utils.js +2 -1
  118. package/dist/esm/view/HoverCard/components/hover-card-content.js +11 -5
  119. package/dist/esm/view/HoverCard/styled.js +8 -5
  120. package/dist/esm/view/HoverCard/utils.js +46 -3
  121. package/dist/esm/view/InlineCard/index.js +2 -1
  122. package/dist/types/constants.d.ts +4 -1
  123. package/dist/types/extractors/block/index.d.ts +1 -1
  124. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +1 -0
  125. package/dist/types/extractors/common/context/index.d.ts +0 -2
  126. package/dist/types/extractors/common/icon/extractIcon.d.ts +1 -1
  127. package/dist/types/extractors/common/lozenge/extractState.d.ts +1 -1
  128. package/dist/types/extractors/common/primitives/index.d.ts +0 -2
  129. package/dist/types/extractors/flexible/collaboratorGroup/index.d.ts +1 -1
  130. package/dist/types/extractors/flexible/utils.d.ts +3 -0
  131. package/dist/types/state/flexible-ui-context/types.d.ts +30 -11
  132. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +22 -1
  133. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +15 -0
  134. package/dist/types/view/FlexibleCard/components/elements/lozenge/types.d.ts +2 -1
  135. package/dist/types/view/FlexibleCard/components/elements/types.d.ts +7 -1
  136. package/dist/types/view/HoverCard/types.d.ts +1 -0
  137. package/dist/types/view/HoverCard/utils.d.ts +1 -1
  138. package/package.json +3 -3
  139. package/report.api.md +6 -0
  140. package/dist/cjs/extractors/common/context/extractContext.js +0 -38
  141. package/dist/cjs/extractors/common/context/extractProvider.js +0 -83
  142. package/dist/cjs/extractors/common/date/extractDateCreated.js +0 -14
  143. package/dist/cjs/extractors/common/date/extractDateUpdated.js +0 -14
  144. package/dist/cjs/extractors/common/person/extractMembers.js +0 -37
  145. package/dist/cjs/extractors/common/person/extractPersonAssignedTo.js +0 -18
  146. package/dist/cjs/extractors/common/person/extractPersonCreatedBy.js +0 -28
  147. package/dist/cjs/extractors/common/person/extractPersonUpdatedBy.js +0 -18
  148. package/dist/cjs/extractors/common/person/index.js +0 -37
  149. package/dist/cjs/extractors/common/person/types.js +0 -5
  150. package/dist/cjs/extractors/common/preview/extractImage.js +0 -26
  151. package/dist/cjs/extractors/common/preview/index.js +0 -21
  152. package/dist/cjs/extractors/common/primitives/extractLink.js +0 -22
  153. package/dist/cjs/extractors/common/primitives/extractTitle.js +0 -55
  154. package/dist/cjs/extractors/common/primitives/extractType.js +0 -20
  155. package/dist/cjs/extractors/common/utils.js +0 -43
  156. package/dist/es2019/extractors/common/context/extractContext.js +0 -27
  157. package/dist/es2019/extractors/common/context/extractProvider.js +0 -65
  158. package/dist/es2019/extractors/common/date/extractDateCreated.js +0 -5
  159. package/dist/es2019/extractors/common/date/extractDateUpdated.js +0 -5
  160. package/dist/es2019/extractors/common/person/extractMembers.js +0 -23
  161. package/dist/es2019/extractors/common/person/extractPersonAssignedTo.js +0 -8
  162. package/dist/es2019/extractors/common/person/extractPersonCreatedBy.js +0 -16
  163. package/dist/es2019/extractors/common/person/extractPersonUpdatedBy.js +0 -8
  164. package/dist/es2019/extractors/common/person/index.js +0 -4
  165. package/dist/es2019/extractors/common/person/types.js +0 -1
  166. package/dist/es2019/extractors/common/preview/extractImage.js +0 -16
  167. package/dist/es2019/extractors/common/preview/index.js +0 -2
  168. package/dist/es2019/extractors/common/primitives/extractLink.js +0 -12
  169. package/dist/es2019/extractors/common/primitives/extractTitle.js +0 -37
  170. package/dist/es2019/extractors/common/primitives/extractType.js +0 -11
  171. package/dist/es2019/extractors/common/utils.js +0 -30
  172. package/dist/esm/extractors/common/context/extractContext.js +0 -27
  173. package/dist/esm/extractors/common/context/extractProvider.js +0 -65
  174. package/dist/esm/extractors/common/date/extractDateCreated.js +0 -5
  175. package/dist/esm/extractors/common/date/extractDateUpdated.js +0 -5
  176. package/dist/esm/extractors/common/person/extractMembers.js +0 -27
  177. package/dist/esm/extractors/common/person/extractPersonAssignedTo.js +0 -8
  178. package/dist/esm/extractors/common/person/extractPersonCreatedBy.js +0 -18
  179. package/dist/esm/extractors/common/person/extractPersonUpdatedBy.js +0 -8
  180. package/dist/esm/extractors/common/person/index.js +0 -4
  181. package/dist/esm/extractors/common/person/types.js +0 -1
  182. package/dist/esm/extractors/common/preview/extractImage.js +0 -16
  183. package/dist/esm/extractors/common/preview/index.js +0 -2
  184. package/dist/esm/extractors/common/primitives/extractLink.js +0 -12
  185. package/dist/esm/extractors/common/primitives/extractTitle.js +0 -41
  186. package/dist/esm/extractors/common/primitives/extractType.js +0 -11
  187. package/dist/esm/extractors/common/utils.js +0 -30
  188. package/dist/types/extractors/common/context/extractContext.d.ts +0 -7
  189. package/dist/types/extractors/common/context/extractProvider.d.ts +0 -8
  190. package/dist/types/extractors/common/date/extractDateCreated.d.ts +0 -3
  191. package/dist/types/extractors/common/date/extractDateUpdated.d.ts +0 -2
  192. package/dist/types/extractors/common/person/extractMembers.d.ts +0 -3
  193. package/dist/types/extractors/common/person/extractPersonAssignedTo.d.ts +0 -4
  194. package/dist/types/extractors/common/person/extractPersonCreatedBy.d.ts +0 -3
  195. package/dist/types/extractors/common/person/extractPersonUpdatedBy.d.ts +0 -5
  196. package/dist/types/extractors/common/person/index.d.ts +0 -5
  197. package/dist/types/extractors/common/person/types.d.ts +0 -4
  198. package/dist/types/extractors/common/preview/extractImage.d.ts +0 -2
  199. package/dist/types/extractors/common/preview/index.d.ts +0 -3
  200. package/dist/types/extractors/common/primitives/extractLink.d.ts +0 -2
  201. package/dist/types/extractors/common/primitives/extractTitle.d.ts +0 -2
  202. package/dist/types/extractors/common/primitives/extractType.d.ts +0 -2
  203. package/dist/types/extractors/common/utils.d.ts +0 -4
@@ -59,6 +59,8 @@ var _ResolvingView = require("./ResolvingView");
59
59
 
60
60
  var _UnauthorisedView = require("./UnauthorisedView");
61
61
 
62
+ var _extractors = require("@atlaskit/linking-common/extractors");
63
+
62
64
  var InlineCard = function InlineCard(_ref) {
63
65
  var _details$meta;
64
66
 
@@ -109,7 +111,7 @@ var InlineCard = function InlineCard(_ref) {
109
111
  }));
110
112
 
111
113
  case 'unauthorized':
112
- var provider = (0, _context.extractProvider)(cardDetails);
114
+ var provider = (0, _extractors.extractProvider)(cardDetails);
113
115
  return /*#__PURE__*/_react.default.createElement(_UnauthorisedView.InlineCardUnauthorizedView, {
114
116
  icon: provider && provider.icon,
115
117
  url: url,
@@ -120,7 +122,7 @@ var InlineCard = function InlineCard(_ref) {
120
122
  });
121
123
 
122
124
  case 'forbidden':
123
- var providerForbidden = (0, _context.extractProvider)(cardDetails);
125
+ var providerForbidden = (0, _extractors.extractProvider)(cardDetails);
124
126
  var cardMetadata = (_details$meta = details === null || details === void 0 ? void 0 : details.meta) !== null && _details$meta !== void 0 ? _details$meta : (0, _jsonld.getUnauthorizedJsonLd)().meta;
125
127
  var requestAccessContext = (0, _context.extractRequestAccessContext)({
126
128
  jsonLd: cardMetadata,
@@ -139,7 +141,7 @@ var InlineCard = function InlineCard(_ref) {
139
141
  });
140
142
 
141
143
  case 'not_found':
142
- var providerNotFound = (0, _context.extractProvider)(cardDetails);
144
+ var providerNotFound = (0, _extractors.extractProvider)(cardDetails);
143
145
  return /*#__PURE__*/_react.default.createElement(_ErroredView.InlineCardErroredView, {
144
146
  url: url,
145
147
  icon: providerNotFound && providerNotFound.icon,
@@ -83,7 +83,7 @@ export let SmartLinkWidth;
83
83
  * When adding an element...
84
84
  * 1) Create base element if it doesn't already exist.
85
85
  * Base element are inside src/view/FlexibleCard/components/elements.
86
- * E.g. Badge,DateTime, Icon, Lozenge, etc.
86
+ * E.g. Badge, DateTime, Icon, Lozenge, etc.
87
87
  * 2) Update FlexibleUiContext with the new prop for data representing
88
88
  * the element, preferably with the same name as the element itself.
89
89
  * (src/state/flexible-ui-context/types.ts)
@@ -111,6 +111,7 @@ export let ElementName;
111
111
  ElementName["CommentCount"] = "CommentCount";
112
112
  ElementName["CreatedBy"] = "CreatedBy";
113
113
  ElementName["CreatedOn"] = "CreatedOn";
114
+ ElementName["DueOn"] = "DueOn";
114
115
  ElementName["LinkIcon"] = "LinkIcon";
115
116
  ElementName["ModifiedBy"] = "ModifiedBy";
116
117
  ElementName["ModifiedOn"] = "ModifiedOn";
@@ -120,8 +121,10 @@ export let ElementName;
120
121
  ElementName["Provider"] = "Provider";
121
122
  ElementName["ReactCount"] = "ReactCount";
122
123
  ElementName["Snippet"] = "Snippet";
124
+ ElementName["SourceBranch"] = "SourceBranch";
123
125
  ElementName["State"] = "State";
124
126
  ElementName["SubscriberCount"] = "SubscriberCount";
127
+ ElementName["TargetBranch"] = "TargetBranch";
125
128
  ElementName["Title"] = "Title";
126
129
  ElementName["ViewCount"] = "ViewCount";
127
130
  ElementName["VoteCount"] = "VoteCount";
@@ -1,15 +1,10 @@
1
- import { extractLink, extractTitle, extractTitleTextColor, extractSummary } from '../common/primitives';
1
+ import { extractTitleTextColor, extractSummary } from '../common/primitives';
2
2
  import { extractLozenge } from '../common/lozenge';
3
3
  import { extractIcon } from '../common/icon';
4
- import { extractProvider } from '../common/context/extractProvider';
5
4
  import { extractCommentCount, extractProgrammingLanguage, extractSubscriberCount } from '../common/detail';
6
- import { extractMembers } from '../common/person/extractMembers';
7
- import { extractPersonAssignedTo } from '../common/person/extractPersonAssignedTo';
8
- import { extractPersonCreatedBy } from '../common/person/extractPersonCreatedBy';
9
- import { extractPersonUpdatedBy } from '../common/person/extractPersonUpdatedBy';
5
+ import { extractLink, extractTitle, extractProvider, extractMembers, extractPersonAssignedTo, extractPersonCreatedBy, extractPersonUpdatedBy, extractImage } from '@atlaskit/linking-common/extractors';
10
6
  import { extractByline } from '../common/byline/extractByline';
11
7
  import { extractTitlePrefix } from '../common/title-prefix/extractTitlePrefix';
12
- import { extractImage } from '../common/preview/extractImage';
13
8
  import { extractActions } from '../common/actions/extractActions';
14
9
  import { extractPreviewAction } from '../common/actions/extractPreviewAction';
15
10
  import { extractIsTrusted } from '../common/meta/extractIsTrusted';
@@ -1,7 +1,6 @@
1
1
  import { uiRenderSuccessEvent, uiRenderFailedEvent } from '../../../utils/analytics';
2
2
  import { extractDownloadUrl } from '../detail';
3
- import { extractProvider } from '../context';
4
- import { extractPreview } from '../preview';
3
+ import { extractProvider, extractPreview } from '@atlaskit/linking-common/extractors';
5
4
  import { PreviewAction } from '../../../view/BlockCard';
6
5
 
7
6
  const getMetadataFromJsonLd = (jsonLd, platform) => {
@@ -1,10 +1,7 @@
1
1
  import React from 'react';
2
2
  import { FormattedRelativeTime } from 'react-intl-next';
3
3
  import { selectUnit } from '@formatjs/intl-utils';
4
- import { extractPersonUpdatedBy } from '../person/extractPersonUpdatedBy';
5
- import { extractPersonCreatedBy } from '../person/extractPersonCreatedBy';
6
- import { extractDateCreated } from '../date/extractDateCreated';
7
- import { extractDateUpdated } from '../date/extractDateUpdated';
4
+ import { extractDateCreated, extractDateUpdated, extractPersonCreatedBy, extractPersonUpdatedBy } from '@atlaskit/linking-common/extractors';
8
5
  export const extractByline = jsonLd => {
9
6
  const updatedAt = extractDateUpdated(jsonLd);
10
7
  const createdAt = extractDateCreated(jsonLd);
@@ -1,3 +1 @@
1
- export { extractContext } from './extractContext';
2
- export { extractProvider } from './extractProvider';
3
1
  export { extractRequestAccessContext } from './extractAccessContext';
@@ -4,14 +4,13 @@ import CommitIcon from '@atlaskit/icon-object/glyph/commit/16';
4
4
  import PullRequestIcon from '@atlaskit/icon-object/glyph/pull-request/16';
5
5
  import BranchIcon from '@atlaskit/icon-object/glyph/branch/16';
6
6
  import RepoIcon from '@atlaskit/icon-object/glyph/code/16';
7
+ import TaskIcon from '@atlaskit/icon-object/glyph/task/16';
7
8
  import { extractorPriorityMap } from './priority';
8
- import { extractProvider } from '../context/extractProvider';
9
- import { extractTitle } from '../primitives/extractTitle';
9
+ import { extractProvider, extractUrlFromIconJsonLd, extractTitle } from '@atlaskit/linking-common/extractors';
10
10
  import { extractFileFormat } from './extractFileFormat';
11
11
  import { extractIconFromDocument } from './extractIconFromDocument';
12
12
  import { extractIconFromTask } from './extractIconFromTask';
13
13
  import { extractTaskType } from '../lozenge/extractTaskType';
14
- import { extractUrlFromIconJsonLd } from '../utils';
15
14
  export const extractIcon = (jsonLd, priority = 'type') => {
16
15
  const type = jsonLd['@type'];
17
16
  const opts = {
@@ -43,6 +42,11 @@ const extractIconByType = (type, opts) => {
43
42
  case 'atlassian:UndefinedLink':
44
43
  return extractIconFromDocument(type, opts);
45
44
 
45
+ case 'atlassian:Goal':
46
+ return opts.icon || /*#__PURE__*/React.createElement(TaskIcon, {
47
+ label: opts.title || 'goal'
48
+ });
49
+
46
50
  case 'atlassian:Project':
47
51
  return opts.icon || /*#__PURE__*/React.createElement(ProjectIcon, {
48
52
  label: opts.title || 'project',
@@ -6,6 +6,7 @@ export const extractorPriorityMap = {
6
6
  'schema:BlogPosting': 10,
7
7
  'schema:SpreadsheetDigitalDocument': 10,
8
8
  'schema:PresentationDigitalDocument': 10,
9
+ 'atlassian:Goal': 10,
9
10
  'atlassian:Task': 10,
10
11
  'atlassian:Project': 10,
11
12
  'atlassian:Template': 10,
@@ -1,7 +1,7 @@
1
1
  import { extractState } from './extractState';
2
2
  import { extractTag } from './extractTag';
3
3
  import { extractTaskStatus } from './extractTaskStatus';
4
- import { extractType } from '../primitives/extractType';
4
+ import { extractType } from '@atlaskit/linking-common/extractors';
5
5
  import { extractTaskType } from './extractTaskType';
6
6
  const DOC_TYPES = ['schema:BlogPosting', 'schema:TextDigitalDocument', 'schema:DigitalDocument', 'schema:PresentationDigitalDocument', 'schema:SpreadsheetDigitalDocument'];
7
7
  export const extractLozenge = jsonLd => {
@@ -20,6 +20,10 @@ export const extractLozenge = jsonLd => {
20
20
  const jsonLdDocument = jsonLd;
21
21
  const lozengeFromState = extractState(jsonLdDocument);
22
22
  return lozengeFromState;
23
+ } else if (type.includes('atlassian:Goal')) {
24
+ const jsonLdProject = jsonLd;
25
+ const lozengeFromState = extractState(jsonLdProject);
26
+ return lozengeFromState;
23
27
  } else if (type.includes('atlassian:Project')) {
24
28
  const jsonLdProject = jsonLd;
25
29
  const lozengeFromState = extractState(jsonLdProject);
@@ -16,14 +16,14 @@ export const extractState = jsonLd => {
16
16
  if (state.name) {
17
17
  return {
18
18
  text: state.name,
19
- appearance: 'default'
19
+ appearance: state.appearance || 'default'
20
20
  };
21
21
  }
22
22
  } else if (state['@type'] === 'Object') {
23
23
  if (state.name) {
24
24
  return {
25
25
  text: state.name,
26
- appearance: 'default'
26
+ appearance: state.appearance || 'default'
27
27
  };
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
- import { extractUrlFromIconJsonLd } from '../utils';
1
+ import { extractUrlFromIconJsonLd } from '@atlaskit/linking-common/extractors';
2
2
  export const extractTaskType = jsonLd => {
3
3
  // TODO: Remove once Jira migrate to the correct type.
4
4
  const taskType = jsonLd['atlassian:taskType'] || jsonLd.taskType;
@@ -1,4 +1,2 @@
1
- export { extractLink } from './extractLink';
2
1
  export { extractSummary } from './extractSummary';
3
- export { extractTitle } from './extractTitle';
4
2
  export { extractTitleTextColor } from './extractTitleTextColor';
@@ -1,6 +1,4 @@
1
- import { extractLink, extractTitle } from '../common/primitives';
2
- import { extractProvider } from '../common/context';
3
- import { extractPreview } from '@atlaskit/linking-common';
1
+ import { extractLink, extractTitle, extractProvider, extractPreview } from '@atlaskit/linking-common/extractors';
4
2
  import { extractIsTrusted } from '../common/meta/extractIsTrusted';
5
3
 
6
4
  const extractEmbedPreview = (jsonLd, platform) => {
@@ -1,4 +1,4 @@
1
- import { extractPersonFromJsonLd } from '../../common/utils';
1
+ import { extractPersonFromJsonLd } from '@atlaskit/linking-common/extractors';
2
2
  // Temporary Extractor until https://product-fabric.atlassian.net/browse/EDM-2652 is ready
3
3
  export const extractPersonsUpdatedBy = jsonLd => {
4
4
  const updatedBy = jsonLd['atlassian:updatedBy'];
@@ -1,4 +1,4 @@
1
- import { extractImage } from '../common/preview';
1
+ import { extractImage } from '@atlaskit/linking-common/extractors';
2
2
  import { MediaType } from '../../constants';
3
3
 
4
4
  const extractPreview = data => {
@@ -1,5 +1,5 @@
1
1
  import { IconType } from '../../constants';
2
- import { extractUrlFromIconJsonLd } from '../common/utils';
2
+ import { extractUrlFromIconJsonLd } from '@atlaskit/linking-common/extractors';
3
3
  const priorityMapper = {
4
4
  blocker: IconType.PriorityBlocker,
5
5
  critical: IconType.PriorityCritical,
@@ -5,7 +5,7 @@ import extractJiraTaskIcon from './extract-jira-task-icon';
5
5
  import extractProviderIcon from './extract-provider-icon';
6
6
  import extractUrlIcon from './extract-url-icon';
7
7
  import { extractTaskType } from '../../common/lozenge';
8
- import { extractTitle } from '../../common/primitives';
8
+ import { extractTitle } from '@atlaskit/linking-common/extractors';
9
9
  import { extractorPriorityMap as priorityMap } from '../../common/icon/priority';
10
10
  import { IconType } from '../../../constants';
11
11
 
@@ -82,6 +82,12 @@ const extractJsonldDataIcon = data => {
82
82
  label: taskLabel
83
83
  };
84
84
 
85
+ case 'atlassian:Goal':
86
+ return urlIcon || {
87
+ icon: IconType.Task,
88
+ label: label || 'Goal'
89
+ };
90
+
85
91
  case 'atlassian:Project':
86
92
  return urlIcon || {
87
93
  icon: IconType.Project,
@@ -1,7 +1,7 @@
1
1
  import { CONFLUENCE_GENERATOR_ID, JIRA_GENERATOR_ID } from '../../constants';
2
2
  import { IconType } from '../../../constants';
3
3
  import extractUrlIcon from './extract-url-icon';
4
- import { extractTitle } from '../../common/primitives';
4
+ import { extractTitle } from '@atlaskit/linking-common/extractors';
5
5
 
6
6
  const extractProviderIcon = data => {
7
7
  if (!data) {
@@ -1,4 +1,4 @@
1
- import { extractUrlFromIconJsonLd } from '../../common/utils';
1
+ import { extractUrlFromIconJsonLd } from '@atlaskit/linking-common/extractors';
2
2
 
3
3
  const extractUrlIcon = (icon, label) => {
4
4
  const url = icon && extractUrlFromIconJsonLd(icon);
@@ -1,11 +1,9 @@
1
- import { extractLink, extractSummary, extractTitle } from '../common/primitives';
1
+ import { extractSummary } from '../common/primitives';
2
2
  import { extractLozenge } from '../common/lozenge';
3
3
  import { extractLinkIcon } from './icon';
4
- import { extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount } from './utils';
5
- import { extractPersonCreatedBy } from '../common/person';
4
+ import { extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount, extractSourceBranch, extractTargetBranch, extractDueOn } from './utils';
6
5
  import { extractPersonsUpdatedBy } from './collaboratorGroup';
7
- import { extractDateUpdated } from '../common/date/extractDateUpdated';
8
- import { extractDateCreated } from '../common/date/extractDateCreated';
6
+ import { extractPersonCreatedBy, extractLink, extractTitle, extractDateUpdated, extractDateCreated } from '@atlaskit/linking-common/extractors';
9
7
  import extractPriority from './extract-priority';
10
8
  import extractProviderIcon from './icon/extract-provider-icon';
11
9
  import extractPreview from './extract-preview';
@@ -27,19 +25,22 @@ const extractFlexibleUiContext = (response, renderers) => {
27
25
  voteCount: extractVoteCount(data),
28
26
  createdBy: extractCreatedBy(data),
29
27
  createdOn: extractDateCreated(data),
28
+ dueOn: extractDueOn(data),
29
+ latestCommit: extractLatestCommit(data),
30
30
  linkIcon: extractLinkIcon(response, renderers),
31
31
  modifiedBy: extractModifiedBy(data),
32
32
  modifiedOn: extractDateUpdated(data),
33
33
  preview: extractPreview(data),
34
34
  priority: extractPriority(data),
35
+ provider: extractProviderIcon(data),
35
36
  programmingLanguage: extractProgrammingLanguage(data),
36
37
  snippet: extractSummary(data) || undefined,
37
38
  // Explicitly set here to remove an empty string
39
+ sourceBranch: extractSourceBranch(data),
38
40
  state: extractLozenge(data),
39
41
  subscriberCount: extractSubscriberCount(data),
42
+ targetBranch: extractTargetBranch(data),
40
43
  title: extractTitle(data) || url,
41
- provider: extractProviderIcon(data),
42
- latestCommit: extractLatestCommit(data),
43
44
  url
44
45
  };
45
46
  };
@@ -1,10 +1,17 @@
1
- import { extractPersonCreatedBy, extractPersonUpdatedBy } from '../common/person';
1
+ import { extractPersonCreatedBy, extractPersonUpdatedBy } from '@atlaskit/linking-common/extractors';
2
+
3
+ const extractLinkName = link => {
4
+ if (link && typeof link === 'object' && link['@type'] === 'Link') {
5
+ return link.name;
6
+ }
7
+ };
2
8
 
3
9
  const extractValue = (data, key) => {
4
10
  return data === null || data === void 0 ? void 0 : data[key];
5
11
  };
6
12
 
7
13
  export const extractCommentCount = data => extractValue(data, 'schema:commentCount');
14
+ export const extractDueOn = data => extractValue(data, 'endTime');
8
15
  export const extractViewCount = data => extractValue(data, 'atlassian:viewCount');
9
16
  export const extractReactCount = data => extractValue(data, 'atlassian:reactCount');
10
17
  export const extractVoteCount = data => extractValue(data, 'atlassian:voteCount');
@@ -23,4 +30,6 @@ export const extractModifiedBy = data => {
23
30
  }
24
31
  };
25
32
  export const extractProgrammingLanguage = data => extractValue(data, 'schema:programmingLanguage');
26
- export const extractSubscriberCount = data => extractValue(data, 'atlassian:subscriberCount');
33
+ export const extractSourceBranch = data => extractLinkName(data['atlassian:mergeSource']);
34
+ export const extractSubscriberCount = data => extractValue(data, 'atlassian:subscriberCount');
35
+ export const extractTargetBranch = data => extractLinkName(data['atlassian:mergeDestination']);
@@ -8,11 +8,12 @@ const elementNamesToItems = elementNames => {
8
8
  };
9
9
 
10
10
  export const extractMetadata = jsonLd => {
11
- var _jsonLd$metadata, _metadata$primary, _metadata$secondary;
11
+ var _jsonLd$metadata, _metadata$primary, _metadata$secondary, _metadata$subtitle;
12
12
 
13
13
  const metadata = (_jsonLd$metadata = jsonLd.metadata) !== null && _jsonLd$metadata !== void 0 ? _jsonLd$metadata : [];
14
14
  return {
15
15
  primary: elementNamesToItems((_metadata$primary = metadata.primary) !== null && _metadata$primary !== void 0 ? _metadata$primary : []),
16
- secondary: elementNamesToItems((_metadata$secondary = metadata.secondary) !== null && _metadata$secondary !== void 0 ? _metadata$secondary : [])
16
+ secondary: elementNamesToItems((_metadata$secondary = metadata.secondary) !== null && _metadata$secondary !== void 0 ? _metadata$secondary : []),
17
+ subtitle: elementNamesToItems((_metadata$subtitle = metadata.subtitle) !== null && _metadata$subtitle !== void 0 ? _metadata$subtitle : [])
17
18
  };
18
19
  };
@@ -1,8 +1,8 @@
1
- import { extractLink, extractTitle, extractTitleTextColor } from '../common/primitives';
1
+ import { extractTitleTextColor } from '../common/primitives';
2
2
  import { extractLozenge } from '../common/lozenge';
3
3
  import { extractIcon } from '../common/icon';
4
4
  import { extractTitlePrefix } from '../common/title-prefix';
5
- import { extractProvider } from '../common/context';
5
+ import { extractLink, extractTitle, extractProvider } from '@atlaskit/linking-common/extractors';
6
6
  import { CONFLUENCE_GENERATOR_ID, JIRA_GENERATOR_ID } from '../constants';
7
7
  export const extractInlineIcon = jsonLd => {
8
8
  const provider = extractProvider(jsonLd);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "19.1.29",
3
+ "version": "19.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import React from 'react';
3
3
  import { css, jsx } from '@emotion/core';
4
- import { SmartLinkDirection, SmartLinkSize } from '../../../../../constants';
4
+ import { ElementName, SmartLinkDirection, SmartLinkSize } from '../../../../../constants';
5
5
  import { getBaseStyles, getGapSize, renderChildren } from '../utils';
6
6
 
7
7
  const getBlockStyles = (direction, size) => css`
@@ -11,6 +11,16 @@ const getBlockStyles = (direction, size) => css`
11
11
  content: '•';
12
12
  margin-right: ${getGapSize(size)}rem;
13
13
  }
14
+ // Pull request elements: source branch → target branch
15
+ [data-smart-element='${ElementName.SourceBranch}']
16
+ + [data-smart-element='${ElementName.TargetBranch}']:before {
17
+ content: '→';
18
+ }
19
+ // Pull request elements: target branch ← source branch
20
+ [data-smart-element='${ElementName.TargetBranch}']
21
+ + [data-smart-element='${ElementName.SourceBranch}']:before {
22
+ content: '←';
23
+ }
14
24
  `;
15
25
  /**
16
26
  * A block represents a collection of elements and actions that are arranged
@@ -16,18 +16,21 @@ export const ElementDisplaySchema = {
16
16
  [ElementName.VoteCount]: ['inline'],
17
17
  [ElementName.CreatedBy]: ['inline'],
18
18
  [ElementName.CreatedOn]: ['inline'],
19
+ [ElementName.DueOn]: ['inline'],
20
+ [ElementName.LatestCommit]: ['inline'],
19
21
  [ElementName.LinkIcon]: ['inline'],
20
22
  [ElementName.ModifiedBy]: ['inline'],
21
23
  [ElementName.ModifiedOn]: ['inline'],
22
24
  [ElementName.Preview]: ['block'],
23
25
  [ElementName.Priority]: ['inline'],
24
26
  [ElementName.ProgrammingLanguage]: ['inline'],
27
+ [ElementName.Provider]: ['inline'],
25
28
  [ElementName.Snippet]: ['block'],
29
+ [ElementName.SourceBranch]: ['inline'],
26
30
  [ElementName.State]: ['inline'],
27
31
  [ElementName.SubscriberCount]: ['inline'],
28
- [ElementName.Title]: ['inline'],
29
- [ElementName.Provider]: ['inline'],
30
- [ElementName.LatestCommit]: ['inline']
32
+ [ElementName.TargetBranch]: ['inline'],
33
+ [ElementName.Title]: ['inline']
31
34
  };
32
35
 
33
36
  const getDirectionStyles = direction => {
@@ -43,6 +43,7 @@ const getStyles = size => {
43
43
  const AvatarGroup = ({
44
44
  items = [],
45
45
  maxCount = MAX_COUNT,
46
+ name,
46
47
  overrideCss,
47
48
  size = SmartLinkSize.Medium,
48
49
  testId = 'smart-element-avatar-group'
@@ -54,6 +55,7 @@ const AvatarGroup = ({
54
55
  return jsx("span", {
55
56
  css: [getStyles(size), overrideCss],
56
57
  "data-fit-to-content": true,
58
+ "data-smart-element": name,
57
59
  "data-smart-element-avatar-group": true,
58
60
  "data-testid": testId
59
61
  }, jsx(AtlaskitAvatarGroup, {
@@ -93,6 +93,7 @@ const renderImageIcon = (url, testId) => {
93
93
  const Badge = ({
94
94
  icon,
95
95
  label,
96
+ name,
96
97
  overrideCss,
97
98
  testId = 'smart-element-badge',
98
99
  url
@@ -107,6 +108,7 @@ const Badge = ({
107
108
  return jsx("span", {
108
109
  css: [badgeStyles, overrideCss],
109
110
  "data-fit-to-content": true,
111
+ "data-smart-element": name,
110
112
  "data-smart-element-badge": true,
111
113
  "data-testid": testId
112
114
  }, jsx("span", {
@@ -34,6 +34,7 @@ const typeToDescriptorMap = {
34
34
 
35
35
  const DateTime = ({
36
36
  date,
37
+ name,
37
38
  overrideCss,
38
39
  type,
39
40
  testId = 'smart-element-date-time',
@@ -73,6 +74,7 @@ const DateTime = ({
73
74
  return jsx("span", {
74
75
  css: [styles, overrideCss],
75
76
  "data-separator": true,
77
+ "data-smart-element": name,
76
78
  "data-smart-element-date-time": true,
77
79
  "data-testid": testId
78
80
  }, text ? `${text} ${context}` : jsx(FormattedMessage, _extends({}, typeToDescriptorMap[type][typeVariant], {
@@ -77,6 +77,7 @@ const renderImageIcon = (defaultIcon, icon, url, testId) => {
77
77
  const Icon = ({
78
78
  icon,
79
79
  label = 'Link',
80
+ name,
80
81
  position = SmartLinkPosition.Top,
81
82
  overrideCss,
82
83
  render,
@@ -94,6 +95,7 @@ const Icon = ({
94
95
  return jsx("div", {
95
96
  css: [styles, renderStyles, overrideCss],
96
97
  "data-fit-to-content": true,
98
+ "data-smart-element": name,
97
99
  "data-smart-element-icon": true,
98
100
  "data-testid": testId
99
101
  }, element);
@@ -33,6 +33,12 @@ export const CreatedOn = createElement(ElementName.CreatedOn);
33
33
  */
34
34
 
35
35
  export const CreatedBy = createElement(ElementName.CreatedBy);
36
+ /**
37
+ * Creates a DueOn Lozenge element using the data from dueOn in the Flexible UI Context.
38
+ * @see Lozenge
39
+ */
40
+
41
+ export const DueOn = createElement(ElementName.DueOn);
36
42
  /**
37
43
  * Creates an element that contains Last Commit hash
38
44
  */
@@ -92,6 +98,12 @@ export const ReactCount = createElement(ElementName.ReactCount);
92
98
  */
93
99
 
94
100
  export const Snippet = createElement(ElementName.Snippet);
101
+ /**
102
+ * Creates a SourceBranch Text element using the data from sourceBranch in the Flexible UI Context.
103
+ * @see Text
104
+ */
105
+
106
+ export const SourceBranch = createElement(ElementName.SourceBranch);
95
107
  /**
96
108
  * Creates a State Lozenge element using the data from State in the Flexible UI Context.
97
109
  * @see Lozenge
@@ -104,6 +116,12 @@ export const State = createElement(ElementName.State);
104
116
  */
105
117
 
106
118
  export const SubscriberCount = createElement(ElementName.SubscriberCount);
119
+ /**
120
+ * Creates a TargetBranch Text element using the data from targetBranch in the Flexible UI Context.
121
+ * @see Text
122
+ */
123
+
124
+ export const TargetBranch = createElement(ElementName.TargetBranch);
107
125
  /**
108
126
  * Creates a Title Link element using the data from Title in the Flexible UI Context.
109
127
  * This represents the main link text within the Smart Link.
@@ -81,6 +81,7 @@ const withTooltip = (trigger, content, testId) => jsx(Tooltip, {
81
81
  const Link = ({
82
82
  hideTooltip,
83
83
  maxLines = DEFAULT_MAX_LINES,
84
+ name,
84
85
  overrideCss,
85
86
  size = SmartLinkSize.Medium,
86
87
  testId = 'smart-element-link',
@@ -93,6 +94,7 @@ const Link = ({
93
94
  const hasSpace = useMemo(() => text ? hasWhiteSpace(text) : false, [text]);
94
95
  const anchor = jsx("a", {
95
96
  css: [getAnchorStyles(size, theme, getMaxLines(maxLines), hasSpace), overrideCss],
97
+ "data-smart-element": name,
96
98
  "data-smart-element-link": true,
97
99
  "data-testid": testId,
98
100
  onClick: onClick,
@@ -15,6 +15,7 @@ const styles = css`
15
15
 
16
16
  const Lozenge = ({
17
17
  appearance = 'default',
18
+ name,
18
19
  overrideCss,
19
20
  text,
20
21
  testId = 'smart-element-lozenge'
@@ -26,6 +27,7 @@ const Lozenge = ({
26
27
  return jsx("span", {
27
28
  css: [styles, overrideCss],
28
29
  "data-fit-to-content": true,
30
+ "data-smart-element": name,
29
31
  "data-smart-element-lozenge": true,
30
32
  "data-testid": testId
31
33
  }, jsx(AtlaskitLozenge, {
@@ -55,6 +55,7 @@ const styles = css`
55
55
  */
56
56
 
57
57
  const Media = ({
58
+ name,
58
59
  overrideCss,
59
60
  testId = 'smart-element-media',
60
61
  type,
@@ -66,6 +67,7 @@ const Media = ({
66
67
 
67
68
  return jsx("div", {
68
69
  css: [styles, overrideCss],
70
+ "data-smart-element": name,
69
71
  "data-smart-element-media": true,
70
72
  "data-testid": testId
71
73
  }, jsx(ImageIcon, {
@@ -22,6 +22,7 @@ const Text = ({
22
22
  content,
23
23
  maxLines = 1,
24
24
  message,
25
+ name,
25
26
  overrideCss,
26
27
  testId = 'smart-element-text'
27
28
  }) => {
@@ -32,6 +33,7 @@ const Text = ({
32
33
  return jsx("span", {
33
34
  css: [getStyles(maxLines), overrideCss],
34
35
  "data-separator": true,
36
+ "data-smart-element": name,
35
37
  "data-smart-element-text": true,
36
38
  "data-testid": testId
37
39
  }, getFormattedMessage(message) || content);