@hanzogui/react-native-use-responder-events 2.0.0

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