{"version":3,"file":"static/js/344.5f25c359.chunk.js","mappings":"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","sources":["../node_modules/@ionic/core/components/index9.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { v as now, u as pointerCoord } from './helpers.js';\n\nconst startTapClick = (config) => {\n let lastTouch = -MOUSE_WAIT * 10;\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 // Touch Events\n const onTouchStart = (ev) => {\n lastTouch = now(ev);\n pointerDown(ev);\n };\n const onTouchEnd = (ev) => {\n lastTouch = now(ev);\n pointerUp(ev);\n };\n const onMouseDown = (ev) => {\n // Ignore right clicks\n if (ev.button === 2) {\n return;\n }\n const t = now(ev) - MOUSE_WAIT;\n if (lastTouch < t) {\n pointerDown(ev);\n }\n };\n const onMouseUp = (ev) => {\n const t = now(ev) - MOUSE_WAIT;\n if (lastTouch < t) {\n pointerUp(ev);\n }\n };\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 if (activatableEle) {\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 const doc = document;\n doc.addEventListener('ionGestureCaptured', cancelActive);\n doc.addEventListener('touchstart', onTouchStart, true);\n doc.addEventListener('touchcancel', onTouchEnd, true);\n doc.addEventListener('touchend', onTouchEnd, 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 doc.addEventListener('mousedown', onMouseDown, true);\n doc.addEventListener('mouseup', onMouseUp, 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;\nconst MOUSE_WAIT = 2500;\n\nexport { startTapClick };\n"],"names":["startTapClick","config","activatableEle","activeRipple","activeDefer","lastTouch","MOUSE_WAIT","lastActivated","useRippleEffect","getBoolean","clearDefers","WeakMap","onTouchEnd","ev","now","pointerUp","cancelActive","clearTimeout","undefined","removeActivated","pointerDown","setActivatedElement","getActivatableTarget","el","_pointerCoord","pointerCoord","x","y","has","Error","classList","contains","ACTIVATED","addActivated","deferId","get","delete","remove","callback","isInstant","setTimeout","ADD_ACTIVATED_DEFERS","Date","add","rippleEffect","getRippleEffect","removeRipple","addRipple","then","smooth","active","time","CLEAR_STATE_DEFERS","set","doc","document","addEventListener","button","t","composedPath","target","closest","path","i","length","ShadowRoot","shadowRoot","ripple","querySelector"],"sourceRoot":""}