{"version":3,"file":"9027.b2a27a4ad49c9d0ed251.bundle.mjs","mappings":"qKAEA,SAASA,EAAmBC,EAASC,EAASC,GAC1C,MAAM,YAAEC,GAAgBF,EAAQG,QAMhC,SAASC,IACLH,EAAOI,UAAUC,OAAOJ,EAC5B,CAEAH,EAAQQ,6BAA6BC,QAAQ,CACzCC,gBATJ,WACIR,EAAOI,UAAUK,IAAIR,EACzB,EAQIS,iBAAkBP,EAClBQ,YAAaR,EACbS,SAAU,CAACb,IAEnB,CAyBA,MAAMc,EAAwB,GACxBC,EAAoB,EAE1B,SAASC,EAAoBC,EAAUjB,EAASC,GAC5C,MAAMiB,EACF,WAAYlB,EAAQG,QAAUgB,SAASnB,EAAQG,QAAQiB,OAAQ,IAAML,EACnEM,EACF,eAAgBrB,EAAQG,QAClBmB,WAAWtB,EAAQG,QAAQkB,WAAY,IACvCP,EAEJS,EAAmB,oBAAoBL,YAE7C,IAAIM,EACAC,EACAC,EAEJ,SAASC,IACLD,EAAQ1B,EAAQ4B,YAChBJ,EAAeK,OAAOC,YAAc,GACpCL,EAAkB,oBAAoBD,YACtCvB,EAAO8B,MAAML,MAAQ,GAAGA,KAC5B,CAUA,SAASM,EAAYC,GACjB,MAAMC,GALKC,EAKYjB,EALAkB,EAKWZ,EALCa,EAKaJ,EAJzCK,KAAKC,IAAIJ,EAAYG,KAAKE,IAAIJ,EAAYC,KADrD,IAAeF,EAAYC,EAAYC,EAMnCpC,EAAO8B,MAAMV,WAAa,oBAAoBA,MAC9CpB,EAAO8B,MAAMU,UAAY,oBAAoBP,WACjD,CAEA,SAASQ,IACLzC,EAAO8B,MAAMU,UAAYlB,EACzBtB,EAAO8B,MAAMV,WAAa,MAC9B,CAEA,SAASsB,IACL1C,EAAO8B,MAAMV,WAAa,OAC1BpB,EAAO8B,MAAMU,UAAYhB,CAC7B,CAtBAE,IAEAE,OAAOe,iBAAiB,SAAUjB,EAAU,CAAEkB,SAAS,IA0BvD,MAAM,IAAEZ,GAAQjC,EAAQ8C,wBAExB,IAAIC,EAGAA,EADAd,GAAO,EACMS,EACNT,EAAMT,EACAmB,EAEAX,EAGjBe,EAAWd,GACXe,YAjBA,WACI/C,EAAO8B,MAAMkB,QAAU,CAC3B,GAe0B,KAE1B,IAAIC,EAAiBH,EAqBrB,MAAMI,EA/GV,SAAkBC,EAASC,GACvB,IAAIC,EACJ,SAASC,IACDD,IAIJA,EAAUN,YAAW,WACjBM,EAAU,KACVF,GACJ,GAqG+D,IApGnE,CASA,OAPAG,EAAOC,OAAS,WACRF,IACAG,aAAaH,GACbA,EAAU,KAElB,EAEOC,CACX,CA0F0BG,EAAS,QApB/B,WACI,MAAM,IAAEzB,GAAQjC,EAAQ8C,wBACxB,IAAIa,EACA1B,GAAO,EACP0B,EAASjB,EACFT,GAAOT,IACdmC,EAAShB,GAGTO,IAAmBS,IAIlBA,IACDA,EAAS3B,GAEb2B,EAAO1B,GACPiB,EAAiBS,EACrB,KAGA9B,OAAOe,iBAAiB,SAAUO,EAAe,CAAEN,SAAS,GAChE,CAee,SAASe,EAAc7D,EAASC,GAC3C,MAAM,SAAE6D,GAAa7D,EAAQG,QACvBF,EAPV,SAA0BD,GACtB,MAAM,OAAEC,GAAWD,EAAQG,QAC3B,OAAO2D,SAASC,cAAc9D,EAClC,CAImB+D,CAAiBhE,IAdZ,WAeO6D,EAdhB7C,EAGJlB,GAYCC,EAASC,EAASC,EAC9B,C","sources":["webpack://socialUX/./views/scrollTrigger.js"],"sourcesContent":["import createIdleScrollListener from \"../utils/createIdleScrollListener\";\n\nfunction handleClassToggler(context, trigger, target) {\n    const { toggleClass } = trigger.dataset;\n\n    function onAboveViewport() {\n        target.classList.add(toggleClass);\n    }\n\n    function removeClass() {\n        target.classList.remove(toggleClass);\n    }\n\n    context.intersectionObserverProvider.addTask({\n        onAboveViewport,\n        onBellowViewport: removeClass,\n        onIntersect: removeClass,\n        rawNodes: [trigger],\n    });\n}\n\nfunction debounce(handler, time) {\n    let timeout;\n    function runner() {\n        if (timeout) {\n            return;\n        }\n\n        timeout = setTimeout(function calling() {\n            timeout = null;\n            handler();\n        }, time);\n    }\n\n    runner.cancel = function cancel() {\n        if (timeout) {\n            clearTimeout(timeout);\n            timeout = null;\n        }\n    };\n\n    return runner;\n}\n\nconst DEFAULT_TRANSITION_MS = 33;\nconst DEFAULT_THRESHOLD = 0;\n\nfunction handleStickyElement(_context, trigger, target) {\n    const threshold =\n        \"offset\" in trigger.dataset ? parseInt(trigger.dataset.offset, 10) : DEFAULT_THRESHOLD;\n    const transition =\n        \"transition\" in trigger.dataset\n            ? parseFloat(trigger.dataset.transition, 10)\n            : DEFAULT_TRANSITION_MS;\n\n    const restingTranslate = `translate3d(0px, ${threshold}px, 0px)`;\n\n    let windowHeight;\n    let hiddenTranslate;\n    let width;\n\n    function onResize() {\n        width = trigger.offsetWidth;\n        windowHeight = window.innerHeight + 10;\n        hiddenTranslate = `translate3d(0px, ${windowHeight}px, 0px)`;\n        target.style.width = `${width}px`;\n    }\n\n    onResize();\n\n    window.addEventListener(\"resize\", onResize, { passive: true });\n\n    function clamp(lowerLimit, upperLimit, number) {\n        return Math.max(lowerLimit, Math.min(upperLimit, number));\n    }\n\n    function moveElement(top) {\n        const distance = clamp(threshold, windowHeight, top);\n        target.style.transition = `transform linear ${transition}ms`;\n        target.style.transform = `translate3d(0px, ${distance}px, 0px)`;\n    }\n\n    function resetElement() {\n        target.style.transform = restingTranslate;\n        target.style.transition = \"none\";\n    }\n\n    function hideElement() {\n        target.style.transition = \"none\";\n        target.style.transform = hiddenTranslate;\n    }\n\n    function appearElement() {\n        target.style.opacity = 1;\n    }\n\n    const { top } = trigger.getBoundingClientRect();\n\n    let initiatior;\n\n    if (top <= 0) {\n        initiatior = resetElement;\n    } else if (top > windowHeight) {\n        initiatior = hideElement;\n    } else {\n        initiatior = moveElement;\n    }\n\n    initiatior(top);\n    setTimeout(appearElement, 100);\n\n    let previousAction = initiatior;\n    function onScroll() {\n        const { top } = trigger.getBoundingClientRect();\n        let action;\n        if (top <= 0) {\n            action = resetElement;\n        } else if (top >= windowHeight) {\n            action = hideElement;\n        }\n\n        if (previousAction === action) {\n            return;\n        }\n\n        if (!action) {\n            action = moveElement;\n        }\n        action(top);\n        previousAction = action;\n    }\n\n    const scrollHandler = debounce(createIdleScrollListener(onScroll), 16);\n    window.addEventListener(\"scroll\", scrollHandler, { passive: true });\n}\n\nfunction getHandler(triggerName) {\n    if (triggerName === \"sticky\") {\n        return handleStickyElement;\n    }\n\n    return handleClassToggler;\n}\n\nfunction getTargetElement(trigger) {\n    const { target } = trigger.dataset;\n    return document.querySelector(target);\n}\n\nexport default function scrollTrigger(context, trigger) {\n    const { triggers } = trigger.dataset;\n    const target = getTargetElement(trigger);\n    const handler = getHandler(triggers);\n    handler(context, trigger, target);\n}\n"],"names":["handleClassToggler","context","trigger","target","toggleClass","dataset","removeClass","classList","remove","intersectionObserverProvider","addTask","onAboveViewport","add","onBellowViewport","onIntersect","rawNodes","DEFAULT_TRANSITION_MS","DEFAULT_THRESHOLD","handleStickyElement","_context","threshold","parseInt","offset","transition","parseFloat","restingTranslate","windowHeight","hiddenTranslate","width","onResize","offsetWidth","window","innerHeight","style","moveElement","top","distance","lowerLimit","upperLimit","number","Math","max","min","transform","resetElement","hideElement","addEventListener","passive","getBoundingClientRect","initiatior","setTimeout","opacity","previousAction","scrollHandler","handler","time","timeout","runner","cancel","clearTimeout","debounce","action","scrollTrigger","triggers","document","querySelector","getTargetElement"],"sourceRoot":""}