@atlaskit/smart-card 43.1.0 → 43.1.2

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 43.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`52a78935ac6ef`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/52a78935ac6ef) -
8
+ Adjust experiment exposure logic for platform*linking_bluelink_connect*{product} logic so that the
9
+ experiment related logic only happens behind the gate.
10
+ - Updated dependencies
11
+
12
+ ## 43.1.1
13
+
14
+ ### Patch Changes
15
+
16
+ - [`9fa4acd606891`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9fa4acd606891) -
17
+ Remove experiment gate for sharepoint and google hyperlink resolve
18
+ - Updated dependencies
19
+
3
20
  ## 43.1.0
4
21
 
5
22
  ### Minor Changes
@@ -1,36 +1,25 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.isSharePointDomain = exports.isGoogleDomain = exports.default = void 0;
6
+ exports.shouldResolveUrl = exports.default = void 0;
8
7
  var _react = require("react");
9
- var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
10
8
  var _linkProvider = require("@atlaskit/link-provider");
11
- var isSharePointDomain = exports.isSharePointDomain = function isSharePointDomain(href) {
9
+ var allowedHostnames = ['sharepoint.com', 'onedrive.live.com', 'docs.google.com', 'drive.google.com'];
10
+ var shouldResolveUrl = exports.shouldResolveUrl = function shouldResolveUrl(href) {
12
11
  try {
13
12
  var hostname = new URL(href).hostname.toLowerCase();
14
- return hostname.includes('sharepoint.com') || hostname.includes('onedrive.live.com');
13
+ return allowedHostnames.some(function (allowedHostname) {
14
+ return hostname.includes(allowedHostname);
15
+ });
15
16
  } catch (_unused) {
16
17
  return false;
17
18
  }
18
19
  };
19
- var isGoogleDomain = exports.isGoogleDomain = function isGoogleDomain(href) {
20
- try {
21
- var hostname = new URL(href).hostname.toLowerCase();
22
- return hostname.includes('docs.google.com') || hostname.includes('drive.google.com');
23
- } catch (_unused2) {
24
- return false;
25
- }
26
- };
27
20
  var useResolveHyperlinkValidator = function useResolveHyperlinkValidator() {
28
21
  var href = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
29
22
  var hasSmartCardProvider = !!(0, _react.useContext)(_linkProvider.SmartCardContext);
30
- var isSharePointResolveEnabled = _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_hyperlinks_confluence', 'isEnabled', false) || _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_hyperlinks_jira', 'isEnabled', false);
31
- var isGoogleResolveEnabled = _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_google_hyperlinks', 'isEnabled', false);
32
- var shouldResolveSharePoint = isSharePointDomain(href) && isSharePointResolveEnabled;
33
- var shouldResolveGoogle = isGoogleDomain(href) && isGoogleResolveEnabled;
34
- return hasSmartCardProvider && (shouldResolveSharePoint || shouldResolveGoogle);
23
+ return hasSmartCardProvider && shouldResolveUrl(href);
35
24
  };
36
25
  var _default = exports.default = useResolveHyperlinkValidator;
@@ -230,7 +230,7 @@ var HoverCardComponent = exports.HoverCardComponent = function HoverCardComponen
230
230
  return /*#__PURE__*/_react.default.createElement("span", {
231
231
  ref: parentSpan
232
232
  }, /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, triggerProps, {
233
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events, @atlassian/a11y/mouse-events-have-key-events
233
+ // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
234
234
  onMouseOver: initShowCard
235
235
  // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
236
236
  ,
@@ -43,7 +43,6 @@ var HyperlinkWithSmartLinkResolverInner = function HyperlinkWithSmartLinkResolve
43
43
  var services = (0, _helpers.getServices)(state === null || state === void 0 ? void 0 : state.details);
44
44
  var thirdPartyARI = (0, _helpers.getThirdPartyARI)(state === null || state === void 0 ? void 0 : state.details);
45
45
  var firstPartyIdentifier = (0, _helpers.getFirstPartyIdentifier)();
46
- var isConnectButtonExperimentEnabled = _featureGateJsClient.default.getExperimentValue('platform_linking_bluelink_connect_CONFLUENCE', 'isEnabled', false) || _featureGateJsClient.default.getExperimentValue('platform_linking_bluelink_connect_JIRA', 'isEnabled', false);
47
46
  var fire3PClickEvent = (0, _platformFeatureFlags.fg)('platform_smartlink_3pclick_analytics') ?
48
47
  // eslint-disable-next-line react-hooks/rules-of-hooks
49
48
  (0, _useSmartLinkEvents.useFire3PWorkflowsClickEvent)(firstPartyIdentifier, thirdPartyARI) : undefined;
@@ -56,26 +55,17 @@ var HyperlinkWithSmartLinkResolverInner = function HyperlinkWithSmartLinkResolve
56
55
  }
57
56
  onClickCallback === null || onClickCallback === void 0 || onClickCallback(e);
58
57
  }, [onClickCallback, fire3PClickEvent, state === null || state === void 0 ? void 0 : state.status]);
59
- var onAuthorize = isConnectButtonExperimentEnabled ?
60
- // eslint-disable-next-line react-hooks/rules-of-hooks
61
- (0, _react.useCallback)(function () {
58
+ var onAuthorize = (0, _react.useCallback)(function () {
62
59
  return actions.authorize('hyperlink');
63
- }, [actions]) : undefined;
64
- if (isConnectButtonExperimentEnabled) {
65
- switch (state === null || state === void 0 ? void 0 : state.status) {
66
- case 'unauthorized':
67
- var provider = (0, _linkExtractors.extractSmartLinkProvider)(state === null || state === void 0 ? void 0 : state.details);
68
- return /*#__PURE__*/_react.default.createElement(_unauthorizeView.default, (0, _extends2.default)({}, props, {
69
- onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
70
- onClick: onClick,
71
- showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
72
- provider: provider
73
- }));
74
- default:
75
- return /*#__PURE__*/_react.default.createElement(_Hyperlink.default, (0, _extends2.default)({}, props, {
76
- onClick: onClick
77
- }));
78
- }
60
+ }, [actions]);
61
+ if ((state === null || state === void 0 ? void 0 : state.status) === 'unauthorized' && (_featureGateJsClient.default.getExperimentValue('platform_linking_bluelink_connect_confluence', 'isEnabled', false) || _featureGateJsClient.default.getExperimentValue('platform_linking_bluelink_connect_jira', 'isEnabled', false))) {
62
+ var provider = (0, _linkExtractors.extractSmartLinkProvider)(state === null || state === void 0 ? void 0 : state.details);
63
+ return /*#__PURE__*/_react.default.createElement(_unauthorizeView.default, (0, _extends2.default)({}, props, {
64
+ onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
65
+ onClick: onClick,
66
+ showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
67
+ provider: provider
68
+ }));
79
69
  }
80
70
  return /*#__PURE__*/_react.default.createElement(_Hyperlink.default, (0, _extends2.default)({}, props, {
81
71
  onClick: onClick
@@ -1,28 +1,16 @@
1
1
  import { useContext } from 'react';
2
- import FeatureGates from '@atlaskit/feature-gate-js-client';
3
2
  import { SmartCardContext } from '@atlaskit/link-provider';
4
- export const isSharePointDomain = href => {
3
+ const allowedHostnames = ['sharepoint.com', 'onedrive.live.com', 'docs.google.com', 'drive.google.com'];
4
+ export const shouldResolveUrl = href => {
5
5
  try {
6
6
  const hostname = new URL(href).hostname.toLowerCase();
7
- return hostname.includes('sharepoint.com') || hostname.includes('onedrive.live.com');
8
- } catch {
9
- return false;
10
- }
11
- };
12
- export const isGoogleDomain = href => {
13
- try {
14
- const hostname = new URL(href).hostname.toLowerCase();
15
- return hostname.includes('docs.google.com') || hostname.includes('drive.google.com');
7
+ return allowedHostnames.some(allowedHostname => hostname.includes(allowedHostname));
16
8
  } catch {
17
9
  return false;
18
10
  }
19
11
  };
20
12
  const useResolveHyperlinkValidator = (href = '') => {
21
13
  const hasSmartCardProvider = !!useContext(SmartCardContext);
22
- const isSharePointResolveEnabled = FeatureGates.getExperimentValue('platform_editor_resolve_hyperlinks_confluence', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_editor_resolve_hyperlinks_jira', 'isEnabled', false);
23
- const isGoogleResolveEnabled = FeatureGates.getExperimentValue('platform_editor_resolve_google_hyperlinks', 'isEnabled', false);
24
- const shouldResolveSharePoint = isSharePointDomain(href) && isSharePointResolveEnabled;
25
- const shouldResolveGoogle = isGoogleDomain(href) && isGoogleResolveEnabled;
26
- return hasSmartCardProvider && (shouldResolveSharePoint || shouldResolveGoogle);
14
+ return hasSmartCardProvider && shouldResolveUrl(href);
27
15
  };
28
16
  export default useResolveHyperlinkValidator;
@@ -207,7 +207,7 @@ export const HoverCardComponent = ({
207
207
  }) => /*#__PURE__*/React.createElement("span", {
208
208
  ref: parentSpan
209
209
  }, /*#__PURE__*/React.createElement("span", _extends({}, triggerProps, {
210
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events, @atlassian/a11y/mouse-events-have-key-events
210
+ // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
211
211
  onMouseOver: initShowCard
212
212
  // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
213
213
  ,
@@ -30,7 +30,6 @@ const HyperlinkWithSmartLinkResolverInner = ({
30
30
  const services = getServices(state === null || state === void 0 ? void 0 : state.details);
31
31
  const thirdPartyARI = getThirdPartyARI(state === null || state === void 0 ? void 0 : state.details);
32
32
  const firstPartyIdentifier = getFirstPartyIdentifier();
33
- const isConnectButtonExperimentEnabled = FeatureGates.getExperimentValue('platform_linking_bluelink_connect_CONFLUENCE', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_linking_bluelink_connect_JIRA', 'isEnabled', false);
34
33
  const fire3PClickEvent = fg('platform_smartlink_3pclick_analytics') ?
35
34
  // eslint-disable-next-line react-hooks/rules-of-hooks
36
35
  useFire3PWorkflowsClickEvent(firstPartyIdentifier, thirdPartyARI) : undefined;
@@ -43,24 +42,15 @@ const HyperlinkWithSmartLinkResolverInner = ({
43
42
  }
44
43
  onClickCallback === null || onClickCallback === void 0 ? void 0 : onClickCallback(e);
45
44
  }, [onClickCallback, fire3PClickEvent, state === null || state === void 0 ? void 0 : state.status]);
46
- const onAuthorize = isConnectButtonExperimentEnabled ?
47
- // eslint-disable-next-line react-hooks/rules-of-hooks
48
- useCallback(() => actions.authorize('hyperlink'), [actions]) : undefined;
49
- if (isConnectButtonExperimentEnabled) {
50
- switch (state === null || state === void 0 ? void 0 : state.status) {
51
- case 'unauthorized':
52
- const provider = extractSmartLinkProvider(state === null || state === void 0 ? void 0 : state.details);
53
- return /*#__PURE__*/React.createElement(HyperlinkUnauthorizedView, _extends({}, props, {
54
- onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
55
- onClick: onClick,
56
- showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
57
- provider: provider
58
- }));
59
- default:
60
- return /*#__PURE__*/React.createElement(Hyperlink, _extends({}, props, {
61
- onClick: onClick
62
- }));
63
- }
45
+ const onAuthorize = useCallback(() => actions.authorize('hyperlink'), [actions]);
46
+ if ((state === null || state === void 0 ? void 0 : state.status) === 'unauthorized' && (FeatureGates.getExperimentValue('platform_linking_bluelink_connect_confluence', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_linking_bluelink_connect_jira', 'isEnabled', false))) {
47
+ const provider = extractSmartLinkProvider(state === null || state === void 0 ? void 0 : state.details);
48
+ return /*#__PURE__*/React.createElement(HyperlinkUnauthorizedView, _extends({}, props, {
49
+ onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
50
+ onClick: onClick,
51
+ showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
52
+ provider: provider
53
+ }));
64
54
  }
65
55
  return /*#__PURE__*/React.createElement(Hyperlink, _extends({}, props, {
66
56
  onClick: onClick
@@ -1,29 +1,19 @@
1
1
  import { useContext } from 'react';
2
- import FeatureGates from '@atlaskit/feature-gate-js-client';
3
2
  import { SmartCardContext } from '@atlaskit/link-provider';
4
- export var isSharePointDomain = function isSharePointDomain(href) {
3
+ var allowedHostnames = ['sharepoint.com', 'onedrive.live.com', 'docs.google.com', 'drive.google.com'];
4
+ export var shouldResolveUrl = function shouldResolveUrl(href) {
5
5
  try {
6
6
  var hostname = new URL(href).hostname.toLowerCase();
7
- return hostname.includes('sharepoint.com') || hostname.includes('onedrive.live.com');
7
+ return allowedHostnames.some(function (allowedHostname) {
8
+ return hostname.includes(allowedHostname);
9
+ });
8
10
  } catch (_unused) {
9
11
  return false;
10
12
  }
11
13
  };
12
- export var isGoogleDomain = function isGoogleDomain(href) {
13
- try {
14
- var hostname = new URL(href).hostname.toLowerCase();
15
- return hostname.includes('docs.google.com') || hostname.includes('drive.google.com');
16
- } catch (_unused2) {
17
- return false;
18
- }
19
- };
20
14
  var useResolveHyperlinkValidator = function useResolveHyperlinkValidator() {
21
15
  var href = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
22
16
  var hasSmartCardProvider = !!useContext(SmartCardContext);
23
- var isSharePointResolveEnabled = FeatureGates.getExperimentValue('platform_editor_resolve_hyperlinks_confluence', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_editor_resolve_hyperlinks_jira', 'isEnabled', false);
24
- var isGoogleResolveEnabled = FeatureGates.getExperimentValue('platform_editor_resolve_google_hyperlinks', 'isEnabled', false);
25
- var shouldResolveSharePoint = isSharePointDomain(href) && isSharePointResolveEnabled;
26
- var shouldResolveGoogle = isGoogleDomain(href) && isGoogleResolveEnabled;
27
- return hasSmartCardProvider && (shouldResolveSharePoint || shouldResolveGoogle);
17
+ return hasSmartCardProvider && shouldResolveUrl(href);
28
18
  };
29
19
  export default useResolveHyperlinkValidator;
@@ -221,7 +221,7 @@ export var HoverCardComponent = function HoverCardComponent(_ref) {
221
221
  return /*#__PURE__*/React.createElement("span", {
222
222
  ref: parentSpan
223
223
  }, /*#__PURE__*/React.createElement("span", _extends({}, triggerProps, {
224
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events, @atlassian/a11y/mouse-events-have-key-events
224
+ // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
225
225
  onMouseOver: initShowCard
226
226
  // eslint-disable-next-line @atlassian/a11y/mouse-events-have-key-events
227
227
  ,
@@ -34,7 +34,6 @@ var HyperlinkWithSmartLinkResolverInner = function HyperlinkWithSmartLinkResolve
34
34
  var services = getServices(state === null || state === void 0 ? void 0 : state.details);
35
35
  var thirdPartyARI = getThirdPartyARI(state === null || state === void 0 ? void 0 : state.details);
36
36
  var firstPartyIdentifier = getFirstPartyIdentifier();
37
- var isConnectButtonExperimentEnabled = FeatureGates.getExperimentValue('platform_linking_bluelink_connect_CONFLUENCE', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_linking_bluelink_connect_JIRA', 'isEnabled', false);
38
37
  var fire3PClickEvent = fg('platform_smartlink_3pclick_analytics') ?
39
38
  // eslint-disable-next-line react-hooks/rules-of-hooks
40
39
  useFire3PWorkflowsClickEvent(firstPartyIdentifier, thirdPartyARI) : undefined;
@@ -47,26 +46,17 @@ var HyperlinkWithSmartLinkResolverInner = function HyperlinkWithSmartLinkResolve
47
46
  }
48
47
  onClickCallback === null || onClickCallback === void 0 || onClickCallback(e);
49
48
  }, [onClickCallback, fire3PClickEvent, state === null || state === void 0 ? void 0 : state.status]);
50
- var onAuthorize = isConnectButtonExperimentEnabled ?
51
- // eslint-disable-next-line react-hooks/rules-of-hooks
52
- useCallback(function () {
49
+ var onAuthorize = useCallback(function () {
53
50
  return actions.authorize('hyperlink');
54
- }, [actions]) : undefined;
55
- if (isConnectButtonExperimentEnabled) {
56
- switch (state === null || state === void 0 ? void 0 : state.status) {
57
- case 'unauthorized':
58
- var provider = extractSmartLinkProvider(state === null || state === void 0 ? void 0 : state.details);
59
- return /*#__PURE__*/React.createElement(HyperlinkUnauthorizedView, _extends({}, props, {
60
- onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
61
- onClick: onClick,
62
- showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
63
- provider: provider
64
- }));
65
- default:
66
- return /*#__PURE__*/React.createElement(Hyperlink, _extends({}, props, {
67
- onClick: onClick
68
- }));
69
- }
51
+ }, [actions]);
52
+ if ((state === null || state === void 0 ? void 0 : state.status) === 'unauthorized' && (FeatureGates.getExperimentValue('platform_linking_bluelink_connect_confluence', 'isEnabled', false) || FeatureGates.getExperimentValue('platform_linking_bluelink_connect_jira', 'isEnabled', false))) {
53
+ var provider = extractSmartLinkProvider(state === null || state === void 0 ? void 0 : state.details);
54
+ return /*#__PURE__*/React.createElement(HyperlinkUnauthorizedView, _extends({}, props, {
55
+ onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
56
+ onClick: onClick,
57
+ showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
58
+ provider: provider
59
+ }));
70
60
  }
71
61
  return /*#__PURE__*/React.createElement(Hyperlink, _extends({}, props, {
72
62
  onClick: onClick
@@ -1,4 +1,3 @@
1
- export declare const isSharePointDomain: (href: string) => boolean;
2
- export declare const isGoogleDomain: (href: string) => boolean;
1
+ export declare const shouldResolveUrl: (href: string) => boolean;
3
2
  declare const useResolveHyperlinkValidator: (href?: string) => boolean;
4
3
  export default useResolveHyperlinkValidator;
@@ -1,4 +1,3 @@
1
- export declare const isSharePointDomain: (href: string) => boolean;
2
- export declare const isGoogleDomain: (href: string) => boolean;
1
+ export declare const shouldResolveUrl: (href: string) => boolean;
3
2
  declare const useResolveHyperlinkValidator: (href?: string) => boolean;
4
3
  export default useResolveHyperlinkValidator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "43.1.0",
3
+ "version": "43.1.2",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -29,7 +29,7 @@
29
29
  "@atlaskit/afm-i18n-platform-linking-platform-smart-card": "2.6.0",
30
30
  "@atlaskit/analytics-gas-types": "^5.1.0",
31
31
  "@atlaskit/analytics-next": "^11.1.0",
32
- "@atlaskit/avatar": "^25.3.0",
32
+ "@atlaskit/avatar": "^25.4.0",
33
33
  "@atlaskit/avatar-group": "^12.3.0",
34
34
  "@atlaskit/badge": "^18.2.0",
35
35
  "@atlaskit/button": "^23.5.0",
@@ -59,7 +59,7 @@
59
59
  "@atlaskit/logo": "^19.9.0",
60
60
  "@atlaskit/lozenge": "^13.0.0",
61
61
  "@atlaskit/menu": "^8.4.0",
62
- "@atlaskit/modal-dialog": "^14.4.0",
62
+ "@atlaskit/modal-dialog": "^14.5.0",
63
63
  "@atlaskit/outbound-auth-flow-client": "^3.4.0",
64
64
  "@atlaskit/platform-feature-flags": "^1.1.0",
65
65
  "@atlaskit/popup": "^4.4.0",