{"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/fixedHeader.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\nimport 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\nimport \"./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// | ------------------------------------------------------------------------\r\n// | Code\r\n// | ------------------------------------------------------------------------\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n shave(\".ellipsis\", 84, { character: \"...\" });\r\n});\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n var accreditations = document.querySelector(\".accreditations\");\r\n\r\n if (accreditations) {\r\n var accreditations = new Splide(\".accreditations\", {\r\n type: \"slide\",\r\n rewind: true,\r\n perPage: 5,\r\n perMove: 1,\r\n autoplay: false,\r\n pagination: false,\r\n arrows: false,\r\n cover: true,\r\n breakpoints: {\r\n 991: {\r\n perPage: 4,\r\n arrows: true,\r\n },\r\n 768: {\r\n perPage: 3,\r\n arrows: true,\r\n },\r\n 576: {\r\n perPage: 2,\r\n arrows: true,\r\n },\r\n 350: {\r\n perPage: 1,\r\n arrows: true,\r\n },\r\n },\r\n }).mount();\r\n }\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-6Y4DV7QVDQ\";\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// 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// | Components - Fixed Header\r\n// | ------------------------------------------------------------------------ \r\n\r\n\r\nvar header = document.querySelector(\".site-header\");\r\n\r\nif(header){\r\n\r\n var fixHeader = function(){\r\n\r\n // Find out height of header element\r\n var headerHeight = header.offsetHeight;\r\n\r\n // Set --header-height custom property\r\n document.documentElement.style.setProperty(\"--header-height\", headerHeight + \"px\");\r\n\r\n // Add class when scrolling on windows >= 768px\r\n var windowWidth = document.body.clientWidth;\r\n\r\n if(windowWidth > 767){\r\n\r\n // Get scroll position\r\n let scroll = window.scrollY;\r\n\r\n // Toggle class\r\n if (scroll > 50) {\r\n header.classList.add(\"scrolling\");\r\n } else {\r\n header.classList.remove(\"scrolling\");\r\n } \r\n }\r\n\r\n };\r\n\r\n // Run on scroll/load/resize\r\n window.addEventListener(\"scroll\", fixHeader, false);\r\n window.addEventListener(\"load\", fixHeader, false);\r\n window.addEventListener(\"resize\", fixHeader, false);\r\n}","// | ------------------------------------------------------------------------\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","querySelector","Splide","type","rewind","perPage","perMove","autoplay","pagination","arrows","cover","breakpoints","mount","targetingCookies","personalCookies","analyticsCookies","gtagId","gtag","dataLayer","push","arguments","createCookiePopup","cookieLink","remove","cookieContainer","createElement","classList","add","cookieIntro","innerHTML","appendChild","cookieOptionsHolder","cookieOptions","forEach","cookieOption","optionHolder","optionInput","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","header","fixHeader","headerHeight","scrollY","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":""}