@atlaskit/smart-card 43.11.2 → 43.12.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 (60) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/analytics.spec.yaml +7 -1
  3. package/dist/cjs/state/actions/index.js +1 -4
  4. package/dist/cjs/state/hooks/use-resolve/index.js +3 -13
  5. package/dist/cjs/state/hooks/use-response/index.js +0 -2
  6. package/dist/cjs/utils/analytics/analytics.js +1 -1
  7. package/dist/cjs/utils/analytics/click.js +0 -1
  8. package/dist/cjs/view/CardWithUrl/component.js +327 -3
  9. package/dist/cjs/view/EmbedCard/components/ExpandedFrame.js +93 -2
  10. package/dist/cjs/view/EmbedCard/components/Frame.js +121 -3
  11. package/dist/cjs/view/EmbedCard/components/IframeDwellTracker.js +25 -4
  12. package/dist/cjs/view/EmbedCard/index.js +204 -1
  13. package/dist/cjs/view/EmbedCard/views/ResolvedView.js +95 -2
  14. package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +0 -1
  15. package/dist/cjs/view/FlexibleCard/components/actions/automation-action/automation-manual-triggers/manual-triggers-container/manual-triggers-form/boolean-prompt/main.js +9 -13
  16. package/dist/cjs/view/LinkUrl/Hyperlink/index.js +0 -1
  17. package/dist/cjs/view/LinkUrl/index.js +1 -3
  18. package/dist/es2019/state/actions/index.js +1 -4
  19. package/dist/es2019/state/hooks/use-resolve/index.js +1 -10
  20. package/dist/es2019/state/hooks/use-response/index.js +0 -2
  21. package/dist/es2019/utils/analytics/analytics.js +1 -1
  22. package/dist/es2019/utils/analytics/click.js +0 -1
  23. package/dist/es2019/view/CardWithUrl/component.js +324 -2
  24. package/dist/es2019/view/EmbedCard/components/ExpandedFrame.js +87 -2
  25. package/dist/es2019/view/EmbedCard/components/Frame.js +112 -2
  26. package/dist/es2019/view/EmbedCard/components/IframeDwellTracker.js +25 -4
  27. package/dist/es2019/view/EmbedCard/index.js +208 -0
  28. package/dist/es2019/view/EmbedCard/views/ResolvedView.js +91 -3
  29. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +0 -1
  30. package/dist/es2019/view/FlexibleCard/components/actions/automation-action/automation-manual-triggers/manual-triggers-container/manual-triggers-form/boolean-prompt/main.js +8 -12
  31. package/dist/es2019/view/LinkUrl/Hyperlink/index.js +0 -1
  32. package/dist/es2019/view/LinkUrl/index.js +1 -3
  33. package/dist/esm/state/actions/index.js +1 -4
  34. package/dist/esm/state/hooks/use-resolve/index.js +3 -13
  35. package/dist/esm/state/hooks/use-response/index.js +0 -2
  36. package/dist/esm/utils/analytics/analytics.js +1 -1
  37. package/dist/esm/utils/analytics/click.js +0 -1
  38. package/dist/esm/view/CardWithUrl/component.js +326 -2
  39. package/dist/esm/view/EmbedCard/components/ExpandedFrame.js +95 -2
  40. package/dist/esm/view/EmbedCard/components/Frame.js +122 -2
  41. package/dist/esm/view/EmbedCard/components/IframeDwellTracker.js +25 -4
  42. package/dist/esm/view/EmbedCard/index.js +203 -0
  43. package/dist/esm/view/EmbedCard/views/ResolvedView.js +97 -3
  44. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +0 -1
  45. package/dist/esm/view/FlexibleCard/components/actions/automation-action/automation-manual-triggers/manual-triggers-container/manual-triggers-form/boolean-prompt/main.js +9 -13
  46. package/dist/esm/view/LinkUrl/Hyperlink/index.js +0 -1
  47. package/dist/esm/view/LinkUrl/index.js +1 -3
  48. package/dist/types/common/analytics/generated/analytics.types.d.ts +1 -0
  49. package/dist/types/view/EmbedCard/components/ExpandedFrame.d.ts +8 -1
  50. package/dist/types/view/EmbedCard/components/Frame.d.ts +6 -0
  51. package/dist/types/view/EmbedCard/index.d.ts +4 -0
  52. package/dist/types/view/EmbedCard/types.d.ts +4 -0
  53. package/dist/types/view/EmbedCard/views/ResolvedView.d.ts +6 -1
  54. package/dist/types-ts4.5/common/analytics/generated/analytics.types.d.ts +1 -0
  55. package/dist/types-ts4.5/view/EmbedCard/components/ExpandedFrame.d.ts +8 -1
  56. package/dist/types-ts4.5/view/EmbedCard/components/Frame.d.ts +6 -0
  57. package/dist/types-ts4.5/view/EmbedCard/index.d.ts +4 -0
  58. package/dist/types-ts4.5/view/EmbedCard/types.d.ts +4 -0
  59. package/dist/types-ts4.5/view/EmbedCard/views/ResolvedView.d.ts +6 -1
  60. package/package.json +8 -4
@@ -6,7 +6,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.Frame = void 0;
9
+ exports.FrameUpdated = exports.Frame = void 0;
10
10
  require("./Frame.compiled.css");
11
11
  var _runtime = require("@compiled/react/runtime");
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -16,6 +16,7 @@ var _utils = require("../../../utils");
16
16
  var _IFrame = require("./IFrame");
17
17
  var _IframeDwellTracker = require("./IframeDwellTracker");
18
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
+ // eslint-disable-next-line no-unused-vars
19
20
  function mergeRefs(refs) {
20
21
  return function (value) {
21
22
  refs.forEach(function (ref) {
@@ -112,10 +113,127 @@ var Frame = exports.Frame = /*#__PURE__*/_react.default.forwardRef(function (_re
112
113
  "data-testid": "".concat(testId, "-frame"),
113
114
  "data-iframe-loaded": isIframeLoaded,
114
115
  onMouseEnter: function onMouseEnter() {
115
- return setMouseOver(true);
116
+ setMouseOver(true);
116
117
  },
117
118
  onMouseLeave: function onMouseLeave() {
118
- return setMouseOver(false);
119
+ setMouseOver(false);
120
+ },
121
+ allowFullScreen: true,
122
+ scrolling: "yes",
123
+ allow: "autoplay; encrypted-media; clipboard-write",
124
+ onLoad: function onLoad() {
125
+ setIframeLoaded(true);
126
+ },
127
+ sandbox: (0, _utils.getIframeSandboxAttribute)(isTrusted),
128
+ title: title,
129
+ extensionKey: extensionKey,
130
+ className: (0, _runtime.ax)(["_19itidpf _1reo15vq _18m915vq _2rkofajl _154iidpf _1ltvidpf _1bsb1osq _4t3i1osq _kqswh2mm"])
131
+ }));
132
+ });
133
+ var FrameUpdated = exports.FrameUpdated = /*#__PURE__*/_react.default.forwardRef(function (_ref2, iframeRef) {
134
+ var url = _ref2.url,
135
+ _ref2$isTrusted = _ref2.isTrusted,
136
+ isTrusted = _ref2$isTrusted === void 0 ? false : _ref2$isTrusted,
137
+ testId = _ref2.testId,
138
+ onIframeDwell = _ref2.onIframeDwell,
139
+ onIframeFocus = _ref2.onIframeFocus,
140
+ onIframeMouseEnter = _ref2.onIframeMouseEnter,
141
+ onIframeMouseLeave = _ref2.onIframeMouseLeave,
142
+ isMouseOverProp = _ref2.isMouseOver,
143
+ title = _ref2.title,
144
+ extensionKey = _ref2.extensionKey;
145
+ var _useState1 = (0, _react.useState)(false),
146
+ _useState10 = (0, _slicedToArray2.default)(_useState1, 2),
147
+ isIframeLoaded = _useState10[0],
148
+ setIframeLoaded = _useState10[1];
149
+ var _useState11 = (0, _react.useState)(false),
150
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
151
+ isMouseOver = _useState12[0],
152
+ setMouseOver = _useState12[1];
153
+ var _useState13 = (0, _react.useState)(document.hasFocus()),
154
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
155
+ isWindowFocused = _useState14[0],
156
+ setWindowFocused = _useState14[1];
157
+
158
+ // Use prop if provided (from wrapper), otherwise use local state (for backward compatibility)
159
+ var effectiveMouseOver = isMouseOverProp !== undefined ? isMouseOverProp : isMouseOver;
160
+ var ref = (0, _react.useRef)();
161
+ var mergedRef = mergeRefs([iframeRef, ref]);
162
+ var _useState15 = (0, _react.useState)(0),
163
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
164
+ percentVisible = _useState16[0],
165
+ setPercentVisible = _useState16[1];
166
+
167
+ /**
168
+ * These are the 'percent visible' thresholds at which the intersectionObserver will
169
+ * trigger a state change. Eg. when the user scrolls and moves from 74% to 76%, or
170
+ * vice versa. It's in a state object so that its static for the useEffect
171
+ */
172
+ var _useState17 = (0, _react.useState)([0.75, 0.8, 0.85, 0.9, 0.95, 1]),
173
+ _useState18 = (0, _slicedToArray2.default)(_useState17, 1),
174
+ threshold = _useState18[0];
175
+ (0, _react.useEffect)(function () {
176
+ if (!ref || !ref.current) {
177
+ return;
178
+ }
179
+ var observer = new IntersectionObserver(function (entries) {
180
+ entries.forEach(function (entry) {
181
+ setPercentVisible(entry === null || entry === void 0 ? void 0 : entry.intersectionRatio);
182
+ });
183
+ }, {
184
+ threshold: threshold
185
+ });
186
+ observer.observe(ref.current);
187
+ return function () {
188
+ observer.disconnect();
189
+ };
190
+ }, [threshold, mergedRef]);
191
+ (0, _react.useEffect)(function () {
192
+ // Initialize with current focus state
193
+ setWindowFocused(document.hasFocus());
194
+ var onBlur = function onBlur() {
195
+ setWindowFocused(false);
196
+ if (document.activeElement === ref.current) {
197
+ onIframeFocus && onIframeFocus();
198
+ }
199
+ };
200
+ var onFocus = function onFocus() {
201
+ setWindowFocused(true);
202
+ };
203
+ window.addEventListener('blur', onBlur);
204
+ window.addEventListener('focus', onFocus);
205
+ return function () {
206
+ window.removeEventListener('blur', onBlur);
207
+ window.removeEventListener('focus', onFocus);
208
+ };
209
+ }, [ref, onIframeFocus]);
210
+ if (!url) {
211
+ return null;
212
+ }
213
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_IframeDwellTracker.IframeDwellTracker, {
214
+ isIframeLoaded: isIframeLoaded,
215
+ isMouseOver: effectiveMouseOver,
216
+ isWindowFocused: isWindowFocused,
217
+ iframePercentVisible: percentVisible,
218
+ onIframeDwell: onIframeDwell
219
+ }), /*#__PURE__*/_react.default.createElement(_IFrame.IFrame, {
220
+ childRef: mergedRef,
221
+ src: url,
222
+ "data-testid": "".concat(testId, "-frame"),
223
+ "data-iframe-loaded": isIframeLoaded,
224
+ onMouseEnter: function onMouseEnter() {
225
+ onIframeMouseEnter === null || onIframeMouseEnter === void 0 || onIframeMouseEnter();
226
+ // Use local state if prop not provided, otherwise prop takes precedence
227
+ if (isMouseOverProp === undefined) {
228
+ setMouseOver(true);
229
+ }
230
+ },
231
+ onMouseLeave: function onMouseLeave() {
232
+ onIframeMouseLeave === null || onIframeMouseLeave === void 0 || onIframeMouseLeave();
233
+ // Use local state if prop not provided, otherwise prop takes precedence
234
+ if (isMouseOverProp === undefined) {
235
+ setMouseOver(false);
236
+ }
119
237
  },
120
238
  allowFullScreen: true,
121
239
  scrolling: "yes",
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.IframeDwellTracker = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _react = require("react");
10
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
11
  /**
11
12
  * @jsxRuntime classic
12
13
  * @jsx jsx
@@ -52,11 +53,31 @@ var IframeDwellTracker = exports.IframeDwellTracker = function IframeDwellTracke
52
53
  };
53
54
  });
54
55
  };
55
- if (isIframeLoaded && isMouseOver && isWindowFocused && iframePercentVisible > 0.75) {
56
- if (dwellTimeoutId.current) {
57
- clearInterval(dwellTimeoutId.current);
56
+
57
+ // Require: iframe loaded, mouse over, and >75% visible
58
+ var isDwellAndHoverMetricsEnabled = (0, _platformFeatureFlags.fg)('rovo_chat_embed_card_dwell_and_hover_metrics');
59
+ if (isDwellAndHoverMetricsEnabled) {
60
+ // Note: Removed isWindowFocused requirement as it's unreliable and prevents tracking
61
+ // The mouse over check is sufficient to indicate user engagement
62
+ var shouldTrack = isIframeLoaded && isMouseOver && iframePercentVisible > 0.75;
63
+ if (shouldTrack) {
64
+ if (dwellTimeoutId.current) {
65
+ clearInterval(dwellTimeoutId.current);
66
+ }
67
+ dwellTimeoutId.current = setInterval(incrementDwellTime, 1000);
68
+ } else {
69
+ if (dwellTimeoutId.current) {
70
+ clearInterval(dwellTimeoutId.current);
71
+ dwellTimeoutId.current = undefined;
72
+ }
73
+ }
74
+ } else {
75
+ if (isIframeLoaded && isMouseOver && isWindowFocused && iframePercentVisible > 0.75) {
76
+ if (dwellTimeoutId.current) {
77
+ clearInterval(dwellTimeoutId.current);
78
+ }
79
+ dwellTimeoutId.current = setInterval(incrementDwellTime, 1000);
58
80
  }
59
- dwellTimeoutId.current = setInterval(incrementDwellTime, 1000);
60
81
  }
61
82
  return function () {
62
83
  if (dwellTimeoutId.current) {
@@ -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.EmbedCard = void 0;
7
+ exports.EmbedCardUpdated = exports.EmbedCard = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _react = _interopRequireDefault(require("react"));
@@ -232,4 +232,207 @@ var EmbedCard = exports.EmbedCard = /*#__PURE__*/_react.default.forwardRef(funct
232
232
  isSelected: isSelected
233
233
  });
234
234
  }
235
+ });
236
+ var EmbedCardUpdated = exports.EmbedCardUpdated = /*#__PURE__*/_react.default.forwardRef(function (_ref3, iframeRef) {
237
+ var _details$meta4, _forbiddenViewProps$c3, _forbiddenViewProps$c4, _notFoundViewProps$co3, _notFoundViewProps$co4;
238
+ var url = _ref3.url,
239
+ cardState = _ref3.cardState,
240
+ handleAuthorize = _ref3.handleAuthorize,
241
+ handleErrorRetry = _ref3.handleErrorRetry,
242
+ handleFrameClick = _ref3.handleFrameClick,
243
+ isSelected = _ref3.isSelected,
244
+ frameStyle = _ref3.frameStyle,
245
+ platform = _ref3.platform,
246
+ onResolve = _ref3.onResolve,
247
+ onError = _ref3.onError,
248
+ testId = _ref3.testId,
249
+ inheritDimensions = _ref3.inheritDimensions,
250
+ onIframeDwell = _ref3.onIframeDwell,
251
+ onIframeFocus = _ref3.onIframeFocus,
252
+ onIframeMouseEnter = _ref3.onIframeMouseEnter,
253
+ onIframeMouseLeave = _ref3.onIframeMouseLeave,
254
+ iframeUrlType = _ref3.iframeUrlType,
255
+ actionOptions = _ref3.actionOptions,
256
+ renderers = _ref3.renderers,
257
+ CompetitorPrompt = _ref3.CompetitorPrompt,
258
+ hideIconLoadingSkeleton = _ref3.hideIconLoadingSkeleton;
259
+ var _useAnalyticsEvents2 = (0, _analyticsNext.useAnalyticsEvents)(),
260
+ createAnalyticsEvent = _useAnalyticsEvents2.createAnalyticsEvent;
261
+ var status = cardState.status,
262
+ details = cardState.details;
263
+ var extensionKey = (0, _helpers.getExtensionKey)(details);
264
+ var isProductIntegrationSupported = (0, _helpers.hasAuthScopeOverrides)(details);
265
+ var _useControlDataExport3 = (0, _useControlDataExportConfig.useControlDataExportConfig)(),
266
+ _useControlDataExport4 = _useControlDataExport3.shouldControlDataExport,
267
+ shouldControlDataExport = _useControlDataExport4 === void 0 ? false : _useControlDataExport4;
268
+ switch (status) {
269
+ case 'pending':
270
+ case 'resolving':
271
+ return /*#__PURE__*/_react.default.createElement(UFOLoadHoldWrapper, null, /*#__PURE__*/_react.default.createElement(_ResolvedView.default, {
272
+ url: url,
273
+ cardState: cardState,
274
+ onClick: handleFrameClick,
275
+ onError: onError,
276
+ onResolve: onResolve,
277
+ renderers: renderers,
278
+ actionOptions: actionOptions,
279
+ testId: testId ? "".concat(testId, "-resolving-view") : 'embed-card-resolving-view'
280
+ }));
281
+ case 'resolved':
282
+ var resolvedViewProps = (0, _embed.extractEmbedProps)(details, platform, iframeUrlType);
283
+ if (onResolve) {
284
+ var _resolvedViewProps$pr2, _details$meta3;
285
+ onResolve(_objectSpread({
286
+ title: resolvedViewProps.title,
287
+ url: url,
288
+ aspectRatio: (_resolvedViewProps$pr2 = resolvedViewProps.preview) === null || _resolvedViewProps$pr2 === void 0 ? void 0 : _resolvedViewProps$pr2.aspectRatio
289
+ }, (0, _platformFeatureFlags.fg)('expose-product-details-from-smart-card') && {
290
+ extensionKey: details === null || details === void 0 || (_details$meta3 = details.meta) === null || _details$meta3 === void 0 ? void 0 : _details$meta3.key
291
+ }));
292
+ }
293
+ if ((0, _shouldDataExport.getIsDataExportEnabled)(shouldControlDataExport, cardState.details)) {
294
+ var unauthViewProps = (0, _embed.extractEmbedProps)(details, platform);
295
+ return /*#__PURE__*/_react.default.createElement(_unauthorizedView.default, {
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.default.createElement(_ResolvedView3.EmbedCardResolvedView, (0, _extends2.default)({}, 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
+ var resolvedInlineViewProps = (0, _inline.extractInlineProps)(details);
327
+ return /*#__PURE__*/_react.default.createElement(_ResolvedView2.InlineCardResolvedView, (0, _extends2.default)({}, resolvedInlineViewProps, {
328
+ isSelected: isSelected,
329
+ testId: testId,
330
+ onClick: handleFrameClick
331
+ }));
332
+ }
333
+ return /*#__PURE__*/_react.default.createElement(_ResolvedView.default, {
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: url,
348
+ status: status
349
+ });
350
+ }
351
+ var unauthorisedViewProps = (0, _embed.extractEmbedProps)(details, platform);
352
+ return /*#__PURE__*/_react.default.createElement(_unauthorizedView.default, {
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: url,
368
+ status: status
369
+ });
370
+ }
371
+ var forbiddenViewProps = (0, _embed.extractEmbedProps)(details, platform);
372
+ var cardMetadata = (_details$meta4 = details === null || details === void 0 ? void 0 : details.meta) !== null && _details$meta4 !== void 0 ? _details$meta4 : (0, _jsonld.getForbiddenJsonLd)().meta;
373
+ if (forbiddenViewProps.preview) {
374
+ return /*#__PURE__*/_react.default.createElement(_ResolvedView3.EmbedCardResolvedView, (0, _extends2.default)({}, 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
+ var forbiddenAccessContext = (0, _extractAccessContext.extractRequestAccessContextImproved)({
385
+ jsonLd: cardMetadata,
386
+ url: 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: createAnalyticsEvent
389
+ });
390
+ return /*#__PURE__*/_react.default.createElement(_forbiddenView.default, {
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: url,
404
+ status: status
405
+ });
406
+ }
407
+ var notFoundViewProps = (0, _embed.extractEmbedProps)(details, platform);
408
+ var notFoundAccessContext = details !== null && details !== void 0 && details.meta ? (0, _extractAccessContext.extractRequestAccessContextImproved)({
409
+ jsonLd: details === null || details === void 0 ? void 0 : details.meta,
410
+ url: 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: createAnalyticsEvent
413
+ }) : undefined;
414
+ return /*#__PURE__*/_react.default.createElement(_notFoundView.default, {
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: url,
429
+ status: status
430
+ });
431
+ }
432
+ return /*#__PURE__*/_react.default.createElement(_ErroredView.EmbedCardErroredView, {
433
+ onRetry: handleErrorRetry,
434
+ inheritDimensions: inheritDimensions,
435
+ isSelected: isSelected
436
+ });
437
+ }
235
438
  });
@@ -5,15 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.EmbedCardResolvedView = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
9
  var _react = _interopRequireDefault(require("react"));
9
10
  var _link = _interopRequireDefault(require("@atlaskit/icon/core/migration/link"));
11
+ var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react");
10
12
  var _tokens = require("@atlaskit/tokens");
11
13
  var _utils = require("../../../utils");
12
14
  var _ExpandedFrame = require("../components/ExpandedFrame");
13
15
  var _Frame = require("../components/Frame");
14
16
  var _ImageIcon = require("../components/ImageIcon");
15
17
  var _useEmbedResolvePostMessageListener = require("../useEmbedResolvePostMessageListener");
16
- var EmbedCardResolvedView = exports.EmbedCardResolvedView = /*#__PURE__*/_react.default.forwardRef(function (_ref, embedIframeRef) {
18
+ var FrameComponent = (0, _platformFeatureFlagsReact.componentWithFG)('rovo_chat_embed_card_dwell_and_hover_metrics', _Frame.FrameUpdated, _Frame.Frame);
19
+ var EmbedCardResolvedViewOld = /*#__PURE__*/_react.default.forwardRef(function (_ref, embedIframeRef) {
17
20
  var link = _ref.link,
18
21
  context = _ref.context,
19
22
  onClick = _ref.onClick,
@@ -84,4 +87,94 @@ var EmbedCardResolvedView = exports.EmbedCardResolvedView = /*#__PURE__*/_react.
84
87
  title: text,
85
88
  extensionKey: extensionKey
86
89
  }));
87
- });
90
+ });
91
+ var EmbedCardResolvedViewUpdated = /*#__PURE__*/_react.default.forwardRef(function (_ref2, embedIframeRef) {
92
+ var link = _ref2.link,
93
+ context = _ref2.context,
94
+ onClick = _ref2.onClick,
95
+ isSelected = _ref2.isSelected,
96
+ frameStyle = _ref2.frameStyle,
97
+ preview = _ref2.preview,
98
+ title = _ref2.title,
99
+ isTrusted = _ref2.isTrusted,
100
+ _ref2$testId = _ref2.testId,
101
+ testId = _ref2$testId === void 0 ? 'embed-card-resolved-view' : _ref2$testId,
102
+ inheritDimensions = _ref2.inheritDimensions,
103
+ onIframeDwell = _ref2.onIframeDwell,
104
+ onIframeFocus = _ref2.onIframeFocus,
105
+ onIframeMouseEnter = _ref2.onIframeMouseEnter,
106
+ onIframeMouseLeave = _ref2.onIframeMouseLeave,
107
+ isSupportTheming = _ref2.isSupportTheming,
108
+ type = _ref2.type,
109
+ CompetitorPrompt = _ref2.CompetitorPrompt,
110
+ hideIconLoadingSkeleton = _ref2.hideIconLoadingSkeleton,
111
+ extensionKey = _ref2.extensionKey;
112
+ var iconFromContext = context === null || context === void 0 ? void 0 : context.icon;
113
+ var src = typeof iconFromContext === 'string' ? iconFromContext : undefined;
114
+ var text = title || (context === null || context === void 0 ? void 0 : context.text);
115
+ var linkGlyph = _react.default.useMemo(function () {
116
+ return /*#__PURE__*/_react.default.createElement(_link.default, {
117
+ label: "icon",
118
+ LEGACY_size: "small",
119
+ testId: "embed-card-fallback-icon",
120
+ color: "currentColor"
121
+ });
122
+ }, []);
123
+ var icon = _react.default.useMemo(function () {
124
+ if ( /*#__PURE__*/_react.default.isValidElement(iconFromContext)) {
125
+ return iconFromContext;
126
+ }
127
+ return /*#__PURE__*/_react.default.createElement(_ImageIcon.ImageIcon, {
128
+ src: src,
129
+ default: linkGlyph,
130
+ appearance: (0, _utils.isProfileType)(type) ? 'round' : 'square',
131
+ hideLoadingSkeleton: hideIconLoadingSkeleton
132
+ });
133
+ }, [iconFromContext, src, linkGlyph, type, hideIconLoadingSkeleton]);
134
+ (0, _useEmbedResolvePostMessageListener.useEmbedResolvePostMessageListener)({
135
+ url: link,
136
+ embedIframeRef: embedIframeRef
137
+ });
138
+ var themeState = (0, _tokens.useThemeObserver)();
139
+ var previewUrl = preview === null || preview === void 0 ? void 0 : preview.src;
140
+ if (previewUrl && isSupportTheming) {
141
+ previewUrl = (0, _utils.getPreviewUrlWithTheme)(previewUrl, themeState);
142
+ }
143
+ var _React$useState = _react.default.useState(false),
144
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
145
+ isMouseOver = _React$useState2[0],
146
+ setMouseOver = _React$useState2[1];
147
+ return /*#__PURE__*/_react.default.createElement(_ExpandedFrame.ExpandedFrame, {
148
+ isSelected: isSelected,
149
+ frameStyle: frameStyle,
150
+ href: link,
151
+ testId: testId,
152
+ icon: icon,
153
+ text: text,
154
+ onClick: onClick,
155
+ inheritDimensions: inheritDimensions,
156
+ setOverflow: false,
157
+ CompetitorPrompt: CompetitorPrompt,
158
+ onContentMouseEnter: function onContentMouseEnter() {
159
+ setMouseOver(true);
160
+ onIframeMouseEnter === null || onIframeMouseEnter === void 0 || onIframeMouseEnter();
161
+ },
162
+ onContentMouseLeave: function onContentMouseLeave() {
163
+ setMouseOver(false);
164
+ onIframeMouseLeave === null || onIframeMouseLeave === void 0 || onIframeMouseLeave();
165
+ }
166
+ }, /*#__PURE__*/_react.default.createElement(FrameComponent, {
167
+ url: previewUrl,
168
+ isTrusted: isTrusted,
169
+ testId: testId,
170
+ ref: embedIframeRef,
171
+ onIframeDwell: onIframeDwell,
172
+ onIframeFocus: onIframeFocus,
173
+ onIframeMouseEnter: onIframeMouseEnter,
174
+ onIframeMouseLeave: onIframeMouseLeave,
175
+ isMouseOver: isMouseOver,
176
+ title: text,
177
+ extensionKey: extensionKey
178
+ }));
179
+ });
180
+ var EmbedCardResolvedViewWithFG = exports.EmbedCardResolvedView = (0, _platformFeatureFlagsReact.componentWithFG)('rovo_chat_embed_card_dwell_and_hover_metrics', EmbedCardResolvedViewUpdated, EmbedCardResolvedViewOld);
@@ -103,7 +103,6 @@ var Action = function Action(_ref) {
103
103
  href: href,
104
104
  ariaLabel: ariaLabel
105
105
  });
106
- // @ts-ignore - Workaround for help-center local consumption
107
106
  return Wrapper !== undefined ? /*#__PURE__*/_react.default.createElement(Wrapper, null, button) : button;
108
107
  };
109
108
  var _default = exports.default = Action;
@@ -15,18 +15,14 @@ var BooleanInputPrompt = function BooleanInputPrompt(_ref) {
15
15
  var variableName = userInputPrompt.variableName,
16
16
  displayName = userInputPrompt.displayName,
17
17
  defaultValue = userInputPrompt.defaultValue;
18
- return (
19
- /*#__PURE__*/
20
- // @ts-ignore - Workaround for help-center local consumption
21
- _react.default.createElement(_form.CheckboxField, {
22
- name: variableName,
23
- defaultIsChecked: defaultValue || false
24
- }, function (_ref2) {
25
- var fieldProps = _ref2.fieldProps;
26
- return /*#__PURE__*/_react.default.createElement(_checkbox.default, (0, _extends2.default)({}, fieldProps, {
27
- label: displayName
28
- }));
29
- })
30
- );
18
+ return /*#__PURE__*/_react.default.createElement(_form.CheckboxField, {
19
+ name: variableName,
20
+ defaultIsChecked: defaultValue || false
21
+ }, function (_ref2) {
22
+ var fieldProps = _ref2.fieldProps;
23
+ return /*#__PURE__*/_react.default.createElement(_checkbox.default, (0, _extends2.default)({}, fieldProps, {
24
+ label: displayName
25
+ }));
26
+ });
31
27
  };
32
28
  var _default = exports.default = BooleanInputPrompt;
@@ -11,7 +11,6 @@ var _react = _interopRequireDefault(require("react"));
11
11
  var _link = _interopRequireDefault(require("@atlaskit/link"));
12
12
  var _click = require("../../../utils/analytics/click");
13
13
  var _excluded = ["href", "children", "testId", "isLinkComponent"];
14
- // @ts-ignore - Workaround for help-center local consumption
15
14
  var Anchor = (0, _click.withLinkClickedEvent)('a');
16
15
  var LinkComponent = exports.LinkComponent = (0, _click.withLinkClickedEvent)(_link.default);
17
16
  var Hyperlink = function Hyperlink(_ref) {
@@ -22,11 +22,9 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLink
22
22
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
23
23
  var PACKAGE_DATA = {
24
24
  packageName: "@atlaskit/smart-card",
25
- packageVersion: "43.11.1",
25
+ packageVersion: "0.0.0-development",
26
26
  componentName: 'linkUrl'
27
27
  };
28
-
29
- // @ts-ignore - Workaround for help-center local consumption
30
28
  var Anchor = (0, _click.withLinkClickedEvent)('a');
31
29
  var LinkComponent = exports.LinkComponent = (0, _click.withLinkClickedEvent)(_link.default);
32
30
  var LinkUrl = function LinkUrl(_ref) {
@@ -43,10 +43,7 @@ export const useSmartCardActions = (id, url) => {
43
43
  url
44
44
  }, undefined, undefined, metadataStatus));
45
45
  }, [dispatch, url]);
46
- const resolve = useCallback(async (resourceUrl = url, isReloading = false, isMetadataRequest = false) =>
47
- // @ts-ignore - Workaround for help-center local consumption
48
-
49
- resolveUrl(resourceUrl, isReloading, isMetadataRequest, id), [id, resolveUrl, url]);
46
+ const resolve = useCallback(async (resourceUrl = url, isReloading = false, isMetadataRequest = false) => resolveUrl(resourceUrl, isReloading, isMetadataRequest, id), [id, resolveUrl, url]);
50
47
  const register = useCallback(() => {
51
48
  const {
52
49
  details
@@ -29,17 +29,8 @@ const useResolve = () => {
29
29
  };
30
30
  const hasData = !!(details && details.data || isEntityPresent(details));
31
31
  if (isReloading || !hasData || isMetadataRequest) {
32
- return connections.client
33
- // @ts-ignore - Workaround for help-center local consumption
34
- .fetchData(url, isReloading).then(response =>
35
- // @ts-ignore - Workaround for help-center local consumption
36
-
37
- handleResolvedLinkResponse(url, response, isReloading, isMetadataRequest))
38
- // @ts-ignore - Workaround for help-center local consumption
39
- .catch(error => handleResolvedLinkError(url, error, undefined, isMetadataRequest));
32
+ return connections.client.fetchData(url, isReloading).then(response => handleResolvedLinkResponse(url, response, isReloading, isMetadataRequest)).catch(error => handleResolvedLinkError(url, error, undefined, isMetadataRequest));
40
33
  } else {
41
- // @ts-ignore - Workaround for help-center local consumption
42
-
43
34
  addMetadataToExperience('smart-link-rendered', id, {
44
35
  cached: true
45
36
  });
@@ -118,8 +118,6 @@ const useResponse = () => {
118
118
  * https://react-redux.js.org/api/batch
119
119
  */
120
120
  unstable_batchedUpdates(() => {
121
- // @ts-ignore - Workaround for help-center local consumption
122
-
123
121
  handleResolvedLinkSuccess(resourceUrl, response, isReloading, isMetadataRequest);
124
122
  });
125
123
  }, [handleResolvedLinkError, handleResolvedLinkSuccess, hasAuthFlowSupported]);
@@ -2,7 +2,7 @@ export const ANALYTICS_CHANNEL = 'media';
2
2
  export const context = {
3
3
  componentName: 'smart-cards',
4
4
  packageName: "@atlaskit/smart-card",
5
- packageVersion: "43.11.1"
5
+ packageVersion: "0.0.0-development"
6
6
  };
7
7
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
8
8
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -134,7 +134,6 @@ const getDisplayName = WrappedComponent => {
134
134
  if (typeof WrappedComponent === 'string') {
135
135
  return WrappedComponent;
136
136
  }
137
- // @ts-ignore - Workaround for help-center local consumption
138
137
  return WrappedComponent.displayName || WrappedComponent.name || 'Component';
139
138
  };
140
139
  export function withLinkClickedEvent(WrappedComponent) {