{"version":3,"file":"/assets/js/app.js","mappings":"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","sources":["webpack://On2netWebsiteFramework/./src/js/components/animateOnScroll.js","webpack://On2netWebsiteFramework/./src/js/app.js","webpack://On2netWebsiteFramework/./src/js/components/cookiePopup.js","webpack://On2netWebsiteFramework/./src/js/components/dropdownOnHover.js","webpack://On2netWebsiteFramework/./src/js/components/mainNavigation.js","webpack://On2netWebsiteFramework/./src/js/components/scrollLinks.js"],"sourcesContent":["// | ------------------------------------------------------------------------\r\n// | Animate on Scroll\r\n// | ------------------------------------------------------------------------ \r\n\r\n\r\n//? https://github.com/michalsnik/aos\r\nimport AOS from 'aos'; \r\n\r\n\r\n// | ------------------------------------------------------------------------\r\n\r\n\r\nwindow.addEventListener('load', (event) => {\r\n AOS.init(); \r\n});","// | ------------------------------------------------------------------------\r\n// | Imports\r\n// | ------------------------------------------------------------------------\r\n\r\n// Bootstrap ----------------------------------------------------------------\r\n\r\nimport \"@popperjs/core\"; // Popper is required for dropdowns, popovers and tooltips.\r\nimport {\r\n Alert,\r\n //Button,\r\n //Carousel,\r\n //Collapse,\r\n Dropdown,\r\n //Modal,\r\n //OffCanvas,\r\n //Popover,\r\n //ScrollSpy,\r\n //Tab,\r\n //Toast,\r\n //Tooltip,\r\n} from \"bootstrap\";\r\n\r\n// Bootstrap overrides, calls and template integration\r\n//import \"./bootstrap/collapse\";\r\n//import \"./bootstrap/modals\";\r\n//import \"./bootstrap/offcanvas\";\r\n//import \"./bootstrap/popovers\";\r\n//import \"./bootstrap/tooltips\";\r\n\r\n// Imports used in shop components ------------------------------------------\r\n\r\n//? https://kingsora.github.io/OverlayScrollbars/\r\n//import { OverlayScrollbars } from 'overlayscrollbars'; // Used in /components/shop/productFilters\r\n\r\n//? https://splidejs.com/\r\n//import Splide from '@splidejs/splide'; // Used in /components/shop/productGallery\r\n\r\n//? https://github.com/biati-digital/glightbox\r\n//import GLightbox from 'glightbox/dist/js/glightbox.js'; // Used in /components/shop/productGallery\r\n\r\n// Other imports ------------------------------------------------------------\r\n\r\n//? https://github.com/michalsnik/aos\r\nimport AOS from \"aos\"; // Used in /components/animateOnScroll\r\n\r\n//? https://simpleparallax.com/\r\n//import simpleParallax from 'simple-parallax-js'; // Used in /components/parallaxSections\r\n\r\n//? https://github.com/yowainwright/shav\r\n//import shave from 'shave'; // Used in /components/ellipsis\r\n\r\nimport validate from \"jquery-validation\";\r\nimport shave from \"shave\";\r\n\r\n// | ------------------------------------------------------------------------\r\n// | Components\r\n// | ------------------------------------------------------------------------\r\n\r\n// Cookie popup\r\n//import './components/cookieConsent/cookieOptions';\r\nimport \"./components/cookiePopup\";\r\n\r\n// | Layout -----------------------------------------------------------------\r\n\r\n//import \"./components/fixedHeader\";\r\n\r\n// | Navigation -------------------------------------------------------------\r\n\r\nimport \"./components/mainNavigation\";\r\nimport \"./components/dropdownOnHover\";\r\n\r\n// | Content ----------------------------------------------------------------\r\n\r\n//import \"./components/modernizr-webp\"; // Allow background images to fallback to jpegs\r\n//import \"./components/ellipsis\"; // Allows us to restrict text content using ellipsis\r\n\r\n// | Animations -------------------------------------------------------------\r\n\r\nimport \"./components/animateOnScroll\"; // Animate elements on page scroll\r\n//import \"./components/heroParallaxBlur\"; // Parallax, blur and fade hero background image on scroll\r\n//import \"./components/parallaxSections\"; // Parallax backgrounds for page sections\r\nimport \"./components/scrollLinks\"; // Parallax backgrounds for page sections\r\n\r\n// | Shop specific ----------------------------------------------------------\r\n\r\n//import \"./components/shop/productFilters\";\r\n//import \"./components/shop/productGallery\";\r\n//import \"./components/shop/productGrid\";\r\n//import \"./components/shop/quantityInputs\";\r\n\r\n// | Page specific ----------------------------------------------------------\r\n\r\nimport \"./contact\";\r\n\r\n// | ------------------------------------------------------------------------\r\n// | Code\r\n// | ------------------------------------------------------------------------\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n shave(\".ellipsis\", 84, { character: \"...\" });\r\n});\r\n","// Set cookie options\r\nconst targetingCookies = false;\r\nconst personalCookies = false;\r\nconst analyticsCookies = true;\r\n\r\n// Set type\r\nconst tagManager = false; // if false then it defaults to gtag\r\nconst gtagId = \"G-DD5JVN5ZKW\";\r\n\r\n// Set up data layer and set everything to denied\r\nwindow.dataLayer = window.dataLayer || [];\r\nfunction gtag() {\r\n dataLayer.push(arguments);\r\n}\r\n\r\ngtag(\"consent\", \"default\", {\r\n ad_user_data: \"denied\",\r\n ad_personalization: \"denied\",\r\n ad_storage: \"denied\",\r\n analytics_storage: \"denied\",\r\n personalization_storage: \"denied\",\r\n wait_for_update: 500,\r\n});\r\n\r\nif (tagManager === true) {\r\n dataLayer.push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\r\n} else {\r\n gtag(\"js\", new Date());\r\n gtag(\"config\", gtagId);\r\n}\r\n\r\n// Create the cookie popup\r\nfunction createCookiePopup() {\r\n var cookieContainerElement = document.querySelector(\".cookie-container\");\r\n\r\n if (cookieContainerElement) {\r\n // If the cookie container is already open then do nothing\r\n } else {\r\n // Remove the cookie button\r\n const cookieLink = document.querySelector(\"#cookieLink\");\r\n if (cookieLink) {\r\n cookieLink.remove();\r\n }\r\n\r\n // Create Cookie Container\r\n let cookieContainer = document.createElement(\"div\");\r\n cookieContainer.classList.add(\"cookie-container\");\r\n\r\n // Create intro text\r\n let cookieIntro = document.createElement(\"p\");\r\n cookieIntro.innerHTML =\r\n \"We use cookies to improve user experience. Choose what cookies you allow us to use below. You can find out more in our Cookie Policy\";\r\n\r\n // Append intro to container\r\n cookieContainer.appendChild(cookieIntro);\r\n\r\n // Create cookie options holder\r\n let cookieOptionsHolder = document.createElement(\"div\");\r\n cookieOptionsHolder.classList.add(\"cookie-options\");\r\n\r\n // Add cookie options\r\n addCookieOptions(cookieOptionsHolder);\r\n\r\n // Append options holder to container\r\n cookieContainer.appendChild(cookieOptionsHolder);\r\n\r\n // Create save button\r\n let saveButton = document.createElement(\"button\");\r\n saveButton.type = \"button\";\r\n saveButton.classList.add(\"btn\", \"btn-save\");\r\n saveButton.id = \"cookieSaveBtn\";\r\n saveButton.innerHTML = \"Save Preferences\";\r\n\r\n // Append save button\r\n cookieContainer.appendChild(saveButton);\r\n\r\n // Create accept all button\r\n let consentButton = document.createElement(\"button\");\r\n\r\n consentButton.type = \"button\";\r\n consentButton.classList.add(\"btn\", \"btn-consent\");\r\n consentButton.id = \"cookieConsentBtn\";\r\n consentButton.innerHTML = \"Accept All\";\r\n\r\n // Append accept all button\r\n cookieContainer.appendChild(consentButton);\r\n\r\n // Append cookie container to the body\r\n document.body.appendChild(cookieContainer);\r\n\r\n // Handle button clicks\r\n var consentBtn = document.querySelector(\"#cookieConsentBtn\");\r\n\r\n // If the 'Accept All' button is clicked then load gtag with everything granted\r\n consentBtn.addEventListener(\"click\", function () {\r\n // Set all cookies to true\r\n if (targetingCookies === true) {\r\n localStorage.setItem(\"targeting\", \"true\");\r\n } else {\r\n localStorage.setItem(\"targeting\", \"false\");\r\n }\r\n\r\n if (personalCookies === true) {\r\n localStorage.setItem(\"personal\", \"true\");\r\n } else {\r\n localStorage.setItem(\"personal\", \"false\");\r\n }\r\n\r\n if (analyticsCookies === true) {\r\n localStorage.setItem(\"analytics\", \"true\");\r\n } else {\r\n localStorage.setItem(\"analytics\", \"false\");\r\n }\r\n\r\n // update consent\r\n updateConsent();\r\n\r\n // Add cookie so we know that something has been accepted\r\n localStorage.setItem(\"consentGranted\", \"true\");\r\n\r\n // Close the cookie popup\r\n closeCookiePopup();\r\n\r\n cookieHeight();\r\n });\r\n\r\n // If the save button is clicked load gtag script depnding on what's checked\r\n var saveBtn = document.querySelector(\"#cookieSaveBtn\");\r\n\r\n saveBtn.addEventListener(\"click\", function () {\r\n let cookieOptions = document.querySelectorAll(\".cookie-option input\");\r\n\r\n // Loop through each option and add cookie\r\n cookieOptions.forEach(function (cookieOption) {\r\n if (cookieOption.checked) {\r\n localStorage.setItem(cookieOption.value, \"true\");\r\n } else {\r\n localStorage.setItem(cookieOption.value, \"false\");\r\n }\r\n });\r\n\r\n // update consent\r\n updateConsent();\r\n\r\n // Add cookie so we know that something has been accepted\r\n localStorage.setItem(\"consentGranted\", \"true\");\r\n\r\n // Close the cookie popup\r\n closeCookiePopup();\r\n\r\n cookieHeight();\r\n });\r\n\r\n cookieHeight();\r\n }\r\n}\r\n\r\n// Add selected options to the cookie popup\r\nfunction addCookieOptions(cookieOptionsHolder) {\r\n // Create options array\r\n let cookieOptions = [\"essential\"];\r\n\r\n // Add items to array if selected as true\r\n if (targetingCookies === true) {\r\n cookieOptions.push(\"targeting\");\r\n }\r\n\r\n if (personalCookies === true) {\r\n cookieOptions.push(\"personal\");\r\n }\r\n\r\n if (analyticsCookies === true) {\r\n cookieOptions.push(\"analytics\");\r\n }\r\n\r\n cookieOptions.forEach(function (cookieOption) {\r\n // Create holder\r\n let optionHolder = document.createElement(\"div\");\r\n optionHolder.classList.add(\"cookie-option\");\r\n\r\n // Create Input\r\n let optionInput = document.createElement(\"input\");\r\n\r\n optionInput.type = \"checkbox\";\r\n optionInput.id = cookieOption;\r\n optionInput.name = cookieOption;\r\n optionInput.value = cookieOption;\r\n\r\n if (localStorage.getItem(cookieOption) === \"false\") {\r\n optionInput.removeAttribute(\"checked\");\r\n } else {\r\n optionInput.checked = \"true\";\r\n }\r\n\r\n if (cookieOption === \"essential\") {\r\n optionInput.disabled = \"true\";\r\n }\r\n\r\n // Create label and description\r\n let optionLabel = document.createElement(\"label\");\r\n let labelText = \"\";\r\n\r\n let optionDesc = document.createElement(\"p\");\r\n let optionDescText = \"\";\r\n\r\n if (cookieOption === \"targeting\") {\r\n labelText = \"Advertising\";\r\n optionDescText =\r\n \"We use these to deliver advertising that is more relevant to you.\";\r\n } else if (cookieOption === \"essential\") {\r\n labelText = \"Essential\";\r\n optionDescText =\r\n \"Required to enable basic website functionality. You may not disable these.\";\r\n } else if (cookieOption === \"personal\") {\r\n labelText = \"Personalisation\";\r\n optionDescText =\r\n \"Allows us to remember choices you make and provide enhanced, more personal features.\";\r\n } else if (cookieOption === \"analytics\") {\r\n labelText = \"Analytics\";\r\n optionDescText =\r\n \"Helps us to understand how the website performs, and how you interact with it.\";\r\n }\r\n\r\n optionDesc.innerHTML = optionDescText;\r\n\r\n optionLabel.htmlFor = cookieOption;\r\n optionLabel.innerHTML = labelText;\r\n optionLabel.classList.add(\"h5\", \"mb-0\");\r\n\r\n optionHolder.appendChild(optionInput);\r\n optionHolder.appendChild(optionLabel);\r\n optionHolder.appendChild(optionDesc);\r\n\r\n cookieOptionsHolder.appendChild(optionHolder);\r\n });\r\n}\r\n\r\n// Close the cookie popup\r\nfunction closeCookiePopup() {\r\n // Remove the cookie popup\r\n var cookieContainer = document.querySelector(\".cookie-container\");\r\n cookieContainer.remove();\r\n\r\n // Create the cookie button\r\n createCookieButton();\r\n}\r\n\r\n// Create the floating cookie icon button\r\nfunction createCookieButton() {\r\n let cookieButton = document.createElement(\"button\");\r\n\r\n cookieButton.type = \"button\";\r\n cookieButton.classList.add(\"btn\", \"btn-cookie\");\r\n cookieButton.id = \"cookieLink\";\r\n cookieButton.setAttribute(\"aria-label\", \"Cookie Preferences\");\r\n cookieButton.innerHTML =\r\n '';\r\n\r\n document.body.appendChild(cookieButton);\r\n\r\n const cookieLink = document.querySelector(\"#cookieLink\");\r\n\r\n cookieLink.addEventListener(\"click\", function () {\r\n createCookiePopup();\r\n });\r\n}\r\n\r\n// Check if consent has been given and updates the data layer\r\nfunction updateConsent() {\r\n if (localStorage.getItem(\"targeting\") === \"true\") {\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n\r\n gtag(\"consent\", \"update\", {\r\n ad_user_data: \"granted\",\r\n ad_personalization: \"granted\",\r\n ad_storage: \"granted\",\r\n });\r\n } else {\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n gtag(\"consent\", \"update\", {\r\n ad_user_data: \"denied\",\r\n ad_personalization: \"denied\",\r\n ad_storage: \"denied\",\r\n });\r\n }\r\n\r\n if (localStorage.getItem(\"analytics\") === \"true\") {\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n\r\n gtag(\"consent\", \"update\", {\r\n analytics_storage: \"granted\",\r\n });\r\n } else {\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n gtag(\"consent\", \"update\", {\r\n analytics_storage: \"denied\",\r\n });\r\n }\r\n\r\n if (localStorage.getItem(\"personal\") === \"true\") {\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n\r\n gtag(\"consent\", \"update\", {\r\n personalization_storage: \"granted\",\r\n });\r\n } else {\r\n function gtag() {\r\n dataLayer.push(arguments);\r\n }\r\n gtag(\"consent\", \"update\", {\r\n personalization_storage: \"denied\",\r\n });\r\n }\r\n\r\n /*\r\n if (localStorage.getItem(\"consentGranted\") === \"true\") {\r\n if (tagManager === true) {\r\n var gtmScript = document.createElement(\"script\");\r\n gtmScript.async = true;\r\n gtmScript.src = \"https://www.googletagmanager.com/gtm.js?id=\" + gtagId;\r\n var firstScript = document.getElementsByTagName(\"script\")[0];\r\n firstScript.parentNode.insertBefore(gtmScript, firstScript);\r\n } else {\r\n var gtagScript = document.createElement(\"script\");\r\n gtagScript.async = true;\r\n gtagScript.src = \"https://www.googletagmanager.com/gtag/js?id=\" + gtagId;\r\n var firstScript = document.getElementsByTagName(\"script\")[0];\r\n firstScript.parentNode.insertBefore(gtagScript, firstScript);\r\n }\r\n }\r\n */\r\n}\r\n\r\n// Calculates the amount of space needed to accommodate the cookie popup when open\r\nfunction cookieHeight() {\r\n var cookiePopUp = document.querySelector(\".cookie-container\");\r\n\r\n if (cookiePopUp) {\r\n var popUpHeight = cookiePopUp.offsetHeight;\r\n document.documentElement.style.setProperty(\r\n \"--cookie-height\",\r\n popUpHeight + \"px\"\r\n );\r\n } else {\r\n document.documentElement.style.setProperty(\"--cookie-height\", 0 + \"px\");\r\n }\r\n}\r\n\r\n// Run cookieHeight() on load and if the screen size changes\r\nwindow.addEventListener(\"load\", cookieHeight(), false);\r\n//window.addEventListener(\"resize\", cookieHeight(), false);\r\n\r\nwindow.addEventListener(\"resize\", function () {\r\n cookieHeight();\r\n});\r\n\r\n// Once page has loaded check if cookies have been accepted and create the cookie button\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n if (localStorage.getItem(\"consentGranted\") === \"true\") {\r\n // If consent has been provided previously then update consent\r\n updateConsent();\r\n\r\n if (tagManager === true) {\r\n var gtmScript = document.createElement(\"script\");\r\n gtmScript.async = true;\r\n gtmScript.src = \"https://www.googletagmanager.com/gtm.js?id=\" + gtagId;\r\n var firstScript = document.body;\r\n firstScript.appendChild(gtmScript, firstScript);\r\n } else {\r\n var gtagScript = document.createElement(\"script\");\r\n gtagScript.async = true;\r\n gtagScript.src = \"https://www.googletagmanager.com/gtag/js?id=\" + gtagId;\r\n var firstScript = document.body;\r\n firstScript.appendChild(gtagScript, firstScript);\r\n }\r\n\r\n // Create cookie Button so that cookie preferences can be edited\r\n createCookieButton();\r\n } else {\r\n // If consent has not previously been given then create the cookie popup\r\n createCookiePopup();\r\n\r\n /*\r\n if (tagManager === true) {\r\n var gtmScript = document.createElement(\"script\");\r\n gtmScript.async = true;\r\n gtmScript.src = \"https://www.googletagmanager.com/gtm.js?id=\" + gtagId;\r\n var firstScript = document.getElementsByTagName(\"script\")[0];\r\n firstScript.parentNode.insertBefore(gtmScript, firstScript);\r\n } else {\r\n var gtagScript = document.createElement(\"script\");\r\n gtagScript.async = true;\r\n gtagScript.src = \"https://www.googletagmanager.com/gtag/js?id=\" + gtagId;\r\n var firstScript = document.getElementsByTagName(\"script\")[0];\r\n firstScript.parentNode.insertBefore(gtagScript, firstScript);\r\n }\r\n */\r\n }\r\n});\r\n","// | ------------------------------------------------------------------------\r\n// | Dropdown On Hover\r\n// | ------------------------------------------------------------------------ \r\n\r\n\r\nvar dropdownMenu = function(){\r\n\r\n var windowWidth = document.body.clientWidth;\r\n\r\n if(windowWidth > 767){\r\n\r\n var navItem = document.getElementsByClassName('dropdown');\r\n\r\n for(var i =0; i< navItem.length; i++){\r\n navItem[i].onmouseenter = function() { \r\n this.classList.add(\"show\")\r\n this.querySelector(\".dropdown-toggle\").setAttribute(\"aria-expanded\", \"true\")\r\n this.querySelector(\".dropdown-menu\").classList.add(\"show\")\r\n\r\n }\r\n navItem[i].onmouseleave = function() { \r\n this.classList.remove(\"show\")\r\n this.querySelector(\".dropdown-toggle\").setAttribute(\"aria-expanded\", \"false\")\r\n this.querySelector('.dropdown-menu').classList.remove(\"show\")\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n// Run on scroll/load/resize\r\nwindow.addEventListener(\"scroll\", dropdownMenu, false);\r\nwindow.addEventListener(\"load\", dropdownMenu, false);\r\nwindow.addEventListener(\"resize\", dropdownMenu, false);","// | ------------------------------------------------------------------------\r\n// | Main Navigation\r\n// | ------------------------------------------------------------------------ \r\n\r\n\r\nwindow.addEventListener('load', (event) => {\r\n\r\n // Set variables\r\n var body = document.querySelector(\"body\");\r\n var nav = document.querySelector(\".main-nav\");\r\n var button = document.querySelector('#mobile-nav-btn');\r\n var windowWidth = document.body.clientWidth; \r\n\r\n // Toggle menu function\r\n var toggleDrawer = function(){\r\n body.classList.toggle('mobile-nav-open');\r\n button.classList.toggle('toggled');\r\n document.documentElement.classList.toggle('no-scroll'); \r\n }\r\n\r\n if(nav){\r\n\r\n // Open/close drawer using menu button\r\n button.addEventListener(\"click\",function(event){\r\n event.stopPropagation();\r\n toggleDrawer();\r\n }, false); \r\n\r\n // Prevent menu closing when clicked\r\n nav.addEventListener(\"click\",function(event){\r\n event.stopPropagation();\r\n }, false); \r\n\r\n // Close drawer when clicking off menu\r\n body.addEventListener(\"click\",function(){\r\n if (body.classList.contains('mobile-nav-open')) {\r\n toggleDrawer();\r\n }\r\n }, false); \r\n\r\n // Close drawer if window is resized\r\n window.addEventListener(\"resize\",function(){\r\n if(document.body.clientWidth !== windowWidth){\r\n if (body.classList.contains('mobile-nav-open')) {\r\n toggleDrawer();\r\n }\r\n }\r\n windowWidth = document.body.clientWidth;\r\n });\r\n\r\n }\r\n});","window.addEventListener('load', (event) => {\r\n const scrollLinks = document.querySelectorAll(\".scroll-link\");\r\n \r\n for (const scrollLink of scrollLinks) {\r\n scrollLink.addEventListener(\"click\", scrollLinkHandler);\r\n }\r\n \r\n \r\n function scrollLinkHandler(e) {\r\n \r\n e.preventDefault();\r\n \r\n const href = this.getAttribute(\"href\");\r\n \r\n // get the correct offset\r\n const getOffsetTop = element => {\r\n let offsetTop = 0;\r\n while(element) {\r\n offsetTop += element.offsetTop;\r\n element = element.offsetParent;\r\n }\r\n return offsetTop;\r\n }\r\n \r\n // find the target element\r\n const scrollTarget = document.querySelector(href);\r\n \r\n // the elements offset value\r\n const offsetTop = getOffsetTop(scrollTarget );\r\n \r\n // current header height value\r\n const x = getComputedStyle(document.documentElement).getPropertyValue('--header-height');\r\n \r\n // convert to integer\r\n const headerHeight = parseInt(x);\r\n \r\n // minus header height from the offset\r\n const totalOffset = (offsetTop - headerHeight); \r\n \r\n if (window.matchMedia(\"(min-width: 768px)\").matches) {\r\n \r\n // scroll to element minus the header height\r\n scroll({\r\n top: totalOffset,\r\n behavior: \"smooth\"\r\n }); \r\n \r\n } else {\r\n \r\n // scroll to element\r\n scroll({\r\n top: offsetTop,\r\n behavior: \"smooth\"\r\n }); \r\n \r\n } \r\n \r\n \r\n \r\n } \r\n\r\n if (window.innerWidth < 768) {\r\n \r\n const mobScrollLinks = document.querySelectorAll(\".scroll-link\"); \r\n \r\n for (const mobScrollLink of mobScrollLinks) {\r\n mobScrollLink.addEventListener(\"click\", mobScrollLinkHandler);\r\n }\r\n \r\n \r\n function mobScrollLinkHandler(e) {\r\n \r\n e.preventDefault();\r\n \r\n // set variables\r\n var body = document.querySelector(\"body\");\r\n var button = document.querySelector('#mobile-nav-btn');\r\n \r\n // toggle menu function\r\n body.classList.toggle('mobile-nav-open');\r\n button.classList.toggle('toggled');\r\n document.documentElement.classList.toggle('no-scroll'); \r\n \r\n const href = this.getAttribute(\"href\");\r\n \r\n // get the correct offset\r\n const getOffsetTop = element => {\r\n let offsetTop = 0;\r\n while(element) {\r\n offsetTop += element.offsetTop;\r\n element = element.offsetParent;\r\n }\r\n return offsetTop;\r\n }\r\n \r\n // find the target element\r\n const scrollTarget = document.querySelector(href);\r\n \r\n // the elements offset value\r\n const offsetTop = getOffsetTop(scrollTarget);\r\n \r\n // scroll to element minus the header height\r\n scroll({\r\n top: offsetTop,\r\n behavior: \"smooth\"\r\n }); \r\n \r\n } \r\n\r\n }\r\n \r\n });"],"names":["window","addEventListener","event","AOS","document","shave","character","targetingCookies","personalCookies","analyticsCookies","gtagId","gtag","dataLayer","push","arguments","createCookiePopup","querySelector","cookieLink","remove","cookieContainer","createElement","classList","add","cookieIntro","innerHTML","appendChild","cookieOptionsHolder","cookieOptions","forEach","cookieOption","optionHolder","optionInput","type","id","name","value","localStorage","getItem","removeAttribute","checked","disabled","optionLabel","labelText","optionDesc","optionDescText","htmlFor","addCookieOptions","saveButton","consentButton","body","setItem","updateConsent","closeCookiePopup","cookieHeight","querySelectorAll","createCookieButton","cookieButton","setAttribute","ad_user_data","ad_personalization","ad_storage","analytics_storage","personalization_storage","cookiePopUp","popUpHeight","offsetHeight","documentElement","style","setProperty","wait_for_update","Date","firstScript","gtagScript","async","src","dropdownMenu","clientWidth","navItem","getElementsByClassName","i","length","onmouseenter","this","onmouseleave","nav","button","windowWidth","toggleDrawer","toggle","stopPropagation","contains","scrollLinks","scrollLink","scrollLinkHandler","e","preventDefault","href","getAttribute","offsetTop","element","offsetParent","getOffsetTop","x","getComputedStyle","getPropertyValue","totalOffset","parseInt","matchMedia","matches","scroll","top","behavior","innerWidth","mobScrollLinks","mobScrollLink","mobScrollLinkHandler"],"sourceRoot":""}