@tamagui/react-native-use-responder-events 2.0.0-rc.4 → 2.0.0-rc.40
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/dist/cjs/ResponderSystem.cjs +293 -152
- package/dist/cjs/ResponderSystem.native.js +312 -170
- package/dist/cjs/ResponderSystem.native.js.map +1 -1
- package/dist/cjs/ResponderTouchHistoryStore.cjs +97 -30
- package/dist/cjs/ResponderTouchHistoryStore.native.js +144 -68
- package/dist/cjs/ResponderTouchHistoryStore.native.js.map +1 -1
- package/dist/cjs/createResponderEvent.cjs +66 -52
- package/dist/cjs/createResponderEvent.native.js +51 -39
- package/dist/cjs/createResponderEvent.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/types.cjs +26 -24
- package/dist/cjs/types.native.js +26 -24
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/useResponderEvents.cjs +49 -37
- package/dist/cjs/useResponderEvents.native.js +53 -42
- package/dist/cjs/useResponderEvents.native.js.map +1 -1
- package/dist/cjs/utils.cjs +101 -58
- package/dist/cjs/utils.native.js +104 -57
- package/dist/cjs/utils.native.js.map +1 -1
- package/dist/esm/ResponderSystem.mjs +276 -137
- package/dist/esm/ResponderSystem.mjs.map +1 -1
- package/dist/esm/ResponderSystem.native.js +295 -155
- package/dist/esm/ResponderSystem.native.js.map +1 -1
- package/dist/esm/ResponderTouchHistoryStore.mjs +85 -20
- package/dist/esm/ResponderTouchHistoryStore.mjs.map +1 -1
- package/dist/esm/ResponderTouchHistoryStore.native.js +132 -58
- package/dist/esm/ResponderTouchHistoryStore.native.js.map +1 -1
- package/dist/esm/createResponderEvent.mjs +54 -42
- package/dist/esm/createResponderEvent.mjs.map +1 -1
- package/dist/esm/createResponderEvent.native.js +38 -28
- package/dist/esm/createResponderEvent.native.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/types.mjs +14 -14
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/types.native.js +14 -14
- package/dist/esm/types.native.js.map +1 -1
- package/dist/esm/useResponderEvents.mjs +21 -11
- package/dist/esm/useResponderEvents.mjs.map +1 -1
- package/dist/esm/useResponderEvents.native.js +25 -16
- package/dist/esm/useResponderEvents.native.js.map +1 -1
- package/dist/esm/utils.mjs +89 -48
- package/dist/esm/utils.mjs.map +1 -1
- package/dist/esm/utils.native.js +92 -47
- package/dist/esm/utils.native.js.map +1 -1
- package/package.json +5 -8
- package/dist/cjs/ResponderSystem.js +0 -205
- package/dist/cjs/ResponderSystem.js.map +0 -6
- package/dist/cjs/ResponderTouchHistoryStore.js +0 -117
- package/dist/cjs/ResponderTouchHistoryStore.js.map +0 -6
- package/dist/cjs/createResponderEvent.js +0 -121
- package/dist/cjs/createResponderEvent.js.map +0 -6
- package/dist/cjs/index.js +0 -15
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/types.js +0 -58
- package/dist/cjs/types.js.map +0 -6
- package/dist/cjs/useResponderEvents.js +0 -81
- package/dist/cjs/useResponderEvents.js.map +0 -6
- package/dist/cjs/utils.js +0 -102
- package/dist/cjs/utils.js.map +0 -6
- package/dist/esm/ResponderSystem.js +0 -207
- package/dist/esm/ResponderSystem.js.map +0 -6
- package/dist/esm/ResponderTouchHistoryStore.js +0 -101
- package/dist/esm/ResponderTouchHistoryStore.js.map +0 -6
- package/dist/esm/createResponderEvent.js +0 -105
- package/dist/esm/createResponderEvent.js.map +0 -6
- package/dist/esm/types.js +0 -42
- package/dist/esm/types.js.map +0 -6
- package/dist/esm/useResponderEvents.js +0 -59
- package/dist/esm/useResponderEvents.js.map +0 -6
- package/dist/esm/utils.js +0 -86
- package/dist/esm/utils.js.map +0 -6
|
@@ -3,20 +3,22 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
5
|
var __export = (target, all) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
14
|
get: () => from[key],
|
|
14
15
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
18
20
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
-
value:
|
|
21
|
+
value: true
|
|
20
22
|
}), mod);
|
|
21
23
|
var ResponderSystem_exports = {};
|
|
22
24
|
__export(ResponderSystem_exports, {
|
|
@@ -27,117 +29,191 @@ __export(ResponderSystem_exports, {
|
|
|
27
29
|
terminateResponder: () => terminateResponder
|
|
28
30
|
});
|
|
29
31
|
module.exports = __toCommonJS(ResponderSystem_exports);
|
|
30
|
-
var import_createResponderEvent = require("./createResponderEvent.cjs")
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const emptyObject = {}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
let isEmulatingMouseEvents =
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
32
|
+
var import_createResponderEvent = require("./createResponderEvent.cjs");
|
|
33
|
+
var import_ResponderTouchHistoryStore = require("./ResponderTouchHistoryStore.cjs");
|
|
34
|
+
var import_types = require("./types.cjs");
|
|
35
|
+
var import_utils = require("./utils.cjs");
|
|
36
|
+
var import_utils2 = require("./utils.cjs");
|
|
37
|
+
const emptyObject = {};
|
|
38
|
+
const startRegistration = ["onStartShouldSetResponderCapture", "onStartShouldSetResponder", {
|
|
39
|
+
bubbles: true
|
|
40
|
+
}];
|
|
41
|
+
const moveRegistration = ["onMoveShouldSetResponderCapture", "onMoveShouldSetResponder", {
|
|
42
|
+
bubbles: true
|
|
43
|
+
}];
|
|
44
|
+
const scrollRegistration = ["onScrollShouldSetResponderCapture", "onScrollShouldSetResponder", {
|
|
45
|
+
bubbles: false
|
|
46
|
+
}];
|
|
47
|
+
const shouldSetResponderEvents = {
|
|
48
|
+
touchstart: startRegistration,
|
|
49
|
+
mousedown: startRegistration,
|
|
50
|
+
touchmove: moveRegistration,
|
|
51
|
+
mousemove: moveRegistration,
|
|
52
|
+
scroll: scrollRegistration
|
|
53
|
+
};
|
|
54
|
+
const emptyResponder = {
|
|
55
|
+
id: null,
|
|
56
|
+
idPath: null,
|
|
57
|
+
node: null
|
|
58
|
+
};
|
|
59
|
+
const responderListenersMap = /* @__PURE__ */new Map();
|
|
60
|
+
let isEmulatingMouseEvents = false;
|
|
61
|
+
let trackedTouchCount = 0;
|
|
62
|
+
let currentResponder = {
|
|
63
|
+
id: null,
|
|
64
|
+
node: null,
|
|
65
|
+
idPath: null
|
|
66
|
+
};
|
|
65
67
|
const responderTouchHistoryStore = new import_ResponderTouchHistoryStore.ResponderTouchHistoryStore();
|
|
66
68
|
function changeCurrentResponder(responder) {
|
|
67
69
|
currentResponder = responder;
|
|
68
70
|
}
|
|
69
71
|
function getResponderConfig(id) {
|
|
70
72
|
const config = responderListenersMap.get(id);
|
|
71
|
-
return config
|
|
73
|
+
return config != null ? config : emptyObject;
|
|
72
74
|
}
|
|
73
75
|
function eventListener(domEvent) {
|
|
74
|
-
const eventType = domEvent.type
|
|
75
|
-
|
|
76
|
-
if (eventType === "touchstart"
|
|
76
|
+
const eventType = domEvent.type;
|
|
77
|
+
const eventTarget = domEvent.target;
|
|
78
|
+
if (eventType === "touchstart") {
|
|
79
|
+
isEmulatingMouseEvents = true;
|
|
80
|
+
}
|
|
81
|
+
if (eventType === "touchmove" || trackedTouchCount > 1) {
|
|
82
|
+
isEmulatingMouseEvents = false;
|
|
83
|
+
}
|
|
84
|
+
if (
|
|
77
85
|
// Ignore browser emulated mouse events
|
|
78
86
|
eventType === "mousedown" && isEmulatingMouseEvents || eventType === "mousemove" && isEmulatingMouseEvents ||
|
|
79
87
|
// Ignore mousemove if a mousedown didn't occur first
|
|
80
|
-
eventType === "mousemove" && trackedTouchCount < 1)
|
|
88
|
+
eventType === "mousemove" && trackedTouchCount < 1) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
81
91
|
if (isEmulatingMouseEvents && eventType === "mouseup") {
|
|
82
|
-
trackedTouchCount === 0
|
|
92
|
+
if (trackedTouchCount === 0) {
|
|
93
|
+
isEmulatingMouseEvents = false;
|
|
94
|
+
}
|
|
83
95
|
return;
|
|
84
96
|
}
|
|
85
|
-
const isStartEvent = (0, import_types.isStartish)(eventType) && (0, import_utils2.isPrimaryPointerDown)(domEvent)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
(isStartEvent || isMoveEvent || isEndEvent)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
const isStartEvent = (0, import_types.isStartish)(eventType) && (0, import_utils2.isPrimaryPointerDown)(domEvent);
|
|
98
|
+
const isMoveEvent = (0, import_types.isMoveish)(eventType);
|
|
99
|
+
const isEndEvent = (0, import_types.isEndish)(eventType);
|
|
100
|
+
const isScrollEvent = (0, import_types.isScroll)(eventType);
|
|
101
|
+
const isSelectionChangeEvent = (0, import_types.isSelectionChange)(eventType);
|
|
102
|
+
const responderEvent = (0, import_createResponderEvent.createResponderEvent)(domEvent, responderTouchHistoryStore);
|
|
103
|
+
if (isStartEvent || isMoveEvent || isEndEvent) {
|
|
104
|
+
if (domEvent.touches) {
|
|
105
|
+
trackedTouchCount = domEvent.touches.length;
|
|
106
|
+
} else {
|
|
107
|
+
if (isStartEvent) {
|
|
108
|
+
trackedTouchCount = 1;
|
|
109
|
+
} else if (isEndEvent) {
|
|
110
|
+
trackedTouchCount = 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
responderTouchHistoryStore.recordTouchTrack(eventType, responderEvent.nativeEvent);
|
|
114
|
+
}
|
|
115
|
+
let eventPaths = (0, import_utils2.getResponderPaths)(domEvent);
|
|
116
|
+
let wasNegotiated = false;
|
|
117
|
+
let wantsResponder;
|
|
95
118
|
if (isStartEvent || isMoveEvent || isScrollEvent && trackedTouchCount > 0) {
|
|
96
|
-
const currentResponderIdPath = currentResponder.idPath
|
|
97
|
-
|
|
119
|
+
const currentResponderIdPath = currentResponder.idPath;
|
|
120
|
+
const eventIdPath = eventPaths.idPath;
|
|
98
121
|
if (currentResponderIdPath != null && eventIdPath != null) {
|
|
99
122
|
const lowestCommonAncestor = (0, import_utils2.getLowestCommonAncestor)(currentResponderIdPath, eventIdPath);
|
|
100
123
|
if (lowestCommonAncestor != null) {
|
|
101
|
-
const
|
|
124
|
+
const indexOfLowestCommonAncestor = eventIdPath.indexOf(lowestCommonAncestor);
|
|
125
|
+
const index = indexOfLowestCommonAncestor + (lowestCommonAncestor === currentResponder.id ? 1 : 0);
|
|
102
126
|
eventPaths = {
|
|
103
127
|
idPath: eventIdPath.slice(index),
|
|
104
128
|
nodePath: eventPaths.nodePath.slice(index)
|
|
105
129
|
};
|
|
106
|
-
} else
|
|
130
|
+
} else {
|
|
131
|
+
eventPaths = null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (eventPaths != null) {
|
|
135
|
+
wantsResponder = findWantsResponder(eventPaths, domEvent, responderEvent);
|
|
136
|
+
if (wantsResponder != null) {
|
|
137
|
+
attemptTransfer(responderEvent, wantsResponder);
|
|
138
|
+
wasNegotiated = true;
|
|
139
|
+
}
|
|
107
140
|
}
|
|
108
|
-
eventPaths != null && (wantsResponder = findWantsResponder(eventPaths, domEvent, responderEvent), wantsResponder != null && (attemptTransfer(responderEvent, wantsResponder), wasNegotiated = !0));
|
|
109
141
|
}
|
|
110
142
|
if (currentResponder.id != null && currentResponder.node != null) {
|
|
111
143
|
const {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
144
|
+
id,
|
|
145
|
+
node
|
|
146
|
+
} = currentResponder;
|
|
147
|
+
const {
|
|
148
|
+
onResponderStart,
|
|
149
|
+
onResponderMove,
|
|
150
|
+
onResponderEnd,
|
|
151
|
+
onResponderRelease,
|
|
152
|
+
onResponderTerminate,
|
|
153
|
+
onResponderTerminationRequest
|
|
154
|
+
} = getResponderConfig(id);
|
|
155
|
+
responderEvent.bubbles = false;
|
|
156
|
+
responderEvent.cancelable = false;
|
|
157
|
+
responderEvent.currentTarget = node;
|
|
158
|
+
if (isStartEvent) {
|
|
159
|
+
if (onResponderStart != null) {
|
|
160
|
+
responderEvent.dispatchConfig.registrationName = "onResponderStart";
|
|
161
|
+
onResponderStart(responderEvent);
|
|
162
|
+
}
|
|
163
|
+
} else if (isMoveEvent) {
|
|
164
|
+
if (onResponderMove != null) {
|
|
165
|
+
responderEvent.dispatchConfig.registrationName = "onResponderMove";
|
|
166
|
+
onResponderMove(responderEvent);
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
124
169
|
const isTerminateEvent = (0, import_types.isCancelish)(eventType) ||
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (isEndEvent
|
|
139
|
-
|
|
140
|
-
|
|
170
|
+
// native context menu
|
|
171
|
+
eventType === "contextmenu" ||
|
|
172
|
+
// window blur
|
|
173
|
+
eventType === "blur" && eventTarget === window ||
|
|
174
|
+
// responder (or ancestors) blur
|
|
175
|
+
eventType === "blur" && eventTarget.contains(node) && domEvent.relatedTarget !== node ||
|
|
176
|
+
// native scroll without using a pointer
|
|
177
|
+
isScrollEvent && trackedTouchCount === 0 ||
|
|
178
|
+
// native scroll on node that is parent of the responder (allow siblings to scroll)
|
|
179
|
+
isScrollEvent && eventTarget.contains(node) && eventTarget !== node ||
|
|
180
|
+
// native select/selectionchange on node
|
|
181
|
+
isSelectionChangeEvent && (0, import_utils2.hasValidSelection)(domEvent);
|
|
182
|
+
const isReleaseEvent = isEndEvent && !isTerminateEvent && !(0, import_utils2.hasTargetTouches)(node, domEvent.touches);
|
|
183
|
+
if (isEndEvent) {
|
|
184
|
+
if (onResponderEnd != null) {
|
|
185
|
+
responderEvent.dispatchConfig.registrationName = "onResponderEnd";
|
|
186
|
+
onResponderEnd(responderEvent);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (isReleaseEvent) {
|
|
190
|
+
if (onResponderRelease != null) {
|
|
191
|
+
responderEvent.dispatchConfig.registrationName = "onResponderRelease";
|
|
192
|
+
onResponderRelease(responderEvent);
|
|
193
|
+
}
|
|
194
|
+
changeCurrentResponder(emptyResponder);
|
|
195
|
+
}
|
|
196
|
+
if (isTerminateEvent) {
|
|
197
|
+
let shouldTerminate = true;
|
|
198
|
+
if (eventType === "contextmenu" || eventType === "scroll" || eventType === "selectionchange") {
|
|
199
|
+
if (wasNegotiated) {
|
|
200
|
+
shouldTerminate = false;
|
|
201
|
+
} else if (onResponderTerminationRequest != null) {
|
|
202
|
+
responderEvent.dispatchConfig.registrationName = "onResponderTerminationRequest";
|
|
203
|
+
if (onResponderTerminationRequest(responderEvent) === false) {
|
|
204
|
+
shouldTerminate = false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (shouldTerminate) {
|
|
209
|
+
if (onResponderTerminate != null) {
|
|
210
|
+
responderEvent.dispatchConfig.registrationName = "onResponderTerminate";
|
|
211
|
+
onResponderTerminate(responderEvent);
|
|
212
|
+
}
|
|
213
|
+
changeCurrentResponder(emptyResponder);
|
|
214
|
+
isEmulatingMouseEvents = false;
|
|
215
|
+
trackedTouchCount = 0;
|
|
216
|
+
}
|
|
141
217
|
}
|
|
142
218
|
}
|
|
143
219
|
}
|
|
@@ -146,17 +222,20 @@ function findWantsResponder(eventPaths, domEvent, responderEvent) {
|
|
|
146
222
|
const shouldSetCallbacks = shouldSetResponderEvents[domEvent.type];
|
|
147
223
|
if (shouldSetCallbacks != null) {
|
|
148
224
|
const {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
225
|
+
idPath,
|
|
226
|
+
nodePath
|
|
227
|
+
} = eventPaths;
|
|
228
|
+
const shouldSetCallbackCaptureName = shouldSetCallbacks[0];
|
|
229
|
+
const shouldSetCallbackBubbleName = shouldSetCallbacks[1];
|
|
230
|
+
const {
|
|
231
|
+
bubbles
|
|
232
|
+
} = shouldSetCallbacks[2];
|
|
233
|
+
const check = (id, node, callbackName) => {
|
|
234
|
+
const config = getResponderConfig(id);
|
|
235
|
+
const shouldSetCallback = config[callbackName];
|
|
236
|
+
if (shouldSetCallback != null) {
|
|
237
|
+
responderEvent.currentTarget = node;
|
|
238
|
+
if (shouldSetCallback(responderEvent) === true) {
|
|
160
239
|
const prunedIdPath = idPath.slice(idPath.indexOf(id));
|
|
161
240
|
return {
|
|
162
241
|
id,
|
|
@@ -164,70 +243,130 @@ function findWantsResponder(eventPaths, domEvent, responderEvent) {
|
|
|
164
243
|
idPath: prunedIdPath
|
|
165
244
|
};
|
|
166
245
|
}
|
|
167
|
-
}
|
|
246
|
+
}
|
|
247
|
+
};
|
|
168
248
|
for (let i = idPath.length - 1; i >= 0; i--) {
|
|
169
|
-
const id = idPath[i]
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (result != null)
|
|
173
|
-
|
|
249
|
+
const id = idPath[i];
|
|
250
|
+
const node = nodePath[i];
|
|
251
|
+
const result = check(id, node, shouldSetCallbackCaptureName);
|
|
252
|
+
if (result != null) {
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
if (responderEvent.isPropagationStopped() === true) {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
174
258
|
}
|
|
175
|
-
if (bubbles)
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
259
|
+
if (bubbles) {
|
|
260
|
+
for (let i = 0; i < idPath.length; i++) {
|
|
261
|
+
const id = idPath[i];
|
|
262
|
+
const node = nodePath[i];
|
|
263
|
+
const result = check(id, node, shouldSetCallbackBubbleName);
|
|
264
|
+
if (result != null) {
|
|
265
|
+
return result;
|
|
266
|
+
}
|
|
267
|
+
if (responderEvent.isPropagationStopped() === true) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
181
271
|
} else {
|
|
182
|
-
const id = idPath[0]
|
|
183
|
-
|
|
184
|
-
|
|
272
|
+
const id = idPath[0];
|
|
273
|
+
const node = nodePath[0];
|
|
274
|
+
const target = domEvent.target;
|
|
275
|
+
if (target === node) {
|
|
276
|
+
return check(id, node, shouldSetCallbackBubbleName);
|
|
277
|
+
}
|
|
185
278
|
}
|
|
186
279
|
}
|
|
187
280
|
}
|
|
188
281
|
function attemptTransfer(responderEvent, wantsResponder) {
|
|
189
282
|
const {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
283
|
+
id: currentId,
|
|
284
|
+
node: currentNode
|
|
285
|
+
} = currentResponder;
|
|
286
|
+
const {
|
|
287
|
+
id,
|
|
288
|
+
node
|
|
289
|
+
} = wantsResponder;
|
|
290
|
+
const {
|
|
291
|
+
onResponderGrant,
|
|
292
|
+
onResponderReject
|
|
293
|
+
} = getResponderConfig(id);
|
|
294
|
+
responderEvent.bubbles = false;
|
|
295
|
+
responderEvent.cancelable = false;
|
|
296
|
+
responderEvent.currentTarget = node;
|
|
297
|
+
if (currentId == null) {
|
|
298
|
+
if (onResponderGrant != null) {
|
|
299
|
+
responderEvent.currentTarget = node;
|
|
300
|
+
responderEvent.dispatchConfig.registrationName = "onResponderGrant";
|
|
301
|
+
onResponderGrant(responderEvent);
|
|
302
|
+
}
|
|
303
|
+
changeCurrentResponder(wantsResponder);
|
|
304
|
+
} else {
|
|
202
305
|
const {
|
|
203
306
|
onResponderTerminate,
|
|
204
307
|
onResponderTerminationRequest
|
|
205
308
|
} = getResponderConfig(currentId);
|
|
206
|
-
let allowTransfer =
|
|
207
|
-
|
|
309
|
+
let allowTransfer = true;
|
|
310
|
+
if (onResponderTerminationRequest != null) {
|
|
311
|
+
responderEvent.currentTarget = currentNode;
|
|
312
|
+
responderEvent.dispatchConfig.registrationName = "onResponderTerminationRequest";
|
|
313
|
+
if (onResponderTerminationRequest(responderEvent) === false) {
|
|
314
|
+
allowTransfer = false;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (allowTransfer) {
|
|
318
|
+
if (onResponderTerminate != null) {
|
|
319
|
+
responderEvent.currentTarget = currentNode;
|
|
320
|
+
responderEvent.dispatchConfig.registrationName = "onResponderTerminate";
|
|
321
|
+
onResponderTerminate(responderEvent);
|
|
322
|
+
}
|
|
323
|
+
if (onResponderGrant != null) {
|
|
324
|
+
responderEvent.currentTarget = node;
|
|
325
|
+
responderEvent.dispatchConfig.registrationName = "onResponderGrant";
|
|
326
|
+
onResponderGrant(responderEvent);
|
|
327
|
+
}
|
|
328
|
+
changeCurrentResponder(wantsResponder);
|
|
329
|
+
} else {
|
|
330
|
+
if (onResponderReject != null) {
|
|
331
|
+
responderEvent.currentTarget = node;
|
|
332
|
+
responderEvent.dispatchConfig.registrationName = "onResponderReject";
|
|
333
|
+
onResponderReject(responderEvent);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
208
336
|
}
|
|
209
337
|
}
|
|
210
|
-
const documentEventsCapturePhase = ["blur", "scroll"]
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
338
|
+
const documentEventsCapturePhase = ["blur", "scroll"];
|
|
339
|
+
const documentEventsBubblePhase = [
|
|
340
|
+
// mouse
|
|
341
|
+
"mousedown", "mousemove", "mouseup", "dragstart",
|
|
342
|
+
// touch
|
|
343
|
+
"touchstart", "touchmove", "touchend", "touchcancel",
|
|
344
|
+
// other
|
|
345
|
+
"contextmenu", "select", "selectionchange"];
|
|
346
|
+
const isTamaguiResponderActive = /* @__PURE__ */Symbol();
|
|
219
347
|
function attachListeners() {
|
|
220
|
-
import_utils.canUseDOM && !window[isTamaguiResponderActive]
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
348
|
+
if (import_utils.canUseDOM && !window[isTamaguiResponderActive]) {
|
|
349
|
+
window.addEventListener("blur", eventListener);
|
|
350
|
+
documentEventsBubblePhase.forEach(eventType => {
|
|
351
|
+
document.addEventListener(eventType, eventListener);
|
|
352
|
+
});
|
|
353
|
+
documentEventsCapturePhase.forEach(eventType => {
|
|
354
|
+
document.addEventListener(eventType, eventListener, true);
|
|
355
|
+
});
|
|
356
|
+
window[isTamaguiResponderActive] = true;
|
|
357
|
+
}
|
|
225
358
|
}
|
|
226
359
|
function addNode(id, node, config) {
|
|
227
|
-
(0, import_utils2.setResponderId)(node, id)
|
|
360
|
+
(0, import_utils2.setResponderId)(node, id);
|
|
361
|
+
responderListenersMap.set(id, config);
|
|
228
362
|
}
|
|
229
363
|
function removeNode(id) {
|
|
230
|
-
currentResponder.id === id
|
|
364
|
+
if (currentResponder.id === id) {
|
|
365
|
+
terminateResponder();
|
|
366
|
+
}
|
|
367
|
+
if (responderListenersMap.has(id)) {
|
|
368
|
+
responderListenersMap.delete(id);
|
|
369
|
+
}
|
|
231
370
|
}
|
|
232
371
|
function terminateResponder() {
|
|
233
372
|
const {
|
|
@@ -240,11 +379,13 @@ function terminateResponder() {
|
|
|
240
379
|
} = getResponderConfig(id);
|
|
241
380
|
if (onResponderTerminate != null) {
|
|
242
381
|
const event = (0, import_createResponderEvent.createResponderEvent)({}, responderTouchHistoryStore);
|
|
243
|
-
event.currentTarget = node
|
|
382
|
+
event.currentTarget = node;
|
|
383
|
+
onResponderTerminate(event);
|
|
244
384
|
}
|
|
245
385
|
changeCurrentResponder(emptyResponder);
|
|
246
386
|
}
|
|
247
|
-
isEmulatingMouseEvents =
|
|
387
|
+
isEmulatingMouseEvents = false;
|
|
388
|
+
trackedTouchCount = 0;
|
|
248
389
|
}
|
|
249
390
|
function getResponderNode() {
|
|
250
391
|
return currentResponder.node;
|