@atlaskit/smart-card 42.3.4 → 42.3.5
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.
- package/CHANGELOG.md +11 -0
- package/dist/cjs/state/actions/index.js +6 -8
- package/dist/cjs/state/hooks/useSmartLink.js +3 -3
- package/dist/cjs/state/store/index.js +1 -5
- package/dist/cjs/utils/analytics/analytics.js +1 -1
- package/dist/cjs/view/CardWithUrl/component.js +15 -14
- package/dist/cjs/view/FlexibleCard/index.js +13 -5
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/index.js +3 -26
- package/dist/cjs/view/LinkUrl/index.js +23 -30
- package/dist/es2019/state/actions/index.js +4 -6
- package/dist/es2019/state/hooks/useSmartLink.js +3 -3
- package/dist/es2019/state/store/index.js +1 -5
- package/dist/es2019/utils/analytics/analytics.js +1 -1
- package/dist/es2019/view/CardWithUrl/component.js +15 -14
- package/dist/es2019/view/FlexibleCard/index.js +12 -5
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/index.js +3 -27
- package/dist/es2019/view/LinkUrl/index.js +23 -28
- package/dist/esm/state/actions/index.js +6 -8
- package/dist/esm/state/hooks/useSmartLink.js +3 -3
- package/dist/esm/state/store/index.js +1 -5
- package/dist/esm/utils/analytics/analytics.js +1 -1
- package/dist/esm/view/CardWithUrl/component.js +15 -14
- package/dist/esm/view/FlexibleCard/index.js +12 -5
- package/dist/esm/view/LinkUrl/HyperlinkResolver/index.js +3 -26
- package/dist/esm/view/LinkUrl/index.js +23 -28
- package/dist/types/state/actions/index.d.ts +1 -2
- package/dist/types/state/hooks/useSmartLink.d.ts +2 -3
- package/dist/types/state/store/index.d.ts +1 -1
- package/dist/types/view/FlexibleCard/index.d.ts +13 -1
- package/dist/types/view/LinkUrl/HyperlinkResolver/index.d.ts +0 -5
- package/dist/types-ts4.5/state/actions/index.d.ts +1 -2
- package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +2 -3
- package/dist/types-ts4.5/state/store/index.d.ts +1 -1
- package/dist/types-ts4.5/view/FlexibleCard/index.d.ts +13 -1
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/index.d.ts +0 -5
- package/package.json +2 -5
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/error-boundary.js +0 -18
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.js +0 -70
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/error-boundary.js +0 -9
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.js +0 -60
- package/dist/esm/view/LinkUrl/HyperlinkResolver/error-boundary.js +0 -11
- package/dist/esm/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.js +0 -62
- package/dist/types/view/LinkUrl/HyperlinkResolver/error-boundary.d.ts +0 -4
- package/dist/types/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.d.ts +0 -3
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/error-boundary.d.ts +0 -4
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @atlaskit/smart-card
|
|
2
2
|
|
|
3
|
+
## 42.3.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`0f97c81f07f53`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0f97c81f07f53) -
|
|
8
|
+
Internal logic change for `placeholderData` (unreleased prop) so it's used exclusively for
|
|
9
|
+
rendering purposes.
|
|
10
|
+
- [`2d0bdb4a28fef`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2d0bdb4a28fef) -
|
|
11
|
+
Feature gate cleanup: navx-1834-refactor-resolved-hyperlink
|
|
12
|
+
- Updated dependencies
|
|
13
|
+
|
|
3
14
|
## 42.3.4
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -11,14 +11,13 @@ var _react = require("react");
|
|
|
11
11
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
12
12
|
var _linkingCommon = require("@atlaskit/linking-common");
|
|
13
13
|
var _outboundAuthFlowClient = require("@atlaskit/outbound-auth-flow-client");
|
|
14
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
14
|
var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
|
|
16
15
|
var _constants = require("../../constants");
|
|
17
16
|
var _analytics = require("../analytics");
|
|
18
17
|
var _helpers = require("../helpers");
|
|
19
18
|
var _useInvokeClientAction = _interopRequireDefault(require("../hooks/use-invoke-client-action"));
|
|
20
19
|
var _useResolve = _interopRequireDefault(require("../hooks/use-resolve"));
|
|
21
|
-
var useSmartCardActions = exports.useSmartCardActions = function useSmartCardActions(id, url
|
|
20
|
+
var useSmartCardActions = exports.useSmartCardActions = function useSmartCardActions(id, url) {
|
|
22
21
|
var resolveUrl = (0, _useResolve.default)();
|
|
23
22
|
var invokeClientAction = (0, _useInvokeClientAction.default)({});
|
|
24
23
|
var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
|
|
@@ -28,9 +27,8 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
28
27
|
var getState = store.getState,
|
|
29
28
|
dispatch = store.dispatch;
|
|
30
29
|
var getSmartLinkState = (0, _react.useCallback)(function () {
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var _ref = (_ref2 = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : placeholderObject) !== null && _ref2 !== void 0 ? _ref2 : {
|
|
30
|
+
var _getState$url;
|
|
31
|
+
var _ref = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : {
|
|
34
32
|
status: _constants.SmartLinkStatus.Pending
|
|
35
33
|
},
|
|
36
34
|
details = _ref.details,
|
|
@@ -41,7 +39,7 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
41
39
|
status: status,
|
|
42
40
|
metadataStatus: metadataStatus
|
|
43
41
|
};
|
|
44
|
-
}, [getState, url
|
|
42
|
+
}, [getState, url]);
|
|
45
43
|
var setMetadataStatus = (0, _react.useCallback)(function (metadataStatus) {
|
|
46
44
|
dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_UPDATE_METADATA_STATUS, {
|
|
47
45
|
url: url
|
|
@@ -154,7 +152,7 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
154
152
|
}
|
|
155
153
|
}, [getSmartLinkState, id, reload, fireEvent]);
|
|
156
154
|
var invoke = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
157
|
-
var
|
|
155
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(opts, appearance) {
|
|
158
156
|
var key, action, source;
|
|
159
157
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
160
158
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -181,7 +179,7 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
181
179
|
}, _callee2);
|
|
182
180
|
}));
|
|
183
181
|
return function (_x, _x2) {
|
|
184
|
-
return
|
|
182
|
+
return _ref3.apply(this, arguments);
|
|
185
183
|
};
|
|
186
184
|
}(), [invokeClientAction]);
|
|
187
185
|
return (0, _react.useMemo)(function () {
|
|
@@ -12,13 +12,13 @@ var _actions = require("../actions");
|
|
|
12
12
|
var _config = require("../config");
|
|
13
13
|
var _renderers = require("../renderers");
|
|
14
14
|
var _store = require("../store");
|
|
15
|
-
function useSmartLink(id, url
|
|
16
|
-
var state = (0, _store.useSmartCardState)(url
|
|
15
|
+
function useSmartLink(id, url) {
|
|
16
|
+
var state = (0, _store.useSmartCardState)(url);
|
|
17
17
|
var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
|
|
18
18
|
store = _useSmartLinkContext.store,
|
|
19
19
|
isPreviewPanelAvailable = _useSmartLinkContext.isPreviewPanelAvailable,
|
|
20
20
|
openPreviewPanel = _useSmartLinkContext.openPreviewPanel;
|
|
21
|
-
var actions = (0, _actions.useSmartCardActions)(id, url
|
|
21
|
+
var actions = (0, _actions.useSmartCardActions)(id, url);
|
|
22
22
|
var config = (0, _config.useSmartLinkConfig)();
|
|
23
23
|
var renderers = (0, _renderers.useSmartLinkRenderers)();
|
|
24
24
|
|
|
@@ -6,18 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useSmartCardState = useSmartCardState;
|
|
7
7
|
var _withSelector = require("use-sync-external-store/shim/with-selector");
|
|
8
8
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
9
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
9
|
var PENDING_STATE = {
|
|
11
10
|
status: 'pending'
|
|
12
11
|
};
|
|
13
|
-
function useSmartCardState(url
|
|
12
|
+
function useSmartCardState(url) {
|
|
14
13
|
var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
|
|
15
14
|
store = _useSmartLinkContext.store;
|
|
16
15
|
var cardState = (0, _withSelector.useSyncExternalStoreWithSelector)(store.subscribe, store.getState, store.getState, function (state) {
|
|
17
16
|
return state[url];
|
|
18
17
|
});
|
|
19
|
-
if ((0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards')) {
|
|
20
|
-
return (cardState === null || cardState === void 0 ? void 0 : cardState.status) !== 'resolved' && placeholderData ? placeholderData : cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
21
|
-
}
|
|
22
18
|
return cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
23
19
|
}
|
|
@@ -11,7 +11,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
|
|
|
11
11
|
var context = exports.context = {
|
|
12
12
|
componentName: 'smart-cards',
|
|
13
13
|
packageName: "@atlaskit/smart-card",
|
|
14
|
-
packageVersion: "
|
|
14
|
+
packageVersion: "42.3.4"
|
|
15
15
|
};
|
|
16
16
|
var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
|
|
17
17
|
TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
|
|
@@ -67,22 +67,9 @@ function Component(_ref) {
|
|
|
67
67
|
var isFlexibleUi = (0, _react.useMemo)(function () {
|
|
68
68
|
return (0, _flexible.isFlexibleUiCard)(children, ui);
|
|
69
69
|
}, [children, ui]);
|
|
70
|
-
var structuredPlaceholderData = (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ?
|
|
71
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
72
|
-
(0, _react.useMemo)(function () {
|
|
73
|
-
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
74
|
-
if (appearance === 'inline' && isValidPlaceholderData(placeholderData)) {
|
|
75
|
-
var data = {
|
|
76
|
-
status: 'resolved',
|
|
77
|
-
metadataStatus: undefined,
|
|
78
|
-
details: placeholderData
|
|
79
|
-
};
|
|
80
|
-
return data;
|
|
81
|
-
}
|
|
82
|
-
}, [appearance, placeholderData]) : undefined;
|
|
83
70
|
|
|
84
71
|
// Get state, actions for this card.
|
|
85
|
-
var _useSmartLink = (0, _state.useSmartLink)(id, url
|
|
72
|
+
var _useSmartLink = (0, _state.useSmartLink)(id, url),
|
|
86
73
|
state = _useSmartLink.state,
|
|
87
74
|
actions = _useSmartLink.actions,
|
|
88
75
|
config = _useSmartLink.config,
|
|
@@ -242,6 +229,19 @@ function Component(_ref) {
|
|
|
242
229
|
display: isFlexibleUi ? 'flexible' : appearance
|
|
243
230
|
});
|
|
244
231
|
}, [id, appearance, definitionId, isFlexibleUi, fireEvent]);
|
|
232
|
+
var structuredPlaceholderData = (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ?
|
|
233
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
234
|
+
(0, _react.useMemo)(function () {
|
|
235
|
+
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
236
|
+
if (isFlexibleUi && isValidPlaceholderData(placeholderData)) {
|
|
237
|
+
var data = {
|
|
238
|
+
status: 'resolved',
|
|
239
|
+
metadataStatus: undefined,
|
|
240
|
+
details: placeholderData
|
|
241
|
+
};
|
|
242
|
+
return data;
|
|
243
|
+
}
|
|
244
|
+
}, [isFlexibleUi, placeholderData]) : undefined;
|
|
245
245
|
if (isFlexibleUi) {
|
|
246
246
|
var cardState = state;
|
|
247
247
|
if (error) {
|
|
@@ -256,6 +256,7 @@ function Component(_ref) {
|
|
|
256
256
|
return /*#__PURE__*/_react.default.createElement(_FlexibleCard.default, {
|
|
257
257
|
id: id,
|
|
258
258
|
cardState: cardState,
|
|
259
|
+
placeholderData: (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ? structuredPlaceholderData : undefined,
|
|
259
260
|
onAuthorize: services.length && handleAuthorize || undefined,
|
|
260
261
|
onClick: handleClickWrapper,
|
|
261
262
|
origin: "smartLinkCard",
|
|
@@ -9,6 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
|
|
13
14
|
var _constants = require("../../constants");
|
|
14
15
|
var _flexibleUiContext = require("../../state/flexible-ui-context");
|
|
@@ -17,6 +18,8 @@ var _useResolve = _interopRequireDefault(require("../../state/hooks/use-resolve"
|
|
|
17
18
|
var _container = _interopRequireDefault(require("./components/container"));
|
|
18
19
|
var _utils = require("./utils");
|
|
19
20
|
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); }
|
|
21
|
+
var PENDING_LINK_STATUSES = [_constants.SmartLinkStatus.Pending, _constants.SmartLinkStatus.Resolving];
|
|
22
|
+
|
|
20
23
|
/**
|
|
21
24
|
* This represents a Flexible Card: a link represented by a card with metadata.
|
|
22
25
|
* This is the container in which all Flexible UI Blocks and Elements exist.
|
|
@@ -28,6 +31,7 @@ var FlexibleCard = function FlexibleCard(_ref) {
|
|
|
28
31
|
var _ref$appearance = _ref.appearance,
|
|
29
32
|
appearance = _ref$appearance === void 0 ? 'flexible' : _ref$appearance,
|
|
30
33
|
cardState = _ref.cardState,
|
|
34
|
+
placeholderData = _ref.placeholderData,
|
|
31
35
|
children = _ref.children,
|
|
32
36
|
id = _ref.id,
|
|
33
37
|
onAuthorize = _ref.onAuthorize,
|
|
@@ -52,12 +56,16 @@ var FlexibleCard = function FlexibleCard(_ref) {
|
|
|
52
56
|
var cardType = cardState.status,
|
|
53
57
|
details = cardState.details;
|
|
54
58
|
var status = cardType;
|
|
59
|
+
var shouldUsePlaceholderData = PENDING_LINK_STATUSES.includes(status) && placeholderData && (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards');
|
|
60
|
+
// if we have placeholder data it means we can internally use it
|
|
61
|
+
// as resolved data until the actual data comes back as one of the final statuses
|
|
62
|
+
var contextStatus = shouldUsePlaceholderData ? _constants.SmartLinkStatus.Resolved : status;
|
|
55
63
|
var context = (0, _react.useMemo)(function () {
|
|
56
64
|
return (0, _utils.getContextByStatus)({
|
|
57
65
|
aiSummaryConfig: aiSummaryConfig,
|
|
58
66
|
appearance: appearance,
|
|
59
67
|
fireEvent: fireEvent,
|
|
60
|
-
response: details,
|
|
68
|
+
response: shouldUsePlaceholderData ? placeholderData.details : details,
|
|
61
69
|
id: id,
|
|
62
70
|
onAuthorize: onAuthorize,
|
|
63
71
|
onClick: onClick,
|
|
@@ -65,19 +73,19 @@ var FlexibleCard = function FlexibleCard(_ref) {
|
|
|
65
73
|
renderers: renderers,
|
|
66
74
|
resolve: resolve,
|
|
67
75
|
actionOptions: actionOptions,
|
|
68
|
-
status: status,
|
|
76
|
+
status: shouldUsePlaceholderData ? contextStatus : status,
|
|
69
77
|
url: url,
|
|
70
78
|
isPreviewPanelAvailable: isPreviewPanelAvailable,
|
|
71
79
|
openPreviewPanel: openPreviewPanel
|
|
72
80
|
});
|
|
73
|
-
}, [aiSummaryConfig, appearance, fireEvent, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, status, url, isPreviewPanelAvailable, openPreviewPanel]);
|
|
81
|
+
}, [aiSummaryConfig, appearance, fireEvent, shouldUsePlaceholderData, placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.details, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, contextStatus, status, url, isPreviewPanelAvailable, openPreviewPanel]);
|
|
74
82
|
var flexibleCardContext = (0, _react.useMemo)(function () {
|
|
75
83
|
return {
|
|
76
84
|
data: context,
|
|
77
|
-
status: status,
|
|
85
|
+
status: (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ? contextStatus : status,
|
|
78
86
|
ui: ui
|
|
79
87
|
};
|
|
80
|
-
}, [context, status, ui]);
|
|
88
|
+
}, [context, contextStatus, status, ui]);
|
|
81
89
|
var _ref2 = context || {},
|
|
82
90
|
linkTitle = _ref2.linkTitle;
|
|
83
91
|
var title = linkTitle === null || linkTitle === void 0 ? void 0 : linkTitle.text;
|
|
@@ -5,24 +5,20 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.HyperlinkWithSmartLinkResolver = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _reactErrorBoundary = require("react-error-boundary");
|
|
13
13
|
var _reactIntlNext = require("react-intl-next");
|
|
14
|
-
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
15
14
|
var _linkExtractors = require("@atlaskit/link-extractors");
|
|
16
15
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
|
-
var _state = require("../../../state");
|
|
18
16
|
var _helpers = require("../../../state/helpers");
|
|
19
17
|
var _useResolveHyperlink2 = _interopRequireDefault(require("../../../state/hooks/use-resolve-hyperlink"));
|
|
20
|
-
var _useResolveHyperlinkValidator =
|
|
18
|
+
var _useResolveHyperlinkValidator = _interopRequireDefault(require("../../../state/hooks/use-resolve-hyperlink/useResolveHyperlinkValidator"));
|
|
21
19
|
var _intlProvider = _interopRequireDefault(require("../../common/intl-provider"));
|
|
22
20
|
var _useSmartLinkEvents = require("../../SmartLinkEvents/useSmartLinkEvents");
|
|
23
21
|
var _Hyperlink = _interopRequireDefault(require("../Hyperlink"));
|
|
24
|
-
var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
|
|
25
|
-
var _resolveHyperlink = require("./resolve-hyperlink");
|
|
26
22
|
var _unauthorizeView = _interopRequireDefault(require("./unauthorize-view"));
|
|
27
23
|
var _excluded = ["onClick"];
|
|
28
24
|
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); }
|
|
@@ -91,23 +87,4 @@ var HyperlinkWithSmartLinkResolver = exports.HyperlinkWithSmartLinkResolver = (0
|
|
|
91
87
|
enforceContext: false
|
|
92
88
|
}), _Hyperlink.default), {
|
|
93
89
|
FallbackComponent: HyperlinkFallbackComponent
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
// Remove on navx-1834-refactor-resolved-hyperlink cleanup
|
|
97
|
-
|
|
98
|
-
var HyperlinkResolver = function HyperlinkResolver(_ref2) {
|
|
99
|
-
var href = _ref2.href;
|
|
100
|
-
var hasSmartCardProvider = !!(0, _react.useContext)(_state.SmartCardContext);
|
|
101
|
-
var isSharePointResolveEnabled = _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_hyperlinks_confluence', 'isEnabled', false) || _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_hyperlinks_jira', 'isEnabled', false);
|
|
102
|
-
var isGoogleResolveEnabled = _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_google_hyperlinks', 'isEnabled', false);
|
|
103
|
-
var shouldResolveSharePoint = (0, _useResolveHyperlinkValidator.isSharePointDomain)(href) && isSharePointResolveEnabled;
|
|
104
|
-
var shouldResolveGoogle = (0, _useResolveHyperlinkValidator.isGoogleDomain)(href) && isGoogleResolveEnabled;
|
|
105
|
-
var shouldResolveHyperlink = hasSmartCardProvider && (shouldResolveSharePoint || shouldResolveGoogle);
|
|
106
|
-
if (!shouldResolveHyperlink) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
return /*#__PURE__*/_react.default.createElement(_resolveHyperlink.ResolveHyperlink, {
|
|
110
|
-
href: href
|
|
111
|
-
});
|
|
112
|
-
};
|
|
113
|
-
var _default = exports.default = (0, _errorBoundary.default)(HyperlinkResolver);
|
|
90
|
+
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -13,19 +12,17 @@ var _reactMagneticDi = require("react-magnetic-di");
|
|
|
13
12
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
14
13
|
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
15
14
|
var _link = _interopRequireDefault(require("@atlaskit/link"));
|
|
16
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
15
|
var _click = require("../../utils/analytics/click");
|
|
18
16
|
var _LinkAnalyticsContext = require("../../utils/analytics/LinkAnalyticsContext");
|
|
19
17
|
var _Hyperlink = _interopRequireDefault(require("./Hyperlink"));
|
|
20
|
-
var _HyperlinkResolver =
|
|
18
|
+
var _HyperlinkResolver = require("./HyperlinkResolver");
|
|
21
19
|
var _LinkWarningModal = _interopRequireDefault(require("./LinkWarningModal"));
|
|
22
20
|
var _useLinkWarningModal2 = require("./LinkWarningModal/hooks/use-link-warning-modal");
|
|
23
21
|
var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLinkComponent", "enableResolve"],
|
|
24
22
|
_excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
|
|
25
|
-
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); }
|
|
26
23
|
var PACKAGE_DATA = {
|
|
27
24
|
packageName: "@atlaskit/smart-card",
|
|
28
|
-
packageVersion: "
|
|
25
|
+
packageVersion: "42.3.4",
|
|
29
26
|
componentName: 'linkUrl'
|
|
30
27
|
};
|
|
31
28
|
var Anchor = (0, _click.withLinkClickedEvent)('a');
|
|
@@ -48,30 +45,28 @@ var LinkUrl = function LinkUrl(_ref) {
|
|
|
48
45
|
showSafetyWarningModal = _useLinkWarningModal.showSafetyWarningModal,
|
|
49
46
|
linkWarningModalProps = (0, _objectWithoutProperties2.default)(_useLinkWarningModal, _excluded2);
|
|
50
47
|
var resolveHyperlinkFG = _featureGateJsClient.default.checkGate('platform_editor_resolve_hyperlinks_killswitch');
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
48
|
+
if (resolveHyperlinkFG) {
|
|
49
|
+
var _Link = enableResolve ? _HyperlinkResolver.HyperlinkWithSmartLinkResolver : _Hyperlink.default;
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LinkAnalyticsContext.LinkAnalyticsContext, {
|
|
51
|
+
url: href,
|
|
52
|
+
display: "url"
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement(_Link, (0, _extends2.default)({
|
|
54
|
+
href: href,
|
|
55
|
+
isLinkComponent: isLinkComponent,
|
|
56
|
+
onClick: function onClick(e) {
|
|
57
|
+
if (!checkSafety) {
|
|
58
|
+
_onClick && _onClick(e);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
65
61
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
62
|
+
// Only call the onClick if the link is safe
|
|
63
|
+
if (isLinkSafe(e, href)) {
|
|
64
|
+
_onClick && _onClick(e);
|
|
65
|
+
} else {
|
|
66
|
+
showSafetyWarningModal(e, href);
|
|
72
67
|
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
68
|
+
}
|
|
69
|
+
}, props), children)), checkSafety && /*#__PURE__*/_react.default.createElement(_LinkWarningModal.default, linkWarningModalProps));
|
|
75
70
|
}
|
|
76
71
|
var Link = isLinkComponent ? LinkComponent : Anchor;
|
|
77
72
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LinkAnalyticsContext.LinkAnalyticsContext, {
|
|
@@ -96,8 +91,6 @@ var LinkUrl = function LinkUrl(_ref) {
|
|
|
96
91
|
showSafetyWarningModal(e, href);
|
|
97
92
|
}
|
|
98
93
|
}
|
|
99
|
-
}, props), children)), checkSafety && /*#__PURE__*/_react.default.createElement(_LinkWarningModal.default, linkWarningModalProps)
|
|
100
|
-
href: href
|
|
101
|
-
}));
|
|
94
|
+
}, props), children)), checkSafety && /*#__PURE__*/_react.default.createElement(_LinkWarningModal.default, linkWarningModalProps));
|
|
102
95
|
};
|
|
103
96
|
var _default = exports.default = (0, _analyticsNext.withAnalyticsContext)(PACKAGE_DATA)(LinkUrl);
|
|
@@ -2,14 +2,13 @@ import { useCallback, useMemo } from 'react';
|
|
|
2
2
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
3
3
|
import { ACTION_RESOLVING, ACTION_UPDATE_METADATA_STATUS, cardAction } from '@atlaskit/linking-common';
|
|
4
4
|
import { auth } from '@atlaskit/outbound-auth-flow-client';
|
|
5
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
5
|
import { useAnalyticsEvents } from '../../common/analytics/generated/use-analytics-events';
|
|
7
6
|
import { SmartLinkStatus } from '../../constants';
|
|
8
7
|
import { startUfoExperience } from '../analytics';
|
|
9
8
|
import { getByDefinitionId, getDefinitionId, getExtensionKey, getServices } from '../helpers';
|
|
10
9
|
import useInvokeClientAction from '../hooks/use-invoke-client-action';
|
|
11
10
|
import useResolve from '../hooks/use-resolve';
|
|
12
|
-
export const useSmartCardActions = (id, url
|
|
11
|
+
export const useSmartCardActions = (id, url) => {
|
|
13
12
|
const resolveUrl = useResolve();
|
|
14
13
|
const invokeClientAction = useInvokeClientAction({});
|
|
15
14
|
const {
|
|
@@ -23,13 +22,12 @@ export const useSmartCardActions = (id, url, placeholderData) => {
|
|
|
23
22
|
dispatch
|
|
24
23
|
} = store;
|
|
25
24
|
const getSmartLinkState = useCallback(() => {
|
|
26
|
-
var
|
|
27
|
-
const placeholderObject = fg('platform_initial_data_for_smart_cards') ? placeholderData : undefined;
|
|
25
|
+
var _getState$url;
|
|
28
26
|
const {
|
|
29
27
|
details,
|
|
30
28
|
status,
|
|
31
29
|
metadataStatus
|
|
32
|
-
} = (
|
|
30
|
+
} = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : {
|
|
33
31
|
status: SmartLinkStatus.Pending
|
|
34
32
|
};
|
|
35
33
|
return {
|
|
@@ -37,7 +35,7 @@ export const useSmartCardActions = (id, url, placeholderData) => {
|
|
|
37
35
|
status,
|
|
38
36
|
metadataStatus
|
|
39
37
|
};
|
|
40
|
-
}, [getState, url
|
|
38
|
+
}, [getState, url]);
|
|
41
39
|
const setMetadataStatus = useCallback(metadataStatus => {
|
|
42
40
|
dispatch(cardAction(ACTION_UPDATE_METADATA_STATUS, {
|
|
43
41
|
url
|
|
@@ -4,14 +4,14 @@ import { useSmartCardActions as useSmartLinkActions } from '../actions';
|
|
|
4
4
|
import { useSmartLinkConfig } from '../config';
|
|
5
5
|
import { useSmartLinkRenderers } from '../renderers';
|
|
6
6
|
import { useSmartCardState as useSmartLinkState } from '../store';
|
|
7
|
-
export function useSmartLink(id, url
|
|
8
|
-
const state = useSmartLinkState(url
|
|
7
|
+
export function useSmartLink(id, url) {
|
|
8
|
+
const state = useSmartLinkState(url);
|
|
9
9
|
const {
|
|
10
10
|
store,
|
|
11
11
|
isPreviewPanelAvailable,
|
|
12
12
|
openPreviewPanel
|
|
13
13
|
} = useSmartLinkContext();
|
|
14
|
-
const actions = useSmartLinkActions(id, url
|
|
14
|
+
const actions = useSmartLinkActions(id, url);
|
|
15
15
|
const config = useSmartLinkConfig();
|
|
16
16
|
const renderers = useSmartLinkRenderers();
|
|
17
17
|
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';
|
|
2
2
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
3
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
3
|
const PENDING_STATE = {
|
|
5
4
|
status: 'pending'
|
|
6
5
|
};
|
|
7
|
-
export function useSmartCardState(url
|
|
6
|
+
export function useSmartCardState(url) {
|
|
8
7
|
const {
|
|
9
8
|
store
|
|
10
9
|
} = useSmartLinkContext();
|
|
11
10
|
const cardState = useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, state => state[url]);
|
|
12
|
-
if (fg('platform_initial_data_for_smart_cards')) {
|
|
13
|
-
return (cardState === null || cardState === void 0 ? void 0 : cardState.status) !== 'resolved' && placeholderData ? placeholderData : cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
14
|
-
}
|
|
15
11
|
return cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
16
12
|
}
|
|
@@ -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: "
|
|
5
|
+
packageVersion: "42.3.4"
|
|
6
6
|
};
|
|
7
7
|
export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
|
|
8
8
|
TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
|
|
@@ -57,19 +57,6 @@ function Component({
|
|
|
57
57
|
fireEvent
|
|
58
58
|
} = useAnalyticsEvents();
|
|
59
59
|
let isFlexibleUi = useMemo(() => isFlexibleUiCard(children, ui), [children, ui]);
|
|
60
|
-
const structuredPlaceholderData = fg('platform_initial_data_for_smart_cards') ?
|
|
61
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
62
|
-
useMemo(() => {
|
|
63
|
-
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
64
|
-
if (appearance === 'inline' && isValidPlaceholderData(placeholderData)) {
|
|
65
|
-
const data = {
|
|
66
|
-
status: 'resolved',
|
|
67
|
-
metadataStatus: undefined,
|
|
68
|
-
details: placeholderData
|
|
69
|
-
};
|
|
70
|
-
return data;
|
|
71
|
-
}
|
|
72
|
-
}, [appearance, placeholderData]) : undefined;
|
|
73
60
|
|
|
74
61
|
// Get state, actions for this card.
|
|
75
62
|
const {
|
|
@@ -80,7 +67,7 @@ function Component({
|
|
|
80
67
|
error,
|
|
81
68
|
isPreviewPanelAvailable,
|
|
82
69
|
openPreviewPanel
|
|
83
|
-
} = useSmartLink(id, url
|
|
70
|
+
} = useSmartLink(id, url);
|
|
84
71
|
const ari = getObjectAri(state.details);
|
|
85
72
|
const name = getObjectName(state.details);
|
|
86
73
|
const definitionId = getDefinitionId(state.details);
|
|
@@ -229,6 +216,19 @@ function Component({
|
|
|
229
216
|
display: isFlexibleUi ? 'flexible' : appearance
|
|
230
217
|
});
|
|
231
218
|
}, [id, appearance, definitionId, isFlexibleUi, fireEvent]);
|
|
219
|
+
const structuredPlaceholderData = fg('platform_initial_data_for_smart_cards') ?
|
|
220
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
221
|
+
useMemo(() => {
|
|
222
|
+
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
223
|
+
if (isFlexibleUi && isValidPlaceholderData(placeholderData)) {
|
|
224
|
+
const data = {
|
|
225
|
+
status: 'resolved',
|
|
226
|
+
metadataStatus: undefined,
|
|
227
|
+
details: placeholderData
|
|
228
|
+
};
|
|
229
|
+
return data;
|
|
230
|
+
}
|
|
231
|
+
}, [isFlexibleUi, placeholderData]) : undefined;
|
|
232
232
|
if (isFlexibleUi) {
|
|
233
233
|
let cardState = state;
|
|
234
234
|
if (error) {
|
|
@@ -243,6 +243,7 @@ function Component({
|
|
|
243
243
|
return /*#__PURE__*/React.createElement(FlexibleCard, {
|
|
244
244
|
id: id,
|
|
245
245
|
cardState: cardState,
|
|
246
|
+
placeholderData: fg('platform_initial_data_for_smart_cards') ? structuredPlaceholderData : undefined,
|
|
246
247
|
onAuthorize: services.length && handleAuthorize || undefined,
|
|
247
248
|
onClick: handleClickWrapper,
|
|
248
249
|
origin: "smartLinkCard",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import React, { useEffect, useMemo } from 'react';
|
|
3
3
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
4
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
5
|
import { useAnalyticsEvents } from '../../common/analytics/generated/use-analytics-events';
|
|
5
6
|
import { InternalActionName, SmartLinkStatus } from '../../constants';
|
|
6
7
|
import { FlexibleCardContext } from '../../state/flexible-ui-context';
|
|
@@ -8,6 +9,7 @@ import { useAISummaryConfig } from '../../state/hooks/use-ai-summary-config';
|
|
|
8
9
|
import useResolve from '../../state/hooks/use-resolve';
|
|
9
10
|
import Container from './components/container';
|
|
10
11
|
import { getContextByStatus } from './utils';
|
|
12
|
+
const PENDING_LINK_STATUSES = [SmartLinkStatus.Pending, SmartLinkStatus.Resolving];
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* This represents a Flexible Card: a link represented by a card with metadata.
|
|
@@ -18,6 +20,7 @@ import { getContextByStatus } from './utils';
|
|
|
18
20
|
const FlexibleCard = ({
|
|
19
21
|
appearance = 'flexible',
|
|
20
22
|
cardState,
|
|
23
|
+
placeholderData,
|
|
21
24
|
children,
|
|
22
25
|
id,
|
|
23
26
|
onAuthorize,
|
|
@@ -48,11 +51,15 @@ const FlexibleCard = ({
|
|
|
48
51
|
details
|
|
49
52
|
} = cardState;
|
|
50
53
|
const status = cardType;
|
|
54
|
+
const shouldUsePlaceholderData = PENDING_LINK_STATUSES.includes(status) && placeholderData && fg('platform_initial_data_for_smart_cards');
|
|
55
|
+
// if we have placeholder data it means we can internally use it
|
|
56
|
+
// as resolved data until the actual data comes back as one of the final statuses
|
|
57
|
+
const contextStatus = shouldUsePlaceholderData ? SmartLinkStatus.Resolved : status;
|
|
51
58
|
const context = useMemo(() => getContextByStatus({
|
|
52
59
|
aiSummaryConfig,
|
|
53
60
|
appearance,
|
|
54
61
|
fireEvent,
|
|
55
|
-
response: details,
|
|
62
|
+
response: shouldUsePlaceholderData ? placeholderData.details : details,
|
|
56
63
|
id,
|
|
57
64
|
onAuthorize,
|
|
58
65
|
onClick,
|
|
@@ -60,16 +67,16 @@ const FlexibleCard = ({
|
|
|
60
67
|
renderers,
|
|
61
68
|
resolve,
|
|
62
69
|
actionOptions,
|
|
63
|
-
status,
|
|
70
|
+
status: shouldUsePlaceholderData ? contextStatus : status,
|
|
64
71
|
url,
|
|
65
72
|
isPreviewPanelAvailable,
|
|
66
73
|
openPreviewPanel
|
|
67
|
-
}), [aiSummaryConfig, appearance, fireEvent, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, status, url, isPreviewPanelAvailable, openPreviewPanel]);
|
|
74
|
+
}), [aiSummaryConfig, appearance, fireEvent, shouldUsePlaceholderData, placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.details, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, contextStatus, status, url, isPreviewPanelAvailable, openPreviewPanel]);
|
|
68
75
|
const flexibleCardContext = useMemo(() => ({
|
|
69
76
|
data: context,
|
|
70
|
-
status,
|
|
77
|
+
status: fg('platform_initial_data_for_smart_cards') ? contextStatus : status,
|
|
71
78
|
ui
|
|
72
|
-
}), [context, status, ui]);
|
|
79
|
+
}), [context, contextStatus, status, ui]);
|
|
73
80
|
const {
|
|
74
81
|
linkTitle
|
|
75
82
|
} = context || {};
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import React, { useCallback
|
|
2
|
+
import React, { useCallback } from 'react';
|
|
3
3
|
import { withErrorBoundary as withReactErrorBoundary } from 'react-error-boundary';
|
|
4
4
|
import { injectIntl } from 'react-intl-next';
|
|
5
|
-
import FeatureGates from '@atlaskit/feature-gate-js-client';
|
|
6
5
|
import { extractSmartLinkProvider } from '@atlaskit/link-extractors';
|
|
7
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
|
-
import { SmartCardContext } from '../../../state';
|
|
9
7
|
import { getFirstPartyIdentifier, getServices, getThirdPartyARI } from '../../../state/helpers';
|
|
10
8
|
import useResolveHyperlink from '../../../state/hooks/use-resolve-hyperlink';
|
|
11
|
-
import useResolveHyperlinkValidator
|
|
9
|
+
import useResolveHyperlinkValidator from '../../../state/hooks/use-resolve-hyperlink/useResolveHyperlinkValidator';
|
|
12
10
|
import withIntlProvider from '../../common/intl-provider';
|
|
13
11
|
import { useFire3PWorkflowsClickEvent } from '../../SmartLinkEvents/useSmartLinkEvents';
|
|
14
12
|
import Hyperlink from '../Hyperlink';
|
|
15
|
-
import withErrorBoundary from './error-boundary';
|
|
16
|
-
import { ResolveHyperlink } from './resolve-hyperlink';
|
|
17
13
|
import HyperlinkUnauthorizedView from './unauthorize-view';
|
|
18
14
|
const HyperlinkFallbackComponent = () => null;
|
|
19
15
|
const withValidator = (Component, DefaultComponent) => props => {
|
|
@@ -75,24 +71,4 @@ export const HyperlinkWithSmartLinkResolver = withReactErrorBoundary(withValidat
|
|
|
75
71
|
enforceContext: false
|
|
76
72
|
}), Hyperlink), {
|
|
77
73
|
FallbackComponent: HyperlinkFallbackComponent
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
// Remove on navx-1834-refactor-resolved-hyperlink cleanup
|
|
81
|
-
|
|
82
|
-
const HyperlinkResolver = ({
|
|
83
|
-
href
|
|
84
|
-
}) => {
|
|
85
|
-
const hasSmartCardProvider = !!useContext(SmartCardContext);
|
|
86
|
-
const isSharePointResolveEnabled = FeatureGates.getExperimentValue('platform_editor_resolve_hyperlinks_confluence', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_editor_resolve_hyperlinks_jira', 'isEnabled', false);
|
|
87
|
-
const isGoogleResolveEnabled = FeatureGates.getExperimentValue('platform_editor_resolve_google_hyperlinks', 'isEnabled', false);
|
|
88
|
-
const shouldResolveSharePoint = isSharePointDomain(href) && isSharePointResolveEnabled;
|
|
89
|
-
const shouldResolveGoogle = isGoogleDomain(href) && isGoogleResolveEnabled;
|
|
90
|
-
const shouldResolveHyperlink = hasSmartCardProvider && (shouldResolveSharePoint || shouldResolveGoogle);
|
|
91
|
-
if (!shouldResolveHyperlink) {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
return /*#__PURE__*/React.createElement(ResolveHyperlink, {
|
|
95
|
-
href: href
|
|
96
|
-
});
|
|
97
|
-
};
|
|
98
|
-
export default withErrorBoundary(HyperlinkResolver);
|
|
74
|
+
});
|