@hanzogui/react-native-use-responder-events 8.3.0 → 8.3.2

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