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