{"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 $(\"#contactform\").validate({\r\n submitHandler: function (form) {\r\n form.submit();\r\n },\r\n rules: {\r\n name: \"required\",\r\n email: {\r\n required: true,\r\n email: true,\r\n },\r\n contact: \"required\",\r\n phone: \"required\",\r\n comments: \"required\",\r\n },\r\n });\r\n\r\n $(\"#getquoteform\").validate({\r\n submitHandler: function (form) {\r\n form.submit();\r\n },\r\n rules: {\r\n name: \"required\",\r\n email: {\r\n required: true,\r\n email: true,\r\n },\r\n company: \"required\",\r\n phone: \"required\",\r\n enquiry: \"required\",\r\n },\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-YK4QRVCMTJ\";\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","$","validate","submitHandler","form","submit","rules","name","email","required","contact","phone","comments","company","enquiry","gtagId","gtag","dataLayer","push","arguments","createCookiePopup","cookieLink","remove","cookieContainer","createElement","classList","add","cookieIntro","innerHTML","appendChild","cookieOptionsHolder","cookieOptions","targetingCookies","personalCookies","forEach","cookieOption","optionHolder","optionInput","id","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":""}