{"version":3,"file":"5561.c7aa9f6e292fc665.js","mappings":"yJAMA,MAAMA,EAAiBC,IACnB,QAAYC,IAARC,IACA,OAEJ,IACIC,EACAC,EACAC,EAHAC,EAAgB,EAIpB,MAAMC,EAAkBP,EAAOQ,WAAW,YAAY,IAASR,EAAOQ,WAAW,gBAAgB,GAC3FC,EAAc,IAAIC,QAClBC,EAAeA,KACbN,GACAO,aAAaP,GACjBA,OAAcJ,EACVE,IACAU,GAAgB,GAChBV,OAAiBF,IAanBa,EAAsBA,CAACC,EAAIC,KAE7B,GAAID,GAAMA,IAAOZ,EACb,OAEAE,GACAO,aAAaP,GACjBA,OAAcJ,EACd,MAAQgB,IAAGC,MAAE,EAAIC,KAAaH,GAE9B,GAAIb,EAAgB,CAChB,GAAIM,EAAYW,IAAIjB,GAChB,MAAM,IAAIkB,MAAM,kBAEflB,EAAemB,UAAUC,SAASC,IACnCC,EAAatB,EAAgBc,EAAGC,GAEpCL,GAAgB,EACpB,CAEA,GAAIE,EAAI,CACJ,MAAMW,EAAUjB,EAAYkB,IAAIZ,GAC5BW,IACAd,aAAac,GACbjB,EAAYmB,OAAOb,IAEvBA,EAAGO,UAAUO,OAAOL,GACpB,MAAMM,EAAWA,KACbL,EAAaV,EAAIE,EAAGC,GACpBb,OAAcJ,GAEd8B,EAAUhB,GACVe,IAGAzB,EAAc2B,WAAWF,EAAUG,EAE3C,CACA9B,EAAiBY,GAEfU,EAAeA,CAACV,EAAIE,EAAGC,KAGzB,GAFAZ,EAAgB4B,KAAKC,MACrBpB,EAAGO,UAAUc,IAAIZ,IACZjB,EACD,OACJ,MAAM8B,EAAeC,EAAgBvB,GAChB,OAAjBsB,IACAE,IACAnC,EAAeiC,EAAaG,UAAUvB,EAAGC,GAAC,EAG5CqB,EAAeA,UACItC,IAAjBG,IACAA,EAAaqC,KAAMZ,GAAWA,KAC9BzB,OAAeH,IAGjBY,EAAmB6B,IACrBH,IACA,MAAMI,EAASxC,EACf,IAAKwC,EACD,OAEJ,MAAMC,EAAOC,EAAqBX,KAAKC,MAAQ7B,EAC/C,GAAIoC,GAAUE,EAAO,IAAMb,EAAUY,GAAS,CAC1C,MAAMjB,EAAUM,WAAW,KACvBW,EAAOrB,UAAUO,OAAOL,GACxBf,EAAYmB,OAAOe,EAAM,EAC1BE,GACHpC,EAAYqC,IAAIH,EAAQjB,EAC5B,MAEIiB,EAAOrB,UAAUO,OAAOL,EAAS,EAGzCtB,IAAI6C,iBAAiB,qBAAsBpC,GAC3CT,IAAI6C,iBAAiB,cAtFA/B,IAEbb,GAAgC,IAAda,EAAGgC,QAGzBlC,EAAoBmC,EAAqBjC,GAAKA,EAAE,GAiFH,GACjDd,IAAI6C,iBAAiB,YAhFF/B,IACfF,OAAoBb,EAAWe,EAAE,GA+EQ,GAa7Cd,IAAI6C,iBAAiB,gBAAiBpC,GAAc,EAAI,EAGtDsC,EAAwBjC,IAC1B,QAAwBf,IAApBe,EAAGkC,aAkBH,OAAOlC,EAAGmC,OAAOC,QAAQ,oBAlBM,CAS/B,MAAMC,EAAOrC,EAAGkC,eAChB,QAASI,EAAI,EAAGA,EAAID,EAAKE,OAAS,EAAGD,IAAK,CACtC,MAAMvC,EAAKsC,EAAKC,GAChB,KAAMvC,aAAcyC,aAAezC,EAAGO,UAAUC,SAAS,mBACrD,OAAOR,CAEf,CACJ,CAE+C,EAG7CgB,EAAahB,GACRA,EAAGO,UAAUC,SAAS,2BAE3Be,EAAmBvB,IACrB,GAAIA,EAAG0C,WAAY,CACf,MAAMC,EAAS3C,EAAG0C,WAAWE,cAAc,qBAC3C,GAAID,EACA,OAAOA,CAEf,CACA,OAAO3C,EAAG4C,cAAc,oBAAmB,EAEzCnC,EAAY,gBACZS,EAAuB,IACvBY,EAAqB","names":["startTapClick","config","undefined","doc","activatableEle","activeRipple","activeDefer","lastActivated","useRippleEffect","getBoolean","clearDefers","WeakMap","cancelActive","clearTimeout","removeActivated","setActivatedElement","el","ev","x","y","pointerCoord","has","Error","classList","contains","ACTIVATED","addActivated","deferId","get","delete","remove","callback","isInstant","setTimeout","ADD_ACTIVATED_DEFERS","Date","now","add","rippleEffect","getRippleEffect","removeRipple","addRipple","then","smooth","active","time","CLEAR_STATE_DEFERS","set","addEventListener","button","getActivatableTarget","composedPath","target","closest","path","i","length","ShadowRoot","shadowRoot","ripple","querySelector"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./node_modules/@ionic/core/components/index9.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { d as doc } from './index5.js';\nimport { p as pointerCoord } from './helpers.js';\n\nconst startTapClick = (config) => {\n    if (doc === undefined) {\n        return;\n    }\n    let lastActivated = 0;\n    let activatableEle;\n    let activeRipple;\n    let activeDefer;\n    const useRippleEffect = config.getBoolean('animated', true) && config.getBoolean('rippleEffect', true);\n    const clearDefers = new WeakMap();\n    const cancelActive = () => {\n        if (activeDefer)\n            clearTimeout(activeDefer);\n        activeDefer = undefined;\n        if (activatableEle) {\n            removeActivated(false);\n            activatableEle = undefined;\n        }\n    };\n    const pointerDown = (ev) => {\n        // Ignore right clicks\n        if (activatableEle || ev.button === 2) {\n            return;\n        }\n        setActivatedElement(getActivatableTarget(ev), ev);\n    };\n    const pointerUp = (ev) => {\n        setActivatedElement(undefined, ev);\n    };\n    const setActivatedElement = (el, ev) => {\n        // do nothing\n        if (el && el === activatableEle) {\n            return;\n        }\n        if (activeDefer)\n            clearTimeout(activeDefer);\n        activeDefer = undefined;\n        const { x, y } = pointerCoord(ev);\n        // deactivate selected\n        if (activatableEle) {\n            if (clearDefers.has(activatableEle)) {\n                throw new Error('internal error');\n            }\n            if (!activatableEle.classList.contains(ACTIVATED)) {\n                addActivated(activatableEle, x, y);\n            }\n            removeActivated(true);\n        }\n        // activate\n        if (el) {\n            const deferId = clearDefers.get(el);\n            if (deferId) {\n                clearTimeout(deferId);\n                clearDefers.delete(el);\n            }\n            el.classList.remove(ACTIVATED);\n            const callback = () => {\n                addActivated(el, x, y);\n                activeDefer = undefined;\n            };\n            if (isInstant(el)) {\n                callback();\n            }\n            else {\n                activeDefer = setTimeout(callback, ADD_ACTIVATED_DEFERS);\n            }\n        }\n        activatableEle = el;\n    };\n    const addActivated = (el, x, y) => {\n        lastActivated = Date.now();\n        el.classList.add(ACTIVATED);\n        if (!useRippleEffect)\n            return;\n        const rippleEffect = getRippleEffect(el);\n        if (rippleEffect !== null) {\n            removeRipple();\n            activeRipple = rippleEffect.addRipple(x, y);\n        }\n    };\n    const removeRipple = () => {\n        if (activeRipple !== undefined) {\n            activeRipple.then((remove) => remove());\n            activeRipple = undefined;\n        }\n    };\n    const removeActivated = (smooth) => {\n        removeRipple();\n        const active = activatableEle;\n        if (!active) {\n            return;\n        }\n        const time = CLEAR_STATE_DEFERS - Date.now() + lastActivated;\n        if (smooth && time > 0 && !isInstant(active)) {\n            const deferId = setTimeout(() => {\n                active.classList.remove(ACTIVATED);\n                clearDefers.delete(active);\n            }, CLEAR_STATE_DEFERS);\n            clearDefers.set(active, deferId);\n        }\n        else {\n            active.classList.remove(ACTIVATED);\n        }\n    };\n    doc.addEventListener('ionGestureCaptured', cancelActive);\n    doc.addEventListener('pointerdown', pointerDown, true);\n    doc.addEventListener('pointerup', pointerUp, true);\n    /**\n     * Tap click effects such as the ripple effect should\n     * not happen when scrolling. For example, if a user scrolls\n     * the page but also happens to do a touchstart on a button\n     * as part of the scroll, the ripple effect should not\n     * be dispatched. The ripple effect should only happen\n     * if the button is activated and the page is not scrolling.\n     *\n     * pointercancel is dispatched on a gesture when scrolling\n     * starts, so this lets us avoid having to listen for\n     * ion-content's scroll events.\n     */\n    doc.addEventListener('pointercancel', cancelActive, true);\n};\n// TODO(FW-2832): type\nconst getActivatableTarget = (ev) => {\n    if (ev.composedPath !== undefined) {\n        /**\n         * composedPath returns EventTarget[]. However,\n         * objects other than Element can be targets too.\n         * For example, AudioContext can be a target. In this\n         * case, we know that the event is a UIEvent so we\n         * can assume that the path will contain either Element\n         * or ShadowRoot.\n         */\n        const path = ev.composedPath();\n        for (let i = 0; i < path.length - 2; i++) {\n            const el = path[i];\n            if (!(el instanceof ShadowRoot) && el.classList.contains('ion-activatable')) {\n                return el;\n            }\n        }\n    }\n    else {\n        return ev.target.closest('.ion-activatable');\n    }\n};\nconst isInstant = (el) => {\n    return el.classList.contains('ion-activatable-instant');\n};\nconst getRippleEffect = (el) => {\n    if (el.shadowRoot) {\n        const ripple = el.shadowRoot.querySelector('ion-ripple-effect');\n        if (ripple) {\n            return ripple;\n        }\n    }\n    return el.querySelector('ion-ripple-effect');\n};\nconst ACTIVATED = 'ion-activated';\nconst ADD_ACTIVATED_DEFERS = 100;\nconst CLEAR_STATE_DEFERS = 150;\n\nexport { startTapClick };\n"],"x_google_ignoreList":[0]}