@tamagui/react-native-use-responder-events 2.7.7 → 3.0.0-beta.643.1

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