(this.dynamicContentWrapper = el)} />\n {this.dynamicContentWrapper && this.state.portalElementId && createPortal(\n
,\n this.dynamicContentWrapper.querySelector(`#${this.state.portalElementId}`)\n )}\n \n );\n }\n\n\n}","import React, {useEffect} from \"react\";\nimport {parseCookies, setCookie} from \"../base/cookieHelper\";\nimport AdBannersApi from \"../api/adBanners\";\n\nconst AdsImpressionsTracker = () => {\n\n useEffect(() => {\n document.querySelectorAll('.ad-track-wrapper').forEach((element) => {\n detectElementVisibility(element);\n initTrackClick(element);\n });\n }, []);\n\n const detectElementVisibility = (element) => {\n const bannerId = element.getAttribute('data-ad-id');\n\n const observer = new IntersectionObserver(([entry]) => {\n if(entry.isIntersecting === true){\n trackImpression(bannerId);\n observer.disconnect();\n }\n\n });\n observer.observe(element);\n };\n\n const initTrackClick = (element) => {\n const bannerId = element.getAttribute('data-ad-id');\n element.addEventListener('click', (e) => trackClick(e, bannerId), false);\n };\n\n const trackClick = (e, bannerId) => {\n let clickedBanners = parseCookies('ca_ads_c', []);\n if (clickedBanners.indexOf(bannerId) < 0 && e.target.matches('a, a *')) {\n clickedBanners.push(bannerId);\n setCookie('ca_ads_c', clickedBanners);\n AdBannersApi.trackClick(bannerId)\n }\n };\n\n const trackImpression = (bannerId) => {\n let showedBanners = parseCookies('ca_ads', []);\n if (showedBanners.indexOf(bannerId) < 0){\n showedBanners.push(bannerId);\n setCookie('ca_ads', showedBanners);\n AdBannersApi.trackImpression(bannerId);\n }\n };\n\n return null;\n};\nexport default AdsImpressionsTracker;","import React from 'react';\nimport SearchBox from \"../search/field\";\nimport SubscribeButtonHandler from \"../subscriptions/handler\";\n\nclass Navigation extends React.Component {\n\n constructor(props) {\n super(props);\n this.toggleMenu = document.querySelector('#toggleMenu');\n this.bodyElement = document.querySelector('body');\n }\n\n componentDidMount() {\n if (this.toggleMenu) {\n this.toggleMenu.addEventListener('click', this.onClick,false);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n }\n\n open = () => {\n this.toggleMenu.classList.add('active');\n this.bodyElement.classList.add('active-overlay');\n window.addEventListener('resize', this.onResize);\n };\n\n close = () => {\n this.toggleMenu.classList.remove('active');\n this.bodyElement.classList.remove('active-overlay');\n window.removeEventListener('resize', this.onResize);\n };\n\n onClick = () => {\n if (this.bodyElement.classList.contains('active-overlay')) {\n this.close();\n } else {\n this.open();\n }\n };\n\n onResize = () => {\n if (window.matchMedia('(min-width: 1025px)').matches && this.bodyElement.classList.contains('active-overlay')) {\n this.close();\n }\n };\n\n renderLink = (link) => {\n let linkOptions = {className: 'overlay-sub-sat pad-top-0'};\n if (link.blank) { linkOptions['target'] = '_blank' }\n return (\n {link.name.toLocaleUpperCase()}\n )\n };\n\n renderTopSection = () => {\n return (\n
\n

\n
\n
\n
)\n };\n\n render() {\n return (\n