@atlaskit/smart-card 43.11.3 → 43.12.1

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 (42) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/analytics.spec.yaml +7 -1
  3. package/dist/cjs/utils/analytics/analytics.js +1 -1
  4. package/dist/cjs/view/CardWithUrl/component.js +327 -3
  5. package/dist/cjs/view/EmbedCard/components/ExpandedFrame.js +93 -2
  6. package/dist/cjs/view/EmbedCard/components/Frame.js +121 -3
  7. package/dist/cjs/view/EmbedCard/components/IframeDwellTracker.js +25 -4
  8. package/dist/cjs/view/EmbedCard/index.js +204 -1
  9. package/dist/cjs/view/EmbedCard/views/ResolvedView.js +95 -2
  10. package/dist/cjs/view/EmbedCard/views/not-found-view/not-found-svg/index.js +5 -1
  11. package/dist/cjs/view/LinkUrl/index.js +1 -1
  12. package/dist/es2019/utils/analytics/analytics.js +1 -1
  13. package/dist/es2019/view/CardWithUrl/component.js +324 -2
  14. package/dist/es2019/view/EmbedCard/components/ExpandedFrame.js +87 -2
  15. package/dist/es2019/view/EmbedCard/components/Frame.js +112 -2
  16. package/dist/es2019/view/EmbedCard/components/IframeDwellTracker.js +25 -4
  17. package/dist/es2019/view/EmbedCard/index.js +208 -0
  18. package/dist/es2019/view/EmbedCard/views/ResolvedView.js +91 -3
  19. package/dist/es2019/view/EmbedCard/views/not-found-view/not-found-svg/index.js +5 -1
  20. package/dist/es2019/view/LinkUrl/index.js +1 -1
  21. package/dist/esm/utils/analytics/analytics.js +1 -1
  22. package/dist/esm/view/CardWithUrl/component.js +326 -2
  23. package/dist/esm/view/EmbedCard/components/ExpandedFrame.js +95 -2
  24. package/dist/esm/view/EmbedCard/components/Frame.js +122 -2
  25. package/dist/esm/view/EmbedCard/components/IframeDwellTracker.js +25 -4
  26. package/dist/esm/view/EmbedCard/index.js +203 -0
  27. package/dist/esm/view/EmbedCard/views/ResolvedView.js +97 -3
  28. package/dist/esm/view/EmbedCard/views/not-found-view/not-found-svg/index.js +5 -1
  29. package/dist/esm/view/LinkUrl/index.js +1 -1
  30. package/dist/types/common/analytics/generated/analytics.types.d.ts +1 -0
  31. package/dist/types/view/EmbedCard/components/ExpandedFrame.d.ts +8 -1
  32. package/dist/types/view/EmbedCard/components/Frame.d.ts +6 -0
  33. package/dist/types/view/EmbedCard/index.d.ts +4 -0
  34. package/dist/types/view/EmbedCard/types.d.ts +4 -0
  35. package/dist/types/view/EmbedCard/views/ResolvedView.d.ts +6 -1
  36. package/dist/types-ts4.5/common/analytics/generated/analytics.types.d.ts +1 -0
  37. package/dist/types-ts4.5/view/EmbedCard/components/ExpandedFrame.d.ts +8 -1
  38. package/dist/types-ts4.5/view/EmbedCard/components/Frame.d.ts +6 -0
  39. package/dist/types-ts4.5/view/EmbedCard/index.d.ts +4 -0
  40. package/dist/types-ts4.5/view/EmbedCard/types.d.ts +4 -0
  41. package/dist/types-ts4.5/view/EmbedCard/views/ResolvedView.d.ts +6 -1
  42. package/package.json +8 -1
@@ -227,4 +227,212 @@ export const EmbedCard = /*#__PURE__*/React.forwardRef(({
227
227
  isSelected: isSelected
228
228
  });
229
229
  }
230
+ });
231
+ export const EmbedCardUpdated = /*#__PURE__*/React.forwardRef(({
232
+ url,
233
+ cardState,
234
+ handleAuthorize,
235
+ handleErrorRetry,
236
+ handleFrameClick,
237
+ isSelected,
238
+ frameStyle,
239
+ platform,
240
+ onResolve,
241
+ onError,
242
+ testId,
243
+ inheritDimensions,
244
+ onIframeDwell,
245
+ onIframeFocus,
246
+ onIframeMouseEnter,
247
+ onIframeMouseLeave,
248
+ iframeUrlType,
249
+ actionOptions,
250
+ renderers,
251
+ CompetitorPrompt,
252
+ hideIconLoadingSkeleton
253
+ }, iframeRef) => {
254
+ var _details$meta4, _forbiddenViewProps$c3, _forbiddenViewProps$c4, _notFoundViewProps$co3, _notFoundViewProps$co4;
255
+ const {
256
+ createAnalyticsEvent
257
+ } = useAnalyticsEvents();
258
+ const {
259
+ status,
260
+ details
261
+ } = cardState;
262
+ const extensionKey = getExtensionKey(details);
263
+ const isProductIntegrationSupported = hasAuthScopeOverrides(details);
264
+ const {
265
+ shouldControlDataExport = false
266
+ } = useControlDataExportConfig();
267
+ switch (status) {
268
+ case 'pending':
269
+ case 'resolving':
270
+ return /*#__PURE__*/React.createElement(UFOLoadHoldWrapper, null, /*#__PURE__*/React.createElement(BlockCardResolvedView, {
271
+ url: url,
272
+ cardState: cardState,
273
+ onClick: handleFrameClick,
274
+ onError: onError,
275
+ onResolve: onResolve,
276
+ renderers: renderers,
277
+ actionOptions: actionOptions,
278
+ testId: testId ? `${testId}-resolving-view` : 'embed-card-resolving-view'
279
+ }));
280
+ case 'resolved':
281
+ const resolvedViewProps = extractEmbedProps(details, platform, iframeUrlType);
282
+ if (onResolve) {
283
+ var _resolvedViewProps$pr2, _details$meta3;
284
+ onResolve({
285
+ title: resolvedViewProps.title,
286
+ url,
287
+ aspectRatio: (_resolvedViewProps$pr2 = resolvedViewProps.preview) === null || _resolvedViewProps$pr2 === void 0 ? void 0 : _resolvedViewProps$pr2.aspectRatio,
288
+ ...(fg('expose-product-details-from-smart-card') && {
289
+ extensionKey: details === null || details === void 0 ? void 0 : (_details$meta3 = details.meta) === null || _details$meta3 === void 0 ? void 0 : _details$meta3.key
290
+ })
291
+ });
292
+ }
293
+ if (getIsDataExportEnabled(shouldControlDataExport, cardState.details)) {
294
+ const unauthViewProps = extractEmbedProps(details, platform);
295
+ return /*#__PURE__*/React.createElement(UnauthorizedView, {
296
+ context: unauthViewProps.context,
297
+ extensionKey: extensionKey,
298
+ frameStyle: frameStyle,
299
+ isProductIntegrationSupported: isProductIntegrationSupported,
300
+ inheritDimensions: inheritDimensions,
301
+ isSelected: isSelected,
302
+ onAuthorize: handleAuthorize,
303
+ onClick: handleFrameClick,
304
+ testId: testId,
305
+ url: unauthViewProps.link
306
+ });
307
+ }
308
+ if (resolvedViewProps.preview) {
309
+ return /*#__PURE__*/React.createElement(EmbedCardResolvedView, _extends({}, resolvedViewProps, {
310
+ isSelected: isSelected,
311
+ frameStyle: frameStyle,
312
+ inheritDimensions: inheritDimensions,
313
+ onClick: handleFrameClick,
314
+ ref: iframeRef,
315
+ onIframeDwell: onIframeDwell,
316
+ onIframeFocus: onIframeFocus,
317
+ onIframeMouseEnter: onIframeMouseEnter,
318
+ onIframeMouseLeave: onIframeMouseLeave,
319
+ testId: testId,
320
+ CompetitorPrompt: CompetitorPrompt,
321
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
322
+ extensionKey: extensionKey
323
+ }));
324
+ } else {
325
+ if (platform === 'mobile') {
326
+ const resolvedInlineViewProps = extractInlineProps(details);
327
+ return /*#__PURE__*/React.createElement(InlineCardResolvedView, _extends({}, resolvedInlineViewProps, {
328
+ isSelected: isSelected,
329
+ testId: testId,
330
+ onClick: handleFrameClick
331
+ }));
332
+ }
333
+ return /*#__PURE__*/React.createElement(BlockCardResolvedView, {
334
+ url: url,
335
+ cardState: cardState,
336
+ onClick: handleFrameClick,
337
+ onError: onError,
338
+ onResolve: onResolve,
339
+ renderers: renderers,
340
+ actionOptions: actionOptions,
341
+ testId: testId
342
+ });
343
+ }
344
+ case 'unauthorized':
345
+ if (onError) {
346
+ onError({
347
+ url,
348
+ status
349
+ });
350
+ }
351
+ const unauthorisedViewProps = extractEmbedProps(details, platform);
352
+ return /*#__PURE__*/React.createElement(UnauthorizedView, {
353
+ context: unauthorisedViewProps.context,
354
+ extensionKey: extensionKey,
355
+ frameStyle: frameStyle,
356
+ isProductIntegrationSupported: isProductIntegrationSupported,
357
+ inheritDimensions: inheritDimensions,
358
+ isSelected: isSelected,
359
+ onAuthorize: handleAuthorize,
360
+ onClick: handleFrameClick,
361
+ testId: testId,
362
+ url: unauthorisedViewProps.link
363
+ });
364
+ case 'forbidden':
365
+ if (onError) {
366
+ onError({
367
+ url,
368
+ status
369
+ });
370
+ }
371
+ const forbiddenViewProps = extractEmbedProps(details, platform);
372
+ const cardMetadata = (_details$meta4 = details === null || details === void 0 ? void 0 : details.meta) !== null && _details$meta4 !== void 0 ? _details$meta4 : getForbiddenJsonLd().meta;
373
+ if (forbiddenViewProps.preview) {
374
+ return /*#__PURE__*/React.createElement(EmbedCardResolvedView, _extends({}, forbiddenViewProps, {
375
+ title: forbiddenViewProps.link,
376
+ frameStyle: frameStyle,
377
+ isSelected: isSelected,
378
+ inheritDimensions: inheritDimensions,
379
+ onClick: handleFrameClick,
380
+ ref: iframeRef,
381
+ extensionKey: extensionKey
382
+ }));
383
+ }
384
+ const forbiddenAccessContext = extractRequestAccessContextImproved({
385
+ jsonLd: cardMetadata,
386
+ url,
387
+ product: (_forbiddenViewProps$c3 = (_forbiddenViewProps$c4 = forbiddenViewProps.context) === null || _forbiddenViewProps$c4 === void 0 ? void 0 : _forbiddenViewProps$c4.text) !== null && _forbiddenViewProps$c3 !== void 0 ? _forbiddenViewProps$c3 : '',
388
+ createAnalyticsEvent
389
+ });
390
+ return /*#__PURE__*/React.createElement(ForbiddenView, {
391
+ context: forbiddenViewProps.context,
392
+ frameStyle: frameStyle,
393
+ inheritDimensions: inheritDimensions,
394
+ isSelected: isSelected,
395
+ onAuthorize: handleAuthorize,
396
+ onClick: handleFrameClick,
397
+ accessContext: forbiddenAccessContext,
398
+ url: forbiddenViewProps.link
399
+ });
400
+ case 'not_found':
401
+ if (onError) {
402
+ onError({
403
+ url,
404
+ status
405
+ });
406
+ }
407
+ const notFoundViewProps = extractEmbedProps(details, platform);
408
+ const notFoundAccessContext = details !== null && details !== void 0 && details.meta ? extractRequestAccessContextImproved({
409
+ jsonLd: details === null || details === void 0 ? void 0 : details.meta,
410
+ url,
411
+ product: (_notFoundViewProps$co3 = (_notFoundViewProps$co4 = notFoundViewProps.context) === null || _notFoundViewProps$co4 === void 0 ? void 0 : _notFoundViewProps$co4.text) !== null && _notFoundViewProps$co3 !== void 0 ? _notFoundViewProps$co3 : '',
412
+ createAnalyticsEvent
413
+ }) : undefined;
414
+ return /*#__PURE__*/React.createElement(NotFoundView, {
415
+ context: notFoundViewProps.context,
416
+ frameStyle: frameStyle,
417
+ inheritDimensions: inheritDimensions,
418
+ isSelected: isSelected,
419
+ onClick: handleFrameClick,
420
+ accessContext: notFoundAccessContext,
421
+ url: notFoundViewProps.link
422
+ });
423
+ case 'fallback':
424
+ case 'errored':
425
+ default:
426
+ if (onError) {
427
+ onError({
428
+ url,
429
+ status
430
+ });
431
+ }
432
+ return /*#__PURE__*/React.createElement(EmbedCardErroredView, {
433
+ onRetry: handleErrorRetry,
434
+ inheritDimensions: inheritDimensions,
435
+ isSelected: isSelected
436
+ });
437
+ }
230
438
  });
@@ -1,12 +1,14 @@
1
1
  import React from 'react';
2
2
  import LinkGlyph from '@atlaskit/icon/core/migration/link';
3
+ import { componentWithFG } from '@atlaskit/platform-feature-flags-react';
3
4
  import { useThemeObserver } from '@atlaskit/tokens';
4
5
  import { getPreviewUrlWithTheme, isProfileType } from '../../../utils';
5
6
  import { ExpandedFrame } from '../components/ExpandedFrame';
6
- import { Frame } from '../components/Frame';
7
+ import { Frame, FrameUpdated } from '../components/Frame';
7
8
  import { ImageIcon } from '../components/ImageIcon';
8
9
  import { useEmbedResolvePostMessageListener } from '../useEmbedResolvePostMessageListener';
9
- export const EmbedCardResolvedView = /*#__PURE__*/React.forwardRef(({
10
+ const FrameComponent = componentWithFG('rovo_chat_embed_card_dwell_and_hover_metrics', FrameUpdated, Frame);
11
+ const EmbedCardResolvedViewOld = /*#__PURE__*/React.forwardRef(({
10
12
  link,
11
13
  context,
12
14
  onClick,
@@ -75,4 +77,90 @@ export const EmbedCardResolvedView = /*#__PURE__*/React.forwardRef(({
75
77
  title: text,
76
78
  extensionKey: extensionKey
77
79
  }));
78
- });
80
+ });
81
+ const EmbedCardResolvedViewUpdated = /*#__PURE__*/React.forwardRef(({
82
+ link,
83
+ context,
84
+ onClick,
85
+ isSelected,
86
+ frameStyle,
87
+ preview,
88
+ title,
89
+ isTrusted,
90
+ testId = 'embed-card-resolved-view',
91
+ inheritDimensions,
92
+ onIframeDwell,
93
+ onIframeFocus,
94
+ onIframeMouseEnter,
95
+ onIframeMouseLeave,
96
+ isSupportTheming,
97
+ type,
98
+ CompetitorPrompt,
99
+ hideIconLoadingSkeleton,
100
+ extensionKey
101
+ }, embedIframeRef) => {
102
+ const iconFromContext = context === null || context === void 0 ? void 0 : context.icon;
103
+ const src = typeof iconFromContext === 'string' ? iconFromContext : undefined;
104
+ const text = title || (context === null || context === void 0 ? void 0 : context.text);
105
+ const linkGlyph = React.useMemo(() => /*#__PURE__*/React.createElement(LinkGlyph, {
106
+ label: "icon",
107
+ LEGACY_size: "small",
108
+ testId: "embed-card-fallback-icon",
109
+ color: "currentColor"
110
+ }), []);
111
+ let icon = React.useMemo(() => {
112
+ if ( /*#__PURE__*/React.isValidElement(iconFromContext)) {
113
+ return iconFromContext;
114
+ }
115
+ return /*#__PURE__*/React.createElement(ImageIcon, {
116
+ src: src,
117
+ default: linkGlyph,
118
+ appearance: isProfileType(type) ? 'round' : 'square',
119
+ hideLoadingSkeleton: hideIconLoadingSkeleton
120
+ });
121
+ }, [iconFromContext, src, linkGlyph, type, hideIconLoadingSkeleton]);
122
+ useEmbedResolvePostMessageListener({
123
+ url: link,
124
+ embedIframeRef
125
+ });
126
+ const themeState = useThemeObserver();
127
+ let previewUrl = preview === null || preview === void 0 ? void 0 : preview.src;
128
+ if (previewUrl && isSupportTheming) {
129
+ previewUrl = getPreviewUrlWithTheme(previewUrl, themeState);
130
+ }
131
+ const [isMouseOver, setMouseOver] = React.useState(false);
132
+ return /*#__PURE__*/React.createElement(ExpandedFrame, {
133
+ isSelected: isSelected,
134
+ frameStyle: frameStyle,
135
+ href: link,
136
+ testId: testId,
137
+ icon: icon,
138
+ text: text,
139
+ onClick: onClick,
140
+ inheritDimensions: inheritDimensions,
141
+ setOverflow: false,
142
+ CompetitorPrompt: CompetitorPrompt,
143
+ onContentMouseEnter: () => {
144
+ setMouseOver(true);
145
+ onIframeMouseEnter === null || onIframeMouseEnter === void 0 ? void 0 : onIframeMouseEnter();
146
+ },
147
+ onContentMouseLeave: () => {
148
+ setMouseOver(false);
149
+ onIframeMouseLeave === null || onIframeMouseLeave === void 0 ? void 0 : onIframeMouseLeave();
150
+ }
151
+ }, /*#__PURE__*/React.createElement(FrameComponent, {
152
+ url: previewUrl,
153
+ isTrusted: isTrusted,
154
+ testId: testId,
155
+ ref: embedIframeRef,
156
+ onIframeDwell: onIframeDwell,
157
+ onIframeFocus: onIframeFocus,
158
+ onIframeMouseEnter: onIframeMouseEnter,
159
+ onIframeMouseLeave: onIframeMouseLeave,
160
+ isMouseOver: isMouseOver,
161
+ title: text,
162
+ extensionKey: extensionKey
163
+ }));
164
+ });
165
+ const EmbedCardResolvedViewWithFG = componentWithFG('rovo_chat_embed_card_dwell_and_hover_metrics', EmbedCardResolvedViewUpdated, EmbedCardResolvedViewOld);
166
+ export { EmbedCardResolvedViewWithFG as EmbedCardResolvedView };
@@ -1,4 +1,6 @@
1
1
  import React from 'react';
2
+ import { FormattedMessage } from 'react-intl-next';
3
+ import { fg } from '@atlaskit/platform-feature-flags';
2
4
  export const NotFoundSVG = () => /*#__PURE__*/React.createElement("svg", {
3
5
  xmlns: "http://www.w3.org/2000/svg",
4
6
  xmlnsXlink: "http://www.w3.org/1999/xlink",
@@ -36,7 +38,9 @@ export const NotFoundSVG = () => /*#__PURE__*/React.createElement("svg", {
36
38
  offset: "0.69",
37
39
  stopColor: "#fff",
38
40
  stopOpacity: "0.1"
39
- }))), /*#__PURE__*/React.createElement("title", null, "Search error"), /*#__PURE__*/React.createElement("g", {
41
+ }))), /*#__PURE__*/React.createElement("title", null, fg('navx-2825-eslint-translation-fix-linking-platform') ? /*#__PURE__*/React.createElement(FormattedMessage, {
42
+ defaultMessage: "Search error"
43
+ }) : "Search error"), /*#__PURE__*/React.createElement("g", {
40
44
  id: "Layer_2",
41
45
  "data-name": "Layer 2"
42
46
  }, /*#__PURE__*/React.createElement("g", {
@@ -12,7 +12,7 @@ import LinkWarningModal from './LinkWarningModal';
12
12
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
13
13
  const PACKAGE_DATA = {
14
14
  packageName: "@atlaskit/smart-card",
15
- packageVersion: "0.0.0-development",
15
+ packageVersion: "43.12.0",
16
16
  componentName: 'linkUrl'
17
17
  };
18
18
  const Anchor = withLinkClickedEvent('a');
@@ -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: "0.0.0-development"
7
+ packageVersion: "43.12.0"
8
8
  };
9
9
  export var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";