@redocly/theme
Version:
Shared UI components lib
64 lines • 2.73 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useBannerTelemetry = useBannerTelemetry;
const react_1 = require("react");
const use_theme_hooks_1 = require("./use-theme-hooks");
const noop = () => { };
const noopLink = (_href) => { };
function getCurrentPageUri() {
return window.location.href;
}
function useBannerTelemetry(displayBanner) {
const { useTelemetry } = (0, use_theme_hooks_1.useThemeHooks)();
const telemetry = useTelemetry();
return (0, react_1.useMemo)(() => {
if (!displayBanner) {
return {
sendBannerViewedMessage: noop,
sendBannerDismissedMessage: noop,
sendBannerLinkClickedMessage: noopLink,
};
}
const bannerUri = 'urn:redocly:realm:ui:banner:banner-id';
const payload = {
id: 'banner-id',
object: 'banner',
uri: bannerUri,
trackingId: displayBanner.trackingId,
hash: displayBanner.hash,
color: displayBanner.color,
target: displayBanner.target,
dismissible: displayBanner.dismissible,
};
return {
sendBannerViewedMessage: () => {
const pageUri = getCurrentPageUri();
const page = { id: pageUri, object: 'page', uri: pageUri };
telemetry.sendBannerViewedMessage([payload, page]);
},
sendBannerDismissedMessage: () => {
const pageUri = getCurrentPageUri();
const page = { id: pageUri, object: 'page', uri: pageUri };
const { dismissible: _ } = payload, dismissedPayload = __rest(payload, ["dismissible"]);
telemetry.sendBannerDismissedMessage([dismissedPayload, page]);
},
sendBannerLinkClickedMessage: (href) => {
const pageUri = getCurrentPageUri();
const page = { id: pageUri, object: 'page', uri: pageUri };
telemetry.sendBannerLinkClickedMessage([Object.assign(Object.assign({}, payload), { href }), page]);
},
};
}, [displayBanner, telemetry]);
}
//# sourceMappingURL=use-banner-telemetry.js.map