@atlaskit/smart-card 15.5.0 → 16.2.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 (117) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/cjs/client/index.js +30 -30
  3. package/dist/cjs/client/utils/environments.js +1 -1
  4. package/dist/cjs/extractors/block/index.js +4 -4
  5. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +4 -3
  6. package/dist/cjs/in-product.js +43 -0
  7. package/dist/cjs/index.js +66 -4
  8. package/dist/cjs/providers/editor/index.js +113 -78
  9. package/dist/cjs/providers/editor/transformer.js +1 -1
  10. package/dist/cjs/state/actions/constants.js +1 -5
  11. package/dist/cjs/state/actions/helpers.js +1 -3
  12. package/dist/cjs/state/actions/index.js +16 -13
  13. package/dist/cjs/state/analytics/index.js +32 -84
  14. package/dist/cjs/state/analytics/ufoExperiences.js +60 -0
  15. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +106 -0
  16. package/dist/cjs/state/context/provider.js +3 -16
  17. package/dist/cjs/state/helpers.js +1 -2
  18. package/dist/cjs/state/hooks/useSmartLink.js +6 -6
  19. package/dist/cjs/state/reducers/index.js +3 -8
  20. package/dist/cjs/utils/analytics/analytics.js +31 -1
  21. package/dist/cjs/version.json +1 -1
  22. package/dist/cjs/view/BlockCard/index.js +3 -2
  23. package/dist/cjs/view/CardWithUrl/component-lazy/LazyFallback.js +6 -2
  24. package/dist/cjs/view/CardWithUrl/component-lazy/index.js +1 -1
  25. package/dist/cjs/view/CardWithUrl/component.js +10 -4
  26. package/dist/cjs/view/CardWithUrl/loader.js +110 -133
  27. package/dist/cjs/view/EmbedCard/{IframelyResizeMessageListener.js → EmbedResizeMessageListener.js} +11 -19
  28. package/dist/cjs/view/SmartLinkEvents/useSmartLinkEvents.js +21 -0
  29. package/dist/es2019/client/index.js +47 -43
  30. package/dist/es2019/client/utils/environments.js +1 -1
  31. package/dist/es2019/extractors/block/index.js +4 -4
  32. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +4 -4
  33. package/dist/es2019/in-product.js +1 -0
  34. package/dist/es2019/index.js +7 -2
  35. package/dist/es2019/providers/editor/index.js +18 -6
  36. package/dist/es2019/providers/editor/transformer.js +1 -1
  37. package/dist/es2019/state/actions/constants.js +0 -2
  38. package/dist/es2019/state/actions/helpers.js +1 -3
  39. package/dist/es2019/state/actions/index.js +12 -11
  40. package/dist/es2019/state/analytics/index.js +2 -40
  41. package/dist/es2019/state/analytics/ufoExperiences.js +40 -0
  42. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +62 -0
  43. package/dist/es2019/state/context/provider.js +2 -8
  44. package/dist/es2019/state/helpers.js +1 -2
  45. package/dist/es2019/state/hooks/useSmartLink.js +4 -5
  46. package/dist/es2019/state/reducers/index.js +3 -8
  47. package/dist/es2019/utils/analytics/analytics.js +16 -0
  48. package/dist/es2019/version.json +1 -1
  49. package/dist/es2019/view/BlockCard/index.js +3 -2
  50. package/dist/es2019/view/CardWithUrl/component-lazy/LazyFallback.js +3 -1
  51. package/dist/es2019/view/CardWithUrl/component-lazy/index.js +1 -1
  52. package/dist/es2019/view/CardWithUrl/component.js +10 -4
  53. package/dist/es2019/view/CardWithUrl/loader.js +87 -89
  54. package/dist/es2019/view/EmbedCard/{IframelyResizeMessageListener.js → EmbedResizeMessageListener.js} +3 -10
  55. package/dist/es2019/view/SmartLinkEvents/useSmartLinkEvents.js +10 -0
  56. package/dist/esm/client/index.js +30 -31
  57. package/dist/esm/client/utils/environments.js +1 -1
  58. package/dist/esm/extractors/block/index.js +4 -4
  59. package/dist/esm/extractors/common/actions/extractPreviewAction.js +4 -3
  60. package/dist/esm/in-product.js +1 -0
  61. package/dist/esm/index.js +7 -2
  62. package/dist/esm/providers/editor/index.js +110 -78
  63. package/dist/esm/providers/editor/transformer.js +1 -1
  64. package/dist/esm/state/actions/constants.js +0 -2
  65. package/dist/esm/state/actions/helpers.js +1 -3
  66. package/dist/esm/state/actions/index.js +15 -13
  67. package/dist/esm/state/analytics/index.js +2 -80
  68. package/dist/esm/state/analytics/ufoExperiences.js +40 -0
  69. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +94 -0
  70. package/dist/esm/state/context/provider.js +3 -15
  71. package/dist/esm/state/helpers.js +1 -2
  72. package/dist/esm/state/hooks/useSmartLink.js +6 -6
  73. package/dist/esm/state/reducers/index.js +3 -8
  74. package/dist/esm/utils/analytics/analytics.js +26 -0
  75. package/dist/esm/version.json +1 -1
  76. package/dist/esm/view/BlockCard/index.js +3 -2
  77. package/dist/esm/view/CardWithUrl/component-lazy/LazyFallback.js +3 -1
  78. package/dist/esm/view/CardWithUrl/component-lazy/index.js +1 -1
  79. package/dist/esm/view/CardWithUrl/component.js +10 -4
  80. package/dist/esm/view/CardWithUrl/loader.js +103 -127
  81. package/dist/esm/view/EmbedCard/{IframelyResizeMessageListener.js → EmbedResizeMessageListener.js} +9 -16
  82. package/dist/esm/view/SmartLinkEvents/useSmartLinkEvents.js +12 -0
  83. package/dist/types/__tests_external__/index.d.ts +6 -0
  84. package/dist/types/__tests_external__/page-objects/BaseCard.d.ts +18 -0
  85. package/dist/types/__tests_external__/page-objects/BlockCard.d.ts +6 -0
  86. package/dist/types/__tests_external__/page-objects/EmbedCard.d.ts +6 -0
  87. package/dist/types/__tests_external__/page-objects/InlineCard.d.ts +6 -0
  88. package/dist/types/__tests_external__/test-cases/card.d.ts +3 -0
  89. package/dist/types/__tests_external__/test-cases/embed.d.ts +3 -0
  90. package/dist/types/__tests_external__/test-cases/inline.d.ts +3 -0
  91. package/dist/types/__tests_external__/test-cases/types.d.ts +5 -0
  92. package/dist/types/client/index.d.ts +1 -0
  93. package/dist/types/extractors/block/index.d.ts +2 -2
  94. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +61 -0
  95. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +1 -1
  96. package/dist/types/in-product.d.ts +1 -0
  97. package/dist/types/index.d.ts +5 -1
  98. package/dist/types/providers/editor/index.d.ts +3 -0
  99. package/dist/types/state/actions/constants.d.ts +0 -2
  100. package/dist/types/state/actions/types.d.ts +0 -2
  101. package/dist/types/state/analytics/index.d.ts +3 -32
  102. package/dist/types/state/analytics/ufoExperiences.d.ts +7 -0
  103. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +30 -0
  104. package/dist/types/state/context/provider.d.ts +1 -1
  105. package/dist/types/state/context/types.d.ts +4 -2
  106. package/dist/types/state/hooks/useSmartLink.d.ts +4 -5
  107. package/dist/types/state/store/types.d.ts +2 -1
  108. package/dist/types/utils/analytics/analytics.d.ts +3 -0
  109. package/dist/types/utils/types.d.ts +1 -1
  110. package/dist/types/view/BlockCard/types.d.ts +2 -1
  111. package/dist/types/view/CardWithUrl/component-lazy/LazyFallback.d.ts +1 -0
  112. package/dist/types/view/CardWithUrl/component-lazy/index.d.ts +1 -1
  113. package/dist/types/view/CardWithUrl/loader.d.ts +1 -15
  114. package/dist/types/view/EmbedCard/{IframelyResizeMessageListener.d.ts → EmbedResizeMessageListener.d.ts} +1 -1
  115. package/dist/types/view/SmartLinkEvents/useSmartLinkEvents.d.ts +2 -0
  116. package/in-product/package.json +7 -0
  117. package/package.json +25 -20
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSmartLinkAnalytics = void 0;
7
+
8
+ var _analytics = require("../../utils/analytics");
9
+
10
+ var _react = require("react");
11
+
12
+ var _ufoExperiences = require("./ufoExperiences");
13
+
14
+ var useSmartLinkAnalytics = function useSmartLinkAnalytics(dispatchAnalytics) {
15
+ var ui = (0, _react.useMemo)(function () {
16
+ return {
17
+ authEvent: function authEvent(display, definitionId, extensionKey) {
18
+ return dispatchAnalytics((0, _analytics.uiAuthEvent)(display, definitionId, extensionKey));
19
+ },
20
+ authAlternateAccountEvent: function authAlternateAccountEvent(display, definitionId, extensionKey) {
21
+ return dispatchAnalytics((0, _analytics.uiAuthAlternateAccountEvent)(display, definitionId, extensionKey));
22
+ },
23
+ cardClickedEvent: function cardClickedEvent(display, definitionId, extensionKey) {
24
+ return dispatchAnalytics((0, _analytics.uiCardClickedEvent)(display, definitionId, extensionKey));
25
+ },
26
+ actionClickedEvent: function actionClickedEvent(providerKey, actionType, display) {
27
+ return dispatchAnalytics((0, _analytics.uiActionClickedEvent)(providerKey, actionType, display));
28
+ },
29
+ closedAuthEvent: function closedAuthEvent(display, definitionId, extensionKey) {
30
+ return dispatchAnalytics((0, _analytics.uiClosedAuthEvent)(display, definitionId, extensionKey));
31
+ },
32
+ renderSuccessEvent: function renderSuccessEvent(display, id, definitionId, extensionKey) {
33
+ (0, _ufoExperiences.succeedUfoExperience)('smart-link-rendered', id, {
34
+ extensionKey: extensionKey,
35
+ display: display
36
+ }); // UFO will disregard this if authentication experience has not yet been started
37
+
38
+ (0, _ufoExperiences.succeedUfoExperience)('smart-link-authenticated', id, {
39
+ display: display
40
+ });
41
+ dispatchAnalytics((0, _analytics.uiRenderSuccessEvent)(display, definitionId, extensionKey));
42
+ }
43
+ };
44
+ }, [dispatchAnalytics]);
45
+ var operational = (0, _react.useMemo)(function () {
46
+ return {
47
+ resolvedEvent: function resolvedEvent(id, definitionId, extensionKey, resourceType) {
48
+ return dispatchAnalytics((0, _analytics.resolvedEvent)(id, definitionId, extensionKey, resourceType));
49
+ },
50
+ unresolvedEvent: function unresolvedEvent(id, status, definitionId, extensionKey, resourceType) {
51
+ return dispatchAnalytics((0, _analytics.unresolvedEvent)(id, status, definitionId, extensionKey, resourceType));
52
+ },
53
+ invokeSucceededEvent: function invokeSucceededEvent(id, providerKey, actionType, display) {
54
+ return dispatchAnalytics((0, _analytics.invokeSucceededEvent)(id, providerKey, actionType, display));
55
+ },
56
+ invokeFailedEvent: function invokeFailedEvent(id, providerKey, actionType, display, reason) {
57
+ return dispatchAnalytics((0, _analytics.invokeFailedEvent)(id, providerKey, actionType, display, reason));
58
+ },
59
+ connectSucceededEvent: function connectSucceededEvent(id, definitionId, extensionKey) {
60
+ (0, _ufoExperiences.startUfoExperience)('smart-link-authenticated', id, {
61
+ extensionKey: extensionKey,
62
+ status: 'success'
63
+ });
64
+ dispatchAnalytics((0, _analytics.connectSucceededEvent)(definitionId, extensionKey));
65
+ },
66
+ connectFailedEvent: function connectFailedEvent(id, definitionId, extensionKey, status) {
67
+ (0, _ufoExperiences.startUfoExperience)('smart-link-authenticated', id, {
68
+ extensionKey: extensionKey,
69
+ status: status
70
+ });
71
+ dispatchAnalytics((0, _analytics.connectFailedEvent)(definitionId, extensionKey, status));
72
+ },
73
+ instrument: function instrument(id, status, definitionId, extensionKey, resourceType, error) {
74
+ var event = (0, _analytics.instrumentEvent)(id, status, definitionId, extensionKey, resourceType, error);
75
+
76
+ if (event) {
77
+ dispatchAnalytics(event);
78
+ }
79
+ }
80
+ };
81
+ }, [dispatchAnalytics]);
82
+ var track = (0, _react.useMemo)(function () {
83
+ return {
84
+ appAccountConnected: function appAccountConnected(definitionId, extensionKey) {
85
+ return dispatchAnalytics((0, _analytics.trackAppAccountConnected)(definitionId, extensionKey));
86
+ }
87
+ };
88
+ }, [dispatchAnalytics]);
89
+ var screen = (0, _react.useMemo)(function () {
90
+ return {
91
+ authPopupEvent: function authPopupEvent(definitionId, extensionKey) {
92
+ return dispatchAnalytics((0, _analytics.screenAuthPopupEvent)(definitionId, extensionKey));
93
+ }
94
+ };
95
+ }, [dispatchAnalytics]);
96
+ return (0, _react.useMemo)(function () {
97
+ return {
98
+ ui: ui,
99
+ operational: operational,
100
+ track: track,
101
+ screen: screen
102
+ };
103
+ }, [ui, operational, track, screen]);
104
+ };
105
+
106
+ exports.useSmartLinkAnalytics = useSmartLinkAnalytics;
@@ -10,8 +10,6 @@ Object.defineProperty(exports, "__esModule", {
10
10
  exports.SmartCardProvider = SmartCardProvider;
11
11
  exports.default = void 0;
12
12
 
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
-
15
13
  var _react = _interopRequireWildcard(require("react"));
16
14
 
17
15
  var _redux = require("redux");
@@ -20,8 +18,6 @@ var _reducers = require("../reducers");
20
18
 
21
19
  var _ = require(".");
22
20
 
23
- var _constants = require("../actions/constants");
24
-
25
21
  var _client = _interopRequireDefault(require("../../client"));
26
22
 
27
23
  var _preview = require("../../extractors/common/preview");
@@ -32,14 +28,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
32
28
 
33
29
  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; }
34
30
 
35
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
36
-
37
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
38
-
39
31
  function SmartCardProvider(_ref) {
40
32
  var storeOptions = _ref.storeOptions,
41
33
  customClient = _ref.client,
42
- customCacheOptions = _ref.cacheOptions,
43
34
  customAuthFlow = _ref.authFlow,
44
35
  children = _ref.children,
45
36
  renderers = _ref.renderers;
@@ -53,10 +44,6 @@ function SmartCardProvider(_ref) {
53
44
  var client = customClient || new _client.default();
54
45
  var store = (0, _redux.createStore)(_reducers.cardReducer, initialState);
55
46
  var authFlow = customAuthFlow || 'oauth2';
56
- var cacheOptions = customCacheOptions || {
57
- maxAge: _constants.MAX_RELOAD_DELAY,
58
- maxLoadingDelay: _constants.MAX_LOADING_DELAY
59
- };
60
47
 
61
48
  var getPreview = function getPreview(url, platform) {
62
49
  var cardState = (0, _helpers.getUrl)(store, url);
@@ -70,14 +57,14 @@ function SmartCardProvider(_ref) {
70
57
  connections: {
71
58
  client: client
72
59
  },
73
- config: _objectSpread(_objectSpread({}, cacheOptions), {}, {
60
+ config: {
74
61
  authFlow: authFlow
75
- }),
62
+ },
76
63
  extractors: {
77
64
  getPreview: getPreview
78
65
  }
79
66
  };
80
- }, [customClient, customCacheOptions, customAuthFlow, storeOptions, renderers]);
67
+ }, [customClient, customAuthFlow, storeOptions, renderers]);
81
68
  return /*#__PURE__*/_react.default.createElement(_.SmartCardContext.Provider, {
82
69
  value: parentContext || providerValue
83
70
  }, children);
@@ -19,8 +19,7 @@ exports.getByDefinitionId = getByDefinitionId;
19
19
 
20
20
  var getUrl = function getUrl(store, url) {
21
21
  return store.getState()[url] || {
22
- status: 'pending',
23
- lastUpdatedAt: Date.now()
22
+ status: 'pending'
24
23
  };
25
24
  };
26
25
 
@@ -28,16 +28,15 @@ function useSmartLink(id, url, dispatchAnalytics) {
28
28
  var config = (0, _config.useSmartLinkConfig)();
29
29
  var renderers = (0, _renderers.useSmartLinkRenderers)(); // NB: used to propagate errors from hooks to error boundaries.
30
30
 
31
- var _useState = (0, _react.useState)(),
31
+ var _useState = (0, _react.useState)(null),
32
32
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
33
- setState = _useState2[1]; // Register the current card.
33
+ error = _useState2[0],
34
+ setError = _useState2[1]; // Register the current card.
34
35
 
35
36
 
36
37
  var register = function register() {
37
38
  actions.register().catch(function (err) {
38
- return setState(function () {
39
- throw err;
40
- });
39
+ return setError(err);
41
40
  });
42
41
  }; // AFP-2511 TODO: Fix automatic suppressions below
43
42
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -50,6 +49,7 @@ function useSmartLink(id, url, dispatchAnalytics) {
50
49
  actions: actions,
51
50
  config: config,
52
51
  analytics: analytics,
53
- renderers: renderers
52
+ renderers: renderers,
53
+ error: error
54
54
  };
55
55
  }
@@ -28,8 +28,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
28
28
  var cardReducerMap = (_cardReducerMap = {}, (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_PENDING, function (_state, _ref) {
29
29
  var type = _ref.type;
30
30
  return {
31
- status: type,
32
- lastUpdatedAt: Date.now()
31
+ status: type
33
32
  };
34
33
  }), (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_RESOLVING, function (state, _ref2) {
35
34
  var type = _ref2.type;
@@ -52,7 +51,6 @@ var cardReducerMap = (_cardReducerMap = {}, (0, _defineProperty2.default)(_cardR
52
51
  nextState.status = type;
53
52
  }
54
53
 
55
- nextState.lastUpdatedAt = Date.now();
56
54
  return nextState;
57
55
  }), (0, _defineProperty2.default)(_cardReducerMap, actions.ACTION_ERROR, function (state, _ref4) {
58
56
  var type = _ref4.type,
@@ -75,12 +73,9 @@ var cardReducer = function cardReducer(state, action) {
75
73
  var cardState = state[action.url]; // Card may have reached the same state on account of multiple of the same
76
74
  // URL being present in an editor session. E.g. page with N links to one resource.
77
75
 
78
- var hasSameStatus = cardState && cardState.status === action.type; // Card needs to be refreshed. In this case, we ignore the same status pragma which
79
- // is described above - this forces a rerender for all links of the same status.
80
-
81
- var hasExpired = action.hasExpired;
76
+ var hasSameStatus = cardState && cardState.status === action.type;
82
77
 
83
- if (!hasExpired && hasSameStatus) {
78
+ if (hasSameStatus) {
84
79
  return state;
85
80
  } else {
86
81
  var nextState = cardReducerMap[action.type](cardState, action);
@@ -5,10 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.uiRenderFailedEvent = exports.uiRenderSuccessEvent = exports.screenAuthPopupEvent = exports.uiClosedAuthEvent = exports.uiActionClickedEvent = exports.uiCardClickedEvent = exports.uiAuthAlternateAccountEvent = exports.uiAuthEvent = exports.trackAppAccountConnected = exports.connectFailedEvent = exports.connectSucceededEvent = exports.invokeFailedEvent = exports.invokeSucceededEvent = exports.unresolvedEvent = exports.resolvedEvent = exports.fireSmartLinkEvent = exports.context = exports.ANALYTICS_CHANNEL = void 0;
8
+ exports.uiRenderFailedEvent = exports.uiRenderSuccessEvent = exports.screenAuthPopupEvent = exports.uiClosedAuthEvent = exports.uiActionClickedEvent = exports.uiCardClickedEvent = exports.uiAuthAlternateAccountEvent = exports.uiAuthEvent = exports.trackAppAccountConnected = exports.connectFailedEvent = exports.connectSucceededEvent = exports.invokeFailedEvent = exports.invokeSucceededEvent = exports.unresolvedEvent = exports.resolvedEvent = exports.fireSmartLinkEvent = exports.SmartLinkEvents = exports.context = exports.ANALYTICS_CHANNEL = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
12
16
  var _version = require("../../version.json");
13
17
 
14
18
  var _performance = require("../performance");
@@ -26,6 +30,32 @@ var context = {
26
30
  };
27
31
  exports.context = context;
28
32
 
33
+ var SmartLinkEvents = /*#__PURE__*/function () {
34
+ function SmartLinkEvents() {
35
+ (0, _classCallCheck2.default)(this, SmartLinkEvents);
36
+ }
37
+
38
+ (0, _createClass2.default)(SmartLinkEvents, [{
39
+ key: "insertSmartLink",
40
+ value: function insertSmartLink(url, type, createAnalyticsEvent) {
41
+ fireSmartLinkEvent({
42
+ action: 'inserted',
43
+ actionSubject: 'smartLink',
44
+ eventType: 'track',
45
+ attributes: {
46
+ type: type
47
+ },
48
+ nonPrivacySafeAttributes: {
49
+ domainName: url
50
+ }
51
+ }, createAnalyticsEvent);
52
+ }
53
+ }]);
54
+ return SmartLinkEvents;
55
+ }();
56
+
57
+ exports.SmartLinkEvents = SmartLinkEvents;
58
+
29
59
  var fireSmartLinkEvent = function fireSmartLinkEvent(payload, createAnalyticsEvent) {
30
60
  if (createAnalyticsEvent) {
31
61
  createAnalyticsEvent(payload).fire(ANALYTICS_CHANNEL);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "15.5.0",
3
+ "version": "16.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -38,7 +38,8 @@ var BlockCard = function BlockCard(_ref) {
38
38
  isSelected = _ref.isSelected,
39
39
  onResolve = _ref.onResolve,
40
40
  testId = _ref.testId,
41
- showActions = _ref.showActions;
41
+ showActions = _ref.showActions,
42
+ platform = _ref.platform;
42
43
  var data = details && details.data || (0, _jsonld.getEmptyJsonLd)();
43
44
  var meta = details && details.meta;
44
45
  var extractorOpts = {
@@ -56,7 +57,7 @@ var BlockCard = function BlockCard(_ref) {
56
57
  });
57
58
 
58
59
  case 'resolved':
59
- var resolvedViewProps = (0, _block.extractBlockProps)(data, meta, extractorOpts, renderers);
60
+ var resolvedViewProps = (0, _block.extractBlockProps)(data, meta, extractorOpts, renderers, platform);
60
61
 
61
62
  if (onResolve) {
62
63
  onResolve({
@@ -5,12 +5,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.LoadingCardLink = void 0;
8
+ exports.LoadingCardLink = exports.loadingPlaceholderClassName = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
12
  var _mediaUi = require("@atlaskit/media-ui");
13
13
 
14
+ var loadingPlaceholderClassName = 'smart-link-loading-placeholder';
15
+ exports.loadingPlaceholderClassName = loadingPlaceholderClassName;
16
+
14
17
  var LoadingCardLink = function LoadingCardLink(_ref) {
15
18
  var isSelected = _ref.isSelected,
16
19
  url = _ref.url;
@@ -19,7 +22,8 @@ var LoadingCardLink = function LoadingCardLink(_ref) {
19
22
  testId: 'lazy-render-placeholder',
20
23
  "data-trello-do-not-use-override": "lazy-render-placeholder-trello",
21
24
  isSelected: isSelected,
22
- link: url
25
+ link: url,
26
+ className: loadingPlaceholderClassName
23
27
  });
24
28
  };
25
29
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.LazyCardWithUrlContent = LazyCardWithUrlContent;
8
+ exports.default = LazyCardWithUrlContent;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
@@ -49,7 +49,8 @@ function CardWithUrlContent(_ref) {
49
49
  actions = _useSmartLink.actions,
50
50
  config = _useSmartLink.config,
51
51
  analytics = _useSmartLink.analytics,
52
- renderers = _useSmartLink.renderers;
52
+ renderers = _useSmartLink.renderers,
53
+ error = _useSmartLink.error;
53
54
 
54
55
  var definitionId = (0, _helpers.getDefinitionId)(state.details);
55
56
  var extensionKey = (0, _helpers.getExtensionKey)(state.details);
@@ -92,9 +93,13 @@ function CardWithUrlContent(_ref) {
92
93
 
93
94
  (0, _react.useEffect)(function () {
94
95
  if ((0, _helpers.isFinalState)(state.status)) {
95
- analytics.ui.renderSuccessEvent(appearance, definitionId, extensionKey);
96
+ analytics.ui.renderSuccessEvent(appearance, id, definitionId, extensionKey);
96
97
  }
97
- }, [appearance, state.details, state.status, url, definitionId, extensionKey, analytics.ui]);
98
+ }, [appearance, state.details, state.status, url, definitionId, extensionKey, analytics.ui, id]); // We have to keep this last to prevent hook order from being violated
99
+
100
+ if (error) {
101
+ throw error;
102
+ }
98
103
 
99
104
  switch (appearance) {
100
105
  case 'inline':
@@ -124,7 +129,8 @@ function CardWithUrlContent(_ref) {
124
129
  isSelected: isSelected,
125
130
  onResolve: onResolve,
126
131
  testId: testId,
127
- showActions: showActions
132
+ showActions: showActions,
133
+ platform: platform
128
134
  });
129
135
 
130
136
  case 'embed':