@atlaskit/smart-card 25.7.3 → 25.9.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 (67) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/constants.js +13 -7
  3. package/dist/cjs/extractors/flexible/index.js +1 -0
  4. package/dist/cjs/extractors/flexible/utils.js +14 -2
  5. package/dist/cjs/state/actions/index.js +27 -11
  6. package/dist/cjs/state/hooks/use-resolve/index.js +21 -12
  7. package/dist/cjs/utils/analytics/SmartLinkAnalyticsContext.js +47 -0
  8. package/dist/cjs/version.json +1 -1
  9. package/dist/cjs/view/BlockCard/views/flexible/FlexibleResolvedView.js +4 -1
  10. package/dist/cjs/view/CardWithUrl/component.js +12 -3
  11. package/dist/cjs/view/FlexibleCard/components/blocks/element-group/index.js +6 -4
  12. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +7 -2
  13. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  14. package/dist/cjs/view/FlexibleCard/components/elements/index.js +9 -2
  15. package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +6 -4
  16. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +5 -0
  17. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +11 -4
  18. package/dist/cjs/view/HoverCard/styled.js +1 -1
  19. package/dist/cjs/view/HoverCard/utils.js +1 -1
  20. package/dist/es2019/constants.js +10 -5
  21. package/dist/es2019/extractors/flexible/index.js +2 -1
  22. package/dist/es2019/extractors/flexible/utils.js +12 -0
  23. package/dist/es2019/state/actions/index.js +32 -12
  24. package/dist/es2019/state/hooks/use-resolve/index.js +21 -12
  25. package/dist/es2019/utils/analytics/SmartLinkAnalyticsContext.js +35 -0
  26. package/dist/es2019/version.json +1 -1
  27. package/dist/es2019/view/BlockCard/views/flexible/FlexibleResolvedView.js +4 -1
  28. package/dist/es2019/view/CardWithUrl/component.js +8 -2
  29. package/dist/es2019/view/FlexibleCard/components/blocks/element-group/index.js +6 -4
  30. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +8 -3
  31. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +5 -4
  32. package/dist/es2019/view/FlexibleCard/components/elements/index.js +6 -0
  33. package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +10 -1
  34. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +7 -1
  35. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +10 -3
  36. package/dist/es2019/view/HoverCard/styled.js +1 -1
  37. package/dist/es2019/view/HoverCard/utils.js +1 -1
  38. package/dist/esm/constants.js +10 -5
  39. package/dist/esm/extractors/flexible/index.js +2 -1
  40. package/dist/esm/extractors/flexible/utils.js +11 -0
  41. package/dist/esm/state/actions/index.js +27 -11
  42. package/dist/esm/state/hooks/use-resolve/index.js +21 -12
  43. package/dist/esm/utils/analytics/SmartLinkAnalyticsContext.js +36 -0
  44. package/dist/esm/version.json +1 -1
  45. package/dist/esm/view/BlockCard/views/flexible/FlexibleResolvedView.js +4 -1
  46. package/dist/esm/view/CardWithUrl/component.js +10 -2
  47. package/dist/esm/view/FlexibleCard/components/blocks/element-group/index.js +7 -5
  48. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +8 -3
  49. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  50. package/dist/esm/view/FlexibleCard/components/elements/index.js +6 -0
  51. package/dist/esm/view/FlexibleCard/components/elements/link/index.js +7 -5
  52. package/dist/esm/view/FlexibleCard/components/elements/utils.js +6 -1
  53. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +11 -4
  54. package/dist/esm/view/HoverCard/styled.js +1 -1
  55. package/dist/esm/view/HoverCard/utils.js +1 -1
  56. package/dist/types/constants.d.ts +6 -2
  57. package/dist/types/extractors/flexible/utils.d.ts +2 -0
  58. package/dist/types/state/flexible-ui-context/types.d.ts +10 -0
  59. package/dist/types/utils/analytics/SmartLinkAnalyticsContext.d.ts +9 -0
  60. package/dist/types/view/CardWithUrl/component.d.ts +1 -1
  61. package/dist/types/view/FlexibleCard/components/blocks/element-group/index.d.ts +2 -2
  62. package/dist/types/view/FlexibleCard/components/blocks/element-group/types.d.ts +2 -1
  63. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +7 -1
  64. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +6 -0
  65. package/package.json +3 -2
  66. package/report.api.md +8 -0
  67. package/tmp/api-report-tmp.d.ts +8 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 25.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`7f248766888`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7f248766888) - [ux] Add container names which mark the location in which the linked resource sits within. This funtionality will be used to show the container names for Trello links.
8
+
9
+ FlexUI: Reduced gap between title and subtitle in TitleBlock.
10
+
11
+ ## 25.8.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [`44b76af1d5f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/44b76af1d5f) - Include additional attributes (`urlHash`, `display`, `id`) and resolved attributes for `link clicked` analytics events
16
+
3
17
  ## 25.7.3
4
18
 
5
19
  ### Patch Changes
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SmartLinkWidth = exports.SmartLinkTheme = exports.SmartLinkStatus = exports.SmartLinkSize = exports.SmartLinkPosition = exports.SmartLinkDirection = exports.SmartLinkAlignment = exports.MediaType = exports.MediaPlacement = exports.IconType = exports.ElementName = exports.CardDisplay = exports.CONTENT_URL_SECURITY_AND_PERMISSIONS = exports.ActionName = void 0;
6
+ exports.SmartLinkWidth = exports.SmartLinkTheme = exports.SmartLinkStatus = exports.SmartLinkSize = exports.SmartLinkPosition = exports.SmartLinkInternalTheme = exports.SmartLinkDirection = exports.SmartLinkAlignment = exports.MediaType = exports.MediaPlacement = exports.IconType = exports.ElementName = exports.CardDisplay = exports.CONTENT_URL_SECURITY_AND_PERMISSIONS = exports.ActionName = void 0;
7
7
  var CONTENT_URL_SECURITY_AND_PERMISSIONS = 'https://support.atlassian.com/confluence-cloud/docs/insert-links-and-anchors/#Smart-links';
8
8
 
9
9
  /**
@@ -70,16 +70,21 @@ exports.SmartLinkStatus = SmartLinkStatus;
70
70
  SmartLinkStatus["Fallback"] = "fallback";
71
71
  })(SmartLinkStatus || (exports.SmartLinkStatus = SmartLinkStatus = {}));
72
72
  var SmartLinkTheme;
73
- /**
74
- * Determines whether the container size will fit to the content
75
- * or expand to the available width or the parent component.
76
- * Similar to flex's flex-grow concept.
77
- */
78
73
  exports.SmartLinkTheme = SmartLinkTheme;
79
74
  (function (SmartLinkTheme) {
80
75
  SmartLinkTheme["Black"] = "black";
81
76
  SmartLinkTheme["Link"] = "link";
82
77
  })(SmartLinkTheme || (exports.SmartLinkTheme = SmartLinkTheme = {}));
78
+ var SmartLinkInternalTheme;
79
+ /**
80
+ * Determines whether the container size will fit to the content
81
+ * or expand to the available width or the parent component.
82
+ * Similar to flex's flex-grow concept.
83
+ */
84
+ exports.SmartLinkInternalTheme = SmartLinkInternalTheme;
85
+ (function (SmartLinkInternalTheme) {
86
+ SmartLinkInternalTheme["Grey"] = "grey";
87
+ })(SmartLinkInternalTheme || (exports.SmartLinkInternalTheme = SmartLinkInternalTheme = {}));
83
88
  var SmartLinkWidth;
84
89
  /**
85
90
  * Flexible UI element name - each reflecting the link data its represented.
@@ -116,7 +121,9 @@ exports.ElementName = ElementName;
116
121
  ElementName["CreatedBy"] = "CreatedBy";
117
122
  ElementName["CreatedOn"] = "CreatedOn";
118
123
  ElementName["DueOn"] = "DueOn";
124
+ ElementName["LatestCommit"] = "LatestCommit";
119
125
  ElementName["LinkIcon"] = "LinkIcon";
126
+ ElementName["Location"] = "Location";
120
127
  ElementName["ModifiedBy"] = "ModifiedBy";
121
128
  ElementName["ModifiedOn"] = "ModifiedOn";
122
129
  ElementName["OwnedBy"] = "OwnedBy";
@@ -133,7 +140,6 @@ exports.ElementName = ElementName;
133
140
  ElementName["Title"] = "Title";
134
141
  ElementName["ViewCount"] = "ViewCount";
135
142
  ElementName["VoteCount"] = "VoteCount";
136
- ElementName["LatestCommit"] = "LatestCommit";
137
143
  })(ElementName || (exports.ElementName = ElementName = {}));
138
144
  var ActionName;
139
145
  /**
@@ -49,6 +49,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
49
49
  downloadAction: (0, _extractDownloadAction.extractDownloadAction)(data),
50
50
  latestCommit: (0, _latestCommit.extractLatestCommit)(data),
51
51
  linkIcon: (0, _icon.extractLinkIcon)(response, renderers),
52
+ location: (0, _utils.extractLocation)(data),
52
53
  modifiedBy: (0, _utils.extractModifiedBy)(data),
53
54
  modifiedOn: (0, _extractors.extractDateUpdated)(data),
54
55
  preview: (0, _extractPreview.default)(data),
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.extractVoteCount = exports.extractViewCount = exports.extractTargetBranch = exports.extractSubscriberCount = exports.extractSourceBranch = exports.extractReactCount = exports.extractProgrammingLanguage = exports.extractOwnedBy = exports.extractModifiedBy = exports.extractDueOn = exports.extractCreatedBy = exports.extractCommentCount = exports.extractChecklistProgress = exports.extractAttachmentCount = void 0;
7
+ exports.extractVoteCount = exports.extractViewCount = exports.extractTargetBranch = exports.extractSubscriberCount = exports.extractSourceBranch = exports.extractReactCount = exports.extractProgrammingLanguage = exports.extractOwnedBy = exports.extractModifiedBy = exports.extractLocation = exports.extractDueOn = exports.extractCreatedBy = exports.extractCommentCount = exports.extractChecklistProgress = exports.extractAttachmentCount = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _extractors = require("@atlaskit/linking-common/extractors");
10
10
  var extractLinkName = function extractLinkName(link) {
@@ -80,4 +80,16 @@ var extractChecklistProgress = function extractChecklistProgress(data) {
80
80
  var checkItemsObj = extractValue(data, 'atlassian:checkItems');
81
81
  return checkItemsObj ? "".concat(checkItemsObj.checkedItems, "/").concat(checkItemsObj.totalItems) : undefined;
82
82
  };
83
- exports.extractChecklistProgress = extractChecklistProgress;
83
+ exports.extractChecklistProgress = extractChecklistProgress;
84
+ var extractLocation = function extractLocation(data) {
85
+ var _ref = extractValue(data, 'location') || {},
86
+ url = _ref.url,
87
+ name = _ref.name;
88
+ if (url && name && typeof url === 'string') {
89
+ return {
90
+ text: name,
91
+ url: url
92
+ };
93
+ }
94
+ };
95
+ exports.extractLocation = extractLocation;
@@ -25,13 +25,20 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
25
25
  connections = _useSmartLinkContext.connections;
26
26
  var getState = store.getState,
27
27
  dispatch = store.dispatch;
28
- var _ref = getState()[url] || {
29
- status: _constants.SmartLinkStatus.Pending,
30
- details: undefined
31
- },
32
- details = _ref.details,
33
- status = _ref.status,
34
- metadataStatus = _ref.metadataStatus;
28
+ var getSmartLinkState = (0, _react.useCallback)(function () {
29
+ var _getState$url;
30
+ var _ref = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : {
31
+ status: _constants.SmartLinkStatus.Pending
32
+ },
33
+ details = _ref.details,
34
+ status = _ref.status,
35
+ metadataStatus = _ref.metadataStatus;
36
+ return {
37
+ details: details,
38
+ status: status,
39
+ metadataStatus: metadataStatus
40
+ };
41
+ }, [getState, url]);
35
42
  var setMetadataStatus = (0, _react.useCallback)(function (metadataStatus) {
36
43
  dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_UPDATE_METADATA_STATUS, {
37
44
  url: url
@@ -58,6 +65,8 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
58
65
  }, _callee);
59
66
  })), [id, resolveUrl, url]);
60
67
  var register = (0, _react.useCallback)(function () {
68
+ var _getSmartLinkState = getSmartLinkState(),
69
+ details = _getSmartLinkState.details;
61
70
  if (!details) {
62
71
  dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RESOLVING, {
63
72
  url: url
@@ -65,8 +74,10 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
65
74
  setMetadataStatus('pending');
66
75
  }
67
76
  return resolve();
68
- }, [details, resolve, dispatch, url, setMetadataStatus]);
77
+ }, [getSmartLinkState, resolve, dispatch, url, setMetadataStatus]);
69
78
  var reload = (0, _react.useCallback)(function () {
79
+ var _getSmartLinkState2 = getSmartLinkState(),
80
+ details = _getSmartLinkState2.details;
70
81
  var definitionId = (0, _helpers.getDefinitionId)(details);
71
82
  if (definitionId) {
72
83
  (0, _helpers.getByDefinitionId)(definitionId, getState()).map(function (url) {
@@ -75,15 +86,20 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
75
86
  } else {
76
87
  resolve(url, true);
77
88
  }
78
- }, [details, url, getState, resolve]);
89
+ }, [getSmartLinkState, url, getState, resolve]);
79
90
  var loadMetadata = (0, _react.useCallback)(function () {
91
+ var _getSmartLinkState3 = getSmartLinkState(),
92
+ metadataStatus = _getSmartLinkState3.metadataStatus;
80
93
  //metadataStatus will be undefined for SSR links only
81
94
  if (metadataStatus === undefined) {
82
95
  setMetadataStatus('pending');
83
96
  return resolve(url, false, true);
84
97
  }
85
- }, [metadataStatus, resolve, setMetadataStatus, url]);
98
+ }, [getSmartLinkState, resolve, setMetadataStatus, url]);
86
99
  var authorize = (0, _react.useCallback)(function (appearance) {
100
+ var _getSmartLinkState4 = getSmartLinkState(),
101
+ details = _getSmartLinkState4.details,
102
+ status = _getSmartLinkState4.status;
87
103
  var definitionId = (0, _helpers.getDefinitionId)(details);
88
104
  var extensionKey = (0, _helpers.getExtensionKey)(details);
89
105
  var services = (0, _helpers.getServices)(details);
@@ -135,7 +151,7 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
135
151
  reload();
136
152
  });
137
153
  }
138
- }, [analytics.ui, analytics.screen, analytics.track, analytics.operational, id, reload, details, status]);
154
+ }, [getSmartLinkState, analytics.ui, analytics.screen, analytics.track, analytics.operational, id, reload]);
139
155
  var invoke = (0, _react.useCallback)( /*#__PURE__*/function () {
140
156
  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(opts, appearance) {
141
157
  var key, action, source, markName, response;
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _react = require("react");
11
+ var _reactDom = require("react-dom");
11
12
  var _analytics = require("../../analytics");
12
13
  var _helpers = require("../../helpers");
13
14
  var _linkingCommon = require("@atlaskit/linking-common");
@@ -106,18 +107,26 @@ var useResolve = function useResolve() {
106
107
  return;
107
108
  }
108
109
 
109
- //if a link resolves normally, metadata will also always be resolved
110
- setMetadataStatus(resourceUrl, 'resolved');
111
- // Dispatch Analytics and resolved card action - including unauthorized states.
112
- if (isReloading) {
113
- dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RELOADING, {
114
- url: resourceUrl
115
- }, response));
116
- } else {
117
- dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RESOLVED, {
118
- url: resourceUrl
119
- }, response, undefined, undefined, isMetadataRequest));
120
- }
110
+ /**
111
+ * Using unstable_batchedUpdates because this store update happens async and trigers a rerender
112
+ * more info:
113
+ * https://github.com/facebook/react/blob/v18.2.0/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L113
114
+ * https://react-redux.js.org/api/batch
115
+ */
116
+ (0, _reactDom.unstable_batchedUpdates)(function () {
117
+ //if a link resolves normally, metadata will also always be resolved
118
+ setMetadataStatus(resourceUrl, 'resolved');
119
+ // Dispatch Analytics and resolved card action - including unauthorized states.
120
+ if (isReloading) {
121
+ dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RELOADING, {
122
+ url: resourceUrl
123
+ }, response));
124
+ } else {
125
+ dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RESOLVED, {
126
+ url: resourceUrl
127
+ }, response, undefined, undefined, isMetadataRequest));
128
+ }
129
+ });
121
130
  }, [dispatch, handleResolvedLinkError, hasAuthFlowSupported, setMetadataStatus]);
122
131
  return (0, _react.useCallback)( /*#__PURE__*/function () {
123
132
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(url) {
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SmartLinkAnalyticsContext = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _analyticsNext = require("@atlaskit/analytics-next");
12
+ var _resolvedAttributes = require("@atlaskit/link-analytics/resolved-attributes");
13
+ var _flexible = require("../flexible");
14
+ var _constants = require("../../constants");
15
+ var _store = require("../../state/store");
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ 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; }
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+ var SmartLinkAnalyticsContext = function SmartLinkAnalyticsContext(_ref) {
21
+ var children = _ref.children,
22
+ url = _ref.url,
23
+ appearance = _ref.appearance,
24
+ id = _ref.id;
25
+ var _useSmartLinkState = (0, _store.useSmartCardState)(url),
26
+ details = _useSmartLinkState.details,
27
+ status = _useSmartLinkState.status;
28
+ var resolvedAttributes = (0, _resolvedAttributes.getResolvedAttributes)({
29
+ url: url
30
+ }, details, status);
31
+ var _getUrlAttributes = (0, _resolvedAttributes.getUrlAttributes)(url),
32
+ urlHash = _getUrlAttributes.urlHash;
33
+ var isFlexibleUi = (0, _react.useMemo)(function () {
34
+ return (0, _flexible.isFlexibleUiCard)(children);
35
+ }, [children]);
36
+ var display = isFlexibleUi ? _constants.CardDisplay.Flexible : appearance;
37
+ return /*#__PURE__*/_react.default.createElement(_analyticsNext.AnalyticsContext, {
38
+ data: {
39
+ attributes: _objectSpread(_objectSpread({}, resolvedAttributes), {}, {
40
+ urlHash: urlHash,
41
+ display: display,
42
+ id: id
43
+ })
44
+ }
45
+ }, children);
46
+ };
47
+ exports.SmartLinkAnalyticsContext = SmartLinkAnalyticsContext;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "25.7.3",
3
+ "version": "25.9.0",
4
4
  "sideEffects": false
5
5
  }
@@ -89,7 +89,10 @@ var FlexibleResolvedView = function FlexibleResolvedView(_ref) {
89
89
  }, {
90
90
  name: _constants.ElementName.State
91
91
  }],
92
- hideRetry: true
92
+ hideRetry: true,
93
+ subtitle: [{
94
+ name: _constants.ElementName.Location
95
+ }]
93
96
  }), /*#__PURE__*/_react.default.createElement(_blocks.MetadataBlock, {
94
97
  primary: metadata,
95
98
  maxLines: 1
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.CardWithUrlContent = CardWithUrlContent;
8
+ exports.CardWithUrlContent = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _analyticsNext = require("@atlaskit/analytics-next");
11
11
  var _linkProvider = require("@atlaskit/link-provider");
@@ -20,9 +20,10 @@ var _flexible = require("../../utils/flexible");
20
20
  var _FlexibleCard = _interopRequireDefault(require("../FlexibleCard"));
21
21
  var _constants = require("../../constants");
22
22
  var _click = require("../../utils/analytics/click");
23
+ var _SmartLinkAnalyticsContext = require("../../utils/analytics/SmartLinkAnalyticsContext");
23
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
25
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
- function CardWithUrlContent(_ref) {
26
+ function Component(_ref) {
26
27
  var id = _ref.id,
27
28
  url = _ref.url,
28
29
  isSelected = _ref.isSelected,
@@ -267,4 +268,12 @@ function CardWithUrlContent(_ref) {
267
268
  onIframeFocus: onIframeFocus
268
269
  });
269
270
  }
270
- }
271
+ }
272
+ var CardWithUrlContent = function CardWithUrlContent(props) {
273
+ return /*#__PURE__*/_react.default.createElement(_SmartLinkAnalyticsContext.SmartLinkAnalyticsContext, {
274
+ url: props.url,
275
+ appearance: props.appearance,
276
+ id: props.id
277
+ }, /*#__PURE__*/_react.default.createElement(Component, props));
278
+ };
279
+ exports.CardWithUrlContent = CardWithUrlContent;
@@ -33,8 +33,8 @@ var getHorizontalDirectionStyles = function getHorizontalDirectionStyles(size, a
33
33
  var lineHeight = (0, _utils2.getMaxLineHeight)(size);
34
34
  return (0, _react2.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n display: block;\n vertical-align: middle;\n ", "\n\n > span, > div {\n vertical-align: middle;\n\n &[data-smart-element-date-time],\n &[data-smart-element-text] {\n // Show all/wrapped/truncated\n display: inline;\n }\n }\n\n ", "\n "])), (0, _utils2.getTruncateStyles)(1, lineHeight + 'rem'), getGapStyles(size, align));
35
35
  };
36
- var getElementGroupStyles = function getElementGroupStyles(direction, size, align, width) {
37
- return (0, _react2.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n min-width: 10%;\n ", "\n ", "\n"])), (0, _utils.getBaseStyles)(direction, size), getAlignmentStyles(align), width === _constants.SmartLinkWidth.Flexible ? "flex: 1 3;" : '', direction === _constants.SmartLinkDirection.Horizontal ? getHorizontalDirectionStyles(size, align) : '');
36
+ var getElementGroupStyles = function getElementGroupStyles(direction, size, align, width, position) {
37
+ return (0, _react2.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n min-width: 10%;\n ", "\n ", "\n ", "\n"])), (0, _utils.getBaseStyles)(direction, size), getAlignmentStyles(align), width === _constants.SmartLinkWidth.Flexible ? "flex: 1 3;" : '', direction === _constants.SmartLinkDirection.Horizontal ? getHorizontalDirectionStyles(size, align) : '', position === _constants.SmartLinkPosition.Top ? 'align-self: flex-start;' : '');
38
38
  };
39
39
 
40
40
  /**
@@ -57,9 +57,11 @@ var ElementGroup = function ElementGroup(_ref) {
57
57
  _ref$testId = _ref.testId,
58
58
  testId = _ref$testId === void 0 ? 'smart-element-group' : _ref$testId,
59
59
  _ref$width = _ref.width,
60
- width = _ref$width === void 0 ? _constants.SmartLinkWidth.FitToContent : _ref$width;
60
+ width = _ref$width === void 0 ? _constants.SmartLinkWidth.FitToContent : _ref$width,
61
+ _ref$position = _ref.position,
62
+ position = _ref$position === void 0 ? _constants.SmartLinkPosition.Center : _ref$position;
61
63
  return (0, _react2.jsx)("div", {
62
- css: [getElementGroupStyles(direction, size, align, width), overrideCss],
64
+ css: [getElementGroupStyles(direction, size, align, width, position), overrideCss],
63
65
  "data-smart-element-group": true,
64
66
  "data-testid": testId
65
67
  }, (0, _utils.renderChildren)(children, size));
@@ -6,13 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
11
  var _react = _interopRequireDefault(require("react"));
12
+ var _react2 = require("@emotion/react");
11
13
  var _elements = require("../../../elements");
12
14
  var _block = _interopRequireDefault(require("../../block"));
13
15
  var _elementGroup = _interopRequireDefault(require("../../element-group"));
14
16
  var _constants = require("../../../../../../constants");
15
17
  var _utils = require("../../utils");
18
+ var _templateObject;
16
19
  var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "title"];
17
20
  /**
18
21
  * This renders a fully resolved TitleBlock.
@@ -38,12 +41,14 @@ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
38
41
  position: position
39
42
  }), /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
40
43
  direction: _constants.SmartLinkDirection.Vertical,
41
- width: _constants.SmartLinkWidth.Flexible
44
+ width: _constants.SmartLinkWidth.Flexible,
45
+ overrideCss: (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n gap: 0.25rem;\n "])))
42
46
  }, title, subtitleElements && /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
43
47
  direction: _constants.SmartLinkDirection.Horizontal
44
48
  }, subtitleElements)), metadataElements && /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
45
49
  direction: _constants.SmartLinkDirection.Horizontal,
46
- align: _constants.SmartLinkAlignment.Right
50
+ align: _constants.SmartLinkAlignment.Right,
51
+ position: _constants.SmartLinkPosition.Top
47
52
  }, metadataElements), actionGroup);
48
53
  };
49
54
  var _default = TitleBlockResolvedView;
@@ -24,7 +24,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
24
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
25
  // Determine whether the element can be display as inline/block.
26
26
 
27
- var ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AttachmentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AuthorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ChecklistProgress, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CollaboratorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CommentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ViewCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ReactCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.VoteCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.DueOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LatestCommit, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LinkIcon, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.OwnedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Preview, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Provider, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Snippet, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SourceBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.State, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubscriberCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.TargetBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Title, ['inline']), _ElementDisplaySchema);
27
+ var ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AttachmentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AuthorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ChecklistProgress, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CollaboratorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CommentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.DueOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LatestCommit, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LinkIcon, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Location, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.OwnedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Preview, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Provider, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ReactCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Snippet, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SourceBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.State, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubscriberCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.TargetBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Title, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ViewCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.VoteCount, ['inline']), _ElementDisplaySchema);
28
28
  exports.ElementDisplaySchema = ElementDisplaySchema;
29
29
  var getDirectionStyles = function getDirectionStyles(direction) {
30
30
  switch (direction) {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.VoteCount = exports.ViewCount = exports.Title = exports.TargetBranch = exports.SubscriberCount = exports.State = exports.SourceBranch = exports.Snippet = exports.ReactCount = exports.Provider = exports.ProgrammingLanguage = exports.Priority = exports.Preview = exports.OwnedBy = exports.ModifiedOn = exports.ModifiedBy = exports.LinkIcon = exports.LatestCommit = exports.DueOn = exports.CreatedOn = exports.CreatedBy = exports.CommentCount = exports.CollaboratorGroup = exports.ChecklistProgress = exports.AuthorGroup = exports.AttachmentCount = void 0;
6
+ exports.VoteCount = exports.ViewCount = exports.Title = exports.TargetBranch = exports.SubscriberCount = exports.State = exports.SourceBranch = exports.Snippet = exports.ReactCount = exports.Provider = exports.ProgrammingLanguage = exports.Priority = exports.Preview = exports.OwnedBy = exports.ModifiedOn = exports.ModifiedBy = exports.Location = exports.LinkIcon = exports.LatestCommit = exports.DueOn = exports.CreatedOn = exports.CreatedBy = exports.CommentCount = exports.CollaboratorGroup = exports.ChecklistProgress = exports.AuthorGroup = exports.AttachmentCount = void 0;
7
7
  var _utils = require("./utils");
8
8
  var _constants = require("../../../../constants");
9
9
  // Attention: Keep the export name and element name the same.
@@ -67,11 +67,18 @@ var LatestCommit = (0, _utils.createElement)(_constants.ElementName.LatestCommit
67
67
  */
68
68
  exports.LatestCommit = LatestCommit;
69
69
  var LinkIcon = (0, _utils.createElement)(_constants.ElementName.LinkIcon);
70
+ /**
71
+ * Creates a Location Link element.
72
+ * This represents the location or container of the resource.
73
+ * @see Link
74
+ */
75
+ exports.LinkIcon = LinkIcon;
76
+ var Location = (0, _utils.createElement)(_constants.ElementName.Location);
70
77
  /**
71
78
  * Creates a ModifiedBy Text element using the data from ModifiedBy in the Flexible UI Context.
72
79
  * @see Text
73
80
  */
74
- exports.LinkIcon = LinkIcon;
81
+ exports.Location = Location;
75
82
  var ModifiedBy = (0, _utils.createElement)(_constants.ElementName.ModifiedBy);
76
83
  /**
77
84
  * Creates a ModifiedOn DateTime element using the data from ModifiedOn in the Flexible UI Context.
@@ -14,7 +14,7 @@ var _constants = require("../../../../../constants");
14
14
  var _utils = require("../../utils");
15
15
  var _token = require("../../../../../utils/token");
16
16
  var _useMouseDownEvent = _interopRequireDefault(require("../../../../../state/analytics/useMouseDownEvent"));
17
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
17
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
18
18
  /** @jsx jsx */
19
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -24,17 +24,19 @@ var MINIMUM_MAX_LINES = 1;
24
24
  var containerStyles = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n flex: 1 1 auto;\n"])));
25
25
  var getThemeStyles = function getThemeStyles(theme) {
26
26
  switch (theme) {
27
+ case _constants.SmartLinkInternalTheme.Grey:
28
+ return (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n :hover {\n color: ", ";\n text-decoration: underline;\n }\n font-size: 12px;\n "])), "var(--ds-text-subtlest, #626F86)", "var(--ds-text-subtlest, #626F86)");
27
29
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
28
30
  case _constants.SmartLinkTheme.Black:
29
- return (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n :active {\n color: ", ";\n }\n :hover {\n color: ", ";\n text-decoration: underline;\n }\n "])), _token.tokens.blackLink, _token.tokens.blackLinkPressed, _token.tokens.blackLink);
31
+ return (0, _react2.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n :active {\n color: ", ";\n }\n :hover {\n color: ", ";\n text-decoration: underline;\n }\n "])), _token.tokens.blackLink, _token.tokens.blackLinkPressed, _token.tokens.blackLink);
30
32
  case _constants.SmartLinkTheme.Link:
31
33
  default:
32
- return (0, _react2.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n :active {\n color: ", ";\n }\n :hover {\n color: ", ";\n text-decoration: underline;\n }\n "])), _token.tokens.blueLink, _token.tokens.blueLinkPressed, _token.tokens.blueLink);
34
+ return (0, _react2.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n :active {\n color: ", ";\n }\n :hover {\n color: ", ";\n text-decoration: underline;\n }\n "])), _token.tokens.blueLink, _token.tokens.blueLinkPressed, _token.tokens.blueLink);
33
35
  }
34
36
  };
35
37
  var getAnchorStyles = function getAnchorStyles(size, theme, maxLines, hasSpace) {
36
38
  var sizeStyles = (0, _utils.getLinkSizeStyles)(size);
37
- return (0, _react2.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1 1 auto;\n ", "\n ", "\n // Theme should be last to be spread because it contains override values\n ", "\n "])), sizeStyles, (0, _utils.getTruncateStyles)(maxLines, (0, _utils.getLinkLineHeight)(size), hasSpace ? 'break-word' : 'break-all'), getThemeStyles(theme));
39
+ return (0, _react2.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1 1 auto;\n ", "\n ", "\n // Theme should be last to be spread because it contains override values\n ", "\n "])), sizeStyles, (0, _utils.getTruncateStyles)(maxLines, (0, _utils.getLinkLineHeight)(size), hasSpace ? 'break-word' : 'break-all'), getThemeStyles(theme));
38
40
  };
39
41
  var getMaxLines = function getMaxLines(maxLines) {
40
42
  if (maxLines > MAXIMUM_MAX_LINES) {
@@ -111,6 +111,11 @@ var elementMappings = (_elementMappings = {}, (0, _defineProperty2.default)(_ele
111
111
  component: _text.default
112
112
  }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.Title, {
113
113
  component: _link.default
114
+ }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.Location, {
115
+ component: _link.default,
116
+ props: {
117
+ theme: _constants.SmartLinkInternalTheme.Grey
118
+ }
114
119
  }), _elementMappings);
115
120
  var getContextKey = function getContextKey(name) {
116
121
  // Attempt to predict context prop name in advance to reduce the amount of
@@ -17,6 +17,7 @@ var _store = require("../../../state/store");
17
17
  var _HoverCardContent = _interopRequireDefault(require("../components/HoverCardContent"));
18
18
  var _styled = require("../styled");
19
19
  var _constants = require("../../../constants");
20
+ var _SmartLinkAnalyticsContext = require("../../../utils/analytics/SmartLinkAnalyticsContext");
20
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
23
  /** @jsx jsx */
@@ -24,6 +25,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
24
25
  var HoverCardComponent = function HoverCardComponent(_ref) {
25
26
  var children = _ref.children,
26
27
  url = _ref.url,
28
+ id = _ref.id,
27
29
  analyticsHandler = _ref.analyticsHandler,
28
30
  analytics = _ref.analytics,
29
31
  _ref$canOpen = _ref.canOpen,
@@ -133,7 +135,11 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
133
135
  }, [closeOnChildClick, hideCard]);
134
136
  var content = (0, _react2.useCallback)(function (_ref2) {
135
137
  var update = _ref2.update;
136
- return (0, _react.jsx)(_HoverCardContent.default, {
138
+ return (0, _react.jsx)(_SmartLinkAnalyticsContext.SmartLinkAnalyticsContext, {
139
+ url: url,
140
+ appearance: _constants.CardDisplay.HoverCardPreview,
141
+ id: id
142
+ }, (0, _react.jsx)(_HoverCardContent.default, {
137
143
  onMouseEnter: initShowCard,
138
144
  onMouseLeave: initHideCard,
139
145
  analytics: analytics,
@@ -143,9 +149,10 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
143
149
  onResolve: update,
144
150
  renderers: renderers,
145
151
  showServerActions: showServerActions,
146
- url: url
147
- });
148
- }, [analytics, initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, showServerActions, url]);
152
+ url: url,
153
+ id: id
154
+ }));
155
+ }, [analytics, initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, showServerActions, url, id]);
149
156
  var trigger = (0, _react2.useCallback)(function (triggerProps) {
150
157
  return (0, _react.jsx)("span", {
151
158
  ref: parentSpan
@@ -35,7 +35,7 @@ var separatorCss = (0, _react.css)(_templateObject || (_templateObject = (0, _ta
35
35
  exports.separatorCss = separatorCss;
36
36
  var HoverCardContainer = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: ", "rem;\n padding: 1rem;\n\n .", " {\n display: none;\n }\n"])), CARD_WIDTH_REM, _index.loadingPlaceholderClassName);
37
37
  exports.HoverCardContainer = HoverCardContainer;
38
- var titleBlockCss = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\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);
38
+ var titleBlockCss = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\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 display: flex;\n /* subtitle element group */\n > [data-smart-element-group] {\n > span {\n margin-right: ", ";\n }\n }\n }\n"])), blockGap, separatorCss, elementGap);
39
39
  exports.titleBlockCss = titleBlockCss;
40
40
  var getTransitionStyles = function getTransitionStyles(snippetHeight) {
41
41
  return (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n transition: height 300ms ease-in-out;\n height: ", "px;\n"])), snippetHeight);
@@ -56,7 +56,7 @@ var getSimulatedMetadata = function getSimulatedMetadata() {
56
56
  metadata: {
57
57
  primary: [_constants.ElementName.AuthorGroup, _constants.ElementName.State, _constants.ElementName.DueOn],
58
58
  secondary: [_constants.ElementName.ReactCount, _constants.ElementName.CommentCount, _constants.ElementName.AttachmentCount, _constants.ElementName.ChecklistProgress],
59
- subtitle: []
59
+ subtitle: [_constants.ElementName.Location]
60
60
  }
61
61
  };
62
62
  case 'watermelon-object-provider':
@@ -63,16 +63,20 @@ export let SmartLinkStatus;
63
63
  SmartLinkStatus["Fallback"] = "fallback";
64
64
  })(SmartLinkStatus || (SmartLinkStatus = {}));
65
65
  export let SmartLinkTheme;
66
+ (function (SmartLinkTheme) {
67
+ SmartLinkTheme["Black"] = "black";
68
+ SmartLinkTheme["Link"] = "link";
69
+ })(SmartLinkTheme || (SmartLinkTheme = {}));
70
+ export let SmartLinkInternalTheme;
66
71
 
67
72
  /**
68
73
  * Determines whether the container size will fit to the content
69
74
  * or expand to the available width or the parent component.
70
75
  * Similar to flex's flex-grow concept.
71
76
  */
72
- (function (SmartLinkTheme) {
73
- SmartLinkTheme["Black"] = "black";
74
- SmartLinkTheme["Link"] = "link";
75
- })(SmartLinkTheme || (SmartLinkTheme = {}));
77
+ (function (SmartLinkInternalTheme) {
78
+ SmartLinkInternalTheme["Grey"] = "grey";
79
+ })(SmartLinkInternalTheme || (SmartLinkInternalTheme = {}));
76
80
  export let SmartLinkWidth;
77
81
 
78
82
  /**
@@ -109,7 +113,9 @@ export let ElementName;
109
113
  ElementName["CreatedBy"] = "CreatedBy";
110
114
  ElementName["CreatedOn"] = "CreatedOn";
111
115
  ElementName["DueOn"] = "DueOn";
116
+ ElementName["LatestCommit"] = "LatestCommit";
112
117
  ElementName["LinkIcon"] = "LinkIcon";
118
+ ElementName["Location"] = "Location";
113
119
  ElementName["ModifiedBy"] = "ModifiedBy";
114
120
  ElementName["ModifiedOn"] = "ModifiedOn";
115
121
  ElementName["OwnedBy"] = "OwnedBy";
@@ -126,7 +132,6 @@ export let ElementName;
126
132
  ElementName["Title"] = "Title";
127
133
  ElementName["ViewCount"] = "ViewCount";
128
134
  ElementName["VoteCount"] = "VoteCount";
129
- ElementName["LatestCommit"] = "LatestCommit";
130
135
  })(ElementName || (ElementName = {}));
131
136
  export let ActionName;
132
137