@hanzogui/react-native-use-responder-events 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/cjs/ResponderSystem.cjs +251 -0
- package/dist/cjs/ResponderSystem.native.js +253 -0
- package/dist/cjs/ResponderSystem.native.js.map +1 -0
- package/dist/cjs/ResponderTouchHistoryStore.cjs +112 -0
- package/dist/cjs/ResponderTouchHistoryStore.native.js +156 -0
- package/dist/cjs/ResponderTouchHistoryStore.native.js.map +1 -0
- package/dist/cjs/createResponderEvent.cjs +135 -0
- package/dist/cjs/createResponderEvent.native.js +140 -0
- package/dist/cjs/createResponderEvent.native.js.map +1 -0
- package/dist/cjs/index.cjs +18 -0
- package/dist/cjs/index.native.js +21 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/types.cjs +76 -0
- package/dist/cjs/types.native.js +79 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/useResponderEvents.cjs +95 -0
- package/dist/cjs/useResponderEvents.native.js +102 -0
- package/dist/cjs/useResponderEvents.native.js.map +1 -0
- package/dist/cjs/utils.cjs +126 -0
- package/dist/cjs/utils.native.js +126 -0
- package/dist/cjs/utils.native.js.map +1 -0
- package/dist/esm/ResponderSystem.mjs +224 -0
- package/dist/esm/ResponderSystem.mjs.map +1 -0
- package/dist/esm/ResponderSystem.native.js +223 -0
- package/dist/esm/ResponderSystem.native.js.map +1 -0
- package/dist/esm/ResponderTouchHistoryStore.mjs +89 -0
- package/dist/esm/ResponderTouchHistoryStore.mjs.map +1 -0
- package/dist/esm/ResponderTouchHistoryStore.native.js +130 -0
- package/dist/esm/ResponderTouchHistoryStore.native.js.map +1 -0
- package/dist/esm/createResponderEvent.mjs +112 -0
- package/dist/esm/createResponderEvent.mjs.map +1 -0
- package/dist/esm/createResponderEvent.native.js +114 -0
- package/dist/esm/createResponderEvent.native.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +2 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/types.mjs +34 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +34 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/useResponderEvents.mjs +59 -0
- package/dist/esm/useResponderEvents.mjs.map +1 -0
- package/dist/esm/useResponderEvents.native.js +63 -0
- package/dist/esm/useResponderEvents.native.js.map +1 -0
- package/dist/esm/utils.mjs +95 -0
- package/dist/esm/utils.mjs.map +1 -0
- package/dist/esm/utils.native.js +92 -0
- package/dist/esm/utils.native.js.map +1 -0
- package/package.json +42 -0
- package/src/ResponderSystem.ts +555 -0
- package/src/ResponderTouchHistoryStore.ts +211 -0
- package/src/createResponderEvent.ts +190 -0
- package/src/index.ts +1 -0
- package/src/types.ts +78 -0
- package/src/useResponderEvents.ts +107 -0
- package/src/utils.ts +196 -0
- package/types/ResponderSystem.d.ts +47 -0
- package/types/ResponderSystem.d.ts.map +1 -0
- package/types/ResponderTouchHistoryStore.d.ts +37 -0
- package/types/ResponderTouchHistoryStore.d.ts.map +1 -0
- package/types/createResponderEvent.d.ts +36 -0
- package/types/createResponderEvent.d.ts.map +1 -0
- package/types/index.d.ts +2 -0
- package/types/index.d.ts.map +1 -0
- package/types/types.d.ts +52 -0
- package/types/types.d.ts.map +1 -0
- package/types/useResponderEvents.d.ts +10 -0
- package/types/useResponderEvents.d.ts.map +1 -0
- package/types/utils.d.ts +38 -0
- package/types/utils.d.ts.map +1 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { createResponderEvent } from "./createResponderEvent.mjs";
|
|
2
|
+
import { ResponderTouchHistoryStore } from "./ResponderTouchHistoryStore.mjs";
|
|
3
|
+
import { isCancelish, isEndish, isMoveish, isScroll, isSelectionChange, isStartish } from "./types.mjs";
|
|
4
|
+
import { canUseDOM } from "./utils.mjs";
|
|
5
|
+
import { getLowestCommonAncestor, getResponderPaths, hasTargetTouches, hasValidSelection, isPrimaryPointerDown, setResponderId } from "./utils.mjs";
|
|
6
|
+
const emptyObject = {},
|
|
7
|
+
startRegistration = ["onStartShouldSetResponderCapture", "onStartShouldSetResponder", {
|
|
8
|
+
bubbles: !0
|
|
9
|
+
}],
|
|
10
|
+
moveRegistration = ["onMoveShouldSetResponderCapture", "onMoveShouldSetResponder", {
|
|
11
|
+
bubbles: !0
|
|
12
|
+
}],
|
|
13
|
+
scrollRegistration = ["onScrollShouldSetResponderCapture", "onScrollShouldSetResponder", {
|
|
14
|
+
bubbles: !1
|
|
15
|
+
}],
|
|
16
|
+
shouldSetResponderEvents = {
|
|
17
|
+
touchstart: startRegistration,
|
|
18
|
+
mousedown: startRegistration,
|
|
19
|
+
touchmove: moveRegistration,
|
|
20
|
+
mousemove: moveRegistration,
|
|
21
|
+
scroll: scrollRegistration
|
|
22
|
+
},
|
|
23
|
+
emptyResponder = {
|
|
24
|
+
id: null,
|
|
25
|
+
idPath: null,
|
|
26
|
+
node: null
|
|
27
|
+
},
|
|
28
|
+
responderListenersMap = /* @__PURE__ */new Map();
|
|
29
|
+
let isEmulatingMouseEvents = !1,
|
|
30
|
+
trackedTouchCount = 0,
|
|
31
|
+
currentResponder = {
|
|
32
|
+
id: null,
|
|
33
|
+
node: null,
|
|
34
|
+
idPath: null
|
|
35
|
+
};
|
|
36
|
+
const responderTouchHistoryStore = new ResponderTouchHistoryStore();
|
|
37
|
+
function changeCurrentResponder(responder) {
|
|
38
|
+
currentResponder = responder;
|
|
39
|
+
}
|
|
40
|
+
function getResponderConfig(id) {
|
|
41
|
+
const config = responderListenersMap.get(id);
|
|
42
|
+
return config ?? emptyObject;
|
|
43
|
+
}
|
|
44
|
+
function eventListener(domEvent) {
|
|
45
|
+
const eventType = domEvent.type,
|
|
46
|
+
eventTarget = domEvent.target;
|
|
47
|
+
if (eventType === "touchstart" && (isEmulatingMouseEvents = !0), (eventType === "touchmove" || trackedTouchCount > 1) && (isEmulatingMouseEvents = !1),
|
|
48
|
+
// Ignore browser emulated mouse events
|
|
49
|
+
eventType === "mousedown" && isEmulatingMouseEvents || eventType === "mousemove" && isEmulatingMouseEvents ||
|
|
50
|
+
// Ignore mousemove if a mousedown didn't occur first
|
|
51
|
+
eventType === "mousemove" && trackedTouchCount < 1) return;
|
|
52
|
+
if (isEmulatingMouseEvents && eventType === "mouseup") {
|
|
53
|
+
trackedTouchCount === 0 && (isEmulatingMouseEvents = !1);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const isStartEvent = isStartish(eventType) && isPrimaryPointerDown(domEvent),
|
|
57
|
+
isMoveEvent = isMoveish(eventType),
|
|
58
|
+
isEndEvent = isEndish(eventType),
|
|
59
|
+
isScrollEvent = isScroll(eventType),
|
|
60
|
+
isSelectionChangeEvent = isSelectionChange(eventType),
|
|
61
|
+
responderEvent = createResponderEvent(domEvent, responderTouchHistoryStore);
|
|
62
|
+
(isStartEvent || isMoveEvent || isEndEvent) && (domEvent.touches ? trackedTouchCount = domEvent.touches.length : isStartEvent ? trackedTouchCount = 1 : isEndEvent && (trackedTouchCount = 0), responderTouchHistoryStore.recordTouchTrack(eventType, responderEvent.nativeEvent));
|
|
63
|
+
let eventPaths = getResponderPaths(domEvent),
|
|
64
|
+
wasNegotiated = !1,
|
|
65
|
+
wantsResponder;
|
|
66
|
+
if (isStartEvent || isMoveEvent || isScrollEvent && trackedTouchCount > 0) {
|
|
67
|
+
const currentResponderIdPath = currentResponder.idPath,
|
|
68
|
+
eventIdPath = eventPaths.idPath;
|
|
69
|
+
if (currentResponderIdPath != null && eventIdPath != null) {
|
|
70
|
+
const lowestCommonAncestor = getLowestCommonAncestor(currentResponderIdPath, eventIdPath);
|
|
71
|
+
if (lowestCommonAncestor != null) {
|
|
72
|
+
const index = eventIdPath.indexOf(lowestCommonAncestor) + (lowestCommonAncestor === currentResponder.id ? 1 : 0);
|
|
73
|
+
eventPaths = {
|
|
74
|
+
idPath: eventIdPath.slice(index),
|
|
75
|
+
nodePath: eventPaths.nodePath.slice(index)
|
|
76
|
+
};
|
|
77
|
+
} else eventPaths = null;
|
|
78
|
+
}
|
|
79
|
+
eventPaths != null && (wantsResponder = findWantsResponder(eventPaths, domEvent, responderEvent), wantsResponder != null && (attemptTransfer(responderEvent, wantsResponder), wasNegotiated = !0));
|
|
80
|
+
}
|
|
81
|
+
if (currentResponder.id != null && currentResponder.node != null) {
|
|
82
|
+
const {
|
|
83
|
+
id,
|
|
84
|
+
node
|
|
85
|
+
} = currentResponder,
|
|
86
|
+
{
|
|
87
|
+
onResponderStart,
|
|
88
|
+
onResponderMove,
|
|
89
|
+
onResponderEnd,
|
|
90
|
+
onResponderRelease,
|
|
91
|
+
onResponderTerminate,
|
|
92
|
+
onResponderTerminationRequest
|
|
93
|
+
} = getResponderConfig(id);
|
|
94
|
+
if (responderEvent.bubbles = !1, responderEvent.cancelable = !1, responderEvent.currentTarget = node, isStartEvent) onResponderStart != null && (responderEvent.dispatchConfig.registrationName = "onResponderStart", onResponderStart(responderEvent));else if (isMoveEvent) onResponderMove != null && (responderEvent.dispatchConfig.registrationName = "onResponderMove", onResponderMove(responderEvent));else {
|
|
95
|
+
const isTerminateEvent = isCancelish(eventType) ||
|
|
96
|
+
// native context menu
|
|
97
|
+
eventType === "contextmenu" ||
|
|
98
|
+
// window blur
|
|
99
|
+
eventType === "blur" && eventTarget === window ||
|
|
100
|
+
// responder (or ancestors) blur
|
|
101
|
+
eventType === "blur" && eventTarget.contains(node) && domEvent.relatedTarget !== node ||
|
|
102
|
+
// native scroll without using a pointer
|
|
103
|
+
isScrollEvent && trackedTouchCount === 0 ||
|
|
104
|
+
// native scroll on node that is parent of the responder (allow siblings to scroll)
|
|
105
|
+
isScrollEvent && eventTarget.contains(node) && eventTarget !== node ||
|
|
106
|
+
// native select/selectionchange on node
|
|
107
|
+
isSelectionChangeEvent && hasValidSelection(domEvent),
|
|
108
|
+
isReleaseEvent = isEndEvent && !isTerminateEvent && !hasTargetTouches(node, domEvent.touches);
|
|
109
|
+
if (isEndEvent && onResponderEnd != null && (responderEvent.dispatchConfig.registrationName = "onResponderEnd", onResponderEnd(responderEvent)), isReleaseEvent && (onResponderRelease != null && (responderEvent.dispatchConfig.registrationName = "onResponderRelease", onResponderRelease(responderEvent)), changeCurrentResponder(emptyResponder)), isTerminateEvent) {
|
|
110
|
+
let shouldTerminate = !0;
|
|
111
|
+
(eventType === "contextmenu" || eventType === "scroll" || eventType === "selectionchange") && (wasNegotiated ? shouldTerminate = !1 : onResponderTerminationRequest != null && (responderEvent.dispatchConfig.registrationName = "onResponderTerminationRequest", onResponderTerminationRequest(responderEvent) === !1 && (shouldTerminate = !1))), shouldTerminate && (onResponderTerminate != null && (responderEvent.dispatchConfig.registrationName = "onResponderTerminate", onResponderTerminate(responderEvent)), changeCurrentResponder(emptyResponder), isEmulatingMouseEvents = !1, trackedTouchCount = 0);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function findWantsResponder(eventPaths, domEvent, responderEvent) {
|
|
117
|
+
const shouldSetCallbacks = shouldSetResponderEvents[domEvent.type];
|
|
118
|
+
if (shouldSetCallbacks != null) {
|
|
119
|
+
const {
|
|
120
|
+
idPath,
|
|
121
|
+
nodePath
|
|
122
|
+
} = eventPaths,
|
|
123
|
+
shouldSetCallbackCaptureName = shouldSetCallbacks[0],
|
|
124
|
+
shouldSetCallbackBubbleName = shouldSetCallbacks[1],
|
|
125
|
+
{
|
|
126
|
+
bubbles
|
|
127
|
+
} = shouldSetCallbacks[2],
|
|
128
|
+
check = (id, node, callbackName) => {
|
|
129
|
+
const shouldSetCallback = getResponderConfig(id)[callbackName];
|
|
130
|
+
if (shouldSetCallback != null && (responderEvent.currentTarget = node, shouldSetCallback(responderEvent) === !0)) {
|
|
131
|
+
const prunedIdPath = idPath.slice(idPath.indexOf(id));
|
|
132
|
+
return {
|
|
133
|
+
id,
|
|
134
|
+
node,
|
|
135
|
+
idPath: prunedIdPath
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
for (let i = idPath.length - 1; i >= 0; i--) {
|
|
140
|
+
const id = idPath[i],
|
|
141
|
+
node = nodePath[i],
|
|
142
|
+
result = check(id, node, shouldSetCallbackCaptureName);
|
|
143
|
+
if (result != null) return result;
|
|
144
|
+
if (responderEvent.isPropagationStopped() === !0) return;
|
|
145
|
+
}
|
|
146
|
+
if (bubbles) for (let i = 0; i < idPath.length; i++) {
|
|
147
|
+
const id = idPath[i],
|
|
148
|
+
node = nodePath[i],
|
|
149
|
+
result = check(id, node, shouldSetCallbackBubbleName);
|
|
150
|
+
if (result != null) return result;
|
|
151
|
+
if (responderEvent.isPropagationStopped() === !0) return;
|
|
152
|
+
} else {
|
|
153
|
+
const id = idPath[0],
|
|
154
|
+
node = nodePath[0];
|
|
155
|
+
if (domEvent.target === node) return check(id, node, shouldSetCallbackBubbleName);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function attemptTransfer(responderEvent, wantsResponder) {
|
|
160
|
+
const {
|
|
161
|
+
id: currentId,
|
|
162
|
+
node: currentNode
|
|
163
|
+
} = currentResponder,
|
|
164
|
+
{
|
|
165
|
+
id,
|
|
166
|
+
node
|
|
167
|
+
} = wantsResponder,
|
|
168
|
+
{
|
|
169
|
+
onResponderGrant,
|
|
170
|
+
onResponderReject
|
|
171
|
+
} = getResponderConfig(id);
|
|
172
|
+
if (responderEvent.bubbles = !1, responderEvent.cancelable = !1, responderEvent.currentTarget = node, currentId == null) onResponderGrant != null && (responderEvent.currentTarget = node, responderEvent.dispatchConfig.registrationName = "onResponderGrant", onResponderGrant(responderEvent)), changeCurrentResponder(wantsResponder);else {
|
|
173
|
+
const {
|
|
174
|
+
onResponderTerminate,
|
|
175
|
+
onResponderTerminationRequest
|
|
176
|
+
} = getResponderConfig(currentId);
|
|
177
|
+
let allowTransfer = !0;
|
|
178
|
+
onResponderTerminationRequest != null && (responderEvent.currentTarget = currentNode, responderEvent.dispatchConfig.registrationName = "onResponderTerminationRequest", onResponderTerminationRequest(responderEvent) === !1 && (allowTransfer = !1)), allowTransfer ? (onResponderTerminate != null && (responderEvent.currentTarget = currentNode, responderEvent.dispatchConfig.registrationName = "onResponderTerminate", onResponderTerminate(responderEvent)), onResponderGrant != null && (responderEvent.currentTarget = node, responderEvent.dispatchConfig.registrationName = "onResponderGrant", onResponderGrant(responderEvent)), changeCurrentResponder(wantsResponder)) : onResponderReject != null && (responderEvent.currentTarget = node, responderEvent.dispatchConfig.registrationName = "onResponderReject", onResponderReject(responderEvent));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const documentEventsCapturePhase = ["blur", "scroll"],
|
|
182
|
+
documentEventsBubblePhase = [
|
|
183
|
+
// mouse
|
|
184
|
+
"mousedown", "mousemove", "mouseup", "dragstart",
|
|
185
|
+
// touch
|
|
186
|
+
"touchstart", "touchmove", "touchend", "touchcancel",
|
|
187
|
+
// other
|
|
188
|
+
"contextmenu", "select", "selectionchange"],
|
|
189
|
+
isGuiResponderActive = /* @__PURE__ */Symbol();
|
|
190
|
+
function attachListeners() {
|
|
191
|
+
canUseDOM && !window[isGuiResponderActive] && (window.addEventListener("blur", eventListener), documentEventsBubblePhase.forEach(eventType => {
|
|
192
|
+
document.addEventListener(eventType, eventListener);
|
|
193
|
+
}), documentEventsCapturePhase.forEach(eventType => {
|
|
194
|
+
document.addEventListener(eventType, eventListener, !0);
|
|
195
|
+
}), window[isGuiResponderActive] = !0);
|
|
196
|
+
}
|
|
197
|
+
function addNode(id, node, config) {
|
|
198
|
+
setResponderId(node, id), responderListenersMap.set(id, config);
|
|
199
|
+
}
|
|
200
|
+
function removeNode(id) {
|
|
201
|
+
currentResponder.id === id && terminateResponder(), responderListenersMap.has(id) && responderListenersMap.delete(id);
|
|
202
|
+
}
|
|
203
|
+
function terminateResponder() {
|
|
204
|
+
const {
|
|
205
|
+
id,
|
|
206
|
+
node
|
|
207
|
+
} = currentResponder;
|
|
208
|
+
if (id != null && node != null) {
|
|
209
|
+
const {
|
|
210
|
+
onResponderTerminate
|
|
211
|
+
} = getResponderConfig(id);
|
|
212
|
+
if (onResponderTerminate != null) {
|
|
213
|
+
const event = createResponderEvent({}, responderTouchHistoryStore);
|
|
214
|
+
event.currentTarget = node, onResponderTerminate(event);
|
|
215
|
+
}
|
|
216
|
+
changeCurrentResponder(emptyResponder);
|
|
217
|
+
}
|
|
218
|
+
isEmulatingMouseEvents = !1, trackedTouchCount = 0;
|
|
219
|
+
}
|
|
220
|
+
function getResponderNode() {
|
|
221
|
+
return currentResponder.node;
|
|
222
|
+
}
|
|
223
|
+
export { addNode, attachListeners, getResponderNode, removeNode, terminateResponder };
|
|
224
|
+
//# sourceMappingURL=ResponderSystem.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createResponderEvent","ResponderTouchHistoryStore","isCancelish","isEndish","isMoveish","isScroll","isSelectionChange","isStartish","canUseDOM","getLowestCommonAncestor","getResponderPaths","hasTargetTouches","hasValidSelection","isPrimaryPointerDown","setResponderId","emptyObject","startRegistration","bubbles","moveRegistration","scrollRegistration","shouldSetResponderEvents","touchstart","mousedown","touchmove","mousemove","scroll","emptyResponder","id","idPath","node","responderListenersMap","Map","isEmulatingMouseEvents","trackedTouchCount","currentResponder","responderTouchHistoryStore","changeCurrentResponder","responder","getResponderConfig","config","get","eventListener","domEvent","eventType","type","eventTarget","target","isStartEvent","isMoveEvent","isEndEvent","isScrollEvent","isSelectionChangeEvent","responderEvent","touches","length","recordTouchTrack","nativeEvent","eventPaths","wasNegotiated","wantsResponder","currentResponderIdPath","eventIdPath","lowestCommonAncestor","index","indexOf","slice","nodePath","findWantsResponder","attemptTransfer","onResponderStart","onResponderMove","onResponderEnd","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","cancelable","currentTarget","dispatchConfig","registrationName","isTerminateEvent","window","contains","relatedTarget","isReleaseEvent","shouldTerminate","shouldSetCallbacks","shouldSetCallbackCaptureName","shouldSetCallbackBubbleName","check","callbackName","shouldSetCallback","prunedIdPath","i","result","isPropagationStopped","currentId","currentNode","onResponderGrant","onResponderReject","allowTransfer","documentEventsCapturePhase","documentEventsBubblePhase","isGuiResponderActive","Symbol","attachListeners","addEventListener","forEach","document","addNode","set","removeNode","terminateResponder","has","delete","event","getResponderNode"],"sources":["../../src/ResponderSystem.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { createResponderEvent } from "./createResponderEvent.native.js";
|
|
2
|
+
import { ResponderTouchHistoryStore } from "./ResponderTouchHistoryStore.native.js";
|
|
3
|
+
import { isCancelish, isEndish, isMoveish, isScroll, isSelectionChange, isStartish } from "./types.native.js";
|
|
4
|
+
import { canUseDOM } from "./utils.native.js";
|
|
5
|
+
import { getLowestCommonAncestor, getResponderPaths, hasTargetTouches, hasValidSelection, isPrimaryPointerDown, setResponderId } from "./utils.native.js";
|
|
6
|
+
var emptyObject = {},
|
|
7
|
+
startRegistration = ["onStartShouldSetResponderCapture", "onStartShouldSetResponder", {
|
|
8
|
+
bubbles: !0
|
|
9
|
+
}],
|
|
10
|
+
moveRegistration = ["onMoveShouldSetResponderCapture", "onMoveShouldSetResponder", {
|
|
11
|
+
bubbles: !0
|
|
12
|
+
}],
|
|
13
|
+
scrollRegistration = ["onScrollShouldSetResponderCapture", "onScrollShouldSetResponder", {
|
|
14
|
+
bubbles: !1
|
|
15
|
+
}],
|
|
16
|
+
shouldSetResponderEvents = {
|
|
17
|
+
touchstart: startRegistration,
|
|
18
|
+
mousedown: startRegistration,
|
|
19
|
+
touchmove: moveRegistration,
|
|
20
|
+
mousemove: moveRegistration,
|
|
21
|
+
scroll: scrollRegistration
|
|
22
|
+
},
|
|
23
|
+
emptyResponder = {
|
|
24
|
+
id: null,
|
|
25
|
+
idPath: null,
|
|
26
|
+
node: null
|
|
27
|
+
},
|
|
28
|
+
responderListenersMap = /* @__PURE__ */new Map(),
|
|
29
|
+
isEmulatingMouseEvents = !1,
|
|
30
|
+
trackedTouchCount = 0,
|
|
31
|
+
currentResponder = {
|
|
32
|
+
id: null,
|
|
33
|
+
node: null,
|
|
34
|
+
idPath: null
|
|
35
|
+
},
|
|
36
|
+
responderTouchHistoryStore = new ResponderTouchHistoryStore();
|
|
37
|
+
function changeCurrentResponder(responder) {
|
|
38
|
+
currentResponder = responder;
|
|
39
|
+
}
|
|
40
|
+
function getResponderConfig(id) {
|
|
41
|
+
var config = responderListenersMap.get(id);
|
|
42
|
+
return config ?? emptyObject;
|
|
43
|
+
}
|
|
44
|
+
function eventListener(domEvent) {
|
|
45
|
+
var eventType = domEvent.type,
|
|
46
|
+
eventTarget = domEvent.target;
|
|
47
|
+
if (eventType === "touchstart" && (isEmulatingMouseEvents = !0), (eventType === "touchmove" || trackedTouchCount > 1) && (isEmulatingMouseEvents = !1),
|
|
48
|
+
// Ignore browser emulated mouse events
|
|
49
|
+
!(eventType === "mousedown" && isEmulatingMouseEvents || eventType === "mousemove" && isEmulatingMouseEvents ||
|
|
50
|
+
// Ignore mousemove if a mousedown didn't occur first
|
|
51
|
+
eventType === "mousemove" && trackedTouchCount < 1)) {
|
|
52
|
+
if (isEmulatingMouseEvents && eventType === "mouseup") {
|
|
53
|
+
trackedTouchCount === 0 && (isEmulatingMouseEvents = !1);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
var isStartEvent = isStartish(eventType) && isPrimaryPointerDown(domEvent),
|
|
57
|
+
isMoveEvent = isMoveish(eventType),
|
|
58
|
+
isEndEvent = isEndish(eventType),
|
|
59
|
+
isScrollEvent = isScroll(eventType),
|
|
60
|
+
isSelectionChangeEvent = isSelectionChange(eventType),
|
|
61
|
+
responderEvent = createResponderEvent(domEvent, responderTouchHistoryStore);
|
|
62
|
+
(isStartEvent || isMoveEvent || isEndEvent) && (domEvent.touches ? trackedTouchCount = domEvent.touches.length : isStartEvent ? trackedTouchCount = 1 : isEndEvent && (trackedTouchCount = 0), responderTouchHistoryStore.recordTouchTrack(eventType, responderEvent.nativeEvent));
|
|
63
|
+
var eventPaths = getResponderPaths(domEvent),
|
|
64
|
+
wasNegotiated = !1,
|
|
65
|
+
wantsResponder;
|
|
66
|
+
if (isStartEvent || isMoveEvent || isScrollEvent && trackedTouchCount > 0) {
|
|
67
|
+
var currentResponderIdPath = currentResponder.idPath,
|
|
68
|
+
eventIdPath = eventPaths.idPath;
|
|
69
|
+
if (currentResponderIdPath != null && eventIdPath != null) {
|
|
70
|
+
var lowestCommonAncestor = getLowestCommonAncestor(currentResponderIdPath, eventIdPath);
|
|
71
|
+
if (lowestCommonAncestor != null) {
|
|
72
|
+
var indexOfLowestCommonAncestor = eventIdPath.indexOf(lowestCommonAncestor),
|
|
73
|
+
index = indexOfLowestCommonAncestor + (lowestCommonAncestor === currentResponder.id ? 1 : 0);
|
|
74
|
+
eventPaths = {
|
|
75
|
+
idPath: eventIdPath.slice(index),
|
|
76
|
+
nodePath: eventPaths.nodePath.slice(index)
|
|
77
|
+
};
|
|
78
|
+
} else eventPaths = null;
|
|
79
|
+
}
|
|
80
|
+
eventPaths != null && (wantsResponder = findWantsResponder(eventPaths, domEvent, responderEvent), wantsResponder != null && (attemptTransfer(responderEvent, wantsResponder), wasNegotiated = !0));
|
|
81
|
+
}
|
|
82
|
+
if (currentResponder.id != null && currentResponder.node != null) {
|
|
83
|
+
var {
|
|
84
|
+
id,
|
|
85
|
+
node
|
|
86
|
+
} = currentResponder,
|
|
87
|
+
{
|
|
88
|
+
onResponderStart,
|
|
89
|
+
onResponderMove,
|
|
90
|
+
onResponderEnd,
|
|
91
|
+
onResponderRelease,
|
|
92
|
+
onResponderTerminate,
|
|
93
|
+
onResponderTerminationRequest
|
|
94
|
+
} = getResponderConfig(id);
|
|
95
|
+
if (responderEvent.bubbles = !1, responderEvent.cancelable = !1, responderEvent.currentTarget = node, isStartEvent) onResponderStart != null && (responderEvent.dispatchConfig.registrationName = "onResponderStart", onResponderStart(responderEvent));else if (isMoveEvent) onResponderMove != null && (responderEvent.dispatchConfig.registrationName = "onResponderMove", onResponderMove(responderEvent));else {
|
|
96
|
+
var isTerminateEvent = isCancelish(eventType) ||
|
|
97
|
+
// native context menu
|
|
98
|
+
eventType === "contextmenu" ||
|
|
99
|
+
// window blur
|
|
100
|
+
eventType === "blur" && eventTarget === window ||
|
|
101
|
+
// responder (or ancestors) blur
|
|
102
|
+
eventType === "blur" && eventTarget.contains(node) && domEvent.relatedTarget !== node ||
|
|
103
|
+
// native scroll without using a pointer
|
|
104
|
+
isScrollEvent && trackedTouchCount === 0 ||
|
|
105
|
+
// native scroll on node that is parent of the responder (allow siblings to scroll)
|
|
106
|
+
isScrollEvent && eventTarget.contains(node) && eventTarget !== node ||
|
|
107
|
+
// native select/selectionchange on node
|
|
108
|
+
isSelectionChangeEvent && hasValidSelection(domEvent),
|
|
109
|
+
isReleaseEvent = isEndEvent && !isTerminateEvent && !hasTargetTouches(node, domEvent.touches);
|
|
110
|
+
if (isEndEvent && onResponderEnd != null && (responderEvent.dispatchConfig.registrationName = "onResponderEnd", onResponderEnd(responderEvent)), isReleaseEvent && (onResponderRelease != null && (responderEvent.dispatchConfig.registrationName = "onResponderRelease", onResponderRelease(responderEvent)), changeCurrentResponder(emptyResponder)), isTerminateEvent) {
|
|
111
|
+
var shouldTerminate = !0;
|
|
112
|
+
(eventType === "contextmenu" || eventType === "scroll" || eventType === "selectionchange") && (wasNegotiated ? shouldTerminate = !1 : onResponderTerminationRequest != null && (responderEvent.dispatchConfig.registrationName = "onResponderTerminationRequest", onResponderTerminationRequest(responderEvent) === !1 && (shouldTerminate = !1))), shouldTerminate && (onResponderTerminate != null && (responderEvent.dispatchConfig.registrationName = "onResponderTerminate", onResponderTerminate(responderEvent)), changeCurrentResponder(emptyResponder), isEmulatingMouseEvents = !1, trackedTouchCount = 0);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function findWantsResponder(eventPaths, domEvent, responderEvent) {
|
|
119
|
+
var shouldSetCallbacks = shouldSetResponderEvents[domEvent.type];
|
|
120
|
+
if (shouldSetCallbacks != null) {
|
|
121
|
+
for (var {
|
|
122
|
+
idPath,
|
|
123
|
+
nodePath
|
|
124
|
+
} = eventPaths, shouldSetCallbackCaptureName = shouldSetCallbacks[0], shouldSetCallbackBubbleName = shouldSetCallbacks[1], {
|
|
125
|
+
bubbles
|
|
126
|
+
} = shouldSetCallbacks[2], check = function (id3, node3, callbackName) {
|
|
127
|
+
var config = getResponderConfig(id3),
|
|
128
|
+
shouldSetCallback = config[callbackName];
|
|
129
|
+
if (shouldSetCallback != null && (responderEvent.currentTarget = node3, shouldSetCallback(responderEvent) === !0)) {
|
|
130
|
+
var prunedIdPath = idPath.slice(idPath.indexOf(id3));
|
|
131
|
+
return {
|
|
132
|
+
id: id3,
|
|
133
|
+
node: node3,
|
|
134
|
+
idPath: prunedIdPath
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}, i = idPath.length - 1; i >= 0; i--) {
|
|
138
|
+
var id = idPath[i],
|
|
139
|
+
node = nodePath[i],
|
|
140
|
+
result = check(id, node, shouldSetCallbackCaptureName);
|
|
141
|
+
if (result != null) return result;
|
|
142
|
+
if (responderEvent.isPropagationStopped() === !0) return;
|
|
143
|
+
}
|
|
144
|
+
if (bubbles) for (var i1 = 0; i1 < idPath.length; i1++) {
|
|
145
|
+
var id1 = idPath[i1],
|
|
146
|
+
node1 = nodePath[i1],
|
|
147
|
+
result1 = check(id1, node1, shouldSetCallbackBubbleName);
|
|
148
|
+
if (result1 != null) return result1;
|
|
149
|
+
if (responderEvent.isPropagationStopped() === !0) return;
|
|
150
|
+
} else {
|
|
151
|
+
var id2 = idPath[0],
|
|
152
|
+
node2 = nodePath[0],
|
|
153
|
+
target = domEvent.target;
|
|
154
|
+
if (target === node2) return check(id2, node2, shouldSetCallbackBubbleName);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function attemptTransfer(responderEvent, wantsResponder) {
|
|
159
|
+
var {
|
|
160
|
+
id: currentId,
|
|
161
|
+
node: currentNode
|
|
162
|
+
} = currentResponder,
|
|
163
|
+
{
|
|
164
|
+
id,
|
|
165
|
+
node
|
|
166
|
+
} = wantsResponder,
|
|
167
|
+
{
|
|
168
|
+
onResponderGrant,
|
|
169
|
+
onResponderReject
|
|
170
|
+
} = getResponderConfig(id);
|
|
171
|
+
if (responderEvent.bubbles = !1, responderEvent.cancelable = !1, responderEvent.currentTarget = node, currentId == null) onResponderGrant != null && (responderEvent.currentTarget = node, responderEvent.dispatchConfig.registrationName = "onResponderGrant", onResponderGrant(responderEvent)), changeCurrentResponder(wantsResponder);else {
|
|
172
|
+
var {
|
|
173
|
+
onResponderTerminate,
|
|
174
|
+
onResponderTerminationRequest
|
|
175
|
+
} = getResponderConfig(currentId),
|
|
176
|
+
allowTransfer = !0;
|
|
177
|
+
onResponderTerminationRequest != null && (responderEvent.currentTarget = currentNode, responderEvent.dispatchConfig.registrationName = "onResponderTerminationRequest", onResponderTerminationRequest(responderEvent) === !1 && (allowTransfer = !1)), allowTransfer ? (onResponderTerminate != null && (responderEvent.currentTarget = currentNode, responderEvent.dispatchConfig.registrationName = "onResponderTerminate", onResponderTerminate(responderEvent)), onResponderGrant != null && (responderEvent.currentTarget = node, responderEvent.dispatchConfig.registrationName = "onResponderGrant", onResponderGrant(responderEvent)), changeCurrentResponder(wantsResponder)) : onResponderReject != null && (responderEvent.currentTarget = node, responderEvent.dispatchConfig.registrationName = "onResponderReject", onResponderReject(responderEvent));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
var documentEventsCapturePhase = ["blur", "scroll"],
|
|
181
|
+
documentEventsBubblePhase = [
|
|
182
|
+
// mouse
|
|
183
|
+
"mousedown", "mousemove", "mouseup", "dragstart",
|
|
184
|
+
// touch
|
|
185
|
+
"touchstart", "touchmove", "touchend", "touchcancel",
|
|
186
|
+
// other
|
|
187
|
+
"contextmenu", "select", "selectionchange"],
|
|
188
|
+
isGuiResponderActive = /* @__PURE__ */Symbol();
|
|
189
|
+
function attachListeners() {
|
|
190
|
+
canUseDOM && !window[isGuiResponderActive] && (window.addEventListener("blur", eventListener), documentEventsBubblePhase.forEach(function (eventType) {
|
|
191
|
+
document.addEventListener(eventType, eventListener);
|
|
192
|
+
}), documentEventsCapturePhase.forEach(function (eventType) {
|
|
193
|
+
document.addEventListener(eventType, eventListener, !0);
|
|
194
|
+
}), window[isGuiResponderActive] = !0);
|
|
195
|
+
}
|
|
196
|
+
function addNode(id, node, config) {
|
|
197
|
+
setResponderId(node, id), responderListenersMap.set(id, config);
|
|
198
|
+
}
|
|
199
|
+
function removeNode(id) {
|
|
200
|
+
currentResponder.id === id && terminateResponder(), responderListenersMap.has(id) && responderListenersMap.delete(id);
|
|
201
|
+
}
|
|
202
|
+
function terminateResponder() {
|
|
203
|
+
var {
|
|
204
|
+
id,
|
|
205
|
+
node
|
|
206
|
+
} = currentResponder;
|
|
207
|
+
if (id != null && node != null) {
|
|
208
|
+
var {
|
|
209
|
+
onResponderTerminate
|
|
210
|
+
} = getResponderConfig(id);
|
|
211
|
+
if (onResponderTerminate != null) {
|
|
212
|
+
var event = createResponderEvent({}, responderTouchHistoryStore);
|
|
213
|
+
event.currentTarget = node, onResponderTerminate(event);
|
|
214
|
+
}
|
|
215
|
+
changeCurrentResponder(emptyResponder);
|
|
216
|
+
}
|
|
217
|
+
isEmulatingMouseEvents = !1, trackedTouchCount = 0;
|
|
218
|
+
}
|
|
219
|
+
function getResponderNode() {
|
|
220
|
+
return currentResponder.node;
|
|
221
|
+
}
|
|
222
|
+
export { addNode, attachListeners, getResponderNode, removeNode, terminateResponder };
|
|
223
|
+
//# sourceMappingURL=ResponderSystem.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createResponderEvent","ResponderTouchHistoryStore","isCancelish","isEndish","isMoveish","isScroll","isSelectionChange","isStartish","canUseDOM","getLowestCommonAncestor","getResponderPaths","hasTargetTouches","hasValidSelection","isPrimaryPointerDown","setResponderId","emptyObject","startRegistration","bubbles","moveRegistration","scrollRegistration","shouldSetResponderEvents","touchstart","mousedown","touchmove","mousemove","scroll","emptyResponder","id","idPath","node","responderListenersMap","Map","isEmulatingMouseEvents","trackedTouchCount","currentResponder","responderTouchHistoryStore","changeCurrentResponder","responder","getResponderConfig","config","get","eventListener","domEvent","eventType","type","eventTarget","target","isStartEvent","isMoveEvent","isEndEvent","isScrollEvent","isSelectionChangeEvent","responderEvent","touches","length","recordTouchTrack","nativeEvent","eventPaths","wasNegotiated","wantsResponder","currentResponderIdPath","eventIdPath","lowestCommonAncestor","indexOfLowestCommonAncestor","indexOf","index","slice","nodePath","findWantsResponder","attemptTransfer","onResponderStart","onResponderMove","onResponderEnd","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","cancelable","currentTarget","dispatchConfig","registrationName","isTerminateEvent","window","contains","relatedTarget","isReleaseEvent","shouldTerminate","shouldSetCallbacks","shouldSetCallbackCaptureName","shouldSetCallbackBubbleName","check","id3","node3","callbackName","shouldSetCallback","prunedIdPath","i","result","isPropagationStopped","i1","id1","node1","result1","id2","node2","currentId","currentNode","onResponderGrant","onResponderReject","allowTransfer","documentEventsCapturePhase","documentEventsBubblePhase","isGuiResponderActive","Symbol","attachListeners","addEventListener","forEach","document","addNode","set","removeNode","terminateResponder","has","delete","event","getResponderNode"],"sources":["../../src/ResponderSystem.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { isEndish, isMoveish, isStartish } from "./types.mjs";
|
|
2
|
+
class ResponderTouchHistoryStore {
|
|
3
|
+
_touchHistory = {
|
|
4
|
+
touchBank: [],
|
|
5
|
+
//Array<TouchRecord>
|
|
6
|
+
numberActiveTouches: 0,
|
|
7
|
+
// If there is only one active touch, we remember its location. This prevents
|
|
8
|
+
// us having to loop through all of the touches all the time in the most
|
|
9
|
+
// common case.
|
|
10
|
+
indexOfSingleActiveTouch: -1,
|
|
11
|
+
mostRecentTimeStamp: 0
|
|
12
|
+
};
|
|
13
|
+
recordTouchTrack(topLevelType, nativeEvent) {
|
|
14
|
+
const touchHistory = this._touchHistory;
|
|
15
|
+
if (isMoveish(topLevelType)) nativeEvent.changedTouches.forEach(touch => recordTouchMove(touch, touchHistory));else if (isStartish(topLevelType)) nativeEvent.changedTouches.forEach(touch => recordTouchStart(touch, touchHistory)), touchHistory.numberActiveTouches = nativeEvent.touches.length, touchHistory.numberActiveTouches === 1 && (touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier);else if (isEndish(topLevelType) && (nativeEvent.changedTouches.forEach(touch => recordTouchEnd(touch, touchHistory)), touchHistory.numberActiveTouches = nativeEvent.touches.length, touchHistory.numberActiveTouches === 1)) {
|
|
16
|
+
const {
|
|
17
|
+
touchBank
|
|
18
|
+
} = touchHistory;
|
|
19
|
+
for (let i = 0; i < touchBank.length; i++) if (touchBank[i]?.touchActive) {
|
|
20
|
+
touchHistory.indexOfSingleActiveTouch = i;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
process.env.NODE_ENV === "development" && (touchBank[touchHistory.indexOfSingleActiveTouch]?.touchActive || console.error("Cannot find single active touch."));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
get touchHistory() {
|
|
27
|
+
return this._touchHistory;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const MAX_TOUCH_BANK = 20;
|
|
31
|
+
function timestampForTouch(touch) {
|
|
32
|
+
return touch.timeStamp || touch.timestamp;
|
|
33
|
+
}
|
|
34
|
+
function createTouchRecord(touch) {
|
|
35
|
+
return {
|
|
36
|
+
touchActive: !0,
|
|
37
|
+
startPageX: touch.pageX,
|
|
38
|
+
startPageY: touch.pageY,
|
|
39
|
+
startTimeStamp: timestampForTouch(touch),
|
|
40
|
+
currentPageX: touch.pageX,
|
|
41
|
+
currentPageY: touch.pageY,
|
|
42
|
+
currentTimeStamp: timestampForTouch(touch),
|
|
43
|
+
previousPageX: touch.pageX,
|
|
44
|
+
previousPageY: touch.pageY,
|
|
45
|
+
previousTimeStamp: timestampForTouch(touch)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function resetTouchRecord(touchRecord, touch) {
|
|
49
|
+
touchRecord.touchActive = !0, touchRecord.startPageX = touch.pageX, touchRecord.startPageY = touch.pageY, touchRecord.startTimeStamp = timestampForTouch(touch), touchRecord.currentPageX = touch.pageX, touchRecord.currentPageY = touch.pageY, touchRecord.currentTimeStamp = timestampForTouch(touch), touchRecord.previousPageX = touch.pageX, touchRecord.previousPageY = touch.pageY, touchRecord.previousTimeStamp = timestampForTouch(touch);
|
|
50
|
+
}
|
|
51
|
+
function getTouchIdentifier({
|
|
52
|
+
identifier
|
|
53
|
+
}) {
|
|
54
|
+
return identifier == null && console.error("Touch object is missing identifier."), process.env.NODE_ENV === "development" && identifier > MAX_TOUCH_BANK && console.error("Touch identifier %s is greater than maximum supported %s which causes performance issues backfilling array locations for all of the indices.", identifier, MAX_TOUCH_BANK), identifier;
|
|
55
|
+
}
|
|
56
|
+
function recordTouchStart(touch, touchHistory) {
|
|
57
|
+
const identifier = getTouchIdentifier(touch),
|
|
58
|
+
touchRecord = touchHistory.touchBank[identifier];
|
|
59
|
+
touchRecord ? resetTouchRecord(touchRecord, touch) : touchHistory.touchBank[identifier] = createTouchRecord(touch), touchHistory.mostRecentTimeStamp = timestampForTouch(touch);
|
|
60
|
+
}
|
|
61
|
+
function recordTouchMove(touch, touchHistory) {
|
|
62
|
+
const touchRecord = touchHistory.touchBank[getTouchIdentifier(touch)];
|
|
63
|
+
touchRecord ? (touchRecord.touchActive = !0, touchRecord.previousPageX = touchRecord.currentPageX, touchRecord.previousPageY = touchRecord.currentPageY, touchRecord.previousTimeStamp = touchRecord.currentTimeStamp, touchRecord.currentPageX = touch.pageX, touchRecord.currentPageY = touch.pageY, touchRecord.currentTimeStamp = timestampForTouch(touch), touchHistory.mostRecentTimeStamp = timestampForTouch(touch)) : console.warn(`Cannot record touch move without a touch start.
|
|
64
|
+
`, `Touch Move: ${printTouch(touch)}
|
|
65
|
+
`, `Touch Bank: ${printTouchBank(touchHistory)}`);
|
|
66
|
+
}
|
|
67
|
+
function recordTouchEnd(touch, touchHistory) {
|
|
68
|
+
const touchRecord = touchHistory.touchBank[getTouchIdentifier(touch)];
|
|
69
|
+
touchRecord ? (touchRecord.touchActive = !1, touchRecord.previousPageX = touchRecord.currentPageX, touchRecord.previousPageY = touchRecord.currentPageY, touchRecord.previousTimeStamp = touchRecord.currentTimeStamp, touchRecord.currentPageX = touch.pageX, touchRecord.currentPageY = touch.pageY, touchRecord.currentTimeStamp = timestampForTouch(touch), touchHistory.mostRecentTimeStamp = timestampForTouch(touch)) : console.warn(`Cannot record touch end without a touch start.
|
|
70
|
+
`, `Touch End: ${printTouch(touch)}
|
|
71
|
+
`, `Touch Bank: ${printTouchBank(touchHistory)}`);
|
|
72
|
+
}
|
|
73
|
+
function printTouch(touch) {
|
|
74
|
+
return JSON.stringify({
|
|
75
|
+
identifier: touch.identifier,
|
|
76
|
+
pageX: touch.pageX,
|
|
77
|
+
pageY: touch.pageY,
|
|
78
|
+
timestamp: timestampForTouch(touch)
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function printTouchBank(touchHistory) {
|
|
82
|
+
const {
|
|
83
|
+
touchBank
|
|
84
|
+
} = touchHistory;
|
|
85
|
+
let printed = JSON.stringify(touchBank.slice(0, MAX_TOUCH_BANK));
|
|
86
|
+
return touchBank.length > MAX_TOUCH_BANK && (printed += ` (original size: ${touchBank.length})`), printed;
|
|
87
|
+
}
|
|
88
|
+
export { ResponderTouchHistoryStore };
|
|
89
|
+
//# sourceMappingURL=ResponderTouchHistoryStore.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isEndish","isMoveish","isStartish","ResponderTouchHistoryStore","_touchHistory","touchBank","numberActiveTouches","indexOfSingleActiveTouch","mostRecentTimeStamp","recordTouchTrack","topLevelType","nativeEvent","touchHistory","changedTouches","forEach","touch","recordTouchMove","recordTouchStart","touches","length","identifier","recordTouchEnd","i","touchActive","process","env","NODE_ENV","console","error","MAX_TOUCH_BANK","timestampForTouch","timeStamp","timestamp","createTouchRecord","startPageX","pageX","startPageY","pageY","startTimeStamp","currentPageX","currentPageY","currentTimeStamp","previousPageX","previousPageY","previousTimeStamp","resetTouchRecord","touchRecord","getTouchIdentifier","warn","printTouch","printTouchBank","JSON","stringify","printed","slice"],"sources":["../../src/ResponderTouchHistoryStore.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|