{"version":3,"file":"anchor-link-oaEL3t9_.js","sources":["../../Frontend/js/helpers/smoothScroll.js","../../Frontend/js/modules/anchor-link.js"],"sourcesContent":["/**\r\n * Smooth scroll animation\r\n * @param {int} endX: destination x coordinate\r\n * @param {int) endY: destination y coordinate\r\n* @param {int} duration: animation duration in ms\r\n*/\r\nfunction SmoothScrollTo(endX, endY, duration) {\r\n var startX = window.scrollX || window.pageXOffset,\r\n startY = window.scrollY || window.pageYOffset,\r\n distanceX = endX - startX,\r\n distanceY = endY - startY,\r\n startTime = new Date().getTime();\r\n\r\n duration = typeof duration !== 'undefined' ? duration : 400;\r\n\r\n // Easing function\r\n var easeInOutQuart = function(time, from, distance, duration) {\r\n if ((time /= duration / 2) < 1) return distance / 2 * time * time * time * time + from;\r\n return -distance / 2 * ((time -= 2) * time * time * time - 2) + from;\r\n };\r\n\r\n var timer = window.setInterval(function() {\r\n var time = new Date().getTime() - startTime,\r\n newX = easeInOutQuart(time, startX, distanceX, duration),\r\n newY = easeInOutQuart(time, startY, distanceY, duration);\r\n if (time >= duration) {\r\n window.clearInterval(timer);\r\n }\r\n window.scrollTo(newX, newY);\r\n }, 1000 / 60); // 60 fps\r\n};\r\n\r\nexport {\r\n SmoothScrollTo\r\n};","import globalContext from \"../const/globalContext\";\r\nimport { SmoothScrollTo } from \"../helpers/smoothScroll\";\r\n\r\n// Helper function to get an element's exact position\r\nfunction getPosition(el) {\r\n let xPos = 0;\r\n let yPos = 0;\r\n\r\n while (el) {\r\n if (el.tagName == \"BODY\") {\r\n // deal with browser quirks with body/window/document and page scroll\r\n let xScroll = el.scrollLeft || document.documentElement.scrollLeft;\r\n let yScroll = el.scrollTop || document.documentElement.scrollTop;\r\n\r\n xPos += (el.offsetLeft - xScroll + el.clientLeft);\r\n yPos += (el.offsetTop - yScroll + el.clientTop);\r\n } else {\r\n // for all other non-BODY elements\r\n xPos += (el.offsetLeft - el.scrollLeft + el.clientLeft);\r\n yPos += (el.offsetTop - el.scrollTop + el.clientTop);\r\n }\r\n\r\n el = el.offsetParent;\r\n }\r\n\r\n return {\r\n x: xPos,\r\n y: yPos\r\n };\r\n}\r\n\r\nexport default function fAnchorScroll() {\r\n let iReservedTopHeight = 0;\r\n\r\n if ([].slice.apply(document.body.classList).includes('velthuishowwehelp')) {\r\n window.pageYOffset = 0;\r\n } else if (document.querySelector('.js-sticky-header') !== null) {\r\n iReservedTopHeight = document.querySelector('.js-sticky-header').offsetHeight;\r\n }\r\n\r\n if (window.location.hash.includes('#') && [].slice.apply(document.body.classList).includes('velthuishowwehelp') && window.innerWidth > globalContext.mobileBreakpoint) {\r\n var focusTarget = document.getElementById(window.location.hash.replace('#', ''));\r\n\r\n window.pageXOffset = getPosition(focusTarget).x + window.pageXOffset;\r\n }\r\n\r\n document.addEventListener('click', function (event) {\r\n if (event.target.matches('a[href*=\"#\"]') || (event.target.closest('a[href*=\"#\"]') !== null && event.target.closest('a[href*=\"#\"]').href === '#')) {\r\n event.preventDefault();\r\n\r\n var element;\r\n\r\n if (event.target.closest('a[href*=\"#\"]')) {\r\n element = event.target.closest('a[href*=\"#\"]');\r\n } else {\r\n element = event.target;\r\n }\r\n\r\n var targetId = element.getAttribute('href');\r\n var target = document.getElementById(targetId.replace('#', ''));\r\n\r\n if (element.closest('.js-horizon')) {\r\n SmoothScrollTo((getPosition(target).x + (window.scrollX || window.pageXOffset)), 0);\r\n } else {\r\n SmoothScrollTo(0, ((getPosition(target).y + (window.scrollY || window.pageYOffset)) - iReservedTopHeight));\r\n }\r\n }\r\n }, false);\r\n}\r\n"],"names":["SmoothScrollTo","endX","endY","duration","startX","startY","distanceX","distanceY","startTime","easeInOutQuart","time","from","distance","timer","newX","newY","getPosition","el","xPos","yPos","xScroll","yScroll","fAnchorScroll","iReservedTopHeight","globalContext","focusTarget","event","element","targetId","target"],"mappings":"kCAMA,SAASA,EAAeC,EAAMC,EAAMC,EAAU,CAC3C,IAAIC,EAAS,OAAO,SAAW,OAAO,YAClCC,EAAS,OAAO,SAAW,OAAO,YAClCC,EAAYL,EAAOG,EACnBG,EAAYL,EAAOG,EACnBG,EAAY,IAAI,OAAO,UAE3BL,EAAW,OAAOA,EAAa,IAAcA,EAAW,IAGxD,IAAIM,EAAiB,SAASC,EAAMC,EAAMC,EAAUT,EAAU,CAC1D,OAAKO,GAAQP,EAAW,GAAK,EAAUS,EAAW,EAAIF,EAAOA,EAAOA,EAAOA,EAAOC,EAC3E,CAACC,EAAW,IAAMF,GAAQ,GAAKA,EAAOA,EAAOA,EAAO,GAAKC,CACvE,EAEOE,EAAQ,OAAO,YAAY,UAAW,CACtC,IAAIH,EAAO,IAAI,OAAO,QAAS,EAAGF,EAClCM,EAAOL,EAAeC,EAAMN,EAAQE,EAAWH,CAAQ,EACvDY,EAAON,EAAeC,EAAML,EAAQE,EAAWJ,CAAQ,EACnDO,GAAQP,GACZ,OAAO,cAAcU,CAAK,EAE1B,OAAO,SAASC,EAAMC,CAAI,CACjC,EAAM,IAAO,EAAE,CACf,CC1BA,SAASC,EAAYC,EAAI,CACrB,IAAIC,EAAO,EACPC,EAAO,EAEX,KAAOF,GAAI,CACP,GAAIA,EAAG,SAAW,OAAQ,CAEtB,IAAIG,EAAUH,EAAG,YAAc,SAAS,gBAAgB,WACpDI,EAAUJ,EAAG,WAAa,SAAS,gBAAgB,UAEvDC,GAASD,EAAG,WAAaG,EAAUH,EAAG,WACtCE,GAASF,EAAG,UAAYI,EAAUJ,EAAG,SACjD,MAEYC,GAASD,EAAG,WAAaA,EAAG,WAAaA,EAAG,WAC5CE,GAASF,EAAG,UAAYA,EAAG,UAAYA,EAAG,UAG9CA,EAAKA,EAAG,YACX,CAED,MAAO,CACH,EAAGC,EACH,EAAGC,CACX,CACA,CAEe,SAASG,GAAgB,CACpC,IAAIC,EAAqB,EAQzB,GANI,CAAE,EAAC,MAAM,MAAM,SAAS,KAAK,SAAS,EAAE,SAAS,mBAAmB,EACpE,OAAO,YAAc,EACd,SAAS,cAAc,mBAAmB,IAAM,OACvDA,EAAqB,SAAS,cAAc,mBAAmB,EAAE,cAGjE,OAAO,SAAS,KAAK,SAAS,GAAG,GAAK,CAAA,EAAG,MAAM,MAAM,SAAS,KAAK,SAAS,EAAE,SAAS,mBAAmB,GAAK,OAAO,WAAaC,EAAc,iBAAkB,CACnK,IAAIC,EAAc,SAAS,eAAe,OAAO,SAAS,KAAK,QAAQ,IAAK,EAAE,CAAC,EAE/E,OAAO,YAAcT,EAAYS,CAAW,EAAE,EAAI,OAAO,WAC5D,CAED,SAAS,iBAAiB,QAAS,SAAUC,EAAO,CAChD,GAAIA,EAAM,OAAO,QAAQ,cAAc,GAAMA,EAAM,OAAO,QAAQ,cAAc,IAAM,MAAQA,EAAM,OAAO,QAAQ,cAAc,EAAE,OAAS,IAAM,CAC9IA,EAAM,eAAc,EAEpB,IAAIC,EAEAD,EAAM,OAAO,QAAQ,cAAc,EACnCC,EAAUD,EAAM,OAAO,QAAQ,cAAc,EAE7CC,EAAUD,EAAM,OAGpB,IAAIE,EAAWD,EAAQ,aAAa,MAAM,EACtCE,EAAS,SAAS,eAAeD,EAAS,QAAQ,IAAK,EAAE,CAAC,EAE1DD,EAAQ,QAAQ,aAAa,EAC7B3B,EAAgBgB,EAAYa,CAAM,EAAE,GAAK,OAAO,SAAW,OAAO,aAAe,CAAC,EAElF7B,EAAe,EAAKgB,EAAYa,CAAM,EAAE,GAAK,OAAO,SAAW,OAAO,aAAgBN,CAAkB,CAE/G,CACJ,EAAE,EAAK,CACZ"}