@atlaskit/smart-card 36.8.1 → 36.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 +24 -0
  2. package/dist/cjs/constants.js +2 -0
  3. package/dist/cjs/extractors/embed/index.js +25 -1
  4. package/dist/cjs/extractors/flexible/index.js +1 -0
  5. package/dist/cjs/extractors/flexible/utils.js +4 -1
  6. package/dist/cjs/messages.js +4 -0
  7. package/dist/cjs/utils/analytics/analytics.js +1 -1
  8. package/dist/cjs/utils/index.js +10 -4
  9. package/dist/cjs/view/BlockCard/views/utils/index.js +3 -1
  10. package/dist/cjs/view/EmbedCard/index.js +5 -7
  11. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  12. package/dist/cjs/view/FlexibleCard/components/elements/applied-to-components-count/index.js +35 -0
  13. package/dist/cjs/view/FlexibleCard/components/elements/index.js +7 -0
  14. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +14 -7
  15. package/dist/cjs/view/LinkUrl/index.js +1 -1
  16. package/dist/cjs/view/common/UnauthorisedViewContent.js +2 -2
  17. package/dist/es2019/constants.js +2 -0
  18. package/dist/es2019/extractors/embed/index.js +35 -9
  19. package/dist/es2019/extractors/flexible/index.js +2 -1
  20. package/dist/es2019/extractors/flexible/utils.js +1 -0
  21. package/dist/es2019/messages.js +4 -0
  22. package/dist/es2019/utils/analytics/analytics.js +1 -1
  23. package/dist/es2019/utils/index.js +3 -0
  24. package/dist/es2019/view/BlockCard/views/utils/index.js +3 -1
  25. package/dist/es2019/view/EmbedCard/index.js +6 -8
  26. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +1 -0
  27. package/dist/es2019/view/FlexibleCard/components/elements/applied-to-components-count/index.js +26 -0
  28. package/dist/es2019/view/FlexibleCard/components/elements/index.js +2 -1
  29. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +8 -0
  30. package/dist/es2019/view/LinkUrl/index.js +1 -1
  31. package/dist/es2019/view/common/UnauthorisedViewContent.js +1 -1
  32. package/dist/esm/constants.js +2 -0
  33. package/dist/esm/extractors/embed/index.js +26 -2
  34. package/dist/esm/extractors/flexible/index.js +2 -1
  35. package/dist/esm/extractors/flexible/utils.js +3 -0
  36. package/dist/esm/messages.js +4 -0
  37. package/dist/esm/utils/analytics/analytics.js +1 -1
  38. package/dist/esm/utils/index.js +8 -4
  39. package/dist/esm/view/BlockCard/views/utils/index.js +3 -1
  40. package/dist/esm/view/EmbedCard/index.js +6 -8
  41. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  42. package/dist/esm/view/FlexibleCard/components/elements/applied-to-components-count/index.js +25 -0
  43. package/dist/esm/view/FlexibleCard/components/elements/index.js +2 -1
  44. package/dist/esm/view/FlexibleCard/components/elements/utils.js +14 -7
  45. package/dist/esm/view/LinkUrl/index.js +1 -1
  46. package/dist/esm/view/common/UnauthorisedViewContent.js +1 -1
  47. package/dist/types/__fixtures__/compass-scorecard.d.ts +44 -0
  48. package/dist/types/constants.d.ts +2 -0
  49. package/dist/types/extractors/embed/index.d.ts +2 -2
  50. package/dist/types/extractors/flexible/utils.d.ts +1 -0
  51. package/dist/types/messages.d.ts +1 -1
  52. package/dist/types/state/flexible-ui-context/types.d.ts +6 -0
  53. package/dist/types/view/EmbedCard/views/ResolvedView.d.ts +1 -1
  54. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +8 -1
  55. package/dist/types/view/FlexibleCard/components/elements/applied-to-components-count/index.d.ts +4 -0
  56. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +1 -0
  57. package/dist/types-ts4.5/__fixtures__/compass-scorecard.d.ts +44 -0
  58. package/dist/types-ts4.5/constants.d.ts +2 -0
  59. package/dist/types-ts4.5/extractors/embed/index.d.ts +2 -2
  60. package/dist/types-ts4.5/extractors/flexible/utils.d.ts +1 -0
  61. package/dist/types-ts4.5/messages.d.ts +1 -1
  62. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +6 -0
  63. package/dist/types-ts4.5/view/EmbedCard/views/ResolvedView.d.ts +1 -1
  64. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/types.d.ts +8 -1
  65. package/dist/types-ts4.5/view/FlexibleCard/components/elements/applied-to-components-count/index.d.ts +4 -0
  66. package/dist/types-ts4.5/view/FlexibleCard/components/elements/index.d.ts +1 -0
  67. package/package.json +5 -5
@@ -7,7 +7,7 @@ import { extractEmbedProps } from '../../extractors/embed';
7
7
  import { extractInlineProps } from '../../extractors/inline';
8
8
  import { getExtensionKey, hasAuthScopeOverrides } from '../../state/helpers';
9
9
  import { useControlDataExportConfig } from '../../state/hooks/use-control-data-export-config';
10
- import { getEmptyJsonLd, getForbiddenJsonLd } from '../../utils/jsonld';
10
+ import { getForbiddenJsonLd } from '../../utils/jsonld';
11
11
  import { getIsDataExportEnabled } from '../../utils/should-data-export';
12
12
  import BlockCardResolvedView from '../BlockCard/views/ResolvedView';
13
13
  import { InlineCardResolvedView } from '../InlineCard/ResolvedView';
@@ -43,8 +43,6 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
43
43
  status,
44
44
  details
45
45
  } = cardState;
46
- const data = details && details.data || getEmptyJsonLd();
47
- const meta = details && details.meta;
48
46
  const extensionKey = getExtensionKey(details);
49
47
  const isProductIntegrationSupported = hasAuthScopeOverrides(details);
50
48
  const {
@@ -64,7 +62,7 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
64
62
  testId: testId ? `${testId}-resolving-view` : 'embed-card-resolving-view'
65
63
  });
66
64
  case 'resolved':
67
- const resolvedViewProps = extractEmbedProps(data, meta, platform, iframeUrlType);
65
+ const resolvedViewProps = extractEmbedProps(details, platform, iframeUrlType);
68
66
  if (onResolve) {
69
67
  var _resolvedViewProps$pr;
70
68
  onResolve({
@@ -75,7 +73,7 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
75
73
  }
76
74
  if (fg('platform_smart_links_controlled_dsp_export_view')) {
77
75
  if (getIsDataExportEnabled(shouldControlDataExport, cardState.details)) {
78
- const unauthViewProps = extractEmbedProps(data, meta, platform);
76
+ const unauthViewProps = extractEmbedProps(details, platform);
79
77
  return /*#__PURE__*/React.createElement(UnauthorizedView, {
80
78
  context: unauthViewProps.context,
81
79
  extensionKey: extensionKey,
@@ -128,7 +126,7 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
128
126
  status
129
127
  });
130
128
  }
131
- const unauthorisedViewProps = extractEmbedProps(data, meta, platform);
129
+ const unauthorisedViewProps = extractEmbedProps(details, platform);
132
130
  return /*#__PURE__*/React.createElement(UnauthorizedView, {
133
131
  context: unauthorisedViewProps.context,
134
132
  extensionKey: extensionKey,
@@ -148,7 +146,7 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
148
146
  status
149
147
  });
150
148
  }
151
- const forbiddenViewProps = extractEmbedProps(data, meta, platform);
149
+ const forbiddenViewProps = extractEmbedProps(details, platform);
152
150
  const cardMetadata = (_details$meta = details === null || details === void 0 ? void 0 : details.meta) !== null && _details$meta !== void 0 ? _details$meta : getForbiddenJsonLd().meta;
153
151
  if (forbiddenViewProps.preview) {
154
152
  return /*#__PURE__*/React.createElement(EmbedCardResolvedView, _extends({}, forbiddenViewProps, {
@@ -183,7 +181,7 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
183
181
  status
184
182
  });
185
183
  }
186
- const notFoundViewProps = extractEmbedProps(data, meta, platform);
184
+ const notFoundViewProps = extractEmbedProps(details, platform);
187
185
  const notFoundAccessContext = details !== null && details !== void 0 && details.meta ? extractRequestAccessContextImproved({
188
186
  jsonLd: details === null || details === void 0 ? void 0 : details.meta,
189
187
  url,
@@ -13,6 +13,7 @@ export const ElementDisplaySchema = {
13
13
  [ElementName.AssignedToGroup]: ['inline'],
14
14
  [ElementName.AttachmentCount]: ['inline'],
15
15
  [ElementName.AuthorGroup]: ['inline'],
16
+ [ElementName.AppliedToComponentsCount]: ['inline'],
16
17
  [ElementName.ChecklistProgress]: ['inline'],
17
18
  [ElementName.CollaboratorGroup]: ['inline'],
18
19
  [ElementName.CommentCount]: ['inline'],
@@ -0,0 +1,26 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useContext } from 'react';
3
+ import { useIntl } from 'react-intl-next';
4
+ import { IconType } from '../../../../../constants';
5
+ import { messages } from '../../../../../messages';
6
+ import { FlexibleUiContext } from '../../../../../state/flexible-ui-context';
7
+ import Badge from '../badge';
8
+ const AppliedToComponentsCount = props => {
9
+ const {
10
+ formatMessage
11
+ } = useIntl();
12
+ const context = useContext(FlexibleUiContext);
13
+ if (
14
+ // Check for null and undefined, render if it's 0.
15
+ (context === null || context === void 0 ? void 0 : context.appliedToComponentsCount) === null || (context === null || context === void 0 ? void 0 : context.appliedToComponentsCount) === undefined) {
16
+ return null;
17
+ }
18
+ const label = formatMessage(messages.compass_applied_components_count, {
19
+ numberOfComponents: context.appliedToComponentsCount
20
+ });
21
+ return /*#__PURE__*/React.createElement(Badge, _extends({
22
+ icon: IconType.Component,
23
+ label: label
24
+ }, props));
25
+ };
26
+ export default AppliedToComponentsCount;
@@ -173,4 +173,5 @@ export const ViewCount = createElement(ElementName.ViewCount);
173
173
  * Creates a VoteCount Badge element using the data from VoteCount in the Flexible UI Context.
174
174
  * @see Badge
175
175
  */
176
- export const VoteCount = createElement(ElementName.VoteCount);
176
+ export const VoteCount = createElement(ElementName.VoteCount);
177
+ export { default as AppliedToComponentsCount } from './applied-to-components-count';
@@ -4,6 +4,7 @@ import { FormattedDate } from 'react-intl-next';
4
4
  import { ElementName, IconType, SmartLinkInternalTheme } from '../../../../constants';
5
5
  import { messages } from '../../../../messages';
6
6
  import { FlexibleUiContext } from '../../../../state/flexible-ui-context';
7
+ import AppliedToComponentsCount from './applied-to-components-count';
7
8
  import AtlaskitBadge from './atlaskit-badge';
8
9
  import AvatarGroup from './avatar-group';
9
10
  import Badge from './badge';
@@ -14,6 +15,12 @@ import Lozenge from './lozenge';
14
15
  import Media from './media';
15
16
  import Text from './text';
16
17
  const elementMappings = {
18
+ [ElementName.AppliedToComponentsCount]: {
19
+ component: AppliedToComponentsCount,
20
+ props: {
21
+ icon: IconType.Component
22
+ }
23
+ },
17
24
  [ElementName.AttachmentCount]: {
18
25
  component: Badge,
19
26
  props: {
@@ -165,6 +172,7 @@ const getData = (elementName, contextKey, context) => {
165
172
  const AvatarGroupsWithFallback = [ElementName.AssignedToGroup];
166
173
  const showFallbackAvatar = AvatarGroupsWithFallback.includes(elementName);
167
174
  return toAvatarGroupProps(data, showFallbackAvatar);
175
+ case ElementName.AppliedToComponentsCount:
168
176
  case ElementName.AttachmentCount:
169
177
  case ElementName.ChecklistProgress:
170
178
  case ElementName.CommentCount:
@@ -10,7 +10,7 @@ import LinkWarningModal from './LinkWarningModal';
10
10
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
11
11
  const PACKAGE_DATA = {
12
12
  packageName: "@atlaskit/smart-card",
13
- packageVersion: "36.8.1",
13
+ packageVersion: "36.9.0",
14
14
  componentName: 'linkUrl'
15
15
  };
16
16
  const Anchor = withLinkClickedEvent('a');
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { useCallback } from 'react';
3
3
  import { FormattedMessage } from 'react-intl-next';
4
4
  import { fg } from '@atlaskit/platform-feature-flags';
5
- import { Anchor } from '@atlaskit/primitives';
5
+ import { Anchor } from '@atlaskit/primitives/compiled';
6
6
  import { useAnalyticsEvents } from '../../common/analytics/generated/use-analytics-events';
7
7
  import { CONTENT_URL_3P_ACCOUNT_AUTH, CONTENT_URL_SECURITY_AND_PERMISSIONS } from '../../constants';
8
8
  import { messages } from '../../messages';
@@ -106,6 +106,7 @@ export var SmartLinkWidth = /*#__PURE__*/function (SmartLinkWidth) {
106
106
  * (src/view/FlexibleCard/components/blocks/utils.tsx)
107
107
  */
108
108
  export var ElementName = /*#__PURE__*/function (ElementName) {
109
+ ElementName["AppliedToComponentsCount"] = "AppliedToComponentsCount";
109
110
  ElementName["AssignedTo"] = "AssignedTo";
110
111
  ElementName["AssignedToGroup"] = "AssignedToGroup";
111
112
  ElementName["AttachmentCount"] = "AttachmentCount";
@@ -220,6 +221,7 @@ export var IconType = /*#__PURE__*/function (IconType) {
220
221
  IconType["Attachment"] = "Badge:Attachment";
221
222
  IconType["CheckItem"] = "Badge:Task";
222
223
  IconType["Comment"] = "Badge:Comment";
224
+ IconType["Component"] = "Badge:Component";
223
225
  IconType["View"] = "Badge:View";
224
226
  IconType["React"] = "Badge:React";
225
227
  IconType["Vote"] = "Badge:Vote";
@@ -1,7 +1,9 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import { extractLink, extractPreview, extractProvider, extractProviderIcon, extractTitle, extractUrlFromIconJsonLd } from '@atlaskit/link-extractors';
4
+ import { extractEntityProvider, extractLink, extractPreview, extractProvider, extractProviderIcon, extractSmartLinkEmbed, extractSmartLinkTitle, extractSmartLinkUrl, extractTitle, extractUrlFromIconJsonLd, isEntityPresent } from '@atlaskit/link-extractors';
5
+ import { fg } from '@atlaskit/platform-feature-flags';
6
+ import { getEmptyJsonLd } from '../../utils/jsonld';
5
7
  import { prioritiseIcon } from '../common/icon';
6
8
  import { extractIsSupportTheming } from '../common/meta/extractIsSupportTheming';
7
9
  import { extractIsTrusted } from '../common/meta/extractIsTrusted';
@@ -35,7 +37,29 @@ function generateContext(jsonLd) {
35
37
  icon: icon ? icon : provider.icon
36
38
  });
37
39
  }
38
- export var extractEmbedProps = function extractEmbedProps(jsonLd, meta, platform, iframeUrlType) {
40
+
41
+ /**
42
+ * We can migrate this to link extractors once we have deprecated JsonLd
43
+ */
44
+ function extractSmartLinkContext(response) {
45
+ if (isEntityPresent(response)) {
46
+ return extractEntityProvider(response);
47
+ }
48
+ return generateContext(response === null || response === void 0 ? void 0 : response.data);
49
+ }
50
+ export var extractEmbedProps = function extractEmbedProps(response, platform, iframeUrlType) {
51
+ var meta = response === null || response === void 0 ? void 0 : response.meta;
52
+ var jsonLd = (response === null || response === void 0 ? void 0 : response.data) || getEmptyJsonLd();
53
+ if (fg('smart_links_noun_support')) {
54
+ return {
55
+ link: extractSmartLinkUrl(response) || '',
56
+ title: extractSmartLinkTitle(response),
57
+ context: extractSmartLinkContext(response),
58
+ preview: extractSmartLinkEmbed(response, iframeUrlType),
59
+ isTrusted: extractIsTrusted(meta),
60
+ isSupportTheming: extractIsSupportTheming(meta)
61
+ };
62
+ }
39
63
  return {
40
64
  link: extractLink(jsonLd) || '',
41
65
  title: extractTitle(jsonLd),
@@ -10,7 +10,7 @@ import extractState from './extract-state';
10
10
  import { extractLinkIcon } from './icon';
11
11
  import extractProviderIcon from './icon/extract-provider-icon';
12
12
  import { extractLatestCommit } from './latest-commit';
13
- import { extractAssignedTo, extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractCreatedBy, extractDueOn, extractLocation, extractModifiedBy, extractOwnedBy, extractPersonAssignedToAsArray, extractProgrammingLanguage, extractReactCount, extractReadTime, extractSentOn, extractSourceBranch, extractStoryPoints, extractSubscriberCount, extractSubTasksProgress, extractTargetBranch, extractViewCount, extractVoteCount } from './utils';
13
+ import { extractAppliedToComponentsCount, extractAssignedTo, extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractCreatedBy, extractDueOn, extractLocation, extractModifiedBy, extractOwnedBy, extractPersonAssignedToAsArray, extractProgrammingLanguage, extractReactCount, extractReadTime, extractSentOn, extractSourceBranch, extractStoryPoints, extractSubscriberCount, extractSubTasksProgress, extractTargetBranch, extractViewCount, extractVoteCount } from './utils';
14
14
  var extractFlexibleUiContext = function extractFlexibleUiContext() {
15
15
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16
16
  var appearance = _ref.appearance,
@@ -39,6 +39,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
39
39
  response: response,
40
40
  url: props.url // Use the original URL in edge cases, such as short links for AI summary and copy link actions.
41
41
  }),
42
+ appliedToComponentsCount: extractAppliedToComponentsCount(data),
42
43
  assignedToGroup: extractPersonAssignedToAsArray(data),
43
44
  attachmentCount: extractAttachmentCount(data),
44
45
  authorGroup: extractPersonCreatedBy(data),
@@ -11,6 +11,9 @@ var extractValue = function extractValue(data, key) {
11
11
  export var extractCommentCount = function extractCommentCount(data) {
12
12
  return extractValue(data, 'schema:commentCount');
13
13
  };
14
+ export var extractAppliedToComponentsCount = function extractAppliedToComponentsCount(data) {
15
+ return extractValue(data, 'atlassian:appliedToComponentsCount');
16
+ };
14
17
  export var extractDueOn = function extractDueOn(data) {
15
18
  return extractValue(data, 'endTime');
16
19
  };
@@ -130,6 +130,10 @@ export var messages = defineMessages({
130
130
  defaultMessage: 'Check this link',
131
131
  description: 'Link safety warning modal header'
132
132
  },
133
+ compass_applied_components_count: {
134
+ id: 'compass.applied_components_count.non-final',
135
+ defaultMessage: 'Applied to {numberOfComponents, plural, one {{numberOfComponents, number} component} other {{numberOfComponents, number} components}}'
136
+ },
133
137
  connect_to: {
134
138
  id: 'fabric.linking.connect_to',
135
139
  defaultMessage: 'Connect to {name}',
@@ -4,7 +4,7 @@ export var ANALYTICS_CHANNEL = 'media';
4
4
  export var context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card",
7
- packageVersion: "36.8.1"
7
+ packageVersion: "36.9.0"
8
8
  };
9
9
  export var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -496,6 +496,10 @@ export var getLazyIcons = function getLazyIcons() {
496
496
  default: function _default() {
497
497
  return import( /* webpackChunkName: "@atlaskit-internal_glyphAttachment" */'@atlaskit/icon/core/migration/task');
498
498
  }
499
+ }), IconType.Component, {
500
+ default: function _default() {
501
+ return import( /* webpackChunkName: "@atlaskit-internal_glyphComponent" */'@atlaskit/icon/core/migration/component');
502
+ }
499
503
  }), IconType.Comment, {
500
504
  default: function _default() {
501
505
  return import( /* webpackChunkName: "@atlaskit-internal_glyphComment" */'@atlaskit/icon/core/migration/comment');
@@ -512,11 +516,11 @@ export var getLazyIcons = function getLazyIcons() {
512
516
  default: function _default() {
513
517
  return import( /* webpackChunkName: "@atlaskit-internal_glyphComment" */'@atlaskit/icon/core/migration/arrow-up');
514
518
  }
515
- }), IconType.PriorityBlocker, {
519
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref3, IconType.PriorityBlocker, {
516
520
  default: function _default() {
517
521
  return import( /* webpackChunkName: "@atlaskit-internal_glyphBlocker" */'@atlaskit/icon-priority/glyph/priority-blocker');
518
522
  }
519
- }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref3, IconType.PriorityCritical, {
523
+ }), IconType.PriorityCritical, {
520
524
  default: function _default() {
521
525
  return import( /* webpackChunkName: "@atlaskit-internal_glyphCritical" */'@atlaskit/icon-priority/glyph/priority-critical');
522
526
  }
@@ -552,11 +556,11 @@ export var getLazyIcons = function getLazyIcons() {
552
556
  default: function _default() {
553
557
  return import( /* webpackChunkName: "@atlaskit-internal_glyphTrivial" */'@atlaskit/icon-priority/glyph/priority-trivial');
554
558
  }
555
- }), IconType.PriorityUndefined, {
559
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_ref3, IconType.PriorityUndefined, {
556
560
  default: function _default() {
557
561
  return import( /* webpackChunkName: "@atlaskit-internal_glyphUndefined" */'@atlaskit/icon/core/migration/question-circle--question');
558
562
  }
559
- }), _defineProperty(_defineProperty(_defineProperty(_ref3, IconType.ProgrammingLanguage, {
563
+ }), IconType.ProgrammingLanguage, {
560
564
  default: function _default() {
561
565
  return import( /* webpackChunkName: "@atlaskit-internal_glyphProgrammingLanguage" */'@atlaskit/icon/core/migration/angle-brackets--code');
562
566
  }
@@ -65,7 +65,9 @@ export var getSimulatedBetterMetadata = function getSimulatedBetterMetadata(card
65
65
  }, {
66
66
  name: ElementName.OwnedBy
67
67
  }].concat(baseTopMetadata) : defaultTopMetadata,
68
- bottomMetadata: defaultBottomMetadata
68
+ bottomMetadata: [{
69
+ name: ElementName.AppliedToComponentsCount
70
+ }].concat(baseBottomMetaData)
69
71
  };
70
72
  } else {
71
73
  return {
@@ -7,7 +7,7 @@ import { extractEmbedProps } from '../../extractors/embed';
7
7
  import { extractInlineProps } from '../../extractors/inline';
8
8
  import { getExtensionKey, hasAuthScopeOverrides } from '../../state/helpers';
9
9
  import { useControlDataExportConfig } from '../../state/hooks/use-control-data-export-config';
10
- import { getEmptyJsonLd, getForbiddenJsonLd } from '../../utils/jsonld';
10
+ import { getForbiddenJsonLd } from '../../utils/jsonld';
11
11
  import { getIsDataExportEnabled } from '../../utils/should-data-export';
12
12
  import BlockCardResolvedView from '../BlockCard/views/ResolvedView';
13
13
  import { InlineCardResolvedView } from '../InlineCard/ResolvedView';
@@ -39,8 +39,6 @@ export var EmbedCard = /*#__PURE__*/React.forwardRef(function (_ref, iframeRef)
39
39
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
40
40
  var status = cardState.status,
41
41
  details = cardState.details;
42
- var data = details && details.data || getEmptyJsonLd();
43
- var meta = details && details.meta;
44
42
  var extensionKey = getExtensionKey(details);
45
43
  var isProductIntegrationSupported = hasAuthScopeOverrides(details);
46
44
  var _useControlDataExport = useControlDataExportConfig(),
@@ -60,7 +58,7 @@ export var EmbedCard = /*#__PURE__*/React.forwardRef(function (_ref, iframeRef)
60
58
  testId: testId ? "".concat(testId, "-resolving-view") : 'embed-card-resolving-view'
61
59
  });
62
60
  case 'resolved':
63
- var resolvedViewProps = extractEmbedProps(data, meta, platform, iframeUrlType);
61
+ var resolvedViewProps = extractEmbedProps(details, platform, iframeUrlType);
64
62
  if (onResolve) {
65
63
  var _resolvedViewProps$pr;
66
64
  onResolve({
@@ -71,7 +69,7 @@ export var EmbedCard = /*#__PURE__*/React.forwardRef(function (_ref, iframeRef)
71
69
  }
72
70
  if (fg('platform_smart_links_controlled_dsp_export_view')) {
73
71
  if (getIsDataExportEnabled(shouldControlDataExport, cardState.details)) {
74
- var unauthViewProps = extractEmbedProps(data, meta, platform);
72
+ var unauthViewProps = extractEmbedProps(details, platform);
75
73
  return /*#__PURE__*/React.createElement(UnauthorizedView, {
76
74
  context: unauthViewProps.context,
77
75
  extensionKey: extensionKey,
@@ -124,7 +122,7 @@ export var EmbedCard = /*#__PURE__*/React.forwardRef(function (_ref, iframeRef)
124
122
  status: status
125
123
  });
126
124
  }
127
- var unauthorisedViewProps = extractEmbedProps(data, meta, platform);
125
+ var unauthorisedViewProps = extractEmbedProps(details, platform);
128
126
  return /*#__PURE__*/React.createElement(UnauthorizedView, {
129
127
  context: unauthorisedViewProps.context,
130
128
  extensionKey: extensionKey,
@@ -144,7 +142,7 @@ export var EmbedCard = /*#__PURE__*/React.forwardRef(function (_ref, iframeRef)
144
142
  status: status
145
143
  });
146
144
  }
147
- var forbiddenViewProps = extractEmbedProps(data, meta, platform);
145
+ var forbiddenViewProps = extractEmbedProps(details, platform);
148
146
  var cardMetadata = (_details$meta = details === null || details === void 0 ? void 0 : details.meta) !== null && _details$meta !== void 0 ? _details$meta : getForbiddenJsonLd().meta;
149
147
  if (forbiddenViewProps.preview) {
150
148
  return /*#__PURE__*/React.createElement(EmbedCardResolvedView, _extends({}, forbiddenViewProps, {
@@ -179,7 +177,7 @@ export var EmbedCard = /*#__PURE__*/React.forwardRef(function (_ref, iframeRef)
179
177
  status: status
180
178
  });
181
179
  }
182
- var notFoundViewProps = extractEmbedProps(data, meta, platform);
180
+ var notFoundViewProps = extractEmbedProps(details, platform);
183
181
  var notFoundAccessContext = details !== null && details !== void 0 && details.meta ? extractRequestAccessContextImproved({
184
182
  jsonLd: details === null || details === void 0 ? void 0 : details.meta,
185
183
  url: url,
@@ -13,7 +13,7 @@ import ElementGroup from './element-group';
13
13
 
14
14
  // Determine whether the element can be display as inline/block.
15
15
 
16
- export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.AssignedTo, ['inline']), ElementName.AssignedToGroup, ['inline']), ElementName.AttachmentCount, ['inline']), ElementName.AuthorGroup, ['inline']), ElementName.ChecklistProgress, ['inline']), ElementName.CollaboratorGroup, ['inline']), ElementName.CommentCount, ['inline']), ElementName.CreatedBy, ['inline']), ElementName.CreatedOn, ['inline']), ElementName.DueOn, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.LatestCommit, ['inline']), ElementName.LinkIcon, ['inline']), ElementName.Location, ['inline']), ElementName.ModifiedBy, ['inline']), ElementName.ModifiedOn, ['inline']), ElementName.OwnedBy, ['inline']), ElementName.OwnedByGroup, ['inline']), ElementName.Preview, ['block']), ElementName.Priority, ['inline']), ElementName.ProgrammingLanguage, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.Provider, ['inline']), ElementName.ReactCount, ['inline']), ElementName.ReadTime, ['inline']), ElementName.Snippet, ['block']), ElementName.SourceBranch, ['inline']), ElementName.SentOn, ['inline']), ElementName.State, ['inline']), ElementName.SubscriberCount, ['inline']), ElementName.SubTasksProgress, ['inline']), ElementName.StoryPoints, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.TargetBranch, ['inline']), ElementName.Title, ['inline']), ElementName.ViewCount, ['inline']), ElementName.VoteCount, ['inline']));
16
+ export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.AssignedTo, ['inline']), ElementName.AssignedToGroup, ['inline']), ElementName.AttachmentCount, ['inline']), ElementName.AuthorGroup, ['inline']), ElementName.AppliedToComponentsCount, ['inline']), ElementName.ChecklistProgress, ['inline']), ElementName.CollaboratorGroup, ['inline']), ElementName.CommentCount, ['inline']), ElementName.CreatedBy, ['inline']), ElementName.CreatedOn, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.DueOn, ['inline']), ElementName.LatestCommit, ['inline']), ElementName.LinkIcon, ['inline']), ElementName.Location, ['inline']), ElementName.ModifiedBy, ['inline']), ElementName.ModifiedOn, ['inline']), ElementName.OwnedBy, ['inline']), ElementName.OwnedByGroup, ['inline']), ElementName.Preview, ['block']), ElementName.Priority, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), ElementName.Provider, ['inline']), ElementName.ReactCount, ['inline']), ElementName.ReadTime, ['inline']), ElementName.Snippet, ['block']), ElementName.SourceBranch, ['inline']), ElementName.SentOn, ['inline']), ElementName.State, ['inline']), ElementName.SubscriberCount, ['inline']), ElementName.SubTasksProgress, ['inline']), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_ElementDisplaySchema, ElementName.StoryPoints, ['inline']), ElementName.TargetBranch, ['inline']), ElementName.Title, ['inline']), ElementName.ViewCount, ['inline']), ElementName.VoteCount, ['inline']));
17
17
 
18
18
  /**
19
19
  * Get gap size between elements inside a block
@@ -0,0 +1,25 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useContext } from 'react';
3
+ import { useIntl } from 'react-intl-next';
4
+ import { IconType } from '../../../../../constants';
5
+ import { messages } from '../../../../../messages';
6
+ import { FlexibleUiContext } from '../../../../../state/flexible-ui-context';
7
+ import Badge from '../badge';
8
+ var AppliedToComponentsCount = function AppliedToComponentsCount(props) {
9
+ var _useIntl = useIntl(),
10
+ formatMessage = _useIntl.formatMessage;
11
+ var context = useContext(FlexibleUiContext);
12
+ if (
13
+ // Check for null and undefined, render if it's 0.
14
+ (context === null || context === void 0 ? void 0 : context.appliedToComponentsCount) === null || (context === null || context === void 0 ? void 0 : context.appliedToComponentsCount) === undefined) {
15
+ return null;
16
+ }
17
+ var label = formatMessage(messages.compass_applied_components_count, {
18
+ numberOfComponents: context.appliedToComponentsCount
19
+ });
20
+ return /*#__PURE__*/React.createElement(Badge, _extends({
21
+ icon: IconType.Component,
22
+ label: label
23
+ }, props));
24
+ };
25
+ export default AppliedToComponentsCount;
@@ -173,4 +173,5 @@ export var ViewCount = createElement(ElementName.ViewCount);
173
173
  * Creates a VoteCount Badge element using the data from VoteCount in the Flexible UI Context.
174
174
  * @see Badge
175
175
  */
176
- export var VoteCount = createElement(ElementName.VoteCount);
176
+ export var VoteCount = createElement(ElementName.VoteCount);
177
+ export { default as AppliedToComponentsCount } from './applied-to-components-count';
@@ -7,6 +7,7 @@ import { FormattedDate } from 'react-intl-next';
7
7
  import { ElementName, IconType, SmartLinkInternalTheme } from '../../../../constants';
8
8
  import { messages } from '../../../../messages';
9
9
  import { FlexibleUiContext } from '../../../../state/flexible-ui-context';
10
+ import AppliedToComponentsCount from './applied-to-components-count';
10
11
  import AtlaskitBadge from './atlaskit-badge';
11
12
  import AvatarGroup from './avatar-group';
12
13
  import Badge from './badge';
@@ -16,7 +17,12 @@ import Link from './link';
16
17
  import Lozenge from './lozenge';
17
18
  import Media from './media';
18
19
  import Text from './text';
19
- var elementMappings = (_elementMappings = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.AttachmentCount, {
20
+ var elementMappings = (_elementMappings = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.AppliedToComponentsCount, {
21
+ component: AppliedToComponentsCount,
22
+ props: {
23
+ icon: IconType.Component
24
+ }
25
+ }), ElementName.AttachmentCount, {
20
26
  component: Badge,
21
27
  props: {
22
28
  icon: IconType.Attachment
@@ -52,9 +58,9 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_defineProperty(_d
52
58
  }
53
59
  }), ElementName.CreatedBy, {
54
60
  component: Text
55
- }), ElementName.OwnedBy, {
61
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.OwnedBy, {
56
62
  component: Text
57
- }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.AssignedTo, {
63
+ }), ElementName.AssignedTo, {
58
64
  component: Text
59
65
  }), ElementName.AssignedToGroup, {
60
66
  component: AvatarGroup
@@ -75,9 +81,9 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_defineProperty(_d
75
81
  component: Text
76
82
  }), ElementName.ModifiedOn, {
77
83
  component: DateTime
78
- }), ElementName.Preview, {
84
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.Preview, {
79
85
  component: Media
80
- }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.Priority, {
86
+ }), ElementName.Priority, {
81
87
  component: Badge
82
88
  }), ElementName.ProgrammingLanguage, {
83
89
  component: Badge,
@@ -104,9 +110,9 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_defineProperty(_d
104
110
  props: {
105
111
  icon: IconType.SubTasksProgress
106
112
  }
107
- }), ElementName.StoryPoints, {
113
+ }), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.StoryPoints, {
108
114
  component: AtlaskitBadge
109
- }), _defineProperty(_defineProperty(_defineProperty(_elementMappings, ElementName.TargetBranch, {
115
+ }), ElementName.TargetBranch, {
110
116
  component: Text
111
117
  }), ElementName.Title, {
112
118
  component: Link
@@ -134,6 +140,7 @@ var getData = function getData(elementName, contextKey, context) {
134
140
  var AvatarGroupsWithFallback = [ElementName.AssignedToGroup];
135
141
  var showFallbackAvatar = AvatarGroupsWithFallback.includes(elementName);
136
142
  return toAvatarGroupProps(data, showFallbackAvatar);
143
+ case ElementName.AppliedToComponentsCount:
137
144
  case ElementName.AttachmentCount:
138
145
  case ElementName.ChecklistProgress:
139
146
  case ElementName.CommentCount:
@@ -13,7 +13,7 @@ import LinkWarningModal from './LinkWarningModal';
13
13
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
14
14
  var PACKAGE_DATA = {
15
15
  packageName: "@atlaskit/smart-card",
16
- packageVersion: "36.8.1",
16
+ packageVersion: "36.9.0",
17
17
  componentName: 'linkUrl'
18
18
  };
19
19
  var Anchor = withLinkClickedEvent('a');
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { useCallback } from 'react';
3
3
  import { FormattedMessage } from 'react-intl-next';
4
4
  import { fg } from '@atlaskit/platform-feature-flags';
5
- import { Anchor } from '@atlaskit/primitives';
5
+ import { Anchor } from '@atlaskit/primitives/compiled';
6
6
  import { useAnalyticsEvents } from '../../common/analytics/generated/use-analytics-events';
7
7
  import { CONTENT_URL_3P_ACCOUNT_AUTH, CONTENT_URL_SECURITY_AND_PERMISSIONS } from '../../constants';
8
8
  import { messages } from '../../messages';
@@ -0,0 +1,44 @@
1
+ declare const _default: {
2
+ meta: {
3
+ access: string;
4
+ visibility: string;
5
+ product: string;
6
+ resourceType: string;
7
+ key: string;
8
+ };
9
+ data: {
10
+ '@context': {
11
+ '@vocab': string;
12
+ atlassian: string;
13
+ schema: string;
14
+ };
15
+ '@type': string[];
16
+ url: string;
17
+ name: string;
18
+ icon: {
19
+ '@type': string;
20
+ url: string;
21
+ };
22
+ preview: {
23
+ '@type': string;
24
+ href: string;
25
+ 'atlassian:supportedPlatforms': string[];
26
+ };
27
+ generator: {
28
+ '@type': string;
29
+ name: string;
30
+ icon: {
31
+ '@type': string;
32
+ url: string;
33
+ };
34
+ };
35
+ 'atlassian:ownedBy': {
36
+ '@type': string;
37
+ name: string;
38
+ icon: string;
39
+ };
40
+ 'atlassian:appliedToComponentsCount': number;
41
+ summary: string;
42
+ };
43
+ };
44
+ export default _default;
@@ -88,6 +88,7 @@ export declare enum SmartLinkWidth {
88
88
  * (src/view/FlexibleCard/components/blocks/utils.tsx)
89
89
  */
90
90
  export declare enum ElementName {
91
+ AppliedToComponentsCount = "AppliedToComponentsCount",
91
92
  AssignedTo = "AssignedTo",
92
93
  AssignedToGroup = "AssignedToGroup",
93
94
  AttachmentCount = "AttachmentCount",
@@ -192,6 +193,7 @@ export declare enum IconType {
192
193
  Attachment = "Badge:Attachment",
193
194
  CheckItem = "Badge:Task",
194
195
  Comment = "Badge:Comment",
196
+ Component = "Badge:Component",
195
197
  View = "Badge:View",
196
198
  React = "Badge:React",
197
199
  Vote = "Badge:Vote",
@@ -1,4 +1,4 @@
1
- import { type JsonLd } from '@atlaskit/json-ld-types';
1
+ import { SmartLinkResponse } from '@atlaskit/linking-types';
2
2
  import { type CardPlatform, type EmbedIframeUrlType } from '../../view/Card/types';
3
3
  import { type EmbedCardResolvedViewProps } from '../../view/EmbedCard/views/ResolvedView';
4
- export declare const extractEmbedProps: (jsonLd: JsonLd.Data.BaseData, meta?: JsonLd.Meta.BaseMeta, platform?: CardPlatform, iframeUrlType?: EmbedIframeUrlType) => EmbedCardResolvedViewProps;
4
+ export declare const extractEmbedProps: (response?: SmartLinkResponse, platform?: CardPlatform, iframeUrlType?: EmbedIframeUrlType) => EmbedCardResolvedViewProps;
@@ -3,6 +3,7 @@ import { type LinkPerson } from '@atlaskit/link-extractors';
3
3
  import { type LinkLocation } from '../../state/flexible-ui-context/types';
4
4
  export type LinkCommentType = JsonLd.Data.Document | JsonLd.Data.Page | JsonLd.Data.Project | JsonLd.Data.SourceCodeCommit | JsonLd.Data.TaskType;
5
5
  export declare const extractCommentCount: (data: JsonLd.Data.BaseData) => number | undefined;
6
+ export declare const extractAppliedToComponentsCount: (data: JsonLd.Data.BaseData) => number | undefined;
6
7
  export declare const extractDueOn: (data: JsonLd.Data.BaseData) => string | undefined;
7
8
  export declare const extractViewCount: (data: JsonLd.Data.BaseData) => number | undefined;
8
9
  export declare const extractReactCount: (data: JsonLd.Data.BaseData) => number | undefined;