{"version":3,"sources":["webpack:///./handlers/scrollText.js"],"names":["appleExpression","safariExpression","isAppleSafari","test","navigator","vendor","userAgent","scrollText","el","isRtlLang","document","dir","path","querySelector","textPath","textWidth","getComputedTextLength","pathLen","getTotalLength","durationFactor","Math","max","ltrOffsets","rtlOffsets","delay","random","duration","anime","targets","startOffset","round","loop","easing","style","visibility","window","addEventListener","debounce","bgEl","containerEl","savedBgStyle","backgroundImage","opacity","setTimeout"],"mappings":"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","file":"scroll-text-cta.js","sourcesContent":["import anime from 'animejs/lib/anime.es.js';\nimport debounce from 'lodash-es/debounce';\n\nconst appleExpression = /Apple/i;\nconst safariExpression = /Safari/i;\n\nconst isAppleSafari = () => {\n    return appleExpression.test(navigator.vendor) &&\n        safariExpression.test(navigator.userAgent);\n};\n\nconst scrollText = (el) => {\n    const isRtlLang = document.dir === 'rtl';\n\n    const path = el.querySelector('path');\n    const textPath = el.querySelector('textPath');\n    if(!textPath || !path) {\n        return;\n    }\n\n    const textWidth = textPath.getComputedTextLength()*1.1;\n    const pathLen = path.getTotalLength();\n\n    // adjust animation duration based on text / path length to\n    // make it run at about the same speed for texts of different lengths\n    let durationFactor = Math.max(textWidth / pathLen, 0.7) * 1;\n\n    let ltrOffsets, rtlOffsets;\n    if(isAppleSafari()) {\n        ltrOffsets = [textWidth, -textWidth * 2];\n        rtlOffsets = [-textWidth * 2, textWidth];\n    } else {\n        ltrOffsets = [textWidth * 1.35, -textWidth];\n        rtlOffsets = [-textWidth, textWidth * 1.35];\n    }\n\n    const delay = Math.random() * 500;\n    const duration = durationFactor * 10000 * 1;\n\n    // const isRespScreen = window.matchMedia('(max-width: 400px)');\n    // const duration = durationFactor * 10000 * (isRespScreen.matches ? 0.8 : 1);\n    anime({\n        targets: textPath,\n        startOffset: isRtlLang\n            ? rtlOffsets\n            : ltrOffsets,\n        duration,\n        round: 1,\n        loop: true,\n        easing: 'linear',\n        // add random delay so that pages that have multiple scrolling texts\n        // don't all scroll in unison\n        delay,\n        // complete: function (anim) {\n        //     console.log('completed : ' + anim.completed);\n        // }\n    });\n\n    el.style.visibility = 'visible';\n\n    // hacky fix for rendering issue with mask-image + linear-gradient\n    // in Chrome 96 (probably < 96 too)\n    window.addEventListener('resize', debounce(() => {\n        const bgEl = el.querySelector('.js-scroll-text--bg');\n        // only needed for scroll text cta, not scroll text block\n        if(!bgEl) {\n            return;\n        }\n\n        const containerEl = el.querySelector('.js-scroll-text--svg-wrapper');\n        const savedBgStyle = bgEl.style.backgroundImage;\n\n        containerEl.style.opacity = 0;\n        bgEl.style.backgroundImage = '';\n\n        setTimeout(() => {\n            bgEl.style.backgroundImage = savedBgStyle;\n            setTimeout(() => containerEl.style.opacity = 1, 500);\n        }, 40);\n    }, 40));\n}\n\nexport default scrollText;\n"],"sourceRoot":""}