{"version":3,"file":"../assets/js/main.js","mappings":";;;;;;;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,EAAE,gBAAgB;AACvC,kCAAkC,EAAE,KAAK;AACzC;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,iDAAiD;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,4CAA4C;AAC5C,WAAW;AACX,OAAO;AACP;AACA,EAAE;;;;;;AC1GF;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB,oBAAoB,aAAa,kBAAkB,uCAAuC,qHAAqH,2BAA2B,+CAA+C,yCAAyC,WAAW,yNAAyN,cAAc,sDAAsD,qDAAqD,6CAA6C,6BAA6B,gGAAgG,aAAa,gLAAgL,aAAa,aAAa,4CAA4C,oBAAoB,2CAA2C,uBAAuB,IAAI,iDAAiD,oZAAoZ,iBAAiB,0BAA0B,gEAAgE,wBAAwB,WAAW,sBAAsB,QAAQ,IAAI,yBAAyB,QAAQ,sBAAsB,EAAE,0BAA0B,QAAQ,eAAe,GAAG,wBAAwB,8CAA8C,2EAA2E,cAAc,4EAA4E,2CAA2C,MAAM,wEAAwE,KAAK,4DAA4D,WAAW,QAAQ,mBAAmB,YAAY,gBAAgB,kBAAkB,EAAE,SAAS,kDAAkD,YAAY,sBAAsB,sBAAsB,sBAAsB;;;;;;;;;;;ACJ7iF;AACA;AACA;AACe;AACf;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;AAGA,oBAAoB,sBAAsB;;AAE1C;AACA;AACA;AACA;;AAEA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;AC/De;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA,oBAAoB,0BAA0B;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7ByE;;AAE1D;AACf,kDAAkD,0DAAkB;AACpE,uDAAuD,gEAAwB;AAC/E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,mEAAmE;AACnE;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mEAAmE;AACnE;;AAEA,SAAS;AACT;AACA;;;;;;;;;;;;;;;AC3CA;AACA;AACA;;;;;;;;;;;;;ACHA;AACe;;AAEf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA;;;;;;;;;;;;;;AC3De;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;;;;;;;;;;;AC5De;;AAEf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,oDAAoD,2CAA2C;AAC/F;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,gDAAgD,qCAAqC;AACrF;AACA,KAAK;;AAEL;;;;;;;;;;;;ACvN4C;;AAE5C,iEAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qEAAqE,QAAQ;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mDAAmD,QAAQ;AAC3D;AACA;AACA;;AAEA,2DAA2D,uDAAe;AAC1E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;;ACxCD,iEAAe,aAAa;;AAE5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,yBAAyB,2BAA2B;AACpD,KAAK;;AAEL;;;;;;;;;;;AC3DA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;AChDe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C,iBAAiB;AACjB,cAAc;AACd;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;AAE5D,6EAA6E,uBAAuB;;AAEpG,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL,oBAAoB;AACpB;;AAEA;AACA;AACA;;;;;;;;;;;;AClIA;AACA;AACA;;AAEA;;;AAGe;;AAEf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA,4BAA4B,wCAAwC;AACpE,EAAE;;;AAGF;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;UCtGA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;ACN0B;AACL;AACa;AACO;AACK;AACM;AACF;AACiB;AACpC;AACyB;AACiB;AAClC;AACyB;;AAEhE,mDAAU;AACV,wDAAiB;AACjB,iDAAS;AACT,sDAAa;AACb,qEAAuB;;AAEvB;AACA,IAAI,kEAA4B;AAChC,EAAE;AACF;AACA;;AAEA,8DAAe;;AAEf;AACA,IAAI,yDAAW;AACf,IAAI,+DAAgB;AACpB,IAAI,iEAAkB;AACtB;AACA;AACA,KAAK;AACL,IAAI,2EAA0B;AAC9B,CAAC","sources":["webpack:///./assets/js-src/window.helpers.js","webpack:///./assets/js-src/modernizr.js","webpack:///./assets/js-src/header.js","webpack:///./assets/js-src/lang-chooser.js","webpack:///./assets/js-src/mobile-menu.js","webpack:///./assets/js-src/constants.js","webpack:///./assets/js-src/main-header-search.js","webpack:///./assets/js-src/shadows-on-scroll.js","webpack:///./assets/js-src/header-academy-search.js","webpack:///./assets/js-src/menu.js","webpack:///./assets/js-src/smooth-anchor-scroll.js","webpack:///./assets/js-src/content-visibility-by-country.js","webpack:///./assets/js-src/tracking.js","webpack:///./assets/js-src/logout-from-all-devices.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./assets/js-src/index.js"],"sourcesContent":["\nwindow.isTouchDevice = function () {\n return (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n};\n\nwindow.getWindowWidth = function () {\n return document.body.getBoundingClientRect().width;\n};\n\nwindow.get_device_type = function() {\n if (navigator.userAgent.includes(\"Android\")) {\n return {\n 'type' : 'device-mobile',\n 'os' : 'device-android'\n };\n }\n\n if ( navigator.userAgent.includes(\"iPhone\") || navigator.userAgent.includes(\"iPad\") || navigator.userAgent.includes(\"iPod\")) {\n return {\n 'type' : 'device-mobile',\n 'os' : 'device-ios'\n };\n }\n\n return {\n 'type' : 'device-desktop',\n 'os' : 'device-desktop'\n };\n};\n\nwindow.device_body_class = function() {\n let timerId;\n\n function set_body_class_for_device () {\n clearTimeout(timerId);\n timerId = setTimeout(function() {\n const device = get_device_type();\n if (document.body.etoroDeviceType === device.type) {\n return;\n }\n\n const body = document.body;\n body.classList.remove(body.etoroDeviceType, body.etoroDeviceOS);\n body.classList.add(device.type, device.os);\n body.etoroDeviceType = device.type;\n body.etoroDeviceOS = device.os;\n }, 500);\n }\n\n set_body_class_for_device();\n const resizeObserver = new ResizeObserver(set_body_class_for_device);\n resizeObserver.observe(document.body);\n};\n\nwindow.getCookie = function( name ) {\n const value = `; ${document.cookie}`;\n const parts = value.split( `; ${name}=` );\n if (parts.length === 2) {\n return parts.pop().split( ';' ).shift();\n }\n};\n\nwindow.setCookie = function (c_name, value, exdays) {\n let exdate = new Date();\n exdate.setDate(exdate.getDate() + exdays);\n let c_value = encodeURIComponent(value) +\n ((exdays == null) ? '' : '; expires=' + exdate.toUTCString());\n document.cookie = c_name + '=' + c_value + ';path=/';\n};\n\nwindow.deleteCookie = function (name) {\n setCookie(name, '', -1);\n};\n\nwindow.debounce = (func, delay) => {\n let inDebounce;\n\n return function() {\n const context = this;\n const args = arguments;\n clearTimeout(inDebounce);\n inDebounce = setTimeout(() => func.apply(context, args), delay);\n };\n};\n\nwindow.getOffsetForElements = function () {\n const styles = getComputedStyle(document.body);\n const offsetForAnchors = parseInt(styles.getPropertyValue('--content-offset'), 10);\n return offsetForAnchors;\n}\n\n\nwindow.passiveIfSupported = false;\n\ntry {\n window.addEventListener(\n \"lmTestPassive\",\n null,\n Object.defineProperty({}, \"passive\", {\n get() {\n window.passiveIfSupported = { passive: true };\n },\n })\n );\n} catch (err) {}","/*************************\n * modernizr 3.6.0 (Custom Build)\n * https://modernizr.com/download/?-touchevents-setclasses\n ************************/\n!function(e,n,t){function o(e,n){return typeof e===n}function s(){var e,n,t,s,a,i,r;for(var l in c)if(c.hasOwnProperty(l)){if(e=[],n=c[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t 1) {\n document.body.classList.add('stick-header');\n }\n\n window.addEventListener('scroll', function() {\n const scrollDelta = 100;\n const scrollDirection = (lastScrollY > window.scrollY) ? 'up' : 'down';\n lastScrollY = window.scrollY;\n\n if ( scrollDirection === 'up' && scrollPosition - window.scrollY > scrollDelta ) {\n document.body.dataset.scrollDirection = 'up';\n scrollPosition = window.scrollY;\n }\n\n if ( scrollDirection === 'down' && window.scrollY - scrollPosition > scrollDelta ) {\n document.body.dataset.scrollDirection = 'down';\n scrollPosition = window.scrollY;\n }\n\n if (window.scrollY > 1) {\n document.body.classList.add('stick-header');\n } else {\n document.body.classList.remove('stick-header');\n }\n });\n\n /*==================================== Top Navigation - tracking ====================================*/\n const menuLinks = document.querySelectorAll('#e-header a');\n\n if (!menuLinks) {\n return;\n }\n\n\n for (let i = 0; i < menuLinks.length; i++) {\n\n if (menuLinks[i].children.length && menuLinks[i].children[0].tagName === 'IMG') {\n // wpml languages menu with images - be careful when switch to svg version\n continue;\n }\n\n const href = menuLinks[i].getAttribute('href');\n\n if (href && href.length > 1) { // ignore href with only \"#\" in href\n menuLinks[i].classList.add('trck2mixp');\n menuLinks[i].setAttribute('data-title', menuLinks[i].textContent);\n }\n }\n\n const academyPrefix = isAcademyPage ? 'Academy ' : '';\n etoroTracking.track_link('.trck2mixp', academyPrefix + 'Nav Bar - Link Click', function () {\n return {\n LinkTitle: this.getAttribute('data-title'),\n };\n });\n}","export default function langChooser() {\n const langChoseBtns = document.querySelectorAll('.e-lang-choose');\n const langPopup = document.getElementById('language-switcher');\n const langPopupActiveClass= 'active';\n const langActiveHtmlClass = 'lang-popup-active';\n\n if (!langChoseBtns.length || !langPopup) {\n return;\n }\n\n const handleLangPopupClick = function(e) {\n e.preventDefault();\n if (langPopup.classList.contains(langPopupActiveClass)) {\n langPopup.classList.remove(langPopupActiveClass);\n document.documentElement.classList.remove(langActiveHtmlClass);\n } else {\n langPopup.classList.add(langPopupActiveClass);\n document.documentElement.classList.add(langActiveHtmlClass);\n }\n }\n\n for (let i = 0; i < langChoseBtns.length; i++) {\n langChoseBtns[i].addEventListener('click', handleLangPopupClick);\n }\n\n const closeLangPopup = document.querySelector('.close-lang-switcher');\n if (closeLangPopup) {\n closeLangPopup.addEventListener('click', handleLangPopupClick);\n }\n}","import {MOBILE_MENU_BTN_ID, MOBILE_MENU_CLOSE_BTN_ID} from './constants';\n\nexport default function mobileMenuButtons() {\n const mobileMenuBtn = document.getElementById(MOBILE_MENU_BTN_ID);\n const mobileMenuCloseBtn = document.getElementById(MOBILE_MENU_CLOSE_BTN_ID);\n const navOpenClass = 'nav_open';\n\n if (mobileMenuBtn) {\n mobileMenuBtn.addEventListener('click', function () {\n\n if (document.documentElement.classList.contains(navOpenClass)) {\n document.documentElement.classList.remove(navOpenClass);\n this.setAttribute('aria-expanded', 'false');\n this.setAttribute('aria-label', this.dataset.collapsed);\n } else {\n document.documentElement.classList.add(navOpenClass);\n this.setAttribute('aria-expanded', 'true');\n this.setAttribute('aria-label', this.dataset.expanded);\n }\n\n if (getWindowWidth() >= 768) {\n document.body.classList.toggle('menu_table_open'); //@TODO: check this case\n }\n });\n }\n\n if (mobileMenuCloseBtn) {\n mobileMenuCloseBtn.addEventListener('click', function () {\n\n if (document.documentElement.classList.contains(navOpenClass)) {\n document.documentElement.classList.remove(navOpenClass);\n\n if (mobileMenuBtn) {\n mobileMenuBtn.setAttribute('aria-expanded', 'false');\n mobileMenuBtn.setAttribute('aria-label', mobileMenuBtn.dataset.collapsed);\n }\n }\n\n if (getWindowWidth() >= 768) {\n document.body.classList.remove('menu_table_open'); //@TODO: check this case\n }\n\n });\n }\n}\n","\nconst MENU_WRAPPER_ID = 'main-navigation';\nconst MOBILE_MENU_BTN_ID = 'mobile-menu-btn';\nconst MOBILE_MENU_CLOSE_BTN_ID = 'mobile-menu-close-btn';\n\nexport {MOBILE_MENU_BTN_ID, MOBILE_MENU_CLOSE_BTN_ID, MENU_WRAPPER_ID};","// тут старий код з пошуку в вордпресі, а треба уніфікувати з пошуком на хоумпейджі\nexport default function mainHeaderSearch() {\n\n const searchForm = document.getElementById('search-form');\n const headerSearchClose = document.getElementById('closed_icon');\n const headerSearchInput = document.getElementById('search-input');\n const searchActiveClass = 'search_active';\n\n if ( !(searchForm && headerSearchInput && headerSearchClose) ) {\n return;\n }\n\n searchForm.addEventListener(\"submit\", function(e){\n e.preventDefault();\n\n const reportValidity = this.reportValidity ? this.reportValidity() : true;\n if (reportValidity) {\n window.location.href = searchForm.getAttribute('action') + headerSearchInput.value;\n return false;\n }\n\n });\n\n\n document.querySelector('.search-cta').addEventListener('click', function(e) {\n document.body.classList.add(searchActiveClass);\n document.getElementById('e-header').classList.add('ov-hidden');\n\n setTimeout(function() {\n headerSearchInput.focus();\n }, 500);\n });\n\n headerSearchClose.addEventListener('click', function(e) {\n e.preventDefault();\n\n //clear on first click\n if (headerSearchInput.value) {\n headerSearchInput.value = '';\n return;\n }\n\n //close search when search input is empty\n document.body.classList.remove(searchActiveClass);\n setTimeout(function(){\n headerSearchInput.blur();\n document.getElementById('e-header').classList.remove('ov-hidden');\n }, 500);\n });\n\n if (document.body.classList.contains('search-results')) {\n const wpmlTranslations = document.querySelectorAll('#language-switcher .list a');\n if (!wpmlTranslations) {\n return;\n }\n\n for (let i = 0; i < wpmlTranslations.length; i++) {\n wpmlTranslations[i].href = wpmlTranslations[i].href.replace('?s=', 'search/');\n }\n }\n}\n\n","\nexport default function shadowsOnScroll(element) {\n\n const box = document.querySelector(element);\n const debug = false;\n let inProgress = false;\n\n if (!box) {\n return;\n }\n\n function shadowedBox() {\n if (inProgress) {\n return;\n }\n\n if (debug) {\n document.getElementById('scrollPosition').innerText = (box.scrollHeight - box.scrollTop - box.clientHeight) + \" \" + box.scrollTop;\n }\n\n inProgress = true;\n\n if (box.scrollHeight > box.clientHeight) {\n box.classList.add(\"scrollbarred\");\n box.classList.remove(\"no-scrollbarred\");\n } else {\n box.classList.add(\"no-scrollbarred\");\n box.classList.remove(\"scrollbarred\");\n }\n\n if (box.clientHeight < box.scrollHeight && box.scrollTop > 1) {\n box.classList.add(\"shadow-top\");\n } else {\n box.classList.remove(\"shadow-top\");\n }\n\n if (box.scrollHeight - box.scrollTop - box.clientHeight < 1) {\n box.classList.remove(\"shadow-bottom\");\n } else {\n box.classList.add(\"shadow-bottom\");\n }\n\n inProgress = false;\n }\n\n shadowedBox();\n\n const debouncedShadowedBox = window.debounce(shadowedBox, 200);\n\n window.addEventListener(\"resize\", debouncedShadowedBox);\n\n box.addEventListener(\"scroll\", shadowedBox);\n\n const resizeObserver = new ResizeObserver(shadowedBox);\n resizeObserver.observe(box);\n if (box.children.length > 0) {\n for (let i = 0; i < box.children.length; i++) {\n resizeObserver.observe(box.children[i]);\n }\n }\n}","export default function academyHeaderSearchComponent(){\n\n let search_filter_changed = false;\n let typingTimer;\n\n const doneTypingInterval = 1000;\n const not_found_class = 'not-found';\n const no_more_class = 'no-more';\n const loading_class = 'loading';\n const locked_class = 'locked_ui';\n const active_class = 'active';\n const search_string_cookie_name = 'search_string';\n\n\n const header_search_items_wrapper = document.querySelector('.eahs-items-wrapper');\n const header_search_field = document.getElementById('eahs-field');\n const header_academy_more_div = document.getElementById('eahs-more');\n const header_academy_search_string = document.getElementById('eahs-string');\n const header_academy_items = document.getElementById('eahs-items');\n\n if (!header_search_field) {\n return;\n }\n\n let header_search_field_value = header_search_field.value ?? '';\n\n if(header_search_field && header_search_field.value) {\n header_search_field.value = '';\n }\n\n const searchCTA = document.getElementById('search-cta');\n if (searchCTA) {\n searchCTA.addEventListener('click', function () {\n document.body.classList.add('ac-search_active');\n header_search_field.focus();\n });\n }\n\n function attach_mixpanel_tracker() {\n etoroTracking.track_link(\"[data-mixp]:not([x-bind])\",'Academy - Click', function () {\n return {\n Location: this.getAttribute('data-location'),\n ClickedOn: this.getAttribute('data-mixp'),\n LinkTitle: this.getAttribute('data-title'),\n LinkUrl: this.getAttribute('data-url')\n };\n });\n }\n\n\n function academy_get_filtered_results(e) {\n if (typeof e !== 'undefined') {\n e.preventDefault();\n }\n if (!search_filter_changed) {\n return;\n }\n\n let formData = {\n header : 1,\n language : academy.lang,\n page_id : academy.page_id,\n };\n\n if (search_filter_changed) {\n formData.search_filter_changed = true;\n }\n\n if (header_search_field && header_search_field.value) {\n formData.search_input = header_search_field.value;\n }\n\n header_academy_more_div.className = 'eahs-more ' + loading_class;\n\n const searchParams = new URLSearchParams(formData);\n\n const xhr = new XMLHttpRequest();\n xhr.open(\"GET\", \"/wp-content/themes/etoro/cached-ajax/academy.php?\" + searchParams.toString());\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n\n xhr.onload = function () {\n if (xhr.status === 200) {\n try {\n const data = JSON.parse(xhr.responseText);\n\n search_filter_changed = false;\n\n const count = data.count + data.courses_count;\n\n if (count > 0) {\n header_academy_more_div.classList.remove(not_found_class);\n header_academy_items.innerHTML = '';\n }\n\n if (count === 0) {\n header_academy_items.innerHTML = '';\n header_academy_more_div.classList.add(not_found_class);\n }\n\n if (data.html) {\n header_academy_items.innerHTML = data.html;\n header_academy_search_string.innerHTML = header_search_field.value;\n\n setCookie(search_string_cookie_name, header_search_field.value, 1);\n\n attach_mixpanel_tracker();\n\n }\n } catch (e) {\n console.log(e);\n }\n\n }\n\n header_academy_more_div.classList.remove(loading_class);\n header_academy_items.classList.remove(locked_class);\n };\n\n xhr.send();\n }\n\n let prevSearchInputValue = (header_search_field) ? header_search_field.value : '';\n\n function removeParamFromURL() { //@TODO: ask Evhenii why we need this\n const urlObj = new URL( window.location );\n if ( ! urlObj.search ) {\n return;\n }\n urlObj.search = '';\n window.history.replaceState( null, null, urlObj.toString() );\n }\n\n function run_search() {\n search_filter_changed = true;\n removeParamFromURL();\n header_academy_items.classList.add(locked_class);\n clearTimeout(typingTimer);\n typingTimer = setTimeout(academy_get_filtered_results, doneTypingInterval);\n }\n\n header_search_field.addEventListener('keyup', function () {\n header_search_items_wrapper.classList.add(active_class);\n header_search_field.classList.add(active_class);\n if (prevSearchInputValue === header_search_field.value) {\n header_academy_items.classList.remove(locked_class);\n return;\n }\n\n if (header_search_field.value === '') {\n this.classList.remove(active_class);\n header_academy_items.innerHTML = '';\n header_academy_more_div.classList.add(no_more_class);\n header_academy_more_div.classList.remove(not_found_class);\n return;\n }\n prevSearchInputValue = header_search_field.value;\n run_search();\n });\n\n header_search_field.addEventListener('focusout', function () {\n const header_search_field_trim_value = header_search_field.value.trim();\n\n if (header_search_field_trim_value.length > 0 && header_search_field_value !== header_search_field_trim_value) {\n header_search_field_value = header_search_field_trim_value;\n etoroTracking.track('Academy Search', { SearchFor: header_search_field_trim_value });\n }\n });\n\n header_search_field.addEventListener('keydown', function () {\n clearTimeout(typingTimer);\n });\n\n document.addEventListener('keydown', function(e) {\n if (e.key === 'Enter' && header_search_field.classList.contains(active_class) && header_search_field.value) {\n setCookie(search_string_cookie_name, header_search_field.value, 1);\n go_to_all_search_results(e);\n }\n });\n\n const header_search_input_clear = document.getElementById('eahs-clear');\n\n function headerSearchInputClear(e) {\n e.preventDefault();\n\n header_academy_items.innerHTML = '';\n header_academy_more_div.classList.add('hidden');\n\n if (header_search_field.value) {\n header_search_field.value = '';\n return;\n }\n\n header_search_items_wrapper.classList.remove(active_class);\n document.body.classList.remove('ac-search_active');\n header_search_field.classList.remove(active_class);\n }\n\n header_search_input_clear.addEventListener('click', headerSearchInputClear);\n document.getElementById('mobile-menu-close-btn').addEventListener('click', headerSearchInputClear);\n\n function go_to_all_search_results(e) {\n e.preventDefault();\n const language = getCurrentLang();\n const currentLanguagePath = language !== 'en' ? '/' + language : '';\n\n window.location.href = window.location.origin + currentLanguagePath + '/academy/academy-search/';\n }\n\n const header_academy_search_all = document.getElementById('e-ac-search-all-ac-items');\n\n header_academy_search_all.addEventListener('click', function(e) {\n etoroTracking.track('Academy - Click', {ClickedOn:\"show-more-on-search-page\"});\n go_to_all_search_results(e);\n });\n\n};","import {MENU_WRAPPER_ID} from './constants';\n\nexport default () => {\n const MOBILE_MENU_BREAKPOINT = 1024;\n\n function mobileMenuItemClick (e) {\n const isMobileMenu = window.matchMedia('(max-width: ' + MOBILE_MENU_BREAKPOINT + 'px)').matches;\n\n if (!isMobileMenu) {\n return;\n }\n\n e.preventDefault();\n\n for (let i = this.parentNode.parentNode.children.length - 1; i >= 0; i--) {\n if (this.parentNode.parentNode.children[i] === this.parentNode) {\n this.parentNode.classList.toggle('lvl-1-open');\n continue;\n }\n this.parentNode.parentNode.children[i].classList.remove('lvl-1-open');\n }\n\n }\n\n const topLevelMenuItems = document.querySelectorAll('.e-header .menu-item-has-children > .main-menu-item-heading');\n if (topLevelMenuItems.length) {\n for (let i = topLevelMenuItems.length - 1; i >= 0; i--) {\n topLevelMenuItems[i].addEventListener('click', mobileMenuItemClick);\n }\n }\n\n const firstLevelItems = document.querySelectorAll('#' +MENU_WRAPPER_ID + ' > ul > li');\n if (!firstLevelItems.length) {\n return;\n }\n\n firstLevelItems.forEach(function (item) {\n if (item.nextElementSibling && item.nextElementSibling.classList.contains('menu-start-bracket')) {\n item.classList.add('before-menu-with-brackets');\n }\n });\n}\n","\nexport default (options = {}) => {\n\n options.offset = options.offset || 0;\n\n // array of hashes which doesn't need to be used for Smooth Scroll\n options.excludes = options.excludes || [];\n\n const trimLastSlash = function (str) {\n if (str.charAt(str.length - 1) === \"/\") {\n str = str.substr(0, str.length - 1);\n }\n return str;\n }\n\n const isCurrentPageLink = function (link) {\n return trimLastSlash(window.location.pathname) + window.location.search === trimLastSlash(link.pathname) + link.search;\n };\n\n const getParentAnchor = function (element) {\n while (element !== null) {\n if (element.tagName && element.tagName.toUpperCase() === \"A\") {\n return element;\n }\n element = element.parentNode;\n }\n return null;\n };\n \n const isExcludedFromSmoothScroll = function (hash, excludesArray) {\n for (const excludedHash of excludesArray) {\n if (hash.indexOf(excludedHash) !== -1) {\n return true;\n }\n }\n\n return false;\n }\n\n document.body.addEventListener('click', function(e) {\n const anchor = getParentAnchor(e.target);\n\n if (anchor === null || !anchor.hash || anchor.hash === '#' || !isCurrentPageLink(anchor) || isExcludedFromSmoothScroll(anchor.hash, options.excludes) ) {\n return;\n }\n\n const element = document.getElementById(anchor.hash.substring(1));\n if (!element) {\n return;\n }\n\n e.preventDefault();\n\n const offset = (typeof options.offset === 'function') ? options.offset() : options.offset;\n\n const y = element.getBoundingClientRect().top + window.scrollY - offset;\n window.scrollTo({top: y, behavior: 'smooth'});\n });\n\n}","/**\n * Decide which part of content to show and which to hide based on the visitor's country.\n * The country is set in the global eToroMarketingData object by the regulations.js script.\n */\nexport default function contentVisibilityByCountry() {\n function showContentForVisitorFromSpecificCountry() {\n const contentToShow = document.querySelectorAll('.show-if-country-' + eToroMarketingData.countryId);\n if (contentToShow.length) {\n contentToShow.forEach(element => {\n element.classList.remove('show-if-country');\n });\n }\n\n const contentToRemove = document.querySelectorAll('.show-if-country');\n if (!contentToRemove.length) {\n return;\n }\n contentToRemove.forEach(element => {\n element.remove();\n });\n }\n\n function removeContentForVisitorFromSpecificCountry() {\n\n const contentToRemove = document.querySelectorAll('.remove-if-country-' + eToroMarketingData.countryId);\n if (contentToRemove.length) {\n contentToRemove.forEach(element => {\n element.remove();\n });\n }\n\n const contentToShow = document.querySelectorAll('.remove-if-country');\n if (contentToShow.length) {\n contentToShow.forEach(element => {\n element.classList.remove('remove-if-country');\n });\n }\n }\n\n if (eToroMarketingData.countryId && typeof eToroMarketingData.countryId === 'number') {\n showContentForVisitorFromSpecificCountry();\n removeContentForVisitorFromSpecificCountry();\n } else {\n document.addEventListener('definedCountryAndRegulation', function () {\n showContentForVisitorFromSpecificCountry();\n removeContentForVisitorFromSpecificCountry();\n });\n }\n}\n","export default function trackCtaClick() {\n\n const ctaClickEventName = isAcademyPage ? 'Academy - Click' : 'CTA Click';\n\n function getCtaColor(element) {\n const buttonsColors = {\n 'e-cta-primary': 'Green',\n 'e-cta-alternative': 'Dark Blue',\n 'e-cta_dark': 'Dark Blue',\n 'e-cta-primary-bordered': 'Green Bordered',\n 'e-cta__alt': 'Green Bordered',\n 'e-cta-alternative-bordered': 'Dark Blue Bordered',\n 'e-cta__alt_dark': 'Dark Blue Bordered',\n 'e-cta-white': 'White',\n 'e-cta__alt_white': 'White Bordered',\n 'e-cta-white-bordered': 'White Bordered',\n };\n\n const classListArray = Object.values(element.classList);\n const ctaClassName = classListArray.filter((classNameItem) => {\n return classNameItem.startsWith('e-cta-') || classNameItem.startsWith('e-cta_');\n });\n\n if (ctaClassName.length && buttonsColors[ctaClassName]) {\n return buttonsColors[ctaClassName];\n }\n\n return 'Green';\n }\n\n function getCustomMixpanelAttributes(element, elementTitle) {\n const dataAttributes = element.dataset;\n let mixpanelAttributes = {};\n if (dataAttributes) {\n mixpanelAttributes.Location = dataAttributes.location ?? 'N/A';\n mixpanelAttributes.LinkTitle = dataAttributes.title ?? elementTitle;\n for (const [key, value] of Object.entries(dataAttributes)) {\n if (key === 'title' || key === 'location') {\n continue;\n }\n mixpanelAttributes[key] = value;\n }\n }\n return mixpanelAttributes;\n }\n\n function addTrackToAnchorCta() {\n const ctas = document.querySelectorAll('a.e-cta');\n if (!ctas) {\n return;\n }\n ctas.forEach((cta) => {\n if(cta.href === '') {\n return;\n }\n\n // data-not-default-mixpaneled=\"true\"\n if (cta.dataset.notDefaultMixpaneled) {\n return;\n }\n if (cta.mixpaneled) {\n return;\n }\n\n try {\n cta.mixpaneled = true;\n mixpanel.track_links(cta, ctaClickEventName, function() {\n const ctaTitle = (isAcademyPage && cta.href.includes('/accounts/sign-up')) ? 'Sign up' : cta.textContent.trim();\n const defaultMixpanelAttributes = {\n ClickedOn: 'CTA',\n LinkTitle: ctaTitle,\n CTAColor: getCtaColor(cta),\n };\n\n return Object.assign({}, defaultMixpanelAttributes, getCustomMixpanelAttributes(cta, ctaTitle));\n });\n } catch (e) {\n console.log('mixpanel error');\n }\n });\n }\n\n function trackButtonCta() {\n document.addEventListener('click', (e) => {\n const allowedTags = ['BUTTON'];\n if (!allowedTags.includes(e.target.tagName) && e.target.parentNode && !allowedTags.includes(e.target.parentNode.tagName)) {\n return;\n }\n\n if (!e.target.className.includes('e-cta') && e.target.parentNode && !e.target.parentNode.className.includes('e-cta')) {\n return;\n }\n\n // data-not-default-mixpaneled=\"true\"\n if(e.target.dataset.notDefaultMixpaneled || (e.target.parentNode && e.target.parentNode.dataset.notDefaultMixpaneled)) {\n return;\n }\n\n const ctaTitle = e.target.textContent.trim();\n const defaultMixpanelAttributes = {\n ClickedOn: 'CTA',\n LinkTitle: ctaTitle,\n CTAColor: getCtaColor(e.target),\n };\n const finalMixpanelAttributes = Object.assign({}, defaultMixpanelAttributes, getCustomMixpanelAttributes(e.target, ctaTitle));\n\n etoroTracking.track(ctaClickEventName, finalMixpanelAttributes, {send_immediately: true});\n\n });\n }\n\n const dom_cta_observer = new MutationObserver((mutations_list) => {\n mutations_list.forEach((mutation) => {\n mutation.addedNodes.forEach((addedNode) => {\n if(!addedNode.tagName || !['DIV', 'SECTION', 'P', 'LI'].includes(addedNode.tagName)) {\n return;\n }\n if(addedNode.querySelector('a.e-cta') === null) {\n return;\n }\n addTrackToAnchorCta();\n });\n });\n });\n\n const config = {childList: true, subtree: true};\n dom_cta_observer.observe(document.body, config);\n\n document.addEventListener('DOMContentLoaded', addTrackToAnchorCta);\n document.addEventListener('DOMContentLoaded', trackButtonCta);\n}\n","/*************************\n * CTA \"Log Out From All Devices\"\n ************************/\n\n// \n\n\nexport default function CTAlogOutFromAllDevices() {\n\n\tconst logoutCTA = document.getElementById(\"log_out_of_all_devices\");\n\tconst successMessage = etoro_logout_from_all.success;\n\tconst missingTokenMessage = etoro_logout_from_all.missingToken;\n\tconst generalErrorMessage = etoro_logout_from_all.generalError;\n\n\tif (!logoutCTA) {\n\t\treturn;\n\t}\n\n\tlogoutCTA.addEventListener(\"click\", function(e) {\n\t\te.preventDefault();\n\n\t\tlogoutCTA.disabled = true;\n\n\t\tconst urlParams = new URLSearchParams(window.location.search);\n\t\tconst newDeviceDetectedToken = urlParams.get(\"NewDeviceDetectedToken\");\n\n\t\tif (!newDeviceDetectedToken) {\n\t\t\tappendMessage(missingTokenMessage);\n\t\t\tlogoutCTA.disabled = false;\n\t\t\treturn;\n\t\t}\n\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open(\"POST\", \"/api/sts/oauth/v3/unauthorized-device\", true);\n\t\txhr.setRequestHeader(\"Content-Type\", \"application/json\");\n\n\t\txhr.onreadystatechange = function() {\n\t\t\tif (xhr.readyState !== 4) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (xhr.status < 300) {\n\t\t\t\tappendMessage(successMessage, 'success');\n\t\t\t\tlogoutCTA.disabled = true; // Disable the button permanently on success\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst response = JSON.parse(xhr.responseText);\n\t\t\t\tif (response.errorMessage) {\n\t\t\t\t\tappendMessage(getErrorMessage(response.errorMessage));\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tappendMessage(generalErrorMessage);\n\t\t\t}\n\n\t\t\tlogoutCTA.disabled = false; // Re-enable the button if there's an error\n\t\t};\n\n\t\tconst sanitizedNewDeviceDetectedToken = encodeURIComponent(newDeviceDetectedToken).replaceAll('%7C', '|');\n\n\t\tif (sanitizedNewDeviceDetectedToken !== newDeviceDetectedToken) {\n\t\t\tetoroLoggerApps.wp_etoro_site.send([{\n\t\t\t\tLevel: 'warn',\n\t\t\t\tMessage: 'newDeviceDetectedToken possibly corrupted',\n\t\t\t\tContent: 'sanitizedNewDeviceDetectedToken: ' + sanitizedNewDeviceDetectedToken\n\t\t\t}]);\n\t\t}\n\n\t\txhr.send(JSON.stringify({ \"ott\": sanitizedNewDeviceDetectedToken }));\n\t});\n\n\n\tfunction appendMessage(message, messageType = 'error') {\n\t\tlet responseDiv = document.getElementById(\"response-message\");\n\n\n\t\tif (!responseDiv) {\n\t\t\tresponseDiv = document.createElement(\"div\");\n\t\t\tresponseDiv.id = \"response-message\";\n\n\t\t\tresponseDiv.className = (messageType === 'success') ? 'success-message' : 'error-message';\n\n\t\t\t// Append the div right below the button\n\t\t\tlogoutCTA.parentNode.insertBefore(responseDiv, logoutCTA.nextSibling);\n\t\t}\n\n\t\tconst messageElement = document.createElement(\"p\");\n\t\tmessageElement.innerHTML = message;\n\n\t\tresponseDiv.innerHTML = \"\";\n\t\tresponseDiv.appendChild(messageElement);\n\t}\n\n\tfunction getErrorMessage(errorMessage) {\n\t\tconst errorMessages = {\n\t\t\t\"Invalid Ott\" : etoro_logout_from_all.invalidToken,\n\t\t};\n\n\t\treturn errorMessages[errorMessage] || generalErrorMessage;\n\t}\n\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import \"./window.helpers\";\nimport './modernizr';\nimport mainHeader from './header';\nimport langChooser from './lang-chooser';\nimport mobileMenuButtons from './mobile-menu';\nimport mainHeaderSearch from './main-header-search';\nimport shadowsOnScroll from './shadows-on-scroll';\nimport academyHeaderSearchComponent from './header-academy-search';\nimport eToroMenu from './menu';\nimport SmoothAnchorScroll from './smooth-anchor-scroll';\nimport contentVisibilityByCountry from \"./content-visibility-by-country\";\nimport trackCtaClick from \"./tracking\";\nimport CTAlogOutFromAllDevices from \"./logout-from-all-devices\";\n\nmainHeader();\nmobileMenuButtons();\neToroMenu();\ntrackCtaClick();\nCTAlogOutFromAllDevices();\n\ntry {\n academyHeaderSearchComponent();\n} catch (e) {\n console.log('academyHeaderSearchComponent error', e);\n}\n\nshadowsOnScroll(\".shadows-on-scroll\");\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n langChooser();\n mainHeaderSearch();\n SmoothAnchorScroll({\n offset: getOffsetForElements,\n excludes: ['e-media-popup'],\n });\n contentVisibilityByCountry();\n});\n"],"names":[],"sourceRoot":""}