PageSourceSearch

https://tru-x.com/node_modules_ionic_core_dist_esm_tap-click-a895802b_js.js

js tru-x.com collected 2026-10-04 13:34:40 UTC 5,885 bytes, 194 lines download raw bytes

1"use strict";
2(self["webpackChunkapp"] = self["webpackChunkapp"] || []).push([["node_modules_ionic_core_dist_esm_tap-click-a895802b_js"],{
3
4/***/ 4747:
5/*!*****************************************************************!*\
6  !*** ./node_modules/@ionic/core/dist/esm/tap-click-a895802b.js ***!
7  \*****************************************************************/
8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
10__webpack_require__.r(__webpack_exports__);
11/* harmony export */ __webpack_require__.d(__webpack_exports__, {
12/* harmony export */   "startTapClick": () => (/* binding */ startTapClick)
13/* harmony export */ });
14/* harmony import */ var _helpers_6e1e5b65_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers-6e1e5b65.js */ 8345);
15/*!
16 * (C) Ionic http://ionicframework.com - MIT License
17 */
18
19
20const startTapClick = (config) => {
21  let lastTouch = -MOUSE_WAIT * 10;
22  let lastActivated = 0;
23  let scrollingEl;
24  let activatableEle;
25  let activeRipple;
26  let activeDefer;
27  const useRippleEffect = config.getBoolean('animated', true) && config.getBoolean('rippleEffect', true);
28  const clearDefers = new WeakMap();
29  const isScrolling = () => {
30    return scrollingEl !== undefined && scrollingEl.parentElement !== null;
31  };
32  // Touch Events
33  const onTouchStart = (ev) => {
34    lastTouch = (0,_helpers_6e1e5b65_js__WEBPACK_IMPORTED_MODULE_0__.q)(ev);
35    pointerDown(ev);
36  };
37  const onTouchEnd = (ev) => {
38    lastTouch = (0,_helpers_6e1e5b65_js__WEBPACK_IMPORTED_MODULE_0__.q)(ev);
39    pointerUp(ev);
40  };
41  const onMouseDown = (ev) => {
42    const t = (0,_helpers_6e1e5b65_js__WEBPACK_IMPORTED_MODULE_0__.q)(ev) - MOUSE_WAIT;
43    if (lastTouch < t) {
44      pointerDown(ev);
45    }
46  };
47  const onMouseUp = (ev) => {
48    const t = (0,_helpers_6e1e5b65_js__WEBPACK_IMPORTED_MODULE_0__.q)(ev) - MOUSE_WAIT;
49    if (lastTouch < t) {
50      pointerUp(ev);
51    }
52  };
53  const onContextMenu = (ev) => {
54    pointerUp(ev);
55  };
56  const cancelActive = () => {
57    clearTimeout(activeDefer);
58    activeDefer = undefined;
59    if (activatableEle) {
60      removeActivated(false);
61      activatableEle = undefined;
62    }
63  };
64  const pointerDown = (ev) => {
65    if (activatableEle || isScrolling()) {
66      return;
67    }
68    scrollingEl = undefined;
69    setActivatedElement(getActivatableTarget(ev), ev);
70  };
71  const pointerUp = (ev) => {
72    setActivatedElement(undefined, ev);
73  };
74  const setActivatedElement = (el, ev) => {
75    // do nothing
76    if (el && el === activatableEle) {
77      return;
78    }
79    clearTimeout(activeDefer);
80    activeDefer = undefined;
81    const { x, y } = (0,_helpers_6e1e5b65_js__WEBPACK_IMPORTED_MODULE_0__.p)(ev);
82    // deactivate selected
83    if (activatableEle) {
84      if (clearDefers.has(activatableEle)) {
85        throw new Error('internal error');
86      }
87      if (!activatableEle.classList.contains(ACTIVATED)) {
88        addActivated(activatableEle, x, y);
89      }
90      removeActivated(true);
91    }
92    // activate
93    if (el) {
94      const deferId = clearDefers.get(el);
95      if (deferId) {
96        clearTimeout(deferId);
97        clearDefers.delete(el);
98      }
99      const delay = isInstant(el) ? 0 : ADD_ACTIVATED_DEFERS;
100      el.classList.remove(ACTIVATED);
101      activeDefer = setTimeout(() => {
102        addActivated(el, x, y);
103        activeDefer = undefined;
104      }, delay);
105    }
106    activatableEle = el;
107  };
108  const addActivated = (el, x, y) => {
109    lastActivated = Date.now();
110    el.classList.add(ACTIVATED);
111    const rippleEffect = useRippleEffect && getRippleEffect(el);
112    if (rippleEffect && rippleEffect.addRipple) {
113      removeRipple();
114      activeRipple = rippleEffect.addRipple(x, y);
115    }
116  };
117  const removeRipple = () => {
118    if (activeRipple !== undefined) {
119      activeRipple.then(remove => remove());
120      activeRipple = undefined;
121    }
122  };
123  const removeActivated = (smooth) => {
124    removeRipple();
125    const active = activatableEle;
126    if (!active) {
127      return;
128    }
129    const time = CLEAR_STATE_DEFERS - Date.now() + lastActivated;
130    if (smooth && time > 0 && !isInstant(active)) {
131      const deferId = setTimeout(() => {
132        active.classList.remove(ACTIVATED);
133        clearDefers.delete(active);
134      }, CLEAR_STATE_DEFERS);
135      clearDefers.set(active, deferId);
136    }
137    else {
138      active.classList.remove(ACTIVATED);
139    }
140  };
141  const doc = document;
142  doc.addEventListener('ionScrollStart', ev => {
143    scrollingEl = ev.target;
144    cancelActive();
145  });
146  doc.addEventListener('ionScrollEnd', () => {
147    scrollingEl = undefined;
148  });
149  doc.addEventListener('ionGestureCaptured', cancelActive);
150  doc.addEventListener('touchstart', onTouchStart, true);
151  doc.addEventListener('touchcancel', onTouchEnd, true);
152  doc.addEventListener('touchend', onTouchEnd, true);
153  doc.addEventListener('mousedown', onMouseDown, true);
154  doc.addEventListener('mouseup', onMouseUp, true);
155  doc.addEventListener('contextmenu', onContextMenu, true);
156};
157const getActivatableTarget = (ev) => {
158  if (ev.composedPath) {
159    const path = ev.composedPath();
160    for (let i = 0; i < path.length - 2; i++) {
161      const el = path[i];
162      if (el.classList && el.classList.contains('ion-activatable')) {
163        return el;
164      }
165    }
166  }
167  else {
168    return ev.target.closest('.ion-activatable');
169  }
170};
171const isInstant = (el) => {
172  return el.classList.contains('ion-activatable-instant');
173};
174const getRippleEffect = (el) => {
175  if (el.shadowRoot) {
176    const ripple = el.shadowRoot.querySelector('ion-ripple-effect');
177    if (ripple) {
178      return ripple;
179    }
180  }
181  return el.querySelector('ion-ripple-effect');
182};
183const ACTIVATED = 'ion-activated';
184const ADD_ACTIVATED_DEFERS = 200;
185const CLEAR_STATE_DEFERS = 200;
186const MOUSE_WAIT = 2500;
187
188
189
190
191/***/ })
192
193}]);
194//# sourceMappingURL=node_modules_ionic_core_dist_esm_tap-click-a895802b_js.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.