{
  "version": 3,
  "sources": ["../../src/js/utils.js", "../../src/js/main.js"],
  "sourcesContent": ["// Util functions\n\n// debounce util function\nexport function debounce(func, timeout = 300){\n    let timer;\n    return (...args) => {\n        clearTimeout(timer);\n        timer = setTimeout(() => { func.apply(this, args); }, timeout);\n    };\n}\n\n\n// Throttle scroll event\nexport function scrollEventThrottle(fn) {\n    let last_known_scroll_position = 0;\n    let ticking = false;\n    window.addEventListener('scroll', function () {\n        let previous_known_scroll_position = last_known_scroll_position;\n        last_known_scroll_position = window.scrollY;\n        if (!ticking) {\n            window.requestAnimationFrame(function () {\n                fn(last_known_scroll_position, previous_known_scroll_position);\n                ticking = false;\n            });\n            ticking = true;\n        }\n    });\n}\n\n\nexport function allowSidewaysScroll(element, splide) {\n    let debounceDelay = 250;\n    let lastScrollTime = Date.now();\n\n    //Add horizontal scrolling support to splide sliders\n    element.addEventListener('wheel', function (event) {\n        if (event.ctrlKey) {\n            return; // Exit the function if Ctrl key is held\n        }\n\n        let deltaX = event.deltaX;\n        let deltaY = event.deltaY;\n\n        //Windows shift-scroll\n        if (event.shiftKey && Math.abs(deltaX) === 0) {\n            event.preventDefault();\n\n            if (deltaY > 0) {\n                splide.go('+1');\n\n            } else if (deltaY < 0) {\n                splide.go('-1');\n            }\n        }\n\n        //Mac sideways touch scroll\n        if (!event.shiftKey && Math.abs(deltaX) !== 0) {\n            if (Math.abs(event.deltaX) < Math.abs(event.deltaY)) {\n                // Scrolling more vertically than horizontally. Let it be!\n                return;\n            }\n\n            const scrollLeftMax = element.scrollWidth - element.offsetWidth;\n\n            if (\n                element.scrollLeft + event.deltaX < 0 ||\n                element.scrollLeft + event.deltaX > scrollLeftMax\n            ) {\n                //Stop backwards nagivation on sideways scroll on element\n                event.preventDefault();\n            }\n\n            let currentTime = Date.now();\n            let timeElapsed = currentTime - lastScrollTime;\n\n            //Allow no delay on first scroll of slider per second\n            if (timeElapsed > debounceDelay) {\n                if (deltaX > 0) {\n                    splide.go('+1');\n                } else if (deltaX < 0) {\n                    splide.go('-1');\n                }\n\n                lastScrollTime = currentTime;\n            } else {\n                //Debounce scrolling to avoid scrolling to the end of the slider on first scroll\n                if (timeElapsed >= debounceDelay) {\n\n                    if (deltaX > 3) {\n                        splide.go('+1');\n                    } else if (deltaX < -3) {\n                        splide.go('-1');\n                    }\n\n                    lastScrollTime = currentTime;\n                }\n            }\n        }\n    }, false);\n}\n", "// Main JS shared by all pages\n\nimport { scrollEventThrottle } from './utils';\n\ndocument.addEventListener('DOMContentLoaded', function() {\n    // Variables\n    var returnTopBtn = document.querySelector('.return-page-top');\n    var topButtonVisible = false;\n\n    // -- Scroll event\n    scrollEventThrottle(function (scrollPos, previousScrollPos) {\n        // Return to top button\n        var showAfter = 100;\n        var shouldBeVisible = scrollPos > showAfter;\n        if (!topButtonVisible && shouldBeVisible ) {\n            returnTopBtn.style.opacity = 100;\n            returnTopBtn.style.transform = \"rotate(0deg)\";\n            topButtonVisible = true;\n        }\n        else if (topButtonVisible && !shouldBeVisible) {\n            returnTopBtn.style.opacity = 0;\n            returnTopBtn.style.transform = \"rotate(-90deg)\";\n            topButtonVisible = false;\n        }\n    });\n    window.dispatchEvent(new CustomEvent('scroll'));\n\n    // -- Return page top\n    returnTopBtn.addEventListener('click', function(){\n        window.scrollTo({top: 0, behavior: 'smooth'});\n        history.replaceState(null, null, window.location.pathname);\n    });\n});\n"],
  "mappings": "MAaO,SAASA,EAAoBC,EAAI,CACpC,IAAIC,EAA6B,EAC7BC,EAAU,GACd,OAAO,iBAAiB,SAAU,UAAY,CAC1C,IAAIC,EAAiCF,EACrCA,EAA6B,OAAO,QAC/BC,IACD,OAAO,sBAAsB,UAAY,CACrCF,EAAGC,EAA4BE,CAA8B,EAC7DD,EAAU,EACd,CAAC,EACDA,EAAU,GAElB,CAAC,CACL,CCvBA,SAAS,iBAAiB,mBAAoB,UAAW,CAErD,IAAIE,EAAe,SAAS,cAAc,kBAAkB,EACxDC,EAAmB,GAGvBC,EAAoB,SAAUC,EAAWC,EAAmB,CAExD,IAAIC,EAAY,IACZC,EAAkBH,EAAYE,EAC9B,CAACJ,GAAoBK,GACrBN,EAAa,MAAM,QAAU,IAC7BA,EAAa,MAAM,UAAY,eAC/BC,EAAmB,IAEdA,GAAoB,CAACK,IAC1BN,EAAa,MAAM,QAAU,EAC7BA,EAAa,MAAM,UAAY,iBAC/BC,EAAmB,GAE3B,CAAC,EACD,OAAO,cAAc,IAAI,YAAY,QAAQ,CAAC,EAG9CD,EAAa,iBAAiB,QAAS,UAAU,CAC7C,OAAO,SAAS,CAAC,IAAK,EAAG,SAAU,QAAQ,CAAC,EAC5C,QAAQ,aAAa,KAAM,KAAM,OAAO,SAAS,QAAQ,CAC7D,CAAC,CACL,CAAC",
  "names": ["scrollEventThrottle", "fn", "last_known_scroll_position", "ticking", "previous_known_scroll_position", "returnTopBtn", "topButtonVisible", "scrollEventThrottle", "scrollPos", "previousScrollPos", "showAfter", "shouldBeVisible"]
}
