{"version":3,"sources":["jsdelivr-header.js","/npm/smooth-scroll-page@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,KAAO,CAAC,EAAkB,KAC5B,MAAM,EAAW,SAAS,uBAAuB,GAC3C,EAAY,EAAS,GAAG,WAE9B,EAAU,MAAM,cAAgB,SAEhC,MAAM,EAAa,CACf,QAAS,YAAY,GACrB,UAAU,EACV,WACA,aAGJ,iBAAiB,GACd,GAAe,WAAW,EAAe,GAC5C,SAAS,iBAAiB,SAAS,GAAK,aAAa,EAAG,IAAY,EAGlE,aAAe,MAAM,EAAG,KAC1B,IAAI,SAAE,EAAQ,QAAE,GAAY,EAC5B,MAAM,SAAE,EAAQ,UAAE,GAAc,EAEhC,IAAI,EAAS,CACT,MAAM,EAAU,GACV,OAAE,GAAW,EAKnB,GAHG,EAAS,GAAK,EAAU,GAAK,EAAG,GAAW,EACtC,EAAS,GAAK,EAAU,EAAI,EAAS,SAAQ,GAAW,GAE7D,IAAY,EAAQ,CACnB,EAAW,UAAW,EACtB,EAAW,QAAU,EAErB,MAAM,EAAY,QAAQ,CACtB,KAAM,EAAS,GACf,QAAS,EAAS,IACnB,SAEG,EAAU,SAEhB,EAAW,UAAW,CAC1B,CACJ,GAGE,iBAAmB,IACrB,IAAI,EAAU,EAEd,SAAS,iBAAiB,cAAc,IACpC,EAAW,EAAE,QAAQ,GAAG,OAAO,IAGnC,SAAS,iBAAiB,aAAa,GAAM,GAAW,IAExD,SAAS,iBAAiB,YAAY,IAClC,GAAG,EAAS,CACR,MAAM,QAAE,GAAY,EAAE,eAAe,GACrC,GAAW,EAGX,aAAa,CAAE,OADQ,EAAW,GAAW,EAAI,GACR,EAC7C,IACF,EAGA,YAAc,IAChB,IAAI,MAAM,KAAS,EAAS,CACxB,MAAM,UAAE,EAAS,aAAE,GAAiB,EAAS,IACvC,QAAE,GAAY,OAEpB,GAAG,GAAa,GAAW,EAAe,EAAY,EAClD,OAAO,SAAS,EAExB,GAGE,WAAa,CAAC,EAAW,KAC3B,MAAM,EAAQ,SAAS,uBAAuB,IACxC,SAAE,GAAa,EAErB,IAAI,MAAM,KAAQ,EACd,EAAK,iBAAiB,SAAS,KAC3B,IAAI,EAAS,EAAK,cAElB,KAAM,GAA+B,mBAArB,EAAO,WACnB,EAAS,EAAO,cAGpB,MAAM,KAAE,GAAS,EAAK,QAChB,EAAc,IAAI,GAAU,WAAU,GAAQ,EAAK,KAAO,IAEhE,EAAW,QAAU,EAErB,QAAQ,IAAI,EAAQ,GAEpB,QAAQ,CACJ,QAAS,EACT,KAAM,EAAS,IAChB,SAAS,KAAK,GAEzB,EAGE,QAAU,CAAC,EAAU,KACvB,MAAM,KAAE,EAAI,QAAE,GAAY,EACpB,GAAqD,GAArC,EAAK,UAAY,OAAO,SAExC,EAAY,CACd,CAAE,UAAW,eAAwD,GAAxC,EAAQ,UAAY,OAAO,eACxD,CAAE,UAAW,cAAe,SAQ1B,EAAY,EAAU,QAAQ,EALpB,CACZ,SAAU,IACV,OAAQ,mCAMZ,OAFA,EAAU,MAAM,UAAY,cAAe,OAEpC,GAGL,aAAe,CAAE","file":"/npm/smooth-scroll-page@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/smooth-scroll-page@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const init = (sectionClassName, linkClassName) => {\n    const sections = document.getElementsByClassName(sectionClassName);\n    const container = sections[0].parentNode;\n\n    container.style['overflow-y'] = 'hidden';\n\n    const scrollData = {\n        current: initCurrent(sections),\n        isLocked: false,\n        sections,\n        container\n    }\n\n    setupTouchEvents(scrollData);\n    if(linkClassName) setupLinks(linkClassName, scrollData);\n    document.addEventListener('wheel', e => handleScroll(e, scrollData));\n}\n\nconst handleScroll = async(e, scrollData) => {\n    let { isLocked, current } = scrollData;\n    const { sections, container } = scrollData;\n\n    if(!isLocked){\n        const initial = current;\n        const { deltaY } = e;\n    \n        if(deltaY < 0 && current - 1 >= 0) current -= 1;\n        else if(deltaY > 0 && current + 1 < sections.length) current += 1;\n    \n        if(initial !== current){\n            scrollData.isLocked = true;\n            scrollData.current = current;\n            \n            const animation = animate({\n                dest: sections[current],\n                initial: sections[initial]\n            }, container);\n\n            await animation.finished;\n            \n            scrollData.isLocked = false\n        }  \n    }\n}\n\nconst setupTouchEvents = scrollData => {\n    let initialY, isMoving;\n\n    document.addEventListener('touchstart', e => {\n        initialY = e.touches[0].clientY;\n    });\n\n    document.addEventListener('touchmove', _e => isMoving = true);\n\n    document.addEventListener('touchend', e => {\n        if(isMoving){\n            const { clientY } = e.changedTouches[0];\n            isMoving = false;\n       \n            const directionDelta = initialY < clientY ? -1 : 1;\n            handleScroll({ deltaY: directionDelta }, scrollData);\n        }\n    });\n}\n\nconst initCurrent = elements => {\n    for(const index in elements){\n        const { offsetTop, scrollHeight } = elements[index];\n        const { scrollY } = window;\n\n        if(offsetTop <= scrollY && scrollHeight + offsetTop > scrollY){\n            return parseInt(index)\n        }\n    }\n}\n\nconst setupLinks = (className, scrollData) => {\n    const links = document.getElementsByClassName(className);\n    const { sections } = scrollData;\n\n    for(const link of links){\n        link.addEventListener('click', () => {\n            let parent = link.parentElement;\n\n            while(parent && parent.className !== 'scroll-section'){\n                parent = parent.parentElement;\n            }\n\n            const { hash } = link.dataset;\n            const destination = [...sections].findIndex(elem => elem.id === hash);\n\n            scrollData.current = destination;\n\n            console.log(parent, destination);\n            \n            animate({\n                initial: parent,\n                dest: sections[destination]\n            }, document.body);\n        });\n    }\n}\n\nconst animate = (position, container) => {\n    const { dest, initial } = position;\n    const destPosition = (dest.offsetTop - window.scrollY) * (-1);\n\n    const keyframes = [\n        { transform: `translateY(${ (initial.offsetTop - window.scrollY) * (-1) }px)` },\n        { transform: `translateY(${ destPosition }px)` }\n    ];\n\n    const options = {\n        duration: 800,\n        easing: 'cubic-bezier(0.2, 0.8, 0.2, 1)'\n    }\n\n    const animation = container.animate(keyframes, options);\n    container.style.transform = `translateY(${ destPosition }px)`;\n\n    return animation\n}\n\nconst smoothScroll = { init }"]}