{"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]}