@atlaskit/smart-card 45.5.0 → 45.6.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 (44) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/extractors/flexible/actions/extract-rovo-chat-action.js +3 -1
  3. package/dist/cjs/state/hooks/use-embed-rovo-actions-footer-experiment/index.js +65 -0
  4. package/dist/cjs/utils/analytics/analytics.js +1 -1
  5. package/dist/cjs/view/CardWithUrl/component.js +1 -0
  6. package/dist/cjs/view/CardWithUrl/experiment-meta-event-attributes/index.js +17 -3
  7. package/dist/cjs/view/EmbedCard/components/rovo-actions-footer/index.compiled.css +3 -0
  8. package/dist/cjs/view/EmbedCard/components/rovo-actions-footer/index.js +138 -0
  9. package/dist/cjs/view/EmbedCard/index.js +2 -0
  10. package/dist/cjs/view/EmbedCard/views/ResolvedView.compiled.css +6 -0
  11. package/dist/cjs/view/EmbedCard/views/ResolvedView.js +129 -36
  12. package/dist/cjs/view/LinkUrl/index.js +1 -1
  13. package/dist/cjs/view/common/rovo-post-auth-prompts/index.js +15 -0
  14. package/dist/es2019/extractors/flexible/actions/extract-rovo-chat-action.js +3 -1
  15. package/dist/es2019/state/hooks/use-embed-rovo-actions-footer-experiment/index.js +58 -0
  16. package/dist/es2019/utils/analytics/analytics.js +1 -1
  17. package/dist/es2019/view/CardWithUrl/component.js +1 -0
  18. package/dist/es2019/view/CardWithUrl/experiment-meta-event-attributes/index.js +18 -2
  19. package/dist/es2019/view/EmbedCard/components/rovo-actions-footer/index.compiled.css +3 -0
  20. package/dist/es2019/view/EmbedCard/components/rovo-actions-footer/index.js +100 -0
  21. package/dist/es2019/view/EmbedCard/index.js +2 -0
  22. package/dist/es2019/view/EmbedCard/views/ResolvedView.compiled.css +6 -0
  23. package/dist/es2019/view/EmbedCard/views/ResolvedView.js +94 -13
  24. package/dist/es2019/view/LinkUrl/index.js +1 -1
  25. package/dist/es2019/view/common/rovo-post-auth-prompts/index.js +10 -0
  26. package/dist/esm/extractors/flexible/actions/extract-rovo-chat-action.js +3 -1
  27. package/dist/esm/state/hooks/use-embed-rovo-actions-footer-experiment/index.js +58 -0
  28. package/dist/esm/utils/analytics/analytics.js +1 -1
  29. package/dist/esm/view/CardWithUrl/component.js +1 -0
  30. package/dist/esm/view/CardWithUrl/experiment-meta-event-attributes/index.js +17 -3
  31. package/dist/esm/view/EmbedCard/components/rovo-actions-footer/index.compiled.css +3 -0
  32. package/dist/esm/view/EmbedCard/components/rovo-actions-footer/index.js +129 -0
  33. package/dist/esm/view/EmbedCard/index.js +2 -0
  34. package/dist/esm/view/EmbedCard/views/ResolvedView.compiled.css +6 -0
  35. package/dist/esm/view/EmbedCard/views/ResolvedView.js +125 -36
  36. package/dist/esm/view/LinkUrl/index.js +1 -1
  37. package/dist/esm/view/common/rovo-post-auth-prompts/index.js +9 -0
  38. package/dist/types/extractors/flexible/actions/extract-rovo-chat-action.d.ts +2 -1
  39. package/dist/types/state/hooks/use-embed-rovo-actions-footer-experiment/index.d.ts +23 -0
  40. package/dist/types/view/CardWithUrl/experiment-meta-event-attributes/index.d.ts +5 -2
  41. package/dist/types/view/EmbedCard/components/rovo-actions-footer/index.d.ts +14 -0
  42. package/dist/types/view/EmbedCard/views/ResolvedView.d.ts +8 -0
  43. package/dist/types/view/common/rovo-post-auth-prompts/index.d.ts +5 -0
  44. package/package.json +9 -2
@@ -1,37 +1,118 @@
1
+ /* ResolvedView.tsx generated by @compiled/babel-plugin v0.39.1 */
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _extends from "@babel/runtime/helpers/extends";
4
+ import "./ResolvedView.compiled.css";
5
+ import { ax, ix } from "@compiled/react/runtime";
3
6
  import React from 'react';
7
+ import Loadable from 'react-loadable';
4
8
  import LinkGlyph from '@atlaskit/icon/core/link';
5
9
  import { fg } from '@atlaskit/platform-feature-flags';
10
+ import { componentWithFG } from '@atlaskit/platform-feature-flags-react';
6
11
  import { useThemeObserver } from '@atlaskit/tokens';
12
+ import { CardDisplay } from '../../../constants';
13
+ import extractRovoChatAction from '../../../extractors/flexible/actions/extract-rovo-chat-action';
14
+ import { getExtensionKey } from '../../../state/helpers';
15
+ import useEmbedRovoActionsFooterExperiment from '../../../state/hooks/use-embed-rovo-actions-footer-experiment';
16
+ import useRovoConfig from '../../../state/hooks/use-rovo-config';
7
17
  import { getPreviewUrlWithTheme, isProfileType } from '../../../utils';
18
+ import { getRovoPostAuthPromptKeys } from '../../common/rovo-post-auth-prompts';
8
19
  import { ExpandedFrame } from '../components/ExpandedFrame';
9
20
  import { Frame } from '../components/Frame';
10
21
  import { ImageIcon } from '../components/ImageIcon';
11
22
  import { useEmbedResolvePostMessageListener } from '../useEmbedResolvePostMessageListener';
12
- export var EmbedCardResolvedView = /*#__PURE__*/React.forwardRef(function (_ref, embedIframeRef) {
13
- var link = _ref.link,
14
- context = _ref.context,
15
- onClick = _ref.onClick,
16
- onAuxClick = _ref.onAuxClick,
17
- onContextMenu = _ref.onContextMenu,
18
- isSelected = _ref.isSelected,
19
- frameStyle = _ref.frameStyle,
20
- preview = _ref.preview,
21
- title = _ref.title,
22
- isTrusted = _ref.isTrusted,
23
- _ref$testId = _ref.testId,
24
- testId = _ref$testId === void 0 ? 'embed-card-resolved-view' : _ref$testId,
25
- inheritDimensions = _ref.inheritDimensions,
26
- onIframeDwell = _ref.onIframeDwell,
27
- onIframeFocus = _ref.onIframeFocus,
28
- onIframeMouseEnter = _ref.onIframeMouseEnter,
29
- onIframeMouseLeave = _ref.onIframeMouseLeave,
30
- isSupportTheming = _ref.isSupportTheming,
31
- type = _ref.type,
32
- CompetitorPrompt = _ref.CompetitorPrompt,
33
- hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton,
34
- extensionKey = _ref.extensionKey;
23
+ var EmbedRovoActionsFooter = Loadable({
24
+ loader: function loader() {
25
+ return import( /* webpackChunkName: "smart-card-embed-rovo-actions-footer" */'../components/rovo-actions-footer').then(function (module) {
26
+ return module.default;
27
+ });
28
+ },
29
+ loading: function loading() {
30
+ return null;
31
+ }
32
+ });
33
+ EmbedRovoActionsFooter.displayName = 'lazy(EmbedRovoActionsFooter)';
34
+ var styles = {
35
+ contentWithFooter: "_1e0c1txw _2lx21bp4 _4t3i1osq _1tkeidpf",
36
+ frameWithFooter: "_16jlkb7n _1tkeidpf",
37
+ footer: "_1e0c1txw _1bah1y6m"
38
+ };
39
+ var EmbedFrameWithRovoFooter = function EmbedFrameWithRovoFooter(_ref) {
40
+ var actionOptions = _ref.actionOptions,
41
+ details = _ref.details,
42
+ frame = _ref.frame,
43
+ link = _ref.link,
44
+ testId = _ref.testId;
45
+ var _useRovoConfig = useRovoConfig(),
46
+ rovoOptions = _useRovoConfig.rovoOptions,
47
+ product = _useRovoConfig.product;
48
+ var _useEmbedRovoActionsF = useEmbedRovoActionsFooterExperiment(link, actionOptions, rovoOptions, product),
49
+ isEmbedRovoActionsFooterEnabled = _useEmbedRovoActionsF.isEnabled;
50
+ var rovoActionData = React.useMemo(function () {
51
+ return isEmbedRovoActionsFooterEnabled && details ? extractRovoChatAction({
52
+ response: details,
53
+ rovoConfig: {
54
+ rovoOptions: rovoOptions,
55
+ product: product
56
+ },
57
+ product: product,
58
+ actionOptions: actionOptions,
59
+ appearance: CardDisplay.Embed,
60
+ isEmbedRovoActionsFooterExperimentEnabled: isEmbedRovoActionsFooterEnabled
61
+ }) : undefined;
62
+ }, [actionOptions, details, isEmbedRovoActionsFooterEnabled, product, rovoOptions]);
63
+ var prompts = React.useMemo(function () {
64
+ if (!isEmbedRovoActionsFooterEnabled) {
65
+ return [];
66
+ }
67
+ return getRovoPostAuthPromptKeys({
68
+ extensionKey: getExtensionKey(details)
69
+ });
70
+ }, [details, isEmbedRovoActionsFooterEnabled]);
71
+ var footer = React.useMemo(function () {
72
+ return rovoActionData && prompts.length > 0 ? /*#__PURE__*/React.createElement(EmbedRovoActionsFooter, {
73
+ actionData: rovoActionData,
74
+ prompts: prompts,
75
+ testId: "".concat(testId, "-rovo-actions-footer")
76
+ }) : undefined;
77
+ }, [prompts, rovoActionData, testId]);
78
+ return footer ? /*#__PURE__*/React.createElement("div", {
79
+ className: ax([styles.contentWithFooter])
80
+ }, /*#__PURE__*/React.createElement("div", {
81
+ className: ax([styles.frameWithFooter])
82
+ }, frame), /*#__PURE__*/React.createElement("div", {
83
+ className: ax([styles.footer])
84
+ }, footer)) : frame;
85
+ };
86
+ var EmbedFrameWithoutRovoFooter = function EmbedFrameWithoutRovoFooter(_ref2) {
87
+ var frame = _ref2.frame;
88
+ return frame;
89
+ };
90
+ var EmbedFrameWithOptionalRovoFooter = componentWithFG('platform_sl_3p_auth_rovo_embed_footer_kill_switch', EmbedFrameWithRovoFooter, EmbedFrameWithoutRovoFooter);
91
+ export var EmbedCardResolvedView = /*#__PURE__*/React.forwardRef(function (_ref3, embedIframeRef) {
92
+ var actionOptions = _ref3.actionOptions,
93
+ link = _ref3.link,
94
+ context = _ref3.context,
95
+ details = _ref3.details,
96
+ onClick = _ref3.onClick,
97
+ onAuxClick = _ref3.onAuxClick,
98
+ onContextMenu = _ref3.onContextMenu,
99
+ isSelected = _ref3.isSelected,
100
+ frameStyle = _ref3.frameStyle,
101
+ preview = _ref3.preview,
102
+ title = _ref3.title,
103
+ isTrusted = _ref3.isTrusted,
104
+ _ref3$testId = _ref3.testId,
105
+ testId = _ref3$testId === void 0 ? 'embed-card-resolved-view' : _ref3$testId,
106
+ inheritDimensions = _ref3.inheritDimensions,
107
+ onIframeDwell = _ref3.onIframeDwell,
108
+ onIframeFocus = _ref3.onIframeFocus,
109
+ onIframeMouseEnter = _ref3.onIframeMouseEnter,
110
+ onIframeMouseLeave = _ref3.onIframeMouseLeave,
111
+ isSupportTheming = _ref3.isSupportTheming,
112
+ type = _ref3.type,
113
+ CompetitorPrompt = _ref3.CompetitorPrompt,
114
+ hideIconLoadingSkeleton = _ref3.hideIconLoadingSkeleton,
115
+ extensionKey = _ref3.extensionKey;
35
116
  var iconFromContext = context === null || context === void 0 ? void 0 : context.icon;
36
117
  var iconLabel = context === null || context === void 0 ? void 0 : context.iconLabel;
37
118
  var src = typeof iconFromContext === 'string' ? iconFromContext : undefined;
@@ -70,6 +151,26 @@ export var EmbedCardResolvedView = /*#__PURE__*/React.forwardRef(function (_ref,
70
151
  _React$useState2 = _slicedToArray(_React$useState, 2),
71
152
  isMouseOver = _React$useState2[0],
72
153
  setMouseOver = _React$useState2[1];
154
+ var frame = /*#__PURE__*/React.createElement(Frame, {
155
+ url: previewUrl,
156
+ isTrusted: isTrusted,
157
+ testId: testId,
158
+ ref: embedIframeRef,
159
+ onIframeDwell: onIframeDwell,
160
+ onIframeFocus: onIframeFocus,
161
+ onIframeMouseEnter: onIframeMouseEnter,
162
+ onIframeMouseLeave: onIframeMouseLeave,
163
+ isMouseOver: isMouseOver,
164
+ title: text,
165
+ extensionKey: extensionKey
166
+ });
167
+ var frameWithFooter = /*#__PURE__*/React.createElement(EmbedFrameWithOptionalRovoFooter, {
168
+ actionOptions: actionOptions,
169
+ details: details,
170
+ frame: frame,
171
+ link: link,
172
+ testId: testId
173
+ });
73
174
  return /*#__PURE__*/React.createElement(ExpandedFrame, {
74
175
  isSelected: isSelected,
75
176
  frameStyle: frameStyle,
@@ -91,17 +192,5 @@ export var EmbedCardResolvedView = /*#__PURE__*/React.forwardRef(function (_ref,
91
192
  setMouseOver(false);
92
193
  onIframeMouseLeave === null || onIframeMouseLeave === void 0 || onIframeMouseLeave();
93
194
  }
94
- }, /*#__PURE__*/React.createElement(Frame, {
95
- url: previewUrl,
96
- isTrusted: isTrusted,
97
- testId: testId,
98
- ref: embedIframeRef,
99
- onIframeDwell: onIframeDwell,
100
- onIframeFocus: onIframeFocus,
101
- onIframeMouseEnter: onIframeMouseEnter,
102
- onIframeMouseLeave: onIframeMouseLeave,
103
- isMouseOver: isMouseOver,
104
- title: text,
105
- extensionKey: extensionKey
106
- }));
195
+ }, frameWithFooter);
107
196
  });
@@ -12,7 +12,7 @@ import LinkWarningModal from './LinkWarningModal';
12
12
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
13
13
  var PACKAGE_DATA = {
14
14
  packageName: "@atlaskit/smart-card",
15
- packageVersion: "45.4.3",
15
+ packageVersion: "45.5.0",
16
16
  componentName: 'linkUrl'
17
17
  };
18
18
  var LinkUrl = function LinkUrl(_ref) {
@@ -0,0 +1,9 @@
1
+ import { RovoChatPromptKey } from '../rovo-chat-utils';
2
+ export var getRovoPostAuthPromptKeys = function getRovoPostAuthPromptKeys(_ref) {
3
+ var extensionKey = _ref.extensionKey;
4
+ var defaultPrompts = [RovoChatPromptKey.KEY_HIGHLIGHTS];
5
+ if (extensionKey === 'github-object-provider' || extensionKey === 'gitlab-object-provider') {
6
+ return [RovoChatPromptKey.EXPLAIN_CODE].concat(defaultPrompts);
7
+ }
8
+ return [RovoChatPromptKey.SUMMARIZE_DOCUMENT].concat(defaultPrompts);
9
+ };
@@ -8,9 +8,10 @@ type ExtractInvokeRovoChatActionParam = {
8
8
  actionOptions?: CardActionOptions;
9
9
  appearance?: FlexibleCardProps['appearance'];
10
10
  id?: string;
11
+ isEmbedRovoActionsFooterExperimentEnabled?: boolean;
11
12
  product?: ProductType;
12
13
  response: JsonLd.Response;
13
14
  rovoConfig?: RovoConfig;
14
15
  };
15
- declare const extractRovoChatAction: ({ actionOptions, appearance, id, product, response, rovoConfig, }: ExtractInvokeRovoChatActionParam) => RovoChatActionData | undefined;
16
+ declare const extractRovoChatAction: ({ actionOptions, appearance, id, isEmbedRovoActionsFooterExperimentEnabled, product, response, rovoConfig, }: ExtractInvokeRovoChatActionParam) => RovoChatActionData | undefined;
16
17
  export default extractRovoChatAction;
@@ -0,0 +1,23 @@
1
+ import type { ProductType } from '@atlaskit/linking-common';
2
+ import type { RovoConfig } from '../../../state/hooks/use-rovo-config';
3
+ import type { CardActionOptions } from '../../../view/Card/types';
4
+ export declare const EMBED_ROVO_ACTIONS_FOOTER_EXPERIMENT_KEY = "platform_sl_3p_auth_rovo_embed_footer_exp";
5
+ type EmbedRovoActionsFooterExperimentMetadata = {
6
+ isEligible: boolean;
7
+ isTreatment?: boolean;
8
+ };
9
+ export type EmbedRovoActionsFooterExperimentMeta = {
10
+ [EMBED_ROVO_ACTIONS_FOOTER_EXPERIMENT_KEY]: EmbedRovoActionsFooterExperimentMetadata;
11
+ };
12
+ export interface EmbedRovoActionsFooterExperiment {
13
+ isEnabled: boolean;
14
+ }
15
+ export declare const isEmbedRovoActionsFooterExperimentEnabled: (product?: ProductType) => boolean;
16
+ export declare const getEmbedRovoActionsFooterExperimentMeta: ({ extensionKey, isRovoChatActionOptedIn, isRovoChatEnabled, product, }: {
17
+ extensionKey?: string;
18
+ isRovoChatActionOptedIn: boolean;
19
+ isRovoChatEnabled: boolean;
20
+ product?: ProductType;
21
+ }) => EmbedRovoActionsFooterExperimentMeta | undefined;
22
+ declare const useEmbedRovoActionsFooterExperiment: (url?: string, actionOptions?: CardActionOptions, rovoOptions?: RovoConfig["rovoOptions"], product?: ProductType) => EmbedRovoActionsFooterExperiment;
23
+ export default useEmbedRovoActionsFooterExperiment;
@@ -1,9 +1,12 @@
1
1
  import type { CardAppearance, CardState } from '@atlaskit/linking-common';
2
+ import { type EmbedRovoActionsFooterExperimentMeta } from '../../../state/hooks/use-embed-rovo-actions-footer-experiment';
2
3
  import { type BlockCardSocialProofExperimentMeta, type InlineSocialProofExperimentMeta } from '../../../state/hooks/use-social-proof-experiment';
3
- type ExperimentMetaEventAttributes = Partial<BlockCardSocialProofExperimentMeta & InlineSocialProofExperimentMeta>;
4
+ import type { InternalCardActionOptions } from '../../Card/types';
5
+ type ExperimentMetaEventAttributes = Partial<BlockCardSocialProofExperimentMeta & InlineSocialProofExperimentMeta & EmbedRovoActionsFooterExperimentMeta>;
4
6
  type ExperimentMetaEventAttributesParams = {
7
+ actionOptions?: InternalCardActionOptions;
5
8
  appearance: CardAppearance;
6
9
  state: CardState;
7
10
  };
8
- declare const useExperimentMetaEventAttributes: ({ appearance, state, }: ExperimentMetaEventAttributesParams) => ExperimentMetaEventAttributes | undefined;
11
+ declare const useExperimentMetaEventAttributes: ({ actionOptions, appearance, state, }: ExperimentMetaEventAttributesParams) => ExperimentMetaEventAttributes | undefined;
9
12
  export default useExperimentMetaEventAttributes;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ import React from 'react';
6
+ import type { RovoChatActionData } from '../../../../state/flexible-ui-context/types';
7
+ import { type RovoChatPromptKey } from '../../../common/rovo-chat-utils';
8
+ type EmbedRovoActionsFooterProps = {
9
+ actionData: RovoChatActionData;
10
+ prompts: RovoChatPromptKey[];
11
+ testId?: string;
12
+ };
13
+ declare const EmbedRovoActionsFooter: ({ actionData, prompts, testId, }: EmbedRovoActionsFooterProps) => React.JSX.Element | null;
14
+ export default EmbedRovoActionsFooter;
@@ -1,6 +1,13 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
1
5
  import React from 'react';
6
+ import { type JsonLd } from '@atlaskit/json-ld-types';
7
+ import type { InternalCardActionOptions as CardActionOptions } from '../../Card/types';
2
8
  import { type ContextViewModel, type FrameStyle } from '../types';
3
9
  export interface EmbedCardResolvedViewProps {
10
+ actionOptions?: CardActionOptions;
4
11
  /** Component to prompt for competitor link */
5
12
  CompetitorPrompt?: React.ComponentType<{
6
13
  linkType?: string;
@@ -8,6 +15,7 @@ export interface EmbedCardResolvedViewProps {
8
15
  }>;
9
16
  /** The context view model */
10
17
  context?: ContextViewModel;
18
+ details?: JsonLd.Response;
11
19
  /** The extension key */
12
20
  extensionKey?: string;
13
21
  /** A prop that determines the style of a frame: whether to show it, hide it or only show it when a user hovers over embed */
@@ -0,0 +1,5 @@
1
+ import { RovoChatPromptKey } from '../rovo-chat-utils';
2
+ export type RovoPostAuthPromptKeysOptions = {
3
+ extensionKey?: string;
4
+ };
5
+ export declare const getRovoPostAuthPromptKeys: ({ extensionKey, }: RovoPostAuthPromptKeysOptions) => RovoChatPromptKey[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "45.5.0",
3
+ "version": "45.6.0",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -88,7 +88,7 @@
88
88
  "@atlaskit/textfield": "^9.1.0",
89
89
  "@atlaskit/theme": "^26.1.0",
90
90
  "@atlaskit/tile": "^2.1.0",
91
- "@atlaskit/tmp-editor-statsig": "^114.0.0",
91
+ "@atlaskit/tmp-editor-statsig": "^114.2.0",
92
92
  "@atlaskit/tokens": "^15.1.0",
93
93
  "@atlaskit/tooltip": "^23.1.0",
94
94
  "@atlaskit/ufo": "^1.0.0",
@@ -240,6 +240,13 @@
240
240
  "smart-card-inline-resolved-view-refactor": {
241
241
  "type": "boolean"
242
242
  },
243
+ "platform_sl_3p_auth_rovo_embed_footer_kill_switch": {
244
+ "type": "boolean"
245
+ },
246
+ "platform_sl_3p_auth_rovo_embed_footer_exp": {
247
+ "type": "boolean",
248
+ "referenceOnly": true
249
+ },
243
250
  "dfo-fix-preview-dynamic-style": {
244
251
  "type": "boolean"
245
252
  },