@atlaskit/smart-card 26.2.1 → 26.3.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 (93) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/extractors/block/index.js +5 -4
  3. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +4 -2
  4. package/dist/cjs/messages.js +6 -0
  5. package/dist/cjs/state/actions/index.js +27 -11
  6. package/dist/cjs/state/hooks/use-invoke/index.js +8 -28
  7. package/dist/cjs/state/hooks/use-resolve/index.js +28 -12
  8. package/dist/cjs/utils/analytics/SmartLinkAnalyticsContext.js +47 -0
  9. package/dist/cjs/utils/analytics/analytics.js +13 -1
  10. package/dist/cjs/version.json +1 -1
  11. package/dist/cjs/view/BlockCard/actions/PreviewAction.js +4 -2
  12. package/dist/cjs/view/BlockCard/index.js +3 -1
  13. package/dist/cjs/view/CardWithUrl/component.js +13 -3
  14. package/dist/cjs/view/FlexibleCard/components/actions/action/preview-action/index.js +7 -1
  15. package/dist/cjs/view/FlexibleCard/components/actions/utils.js +1 -1
  16. package/dist/cjs/view/FlexibleCard/components/common/lozenge-action/index.js +38 -30
  17. package/dist/cjs/view/FlexibleCard/components/common/lozenge-action/lozenge-action-analytics.js +31 -0
  18. package/dist/cjs/view/FlexibleCard/components/common/lozenge-action/lozenge-action-error/styled.js +1 -1
  19. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +21 -2
  20. package/dist/cjs/view/HoverCard/components/views/resolved/index.js +26 -3
  21. package/dist/es2019/extractors/block/index.js +5 -4
  22. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +4 -2
  23. package/dist/es2019/messages.js +6 -0
  24. package/dist/es2019/state/actions/index.js +32 -12
  25. package/dist/es2019/state/hooks/use-invoke/index.js +4 -23
  26. package/dist/es2019/state/hooks/use-resolve/index.js +28 -12
  27. package/dist/es2019/utils/analytics/SmartLinkAnalyticsContext.js +35 -0
  28. package/dist/es2019/utils/analytics/analytics.js +10 -0
  29. package/dist/es2019/version.json +1 -1
  30. package/dist/es2019/view/BlockCard/actions/PreviewAction.js +17 -13
  31. package/dist/es2019/view/BlockCard/index.js +3 -1
  32. package/dist/es2019/view/CardWithUrl/component.js +9 -2
  33. package/dist/es2019/view/FlexibleCard/components/actions/action/preview-action/index.js +7 -1
  34. package/dist/es2019/view/FlexibleCard/components/actions/utils.js +1 -1
  35. package/dist/es2019/view/FlexibleCard/components/common/lozenge-action/index.js +14 -6
  36. package/dist/es2019/view/FlexibleCard/components/common/lozenge-action/lozenge-action-analytics.js +21 -0
  37. package/dist/es2019/view/FlexibleCard/components/common/lozenge-action/lozenge-action-error/styled.js +1 -0
  38. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +21 -2
  39. package/dist/es2019/view/HoverCard/components/views/resolved/index.js +36 -11
  40. package/dist/esm/extractors/block/index.js +5 -4
  41. package/dist/esm/extractors/common/actions/extractPreviewAction.js +4 -2
  42. package/dist/esm/messages.js +6 -0
  43. package/dist/esm/state/actions/index.js +27 -11
  44. package/dist/esm/state/hooks/use-invoke/index.js +8 -28
  45. package/dist/esm/state/hooks/use-resolve/index.js +28 -12
  46. package/dist/esm/utils/analytics/SmartLinkAnalyticsContext.js +36 -0
  47. package/dist/esm/utils/analytics/analytics.js +10 -0
  48. package/dist/esm/version.json +1 -1
  49. package/dist/esm/view/BlockCard/actions/PreviewAction.js +4 -2
  50. package/dist/esm/view/BlockCard/index.js +3 -1
  51. package/dist/esm/view/CardWithUrl/component.js +11 -2
  52. package/dist/esm/view/FlexibleCard/components/actions/action/preview-action/index.js +7 -1
  53. package/dist/esm/view/FlexibleCard/components/actions/utils.js +1 -1
  54. package/dist/esm/view/FlexibleCard/components/common/lozenge-action/index.js +38 -30
  55. package/dist/esm/view/FlexibleCard/components/common/lozenge-action/lozenge-action-analytics.js +21 -0
  56. package/dist/esm/view/FlexibleCard/components/common/lozenge-action/lozenge-action-error/styled.js +1 -1
  57. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +21 -2
  58. package/dist/esm/view/HoverCard/components/views/resolved/index.js +26 -3
  59. package/dist/types/extractors/block/index.d.ts +2 -2
  60. package/dist/types/extractors/block/types.d.ts +1 -0
  61. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +1 -1
  62. package/dist/types/messages.d.ts +1 -1
  63. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +6 -3
  64. package/dist/types/state/flexible-ui-context/index.d.ts +10 -6
  65. package/dist/types/state/hooks/use-invoke/index.d.ts +1 -7
  66. package/dist/types/state/hooks/useSmartLink.d.ts +5 -3
  67. package/dist/types/utils/analytics/SmartLinkAnalyticsContext.d.ts +9 -0
  68. package/dist/types/utils/analytics/analytics.d.ts +11 -3
  69. package/dist/types/utils/mocks.d.ts +5 -3
  70. package/dist/types/view/BlockCard/actions/PreviewAction.d.ts +2 -1
  71. package/dist/types/view/BlockCard/views/ResolvedView.d.ts +2 -0
  72. package/dist/types/view/CardWithUrl/component.d.ts +1 -1
  73. package/dist/types/view/FlexibleCard/components/common/lozenge-action/lozenge-action-analytics.d.ts +21 -0
  74. package/dist/types/view/HoverCard/components/views/resolved/index.d.ts +1 -1
  75. package/dist/types-ts4.5/extractors/block/index.d.ts +2 -2
  76. package/dist/types-ts4.5/extractors/block/types.d.ts +1 -0
  77. package/dist/types-ts4.5/extractors/common/actions/extractPreviewAction.d.ts +1 -1
  78. package/dist/types-ts4.5/messages.d.ts +1 -1
  79. package/dist/types-ts4.5/state/analytics/useSmartLinkAnalytics.d.ts +6 -3
  80. package/dist/types-ts4.5/state/flexible-ui-context/index.d.ts +10 -6
  81. package/dist/types-ts4.5/state/hooks/use-invoke/index.d.ts +1 -7
  82. package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +5 -3
  83. package/dist/types-ts4.5/utils/analytics/SmartLinkAnalyticsContext.d.ts +9 -0
  84. package/dist/types-ts4.5/utils/analytics/analytics.d.ts +11 -3
  85. package/dist/types-ts4.5/utils/mocks.d.ts +5 -3
  86. package/dist/types-ts4.5/view/BlockCard/actions/PreviewAction.d.ts +2 -1
  87. package/dist/types-ts4.5/view/BlockCard/views/ResolvedView.d.ts +2 -0
  88. package/dist/types-ts4.5/view/CardWithUrl/component.d.ts +1 -1
  89. package/dist/types-ts4.5/view/FlexibleCard/components/common/lozenge-action/lozenge-action-analytics.d.ts +21 -0
  90. package/dist/types-ts4.5/view/HoverCard/components/views/resolved/index.d.ts +1 -1
  91. package/package.json +11 -3
  92. package/report.api.md +21 -3
  93. package/tmp/api-report-tmp.d.ts +21 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 26.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`8406b471923`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8406b471923) - [ux] Update analytics tracking events for lozenge action
8
+
9
+ ## 26.2.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`374da8b159a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/374da8b159a) - Include additional attributes (urlHash, display, id) and resolved attributes for link clicked analytics events (Originally introduced in 25.8.0, reverted in 25.9.1 due to regression)
14
+ - [`c6d962997a7`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c6d962997a7) - [ux] Changed the text of the button from 'Full screen view' to 'Open preview' and also changed the color of a button in the hover cards
15
+ - Updated dependencies
16
+
3
17
  ## 26.2.1
4
18
 
5
19
  ### Patch Changes
@@ -35,7 +35,7 @@ var extractBlockDetails = function extractBlockDetails(jsonLd) {
35
35
  return !!detail;
36
36
  });
37
37
  };
38
- var extractBlockActions = function extractBlockActions(props, jsonLd, opts, platform, meta) {
38
+ var extractBlockActions = function extractBlockActions(props, jsonLd, opts, platform, meta, enableImprovedPreviewAction) {
39
39
  if (opts) {
40
40
  var handleInvoke = opts.handleInvoke;
41
41
  var actions = (0, _extractActions.extractActions)(jsonLd, handleInvoke);
@@ -43,7 +43,8 @@ var extractBlockActions = function extractBlockActions(props, jsonLd, opts, plat
43
43
  viewProps: props,
44
44
  jsonLd: jsonLd,
45
45
  platform: platform,
46
- meta: meta
46
+ meta: meta,
47
+ enableImprovedPreviewAction: enableImprovedPreviewAction
47
48
  }));
48
49
 
49
50
  // The previewAction should always be the last action
@@ -76,7 +77,7 @@ var extractBlockUsers = function extractBlockUsers(jsonLd) {
76
77
  }
77
78
  };
78
79
  exports.extractBlockUsers = extractBlockUsers;
79
- var extractBlockProps = function extractBlockProps(jsonLd, meta, opts, renderers, platform) {
80
+ var extractBlockProps = function extractBlockProps(jsonLd, meta, opts, renderers, platform, enableImprovedPreviewAction) {
80
81
  var props = {
81
82
  link: (0, _extractors.extractLink)(jsonLd),
82
83
  title: (0, _extractors.extractTitle)(jsonLd),
@@ -92,7 +93,7 @@ var extractBlockProps = function extractBlockProps(jsonLd, meta, opts, renderers
92
93
  isTrusted: (0, _extractIsTrusted.extractIsTrusted)(meta)
93
94
  };
94
95
  return _objectSpread(_objectSpread({}, props), {}, {
95
- actions: extractBlockActions(props, jsonLd, opts, platform, meta)
96
+ actions: extractBlockActions(props, jsonLd, opts, platform, meta, enableImprovedPreviewAction)
96
97
  });
97
98
  };
98
99
  exports.extractBlockProps = extractBlockProps;
@@ -64,7 +64,8 @@ var extractPreviewAction = function extractPreviewAction(_ref) {
64
64
  _ref$source = _ref.source,
65
65
  source = _ref$source === void 0 ? 'block' : _ref$source,
66
66
  analytics = _ref.analytics,
67
- meta = _ref.meta;
67
+ meta = _ref.meta,
68
+ enableImprovedPreviewAction = _ref.enableImprovedPreviewAction;
68
69
  // Extract metadata from view props & raw JSON-LD.
69
70
  var metadataFromJsonLd = getMetadataFromJsonLd(jsonLd, platform);
70
71
  var metadataFromViewProps = getMetadataFromResolvedProps(viewProps);
@@ -83,7 +84,8 @@ var extractPreviewAction = function extractPreviewAction(_ref) {
83
84
  onViewActionClick: function onViewActionClick() {
84
85
  handleInvoke(getInvokeOpts(key, 'ViewAction'));
85
86
  },
86
- isSupportTheming: (0, _extractIsSupportTheming.extractIsSupportTheming)(meta)
87
+ isSupportTheming: (0, _extractIsSupportTheming.extractIsSupportTheming)(meta),
88
+ enableImprovedPreviewAction: enableImprovedPreviewAction
87
89
  }));
88
90
  // Setup props to go through proper Redux 'invocation' flow
89
91
  // for analytics, further state management if required in future.
@@ -221,6 +221,12 @@ var messages = (0, _reactIntlNext.defineMessages)({
221
221
  defaultMessage: 'Owned by {context}',
222
222
  description: 'Indicates the person or entity that owns or maintains the resource.'
223
223
  },
224
+ // Move this to preview once FF has been merged
225
+ preview_improved: {
226
+ id: 'fabric.linking.preview_improved',
227
+ defaultMessage: 'Open preview',
228
+ description: 'Click to view a richer view of your content, without needing to navigate to it.'
229
+ },
224
230
  preview: {
225
231
  id: 'fabric.linking.preview',
226
232
  defaultMessage: 'Full screen view',
@@ -25,13 +25,20 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
25
25
  connections = _useSmartLinkContext.connections;
26
26
  var getState = store.getState,
27
27
  dispatch = store.dispatch;
28
- var _ref = getState()[url] || {
29
- status: _constants.SmartLinkStatus.Pending,
30
- details: undefined
31
- },
32
- details = _ref.details,
33
- status = _ref.status,
34
- metadataStatus = _ref.metadataStatus;
28
+ var getSmartLinkState = (0, _react.useCallback)(function () {
29
+ var _getState$url;
30
+ var _ref = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : {
31
+ status: _constants.SmartLinkStatus.Pending
32
+ },
33
+ details = _ref.details,
34
+ status = _ref.status,
35
+ metadataStatus = _ref.metadataStatus;
36
+ return {
37
+ details: details,
38
+ status: status,
39
+ metadataStatus: metadataStatus
40
+ };
41
+ }, [getState, url]);
35
42
  var setMetadataStatus = (0, _react.useCallback)(function (metadataStatus) {
36
43
  dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_UPDATE_METADATA_STATUS, {
37
44
  url: url
@@ -56,6 +63,8 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
56
63
  }, _callee);
57
64
  })), [id, resolveUrl, url]);
58
65
  var register = (0, _react.useCallback)(function () {
66
+ var _getSmartLinkState = getSmartLinkState(),
67
+ details = _getSmartLinkState.details;
59
68
  if (!details) {
60
69
  dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RESOLVING, {
61
70
  url: url
@@ -63,8 +72,10 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
63
72
  setMetadataStatus('pending');
64
73
  }
65
74
  return resolve();
66
- }, [details, resolve, dispatch, url, setMetadataStatus]);
75
+ }, [getSmartLinkState, resolve, dispatch, url, setMetadataStatus]);
67
76
  var reload = (0, _react.useCallback)(function () {
77
+ var _getSmartLinkState2 = getSmartLinkState(),
78
+ details = _getSmartLinkState2.details;
68
79
  var definitionId = (0, _helpers.getDefinitionId)(details);
69
80
  if (definitionId) {
70
81
  (0, _helpers.getByDefinitionId)(definitionId, getState()).map(function (url) {
@@ -73,15 +84,20 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
73
84
  } else {
74
85
  resolve(url, true);
75
86
  }
76
- }, [details, url, getState, resolve]);
87
+ }, [getSmartLinkState, url, getState, resolve]);
77
88
  var loadMetadata = (0, _react.useCallback)(function () {
89
+ var _getSmartLinkState3 = getSmartLinkState(),
90
+ metadataStatus = _getSmartLinkState3.metadataStatus;
78
91
  //metadataStatus will be undefined for SSR links only
79
92
  if (metadataStatus === undefined) {
80
93
  setMetadataStatus('pending');
81
94
  return resolve(url, false, true);
82
95
  }
83
- }, [metadataStatus, resolve, setMetadataStatus, url]);
96
+ }, [getSmartLinkState, resolve, setMetadataStatus, url]);
84
97
  var authorize = (0, _react.useCallback)(function (appearance) {
98
+ var _getSmartLinkState4 = getSmartLinkState(),
99
+ details = _getSmartLinkState4.details,
100
+ status = _getSmartLinkState4.status;
85
101
  var definitionId = (0, _helpers.getDefinitionId)(details);
86
102
  var extensionKey = (0, _helpers.getExtensionKey)(details);
87
103
  var services = (0, _helpers.getServices)(details);
@@ -133,7 +149,7 @@ var useSmartCardActions = function useSmartCardActions(id, url, analytics) {
133
149
  reload();
134
150
  });
135
151
  }
136
- }, [analytics.ui, analytics.screen, analytics.track, analytics.operational, id, reload, details, status]);
152
+ }, [getSmartLinkState, analytics.ui, analytics.screen, analytics.track, analytics.operational, id, reload]);
137
153
  var invoke = (0, _react.useCallback)( /*#__PURE__*/function () {
138
154
  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(opts, appearance) {
139
155
  var key, action, source, markName, response;
@@ -11,50 +11,30 @@ var _react = require("react");
11
11
  var _linkClientExtension = require("@atlaskit/link-client-extension");
12
12
  var _linkProvider = require("@atlaskit/link-provider");
13
13
  var useInvoke = function useInvoke() {
14
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
15
- failed = _ref.failed,
16
- started = _ref.started,
17
- success = _ref.success;
18
14
  var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
19
15
  connections = _useSmartLinkContext.connections;
20
16
  var clientExt = (0, _linkClientExtension.useSmartLinkClientExtension)(connections.client);
21
17
  return (0, _react.useCallback)( /*#__PURE__*/function () {
22
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(req, cb) {
23
- var _req$action;
24
- var smartLinkActionType, response;
18
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(req, cb) {
19
+ var response;
25
20
  return _regenerator.default.wrap(function _callee$(_context) {
26
21
  while (1) switch (_context.prev = _context.next) {
27
22
  case 0:
28
- smartLinkActionType = req === null || req === void 0 ? void 0 : (_req$action = req.action) === null || _req$action === void 0 ? void 0 : _req$action.actionType;
29
- _context.prev = 1;
30
- started && started({
31
- smartLinkActionType: smartLinkActionType
32
- });
33
- _context.next = 5;
23
+ _context.next = 2;
34
24
  return clientExt.invoke(req);
35
- case 5:
25
+ case 2:
36
26
  response = _context.sent;
37
- success && success({
38
- smartLinkActionType: smartLinkActionType
39
- });
40
27
  return _context.abrupt("return", cb ? cb(response) : response);
41
- case 10:
42
- _context.prev = 10;
43
- _context.t0 = _context["catch"](1);
44
- failed && failed({
45
- smartLinkActionType: smartLinkActionType
46
- });
47
- throw _context.t0;
48
- case 14:
28
+ case 4:
49
29
  case "end":
50
30
  return _context.stop();
51
31
  }
52
- }, _callee, null, [[1, 10]]);
32
+ }, _callee);
53
33
  }));
54
34
  return function (_x, _x2) {
55
- return _ref2.apply(this, arguments);
35
+ return _ref.apply(this, arguments);
56
36
  };
57
- }(), [clientExt, failed, started, success]);
37
+ }(), [clientExt]);
58
38
  };
59
39
  var _default = useInvoke;
60
40
  exports.default = _default;
@@ -8,9 +8,11 @@ exports.default = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _react = require("react");
11
+ var _reactDom = require("react-dom");
11
12
  var _analytics = require("../../analytics");
12
13
  var _helpers = require("../../helpers");
13
14
  var _linkingCommon = require("@atlaskit/linking-common");
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
16
  var _constants = require("../../actions/constants");
15
17
  var _jsonld = require("../../../utils/jsonld");
16
18
  var _constants2 = require("../../../constants");
@@ -80,6 +82,20 @@ var useResolve = function useResolve() {
80
82
  }
81
83
  }
82
84
  }, [getState, setMetadataStatus, dispatch]);
85
+ var handleResolvedLinkSuccess = (0, _react.useCallback)(function (resourceUrl, response, isReloading, isMetadataRequest) {
86
+ //if a link resolves normally, metadata will also always be resolved
87
+ setMetadataStatus(resourceUrl, 'resolved');
88
+ // Dispatch Analytics and resolved card action - including unauthorized states.
89
+ if (isReloading) {
90
+ dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RELOADING, {
91
+ url: resourceUrl
92
+ }, response));
93
+ } else {
94
+ dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RESOLVED, {
95
+ url: resourceUrl
96
+ }, response, undefined, undefined, isMetadataRequest));
97
+ }
98
+ }, [setMetadataStatus, dispatch]);
83
99
  var handleResolvedLinkResponse = (0, _react.useCallback)(function (resourceUrl, response) {
84
100
  var isReloading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
85
101
  var isMetadataRequest = arguments.length > 3 ? arguments[3] : undefined;
@@ -104,20 +120,20 @@ var useResolve = function useResolve() {
104
120
  handleResolvedLinkError(resourceUrl, new _linkingCommon.APIError('error', hostname, _constants.ERROR_MESSAGE_METADATA), response, isMetadataRequest);
105
121
  return;
106
122
  }
107
-
108
- //if a link resolves normally, metadata will also always be resolved
109
- setMetadataStatus(resourceUrl, 'resolved');
110
- // Dispatch Analytics and resolved card action - including unauthorized states.
111
- if (isReloading) {
112
- dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RELOADING, {
113
- url: resourceUrl
114
- }, response));
123
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-analytics-context')) {
124
+ /**
125
+ * Using unstable_batchedUpdates because this store update happens async and trigers a rerender
126
+ * more info:
127
+ * https://github.com/facebook/react/blob/v18.2.0/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L113
128
+ * https://react-redux.js.org/api/batch
129
+ */
130
+ (0, _reactDom.unstable_batchedUpdates)(function () {
131
+ handleResolvedLinkSuccess(resourceUrl, response, isReloading, isMetadataRequest);
132
+ });
115
133
  } else {
116
- dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_RESOLVED, {
117
- url: resourceUrl
118
- }, response, undefined, undefined, isMetadataRequest));
134
+ handleResolvedLinkSuccess(resourceUrl, response, isReloading, isMetadataRequest);
119
135
  }
120
- }, [dispatch, handleResolvedLinkError, hasAuthFlowSupported, setMetadataStatus]);
136
+ }, [handleResolvedLinkError, handleResolvedLinkSuccess, hasAuthFlowSupported]);
121
137
  return (0, _react.useCallback)( /*#__PURE__*/function () {
122
138
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(url) {
123
139
  var isReloading,
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.SmartLinkAnalyticsContext = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _analyticsNext = require("@atlaskit/analytics-next");
12
+ var _resolvedAttributes = require("@atlaskit/link-analytics/resolved-attributes");
13
+ var _flexible = require("../flexible");
14
+ var _constants = require("../../constants");
15
+ var _store = require("../../state/store");
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+ var SmartLinkAnalyticsContext = function SmartLinkAnalyticsContext(_ref) {
21
+ var children = _ref.children,
22
+ url = _ref.url,
23
+ appearance = _ref.appearance,
24
+ id = _ref.id;
25
+ var _useSmartLinkState = (0, _store.useSmartCardState)(url),
26
+ details = _useSmartLinkState.details,
27
+ status = _useSmartLinkState.status;
28
+ var resolvedAttributes = (0, _resolvedAttributes.getResolvedAttributes)({
29
+ url: url
30
+ }, details, status);
31
+ var _getUrlAttributes = (0, _resolvedAttributes.getUrlAttributes)(url),
32
+ urlHash = _getUrlAttributes.urlHash;
33
+ var isFlexibleUi = (0, _react.useMemo)(function () {
34
+ return (0, _flexible.isFlexibleUiCard)(children);
35
+ }, [children]);
36
+ var display = isFlexibleUi ? _constants.CardDisplay.Flexible : appearance;
37
+ return /*#__PURE__*/_react.default.createElement(_analyticsNext.AnalyticsContext, {
38
+ data: {
39
+ attributes: _objectSpread(_objectSpread({}, resolvedAttributes), {}, {
40
+ urlHash: urlHash,
41
+ display: display,
42
+ id: id
43
+ })
44
+ }
45
+ }, children);
46
+ };
47
+ exports.SmartLinkAnalyticsContext = SmartLinkAnalyticsContext;
@@ -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.unresolvedEvent = exports.uiSmartLinkStatusOpenPreviewButtonClicked = exports.uiSmartLinkStatusLozengeButtonClicked = exports.uiSmartLinkStatusListItemButtonClicked = exports.uiRenderSuccessEvent = exports.uiRenderFailedEvent = exports.uiLearnMoreLinkClickedEvent = exports.uiIframeFocusedEvent = exports.uiIframeDwelledEvent = exports.uiHoverCardViewedEvent = exports.uiHoverCardOpenLinkClickedEvent = exports.uiHoverCardDismissedEvent = exports.uiClosedAuthEvent = exports.uiCardClickedEvent = exports.uiAuthEvent = exports.uiAuthAlternateAccountEvent = exports.uiActionClickedEvent = exports.trackSmartLinkQuickActionSuccess = exports.trackSmartLinkQuickActionStarted = exports.trackSmartLinkQuickActionFailed = exports.trackLinkUpdated = exports.trackAppAccountConnected = exports.trackAppAccountAuthStarted = exports.screenAuthPopupEvent = exports.resolvedEvent = exports.invokeSucceededEvent = exports.invokeFailedEvent = exports.fireSmartLinkEvent = exports.context = exports.connectSucceededEvent = exports.connectFailedEvent = exports.chunkloadFailedEvent = exports.SmartLinkEvents = exports.ANALYTICS_CHANNEL = void 0;
7
+ exports.unresolvedEvent = exports.uiSmartLinkStatusOpenPreviewButtonClicked = exports.uiSmartLinkStatusLozengeButtonClicked = exports.uiSmartLinkStatusListItemButtonClicked = exports.uiRenderSuccessEvent = exports.uiRenderFailedEvent = exports.uiLearnMoreLinkClickedEvent = exports.uiIframeFocusedEvent = exports.uiIframeDwelledEvent = exports.uiHoverCardViewedEvent = exports.uiHoverCardOpenLinkClickedEvent = exports.uiHoverCardDismissedEvent = exports.uiClosedAuthEvent = exports.uiCardClickedEvent = exports.uiAuthEvent = exports.uiAuthAlternateAccountEvent = exports.uiActionClickedEvent = exports.trackSmartLinkQuickActionSuccess = exports.trackSmartLinkQuickActionStarted = exports.trackSmartLinkQuickActionFailed = exports.trackLinkUpdated = exports.trackAppAccountConnected = exports.trackAppAccountAuthStarted = exports.screenAuthPopupEvent = exports.resolvedEvent = exports.invokeSucceededEvent = exports.invokeFailedEvent = exports.fireSmartLinkEvent = exports.context = exports.connectSucceededEvent = exports.connectFailedEvent = exports.chunkloadFailedEvent = exports.TrackQuickActionType = exports.TrackQuickActionFailureReason = exports.SmartLinkEvents = exports.ANALYTICS_CHANNEL = void 0;
8
8
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -25,6 +25,18 @@ var context = {
25
25
  packageVersion: _version.version
26
26
  };
27
27
  exports.context = context;
28
+ var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
29
+ TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
30
+ return TrackQuickActionType;
31
+ }({});
32
+ exports.TrackQuickActionType = TrackQuickActionType;
33
+ var TrackQuickActionFailureReason = /*#__PURE__*/function (TrackQuickActionFailureReason) {
34
+ TrackQuickActionFailureReason["PermissionError"] = "PermissionError";
35
+ TrackQuickActionFailureReason["ValidationError"] = "ValidationError";
36
+ TrackQuickActionFailureReason["UnknownError"] = "UnknownError";
37
+ return TrackQuickActionFailureReason;
38
+ }({});
39
+ exports.TrackQuickActionFailureReason = TrackQuickActionFailureReason;
28
40
  var uiActionSubjectIds = {
29
41
  DownloadAction: 'downloadDocument',
30
42
  PreviewAction: 'invokePreviewScreen',
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "26.2.1",
3
+ "version": "26.3.0",
4
4
  "sideEffects": false
5
5
  }
@@ -17,7 +17,7 @@ var _reactDom = _interopRequireDefault(require("react-dom"));
17
17
  var _reactIntlNext = require("react-intl-next");
18
18
  var _messages = require("../../../messages");
19
19
  var _excluded = ["popupMountPointId", "onClose"],
20
- _excluded2 = ["details"];
20
+ _excluded2 = ["details", "enableImprovedPreviewAction"];
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -82,10 +82,12 @@ function _previewFunction() {
82
82
  }
83
83
  var _default = function _default(_ref2) {
84
84
  var details = _ref2.details,
85
+ enableImprovedPreviewAction = _ref2.enableImprovedPreviewAction,
85
86
  rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
87
+ var previewText = enableImprovedPreviewAction ? _messages.messages.preview_improved : _messages.messages.preview;
86
88
  return {
87
89
  id: 'preview-content',
88
- text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview),
90
+ text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, previewText),
89
91
  promise: function promise(props) {
90
92
  return previewFunction(_objectSpread(_objectSpread({
91
93
  popupMountPointId: 'twp-editor-preview-iframe',
@@ -82,6 +82,7 @@ var _FlexibleForbiddenView = _interopRequireDefault(require("./views/flexible/Fl
82
82
  var _token = require("../../utils/token");
83
83
  var _react = require("@emotion/react");
84
84
  var _handlers = require("./utils/handlers");
85
+ var _linkProvider = require("@atlaskit/link-provider");
85
86
  var _PreviewAction = _interopRequireDefault(require("./actions/PreviewAction"));
86
87
  var _templateObject;
87
88
  /** @jsx jsx */
@@ -117,6 +118,7 @@ var BlockCard = function BlockCard(_ref) {
117
118
  handleInvoke: handleInvoke,
118
119
  extensionKey: extensionKey
119
120
  };
121
+ var enableImprovedPreviewAction = Boolean((0, _linkProvider.useFeatureFlag)('enableImprovedPreviewAction'));
120
122
  if (enableFlexibleBlockCard) {
121
123
  var ui = {
122
124
  hideElevation: true
@@ -199,7 +201,7 @@ var BlockCard = function BlockCard(_ref) {
199
201
  isSelected: isSelected
200
202
  });
201
203
  case 'resolved':
202
- var resolvedViewProps = (0, _block.extractBlockProps)(data, meta, extractorOpts, renderers, platform);
204
+ var resolvedViewProps = (0, _block.extractBlockProps)(data, meta, extractorOpts, renderers, platform, enableImprovedPreviewAction);
203
205
  if (onResolve) {
204
206
  onResolve({
205
207
  title: resolvedViewProps.title,
@@ -5,10 +5,11 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.CardWithUrlContent = CardWithUrlContent;
8
+ exports.CardWithUrlContent = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _analyticsNext = require("@atlaskit/analytics-next");
11
11
  var _linkProvider = require("@atlaskit/link-provider");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
13
  var _utils = require("../../utils");
13
14
  var measure = _interopRequireWildcard(require("../../utils/performance"));
14
15
  var _helpers = require("../../state/helpers");
@@ -20,9 +21,10 @@ var _flexible = require("../../utils/flexible");
20
21
  var _FlexibleCard = _interopRequireDefault(require("../FlexibleCard"));
21
22
  var _constants = require("../../constants");
22
23
  var _click = require("../../utils/analytics/click");
24
+ var _SmartLinkAnalyticsContext = require("../../utils/analytics/SmartLinkAnalyticsContext");
23
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
- function CardWithUrlContent(_ref) {
27
+ function Component(_ref) {
26
28
  var id = _ref.id,
27
29
  url = _ref.url,
28
30
  isSelected = _ref.isSelected,
@@ -268,4 +270,12 @@ function CardWithUrlContent(_ref) {
268
270
  onIframeFocus: onIframeFocus
269
271
  });
270
272
  }
271
- }
273
+ }
274
+ var CardWithUrlContent = function CardWithUrlContent(props) {
275
+ return (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-analytics-context') ? /*#__PURE__*/_react.default.createElement(_SmartLinkAnalyticsContext.SmartLinkAnalyticsContext, {
276
+ url: props.url,
277
+ appearance: props.appearance,
278
+ id: props.id
279
+ }, /*#__PURE__*/_react.default.createElement(Component, props)) : /*#__PURE__*/_react.default.createElement(Component, props);
280
+ };
281
+ exports.CardWithUrlContent = CardWithUrlContent;
@@ -12,6 +12,9 @@ var _index = _interopRequireDefault(require("../index"));
12
12
  var _flexibleUiContext = require("../../../../../../state/flexible-ui-context");
13
13
  var _state = require("../../../../../../state");
14
14
  var _utils = require("../../../../../EmbedModal/utils");
15
+ var _reactIntlNext = require("react-intl-next");
16
+ var _messages = require("../../../../../../messages");
17
+ var _linkProvider = require("@atlaskit/link-provider");
15
18
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
19
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
20
  var PreviewAction = function PreviewAction(props) {
@@ -28,6 +31,8 @@ var PreviewAction = function PreviewAction(props) {
28
31
  isSupportTheming = props.isSupportTheming;
29
32
  var defaultAnalytics = (0, _state.useSmartLinkAnalytics)(url, function () {});
30
33
  var analytics = (0, _flexibleUiContext.useFlexibleUiAnalyticsContext)() || defaultAnalytics;
34
+ var enableImprovedPreviewAction = Boolean((0, _linkProvider.useFeatureFlag)('enableImprovedPreviewAction'));
35
+ var previewText = enableImprovedPreviewAction ? _messages.messages.preview_improved : _messages.messages.preview;
31
36
  if (src && url) {
32
37
  var embedModal = function embedModal() {
33
38
  return (0, _utils.openPreviewModal)({
@@ -46,7 +51,8 @@ var PreviewAction = function PreviewAction(props) {
46
51
  if (_onClick) {
47
52
  _onClick();
48
53
  }
49
- }
54
+ },
55
+ content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, previewText)
50
56
  });
51
57
  return /*#__PURE__*/_react.default.createElement(_index.default, (0, _extends2.default)({}, action, {
52
58
  appearance: appearance,
@@ -57,7 +57,7 @@ var actionMappings = (_actionMappings = {}, (0, _defineProperty2.default)(_actio
57
57
  testId: 'smart-action-preview-action',
58
58
  content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview),
59
59
  icon: /*#__PURE__*/_react.default.createElement(_vidFullScreenOn.default, {
60
- label: "Full screen view"
60
+ label: "Open preview"
61
61
  }),
62
62
  tooltipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.preview)
63
63
  }