@atlaskit/smart-card 44.9.10 → 44.9.11
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 +12 -0
- package/dist/cjs/__tests__/vr-tests/__snapshots__/inline-card/inline-card-with-all-card-examples-in-text--default--jfp-magma-platform-lozenge-jump-fix-false.png +0 -0
- package/dist/cjs/__tests__/vr-tests/__snapshots__/inline-card/inline-card-with-all-card-examples-in-text--default--jfp-magma-platform-lozenge-jump-fix-true.png +0 -0
- package/dist/cjs/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-default-state--default.png +0 -0
- package/dist/cjs/state/hooks/use-intersection-observer/index.js +2 -1
- package/dist/cjs/state/hooks/use-smart-link-seen-event/index.js +66 -0
- package/dist/cjs/utils/analytics/SmartLinkAnalyticsContext.js +31 -8
- package/dist/cjs/view/CardWithUrl/card-intersection-observer/index.js +25 -20
- package/dist/cjs/view/CardWithUrl/component-lazy/LazyIntersectionObserverCard.js +24 -4
- package/dist/cjs/view/CardWithUrl/component.js +0 -30
- package/dist/cjs/view/InlineCard/Frame/index.js +3 -2
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/index.js +0 -41
- package/dist/es2019/__tests__/vr-tests/__snapshots__/inline-card/inline-card-with-all-card-examples-in-text--default--jfp-magma-platform-lozenge-jump-fix-false.png +0 -0
- package/dist/es2019/__tests__/vr-tests/__snapshots__/inline-card/inline-card-with-all-card-examples-in-text--default--jfp-magma-platform-lozenge-jump-fix-true.png +0 -0
- package/dist/es2019/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-default-state--default.png +0 -0
- package/dist/es2019/state/hooks/use-intersection-observer/index.js +2 -1
- package/dist/es2019/state/hooks/use-smart-link-seen-event/index.js +60 -0
- package/dist/es2019/utils/analytics/SmartLinkAnalyticsContext.js +28 -6
- package/dist/es2019/view/CardWithUrl/card-intersection-observer/index.js +28 -11
- package/dist/es2019/view/CardWithUrl/component-lazy/LazyIntersectionObserverCard.js +25 -4
- package/dist/es2019/view/CardWithUrl/component.js +1 -31
- package/dist/es2019/view/InlineCard/Frame/index.js +3 -2
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/index.js +1 -40
- package/dist/esm/__tests__/vr-tests/__snapshots__/inline-card/inline-card-with-all-card-examples-in-text--default--jfp-magma-platform-lozenge-jump-fix-false.png +0 -0
- package/dist/esm/__tests__/vr-tests/__snapshots__/inline-card/inline-card-with-all-card-examples-in-text--default--jfp-magma-platform-lozenge-jump-fix-true.png +0 -0
- package/dist/esm/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-default-state--default.png +0 -0
- package/dist/esm/state/hooks/use-intersection-observer/index.js +2 -1
- package/dist/esm/state/hooks/use-smart-link-seen-event/index.js +60 -0
- package/dist/esm/utils/analytics/SmartLinkAnalyticsContext.js +31 -8
- package/dist/esm/view/CardWithUrl/card-intersection-observer/index.js +26 -21
- package/dist/esm/view/CardWithUrl/component-lazy/LazyIntersectionObserverCard.js +24 -4
- package/dist/esm/view/CardWithUrl/component.js +1 -31
- package/dist/esm/view/InlineCard/Frame/index.js +3 -2
- package/dist/esm/view/LinkUrl/HyperlinkResolver/index.js +1 -42
- package/dist/types/state/hooks/use-smart-link-seen-event/index.d.ts +14 -0
- package/dist/types/utils/analytics/SmartLinkAnalyticsContext.d.ts +10 -0
- package/dist/types/view/CardWithUrl/card-intersection-observer/index.d.ts +3 -5
- package/dist/types/view/CardWithUrl/types.d.ts +0 -1
- package/dist/types-ts4.5/state/hooks/use-smart-link-seen-event/index.d.ts +14 -0
- package/dist/types-ts4.5/utils/analytics/SmartLinkAnalyticsContext.d.ts +10 -0
- package/dist/types-ts4.5/view/CardWithUrl/card-intersection-observer/index.d.ts +3 -5
- package/dist/types-ts4.5/view/CardWithUrl/types.d.ts +0 -1
- package/package.json +4 -1
- package/dist/cjs/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-default-state-without-connect-button-functionality--default.png +0 -0
- package/dist/cjs/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-resolved-state-with-feature-flag-enabled-should-show-no-connect-button---default--platform-editor-resolve-hyperlinks-killswitch-false.png +0 -0
- package/dist/cjs/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-resolved-state-with-feature-flag-enabled-should-show-no-connect-button---default--platform-editor-resolve-hyperlinks-killswitch-true.png +0 -0
- package/dist/cjs/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-unauthorized-state-with-connect-button-direct-render---always-visible---default.png +0 -0
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/unauthorize-view.js +0 -30
- package/dist/es2019/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-default-state-without-connect-button-functionality--default.png +0 -0
- package/dist/es2019/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-resolved-state-with-feature-flag-enabled-should-show-no-connect-button---default--platform-editor-resolve-hyperlinks-killswitch-false.png +0 -0
- package/dist/es2019/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-resolved-state-with-feature-flag-enabled-should-show-no-connect-button---default--platform-editor-resolve-hyperlinks-killswitch-true.png +0 -0
- package/dist/es2019/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-unauthorized-state-with-connect-button-direct-render---always-visible---default.png +0 -0
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/unauthorize-view.js +0 -22
- package/dist/esm/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-default-state-without-connect-button-functionality--default.png +0 -0
- package/dist/esm/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-resolved-state-with-feature-flag-enabled-should-show-no-connect-button---default--platform-editor-resolve-hyperlinks-killswitch-false.png +0 -0
- package/dist/esm/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-resolved-state-with-feature-flag-enabled-should-show-no-connect-button---default--platform-editor-resolve-hyperlinks-killswitch-true.png +0 -0
- package/dist/esm/__tests__/vr-tests/__snapshots__/link-url-connect-button/linkurl-unauthorized-state-with-connect-button-direct-render---always-visible---default.png +0 -0
- package/dist/esm/view/LinkUrl/HyperlinkResolver/unauthorize-view.js +0 -23
- package/dist/types/view/LinkUrl/HyperlinkResolver/unauthorize-view.d.ts +0 -10
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/unauthorize-view.d.ts +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
# @atlaskit/smart-card
|
|
2
2
|
|
|
3
|
+
## 44.9.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`657813a2d7397`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/657813a2d7397) -
|
|
8
|
+
Use useRef to prevent CardSSR to re-render on intersecting into viewport
|
|
9
|
+
|
|
3
10
|
## 44.9.10
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
6
13
|
|
|
14
|
+
- [`ebab8f80bfc40`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ebab8f80bfc40) -
|
|
15
|
+
Clean up the platform_linking_bluelink_connect_CONFLUENCE and
|
|
16
|
+
platform_linking_bluelink_connect_jira no ship code
|
|
17
|
+
- [`ebab8f80bfc40`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ebab8f80bfc40) -
|
|
18
|
+
NAVX-3611 Fixing the role for inline card when it's an anchor
|
|
7
19
|
- Updated dependencies
|
|
8
20
|
|
|
9
21
|
## 44.9.9
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
+
var _utils = require("../../../utils");
|
|
8
9
|
// This property enables the intersection observer to be run once the
|
|
9
10
|
// HTML element being observed is within `X` px of the target container it is
|
|
10
11
|
// being compared to. Since the default container is the `document`, we set this
|
|
@@ -33,7 +34,7 @@ var useIntersectionObserver = function useIntersectionObserver(_ref) {
|
|
|
33
34
|
}
|
|
34
35
|
}, []);
|
|
35
36
|
(0, _react.useEffect)(function () {
|
|
36
|
-
if (!ref.current) {
|
|
37
|
+
if (!(0, _utils.isIntersectionObserverSupported)() || !ref.current) {
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
40
|
var intersectionObserver = new IntersectionObserver(onIntersection, {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSmartLinkSeenEvent = useSmartLinkSeenEvent;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _useAnalyticsEvents2 = require("../../../common/analytics/generated/use-analytics-events");
|
|
9
|
+
var _SmartLinkAnalyticsContext = require("../../../utils/analytics/SmartLinkAnalyticsContext");
|
|
10
|
+
var _flexible = require("../../../utils/flexible");
|
|
11
|
+
/**
|
|
12
|
+
* Fires `ui.smartLink.seen` once when a smart link with status `unauthorized`
|
|
13
|
+
* enters the viewport. Uses refs internally so it never causes re-renders,
|
|
14
|
+
* which is important for SSR.
|
|
15
|
+
*/
|
|
16
|
+
function useSmartLinkSeenEvent(_ref) {
|
|
17
|
+
var appearance = _ref.appearance,
|
|
18
|
+
children = _ref.children,
|
|
19
|
+
id = _ref.id,
|
|
20
|
+
ui = _ref.ui,
|
|
21
|
+
_ref$url = _ref.url,
|
|
22
|
+
url = _ref$url === void 0 ? '' : _ref$url;
|
|
23
|
+
var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
|
|
24
|
+
fireEvent = _useAnalyticsEvents.fireEvent;
|
|
25
|
+
var _useSmartLinkAnalytic = (0, _SmartLinkAnalyticsContext.useSmartLinkAnalyticsUtils)(),
|
|
26
|
+
getByUrl = _useSmartLinkAnalytic.getByUrl;
|
|
27
|
+
var getAnalyticsProps = (0, _react.useCallback)(function () {
|
|
28
|
+
var isFlexibleUi = (0, _flexible.isFlexibleUiCard)(children, ui);
|
|
29
|
+
var display = isFlexibleUi ? 'flexible' : appearance;
|
|
30
|
+
return {
|
|
31
|
+
display: display,
|
|
32
|
+
id: id
|
|
33
|
+
};
|
|
34
|
+
}, [appearance, children, id, ui]);
|
|
35
|
+
var statusRef = (0, _react.useRef)();
|
|
36
|
+
var analyticsPropsRef = (0, _react.useRef)(null);
|
|
37
|
+
var hasIntersectedRef = (0, _react.useRef)(false);
|
|
38
|
+
var hasFiredSeenRef = (0, _react.useRef)(false);
|
|
39
|
+
(0, _react.useEffect)(function () {
|
|
40
|
+
analyticsPropsRef.current = getAnalyticsProps();
|
|
41
|
+
}, [getAnalyticsProps]);
|
|
42
|
+
var maybeFireSeenEvent = (0, _react.useCallback)(function () {
|
|
43
|
+
if (!hasFiredSeenRef.current && hasIntersectedRef.current && statusRef.current === 'unauthorized') {
|
|
44
|
+
var payload = getByUrl(url, analyticsPropsRef.current);
|
|
45
|
+
fireEvent('ui.smartLink.seen', payload === null || payload === void 0 ? void 0 : payload.attributes);
|
|
46
|
+
hasFiredSeenRef.current = true;
|
|
47
|
+
}
|
|
48
|
+
}, [fireEvent, getByUrl, url]);
|
|
49
|
+
var onIntersecting = (0, _react.useCallback)(function () {
|
|
50
|
+
if (hasIntersectedRef.current) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
hasIntersectedRef.current = true;
|
|
54
|
+
maybeFireSeenEvent();
|
|
55
|
+
}, [maybeFireSeenEvent]);
|
|
56
|
+
var onStatusSettled = (0, _react.useCallback)(function (status) {
|
|
57
|
+
statusRef.current = status;
|
|
58
|
+
maybeFireSeenEvent();
|
|
59
|
+
}, [maybeFireSeenEvent]);
|
|
60
|
+
return (0, _react.useMemo)(function () {
|
|
61
|
+
return {
|
|
62
|
+
onIntersecting: onIntersecting,
|
|
63
|
+
onStatusSettled: onStatusSettled
|
|
64
|
+
};
|
|
65
|
+
}, [onIntersecting, onStatusSettled]);
|
|
66
|
+
}
|
|
@@ -5,11 +5,10 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.useSmartLinkAnalyticsContext = exports.SmartLinkAnalyticsContext = void 0;
|
|
8
|
+
exports.useSmartLinkAnalyticsUtils = exports.useSmartLinkAnalyticsContext = exports.SmartLinkAnalyticsContext = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
12
|
-
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
13
12
|
var _resolvedAttributes = require("@atlaskit/link-analytics/resolved-attributes");
|
|
14
13
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
15
14
|
var _linkingCommon = require("@atlaskit/linking-common");
|
|
@@ -34,12 +33,9 @@ var getSmartLinkAnalyticsContext = function getSmartLinkAnalyticsContext(_ref) {
|
|
|
34
33
|
status = _ref.status,
|
|
35
34
|
url = _ref.url,
|
|
36
35
|
error = _ref.error;
|
|
37
|
-
var
|
|
38
|
-
var resolvedAttributes = isHyperlinkConnectExperimentEnabled ? getExtendedResolvedAttributes({
|
|
36
|
+
var resolvedAttributes = getExtendedResolvedAttributes({
|
|
39
37
|
url: url,
|
|
40
38
|
displayCategory: display === 'url' ? 'link' : 'smartLink'
|
|
41
|
-
}, response, status, error) : getExtendedResolvedAttributes({
|
|
42
|
-
url: url
|
|
43
39
|
}, response, status, error);
|
|
44
40
|
return {
|
|
45
41
|
source: source,
|
|
@@ -53,13 +49,40 @@ var getSmartLinkAnalyticsContext = function getSmartLinkAnalyticsContext(_ref) {
|
|
|
53
49
|
* Provides an analytics context data to supply attributes to events based on a URL
|
|
54
50
|
* and the link state in the store
|
|
55
51
|
*/
|
|
52
|
+
var useSmartLinkAnalyticsUtils = exports.useSmartLinkAnalyticsUtils = function useSmartLinkAnalyticsUtils() {
|
|
53
|
+
var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
|
|
54
|
+
store = _useSmartLinkContext.store;
|
|
55
|
+
var getByUrl = (0, _react.useCallback)(function (url, props) {
|
|
56
|
+
var state = store ? (0, _linkingCommon.getUrl)(store, url) : undefined;
|
|
57
|
+
return getSmartLinkAnalyticsContext({
|
|
58
|
+
display: props === null || props === void 0 ? void 0 : props.display,
|
|
59
|
+
id: props === null || props === void 0 ? void 0 : props.id,
|
|
60
|
+
response: state === null || state === void 0 ? void 0 : state.details,
|
|
61
|
+
source: props === null || props === void 0 ? void 0 : props.source,
|
|
62
|
+
status: state === null || state === void 0 ? void 0 : state.status,
|
|
63
|
+
url: url,
|
|
64
|
+
error: state === null || state === void 0 ? void 0 : state.error
|
|
65
|
+
});
|
|
66
|
+
}, [store]);
|
|
67
|
+
return (0, _react.useMemo)(function () {
|
|
68
|
+
return {
|
|
69
|
+
getByUrl: getByUrl
|
|
70
|
+
};
|
|
71
|
+
}, [getByUrl]);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Provides an analytics context data to supply attributes to events based on a URL
|
|
76
|
+
* and the link state in the store
|
|
77
|
+
* @deprecated Use useSmartLinkAnalyticsUtils instead
|
|
78
|
+
*/
|
|
56
79
|
var useSmartLinkAnalyticsContext = exports.useSmartLinkAnalyticsContext = function useSmartLinkAnalyticsContext(_ref2) {
|
|
57
80
|
var display = _ref2.display,
|
|
58
81
|
id = _ref2.id,
|
|
59
82
|
source = _ref2.source,
|
|
60
83
|
url = _ref2.url;
|
|
61
|
-
var
|
|
62
|
-
store =
|
|
84
|
+
var _useSmartLinkContext2 = (0, _linkProvider.useSmartLinkContext)(),
|
|
85
|
+
store = _useSmartLinkContext2.store;
|
|
63
86
|
var state = store ? (0, _linkingCommon.getUrl)(store, url) : undefined;
|
|
64
87
|
return (0, _react.useMemo)(function () {
|
|
65
88
|
return getSmartLinkAnalyticsContext({
|
|
@@ -7,22 +7,36 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
11
|
var _useIntersectionObserver = _interopRequireDefault(require("../../../state/hooks/use-intersection-observer"));
|
|
13
|
-
var
|
|
12
|
+
var _useSmartLinkSeenEvent = require("../../../state/hooks/use-smart-link-seen-event");
|
|
14
13
|
var _cardLoaderWrapper = _interopRequireDefault(require("../card-loader-wrapper"));
|
|
15
14
|
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); }
|
|
16
15
|
var withCardIntersectionObserver = function withCardIntersectionObserver(Component) {
|
|
17
16
|
return function (props) {
|
|
18
17
|
// TODO: NAVX-4682: Add feature parity to LazyIntersectionObserverCard for no lazy loading
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
var appearance = props.appearance,
|
|
19
|
+
children = props.children,
|
|
20
|
+
id = props.id,
|
|
21
|
+
onErrorCallback = props.onError,
|
|
22
|
+
ui = props.ui,
|
|
23
|
+
_props$url = props.url,
|
|
24
|
+
url = _props$url === void 0 ? '' : _props$url;
|
|
25
|
+
var _useSmartLinkSeenEven = (0, _useSmartLinkSeenEvent.useSmartLinkSeenEvent)({
|
|
26
|
+
appearance: appearance,
|
|
27
|
+
children: children,
|
|
28
|
+
id: id,
|
|
29
|
+
ui: ui,
|
|
30
|
+
url: url
|
|
31
|
+
}),
|
|
32
|
+
onIntersecting = _useSmartLinkSeenEven.onIntersecting,
|
|
33
|
+
onStatusSettled = _useSmartLinkSeenEven.onStatusSettled;
|
|
34
|
+
var onError = (0, _react.useCallback)(function (data) {
|
|
35
|
+
if (data !== null && data !== void 0 && data.status) {
|
|
36
|
+
onStatusSettled(data.status);
|
|
37
|
+
}
|
|
38
|
+
onErrorCallback === null || onErrorCallback === void 0 || onErrorCallback(data);
|
|
39
|
+
}, [onStatusSettled, onErrorCallback]);
|
|
26
40
|
var ref = (0, _useIntersectionObserver.default)({
|
|
27
41
|
onIntersecting: onIntersecting
|
|
28
42
|
});
|
|
@@ -30,17 +44,8 @@ var withCardIntersectionObserver = function withCardIntersectionObserver(Compone
|
|
|
30
44
|
appearance: props.appearance,
|
|
31
45
|
ref: ref
|
|
32
46
|
}, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {
|
|
33
|
-
|
|
47
|
+
onError: onError
|
|
34
48
|
})));
|
|
35
49
|
};
|
|
36
50
|
};
|
|
37
|
-
var
|
|
38
|
-
return function (props) {
|
|
39
|
-
return /*#__PURE__*/_react.default.createElement(_cardLoaderWrapper.default, {
|
|
40
|
-
appearance: props.appearance
|
|
41
|
-
}, /*#__PURE__*/_react.default.createElement(Component, props));
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
var _default = exports.default = function _default(Component) {
|
|
45
|
-
return (0, _utils.isIntersectionObserverSupported)() ? withCardIntersectionObserver(Component) : withCardIntersectionObserverFallback(Component);
|
|
46
|
-
};
|
|
51
|
+
var _default = exports.default = withCardIntersectionObserver;
|
|
@@ -13,6 +13,7 @@ var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react
|
|
|
13
13
|
var _state = require("../../../state");
|
|
14
14
|
var _ufoExperiences = require("../../../state/analytics/ufoExperiences");
|
|
15
15
|
var _useIntersectionObserver = _interopRequireDefault(require("../../../state/hooks/use-intersection-observer"));
|
|
16
|
+
var _useSmartLinkSeenEvent = require("../../../state/hooks/use-smart-link-seen-event");
|
|
16
17
|
var _shouldSample = require("../../../utils/shouldSample");
|
|
17
18
|
var _cardLoaderWrapper = _interopRequireDefault(require("../card-loader-wrapper"));
|
|
18
19
|
var _component = require("../component");
|
|
@@ -82,25 +83,44 @@ var LazyIntersectionObserverCardNew = function LazyIntersectionObserverCardNew(p
|
|
|
82
83
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 1),
|
|
83
84
|
shouldSendRenderedUFOEvent = _useState8[0];
|
|
84
85
|
var appearance = props.appearance,
|
|
85
|
-
|
|
86
|
-
id = props.id
|
|
86
|
+
children = props.children,
|
|
87
|
+
id = props.id,
|
|
88
|
+
onErrorCallback = props.onError,
|
|
89
|
+
ui = props.ui,
|
|
90
|
+
url = props.url;
|
|
87
91
|
var prefetch = (0, _state.usePrefetch)(url);
|
|
88
92
|
var ComponentObserver = appearance === 'inline' ? 'span' : 'div';
|
|
93
|
+
var _useSmartLinkSeenEven = (0, _useSmartLinkSeenEvent.useSmartLinkSeenEvent)({
|
|
94
|
+
appearance: appearance,
|
|
95
|
+
children: children,
|
|
96
|
+
id: id,
|
|
97
|
+
ui: ui,
|
|
98
|
+
url: url
|
|
99
|
+
}),
|
|
100
|
+
onSeenIntersecting = _useSmartLinkSeenEven.onIntersecting,
|
|
101
|
+
onStatusSettled = _useSmartLinkSeenEven.onStatusSettled;
|
|
102
|
+
var onError = (0, _react.useCallback)(function (data) {
|
|
103
|
+
if (data !== null && data !== void 0 && data.status) {
|
|
104
|
+
onStatusSettled(data.status);
|
|
105
|
+
}
|
|
106
|
+
onErrorCallback === null || onErrorCallback === void 0 || onErrorCallback(data);
|
|
107
|
+
}, [onStatusSettled, onErrorCallback]);
|
|
89
108
|
var onIntersection = (0, _react.useCallback)(function (isIntersecting) {
|
|
90
109
|
if (isIntersecting) {
|
|
91
110
|
if (shouldSendRenderedUFOEvent) {
|
|
92
111
|
(0, _ufoExperiences.startUfoExperience)('smart-link-rendered', id);
|
|
93
112
|
}
|
|
113
|
+
onSeenIntersecting();
|
|
94
114
|
setIsIntersected(true);
|
|
95
115
|
} else {
|
|
96
116
|
prefetch();
|
|
97
117
|
}
|
|
98
|
-
}, [id, prefetch, shouldSendRenderedUFOEvent]);
|
|
118
|
+
}, [id, onSeenIntersecting, prefetch, shouldSendRenderedUFOEvent]);
|
|
99
119
|
var ref = (0, _useIntersectionObserver.default)({
|
|
100
120
|
onIntersection: onIntersection
|
|
101
121
|
});
|
|
102
122
|
var content = isIntersected ? /*#__PURE__*/_react.default.createElement(_component.CardWithUrlContent, (0, _extends2.default)({}, props, {
|
|
103
|
-
|
|
123
|
+
onError: onError
|
|
104
124
|
})) : /*#__PURE__*/_react.default.createElement(ComponentObserver, {
|
|
105
125
|
ref: ref
|
|
106
126
|
}, /*#__PURE__*/_react.default.createElement(_LoadingCardLink.LoadingCardLink, props));
|
|
@@ -43,7 +43,6 @@ function Component(_ref) {
|
|
|
43
43
|
url = _ref.url,
|
|
44
44
|
isSelected = _ref.isSelected,
|
|
45
45
|
isHovered = _ref.isHovered,
|
|
46
|
-
isIntersected = _ref.isIntersected,
|
|
47
46
|
frameStyle = _ref.frameStyle,
|
|
48
47
|
platform = _ref.platform,
|
|
49
48
|
onClick = _ref.onClick,
|
|
@@ -71,7 +70,6 @@ function Component(_ref) {
|
|
|
71
70
|
createAnalyticsEvent = _useAnalyticsEventsNe.createAnalyticsEvent;
|
|
72
71
|
var _useAnalyticsEvents = (0, _useAnalyticsEvents3.useAnalyticsEvents)(),
|
|
73
72
|
fireEvent = _useAnalyticsEvents.fireEvent;
|
|
74
|
-
var hasFiredSeenRef = (0, _react.useRef)(false);
|
|
75
73
|
var isFlexibleUi = (0, _react.useMemo)(function () {
|
|
76
74
|
return (0, _flexible.isFlexibleUiCard)(children, ui);
|
|
77
75
|
}, [children, ui]);
|
|
@@ -229,19 +227,6 @@ function Component(_ref) {
|
|
|
229
227
|
}));
|
|
230
228
|
}
|
|
231
229
|
}, [appearance, extensionKey, fireEvent, id, isFlexibleUi, rovoActionsCtaShown, state.status]);
|
|
232
|
-
|
|
233
|
-
// Fire smartLink seen event once on a successful render card is in the viewport
|
|
234
|
-
(0, _react.useEffect)(function () {
|
|
235
|
-
if ((0, _platformFeatureFlags.fg)('platform_sl_event_ui_seen')) {
|
|
236
|
-
if (state.status !== 'unauthorized') return;
|
|
237
|
-
if (isIntersected && !hasFiredSeenRef.current) {
|
|
238
|
-
fireEvent('ui.smartLink.seen', {
|
|
239
|
-
display: appearance
|
|
240
|
-
});
|
|
241
|
-
hasFiredSeenRef.current = true;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}, [state.status, isIntersected, fireEvent, appearance]);
|
|
245
230
|
var onIframeDwell = (0, _react.useCallback)(function (dwellTime, dwellPercentVisible) {
|
|
246
231
|
fireEvent('ui.smartLinkIframe.dwelled', {
|
|
247
232
|
id: id,
|
|
@@ -364,7 +349,6 @@ function ComponentUpdated(_ref2) {
|
|
|
364
349
|
url = _ref2.url,
|
|
365
350
|
isSelected = _ref2.isSelected,
|
|
366
351
|
isHovered = _ref2.isHovered,
|
|
367
|
-
isIntersected = _ref2.isIntersected,
|
|
368
352
|
frameStyle = _ref2.frameStyle,
|
|
369
353
|
platform = _ref2.platform,
|
|
370
354
|
onClick = _ref2.onClick,
|
|
@@ -392,7 +376,6 @@ function ComponentUpdated(_ref2) {
|
|
|
392
376
|
createAnalyticsEvent = _useAnalyticsEventsNe2.createAnalyticsEvent;
|
|
393
377
|
var _useAnalyticsEvents2 = (0, _useAnalyticsEvents3.useAnalyticsEvents)(),
|
|
394
378
|
fireEvent = _useAnalyticsEvents2.fireEvent;
|
|
395
|
-
var hasFiredSeenRef = (0, _react.useRef)(false);
|
|
396
379
|
var isFlexibleUi = (0, _react.useMemo)(function () {
|
|
397
380
|
return (0, _flexible.isFlexibleUiCard)(children, ui);
|
|
398
381
|
}, [children, ui]);
|
|
@@ -550,19 +533,6 @@ function ComponentUpdated(_ref2) {
|
|
|
550
533
|
}));
|
|
551
534
|
}
|
|
552
535
|
}, [appearance, extensionKey, fireEvent, id, isFlexibleUi, rovoActionsCtaShown, state.status]);
|
|
553
|
-
|
|
554
|
-
// Fire smartLink seen event once on a successful render card is in the viewport
|
|
555
|
-
(0, _react.useEffect)(function () {
|
|
556
|
-
if ((0, _platformFeatureFlags.fg)('platform_sl_event_ui_seen')) {
|
|
557
|
-
if (state.status !== 'unauthorized') return;
|
|
558
|
-
if (isIntersected && !hasFiredSeenRef.current) {
|
|
559
|
-
fireEvent('ui.smartLink.seen', {
|
|
560
|
-
display: appearance
|
|
561
|
-
});
|
|
562
|
-
hasFiredSeenRef.current = true;
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
}, [state.status, isIntersected, fireEvent, appearance]);
|
|
566
536
|
var onIframeDwell = (0, _react.useCallback)(function (dwellTime, dwellPercentVisible) {
|
|
567
537
|
fireEvent('ui.smartLinkIframe.dwelled', {
|
|
568
538
|
id: id,
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.Frame = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
9
10
|
var _useLinkClicked = require("../../../state/analytics/useLinkClicked");
|
|
10
11
|
var _styled = require("./styled");
|
|
11
12
|
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); }
|
|
@@ -48,8 +49,8 @@ var Frame = exports.Frame = /*#__PURE__*/(0, _react.forwardRef)(function (props,
|
|
|
48
49
|
withoutBackground: withoutBackground,
|
|
49
50
|
isSelected: isSelected,
|
|
50
51
|
isInteractive: isInteractive,
|
|
51
|
-
tabIndex: isInteractive ? 0 : undefined,
|
|
52
|
-
role: isInteractive ? 'button' : undefined,
|
|
52
|
+
tabIndex: isInteractive && ((0, _platformFeatureFlags.fg)('navx-3611-inline-card-a11y-role-fix') ? !link : true) ? 0 : undefined,
|
|
53
|
+
role: isInteractive && ((0, _platformFeatureFlags.fg)('navx-3611-inline-card-a11y-role-fix') ? !link : true) ? 'button' : undefined,
|
|
53
54
|
onClick: handleClick,
|
|
54
55
|
onMouseDown: handleMouseDown,
|
|
55
56
|
onKeyPress: handleKeyPress,
|
|
@@ -11,8 +11,6 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _reactErrorBoundary = require("react-error-boundary");
|
|
13
13
|
var _reactIntl = require("react-intl");
|
|
14
|
-
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
15
|
-
var _linkExtractors = require("@atlaskit/link-extractors");
|
|
16
14
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
15
|
var _helpers = require("../../../state/helpers");
|
|
18
16
|
var _useResolveHyperlink2 = _interopRequireDefault(require("../../../state/hooks/use-resolve-hyperlink"));
|
|
@@ -21,7 +19,6 @@ var _SmartLinkAnalyticsContext = require("../../../utils/analytics/SmartLinkAnal
|
|
|
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 _unauthorizeView = _interopRequireDefault(require("./unauthorize-view"));
|
|
25
22
|
var _excluded = ["onClick"];
|
|
26
23
|
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); }
|
|
27
24
|
var HyperlinkFallbackComponent = function HyperlinkFallbackComponent() {
|
|
@@ -42,9 +39,7 @@ var HyperlinkWithSmartLinkResolverInner = function HyperlinkWithSmartLinkResolve
|
|
|
42
39
|
var _useResolveHyperlink = (0, _useResolveHyperlink2.default)({
|
|
43
40
|
href: props.href || ''
|
|
44
41
|
}),
|
|
45
|
-
actions = _useResolveHyperlink.actions,
|
|
46
42
|
state = _useResolveHyperlink.state;
|
|
47
|
-
var services = (0, _helpers.getServices)(state === null || state === void 0 ? void 0 : state.details);
|
|
48
43
|
var thirdPartyARI = (0, _helpers.getThirdPartyARI)(state === null || state === void 0 ? void 0 : state.details);
|
|
49
44
|
var firstPartyIdentifier = (0, _helpers.getFirstPartyIdentifier)();
|
|
50
45
|
var fire3PClickEvent = (0, _platformFeatureFlags.fg)('platform_smartlink_3pclick_analytics') ?
|
|
@@ -59,42 +54,6 @@ var HyperlinkWithSmartLinkResolverInner = function HyperlinkWithSmartLinkResolve
|
|
|
59
54
|
}
|
|
60
55
|
onClickCallback === null || onClickCallback === void 0 || onClickCallback(e);
|
|
61
56
|
}, [onClickCallback, fire3PClickEvent, state === null || state === void 0 ? void 0 : state.status]);
|
|
62
|
-
var onAuthorize = (0, _react.useCallback)(function () {
|
|
63
|
-
return actions.authorize('url');
|
|
64
|
-
}, [actions]);
|
|
65
|
-
var shouldRenderConnectBtn = function shouldRenderConnectBtn() {
|
|
66
|
-
if (!props.children || !Array.isArray(props.children) || props.children.length === 0) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
var firstChild = props.children[0];
|
|
70
|
-
try {
|
|
71
|
-
var _firstChild$props;
|
|
72
|
-
// Check if first child has a string matching href
|
|
73
|
-
if (typeof firstChild === 'string') {
|
|
74
|
-
return props.href === firstChild;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Check if first child has another child object containing matching href. This aligns with the behavior of the TextWrapper component used by editor to render link nodes
|
|
78
|
-
if (firstChild !== null && firstChild !== void 0 && (_firstChild$props = firstChild.props) !== null && _firstChild$props !== void 0 && _firstChild$props.children && typeof firstChild.props.children === 'string') {
|
|
79
|
-
return props.href === firstChild.props.children;
|
|
80
|
-
}
|
|
81
|
-
} catch (_) {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
if ((state === null || state === void 0 ? void 0 : state.status) === 'unauthorized' && shouldRenderConnectBtn() && (
|
|
86
|
-
// eslint-disable-next-line @atlaskit/platform/use-recommended-utils -- Statsig migration pending for Bluelink connect experiments
|
|
87
|
-
_featureGateJsClient.default.getExperimentValue('platform_linking_bluelink_connect_confluence', 'isEnabled', false) ||
|
|
88
|
-
// eslint-disable-next-line @atlaskit/platform/use-recommended-utils -- Statsig migration pending for Bluelink connect experiments
|
|
89
|
-
_featureGateJsClient.default.getExperimentValue('platform_linking_bluelink_connect_jira', 'isEnabled', false))) {
|
|
90
|
-
var provider = (0, _linkExtractors.extractSmartLinkProvider)(state === null || state === void 0 ? void 0 : state.details);
|
|
91
|
-
return /*#__PURE__*/_react.default.createElement(_unauthorizeView.default, (0, _extends2.default)({}, props, {
|
|
92
|
-
onAuthorize: services !== null && services !== void 0 && services.length ? onAuthorize : undefined,
|
|
93
|
-
onClick: onClick,
|
|
94
|
-
showConnectBtn: (services === null || services === void 0 ? void 0 : services.length) > 0,
|
|
95
|
-
provider: provider
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
57
|
return /*#__PURE__*/_react.default.createElement(_Hyperlink.default, (0, _extends2.default)({}, props, {
|
|
99
58
|
onClick: onClick
|
|
100
59
|
}));
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
import { isIntersectionObserverSupported } from '../../../utils';
|
|
2
3
|
|
|
3
4
|
// This property enables the intersection observer to be run once the
|
|
4
5
|
// HTML element being observed is within `X` px of the target container it is
|
|
@@ -27,7 +28,7 @@ const useIntersectionObserver = ({
|
|
|
27
28
|
}
|
|
28
29
|
}, []);
|
|
29
30
|
useEffect(() => {
|
|
30
|
-
if (!ref.current) {
|
|
31
|
+
if (!isIntersectionObserverSupported() || !ref.current) {
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
34
|
const intersectionObserver = new IntersectionObserver(onIntersection, {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { useAnalyticsEvents } from '../../../common/analytics/generated/use-analytics-events';
|
|
3
|
+
import { useSmartLinkAnalyticsUtils } from '../../../utils/analytics/SmartLinkAnalyticsContext';
|
|
4
|
+
import { isFlexibleUiCard } from '../../../utils/flexible';
|
|
5
|
+
/**
|
|
6
|
+
* Fires `ui.smartLink.seen` once when a smart link with status `unauthorized`
|
|
7
|
+
* enters the viewport. Uses refs internally so it never causes re-renders,
|
|
8
|
+
* which is important for SSR.
|
|
9
|
+
*/
|
|
10
|
+
export function useSmartLinkSeenEvent({
|
|
11
|
+
appearance,
|
|
12
|
+
children,
|
|
13
|
+
id,
|
|
14
|
+
ui,
|
|
15
|
+
url = ''
|
|
16
|
+
}) {
|
|
17
|
+
const {
|
|
18
|
+
fireEvent
|
|
19
|
+
} = useAnalyticsEvents();
|
|
20
|
+
const {
|
|
21
|
+
getByUrl
|
|
22
|
+
} = useSmartLinkAnalyticsUtils();
|
|
23
|
+
const getAnalyticsProps = useCallback(() => {
|
|
24
|
+
const isFlexibleUi = isFlexibleUiCard(children, ui);
|
|
25
|
+
const display = isFlexibleUi ? 'flexible' : appearance;
|
|
26
|
+
return {
|
|
27
|
+
display,
|
|
28
|
+
id
|
|
29
|
+
};
|
|
30
|
+
}, [appearance, children, id, ui]);
|
|
31
|
+
const statusRef = useRef();
|
|
32
|
+
const analyticsPropsRef = useRef(null);
|
|
33
|
+
const hasIntersectedRef = useRef(false);
|
|
34
|
+
const hasFiredSeenRef = useRef(false);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
analyticsPropsRef.current = getAnalyticsProps();
|
|
37
|
+
}, [getAnalyticsProps]);
|
|
38
|
+
const maybeFireSeenEvent = useCallback(() => {
|
|
39
|
+
if (!hasFiredSeenRef.current && hasIntersectedRef.current && statusRef.current === 'unauthorized') {
|
|
40
|
+
const payload = getByUrl(url, analyticsPropsRef.current);
|
|
41
|
+
fireEvent('ui.smartLink.seen', payload === null || payload === void 0 ? void 0 : payload.attributes);
|
|
42
|
+
hasFiredSeenRef.current = true;
|
|
43
|
+
}
|
|
44
|
+
}, [fireEvent, getByUrl, url]);
|
|
45
|
+
const onIntersecting = useCallback(() => {
|
|
46
|
+
if (hasIntersectedRef.current) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
hasIntersectedRef.current = true;
|
|
50
|
+
maybeFireSeenEvent();
|
|
51
|
+
}, [maybeFireSeenEvent]);
|
|
52
|
+
const onStatusSettled = useCallback(status => {
|
|
53
|
+
statusRef.current = status;
|
|
54
|
+
maybeFireSeenEvent();
|
|
55
|
+
}, [maybeFireSeenEvent]);
|
|
56
|
+
return useMemo(() => ({
|
|
57
|
+
onIntersecting,
|
|
58
|
+
onStatusSettled
|
|
59
|
+
}), [onIntersecting, onStatusSettled]);
|
|
60
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
1
|
+
import React, { useCallback, useMemo } from 'react';
|
|
2
2
|
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
3
|
-
import FeatureGates from '@atlaskit/feature-gate-js-client';
|
|
4
3
|
import { getResolvedAttributes } from '@atlaskit/link-analytics/resolved-attributes';
|
|
5
4
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
6
5
|
import { getUrl } from '@atlaskit/linking-common';
|
|
@@ -24,12 +23,9 @@ const getSmartLinkAnalyticsContext = ({
|
|
|
24
23
|
url,
|
|
25
24
|
error
|
|
26
25
|
}) => {
|
|
27
|
-
const
|
|
28
|
-
const resolvedAttributes = isHyperlinkConnectExperimentEnabled ? getExtendedResolvedAttributes({
|
|
26
|
+
const resolvedAttributes = getExtendedResolvedAttributes({
|
|
29
27
|
url,
|
|
30
28
|
displayCategory: display === 'url' ? 'link' : 'smartLink'
|
|
31
|
-
}, response, status, error) : getExtendedResolvedAttributes({
|
|
32
|
-
url
|
|
33
29
|
}, response, status, error);
|
|
34
30
|
return {
|
|
35
31
|
source,
|
|
@@ -45,6 +41,32 @@ const getSmartLinkAnalyticsContext = ({
|
|
|
45
41
|
* Provides an analytics context data to supply attributes to events based on a URL
|
|
46
42
|
* and the link state in the store
|
|
47
43
|
*/
|
|
44
|
+
export const useSmartLinkAnalyticsUtils = () => {
|
|
45
|
+
const {
|
|
46
|
+
store
|
|
47
|
+
} = useSmartLinkContext();
|
|
48
|
+
const getByUrl = useCallback((url, props) => {
|
|
49
|
+
const state = store ? getUrl(store, url) : undefined;
|
|
50
|
+
return getSmartLinkAnalyticsContext({
|
|
51
|
+
display: props === null || props === void 0 ? void 0 : props.display,
|
|
52
|
+
id: props === null || props === void 0 ? void 0 : props.id,
|
|
53
|
+
response: state === null || state === void 0 ? void 0 : state.details,
|
|
54
|
+
source: props === null || props === void 0 ? void 0 : props.source,
|
|
55
|
+
status: state === null || state === void 0 ? void 0 : state.status,
|
|
56
|
+
url,
|
|
57
|
+
error: state === null || state === void 0 ? void 0 : state.error
|
|
58
|
+
});
|
|
59
|
+
}, [store]);
|
|
60
|
+
return useMemo(() => ({
|
|
61
|
+
getByUrl
|
|
62
|
+
}), [getByUrl]);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Provides an analytics context data to supply attributes to events based on a URL
|
|
67
|
+
* and the link state in the store
|
|
68
|
+
* @deprecated Use useSmartLinkAnalyticsUtils instead
|
|
69
|
+
*/
|
|
48
70
|
export const useSmartLinkAnalyticsContext = ({
|
|
49
71
|
display,
|
|
50
72
|
id,
|