UNPKG

@xo-union/tk-component-header-nav

Version:
65 lines (64 loc) 2.37 kB
"use strict"; 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;