@xo-union/tk-component-header-nav
Version:
65 lines (64 loc) • 2.37 kB
JavaScript
;
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property");
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _tkComponentAnalytics = require("@xo-union/tk-component-analytics");
var _cookieStorage = require("cookie-storage");
const vendorCategoryCodeTrackableSelector = '[data-trackable-vendor-category-code]';
const getSection = (el, contextProperties) => {
if (el.getAttribute('data-trackable-section')) {
return el.getAttribute('data-trackable-section');
}
if (contextProperties.section) {
return contextProperties.section;
}
return 'non-featured';
};
const vendorEventDataFormatter = (el, contextProperties) => {
const data = {};
const cookieStorage = new _cookieStorage.CookieStorage();
const vendorCategoryCode = el.getAttribute('data-trackable-vendor-category-code');
const visitId = cookieStorage.getItem('visit_id');
const visitorId = cookieStorage.getItem('visitor_id');
data.sourceContent = 'universal navigation';
if (vendorCategoryCode) {
data.vendorCategoryCode = vendorCategoryCode;
}
if (visitId) {
data.visitId = visitId;
}
if (visitorId) {
data.visitorId = visitorId;
}
data.section = getSection(el, contextProperties);
return data;
};
const basicEventDataFormatter = (el, contextProperties) => {
const data = {};
data.section = getSection(el, contextProperties);
return data;
};
const useHeaderClickTracker = analyticsProps => {
const vendorClickThroughTracker = (0, _tkComponentAnalytics.useClickTracker)({
trackableSelector: vendorCategoryCodeTrackableSelector,
eventName: 'Click-through to Vendor Category',
eventData: vendorEventDataFormatter,
...analyticsProps,
followStrategy: null
});
const menuInteractionTracker = (0, _tkComponentAnalytics.useClickTracker)({
eventName: 'Menu Interaction',
eventData: basicEventDataFormatter,
...analyticsProps
});
return _react.default.useCallback(event => {
vendorClickThroughTracker(event);
menuInteractionTracker(event);
}, [menuInteractionTracker, vendorClickThroughTracker]);
};
var _default = useHeaderClickTracker;
exports.default = _default;