{"version":3,"file":"static/js/9344.54746c4d.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 { u as now, p 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 = 200;\nconst CLEAR_STATE_DEFERS = 200;\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","x","y","pointerCoord","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":""}