@tamagui/react-native-use-pressable 2.0.0-rc.4 → 2.0.0-rc.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,20 +5,22 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: !0
11
- });
12
- },
13
- __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
15
16
  get: () => from[key],
16
17
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
18
  });
18
- return to;
19
- };
19
+ }
20
+ return to;
21
+ };
20
22
  var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
- value: !0
23
+ value: true
22
24
  }), mod);
23
25
  var PressResponder_exports = {};
24
26
  __export(PressResponder_exports, {
@@ -26,308 +28,462 @@ __export(PressResponder_exports, {
26
28
  });
27
29
  module.exports = __toCommonJS(PressResponder_exports);
28
30
  function _class_call_check(instance, Constructor) {
29
- if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
31
+ if (!(instance instanceof Constructor)) {
32
+ throw new TypeError("Cannot call a class as a function");
33
+ }
30
34
  }
31
35
  function _defineProperties(target, props) {
32
36
  for (var i = 0; i < props.length; i++) {
33
37
  var descriptor = props[i];
34
- descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
38
+ descriptor.enumerable = descriptor.enumerable || false;
39
+ descriptor.configurable = true;
40
+ if ("value" in descriptor) descriptor.writable = true;
41
+ Object.defineProperty(target, descriptor.key, descriptor);
35
42
  }
36
43
  }
37
44
  function _create_class(Constructor, protoProps, staticProps) {
38
- return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor;
45
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
46
+ if (staticProps) _defineProperties(Constructor, staticProps);
47
+ return Constructor;
39
48
  }
40
49
  function _define_property(obj, key, value) {
41
- return key in obj ? Object.defineProperty(obj, key, {
42
- value,
43
- enumerable: !0,
44
- configurable: !0,
45
- writable: !0
46
- }) : obj[key] = value, obj;
50
+ if (key in obj) {
51
+ Object.defineProperty(obj, key, {
52
+ value,
53
+ enumerable: true,
54
+ configurable: true,
55
+ writable: true
56
+ });
57
+ } else {
58
+ obj[key] = value;
59
+ }
60
+ return obj;
47
61
  }
48
- var DELAY = "DELAY",
49
- ERROR = "ERROR",
50
- LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED",
51
- NOT_RESPONDER = "NOT_RESPONDER",
52
- RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START",
53
- RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START",
54
- RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START",
55
- RESPONDER_GRANT = "RESPONDER_GRANT",
56
- RESPONDER_RELEASE = "RESPONDER_RELEASE",
57
- RESPONDER_TERMINATED = "RESPONDER_TERMINATED",
58
- Transitions = Object.freeze({
59
- NOT_RESPONDER: {
60
- DELAY: ERROR,
61
- RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
62
- RESPONDER_RELEASE: ERROR,
63
- RESPONDER_TERMINATED: ERROR,
64
- LONG_PRESS_DETECTED: ERROR
65
- },
66
- RESPONDER_INACTIVE_PRESS_START: {
67
- DELAY: RESPONDER_ACTIVE_PRESS_START,
68
- RESPONDER_GRANT: ERROR,
69
- RESPONDER_RELEASE: NOT_RESPONDER,
70
- RESPONDER_TERMINATED: NOT_RESPONDER,
71
- LONG_PRESS_DETECTED: ERROR
72
- },
73
- RESPONDER_ACTIVE_PRESS_START: {
74
- DELAY: ERROR,
75
- RESPONDER_GRANT: ERROR,
76
- RESPONDER_RELEASE: NOT_RESPONDER,
77
- RESPONDER_TERMINATED: NOT_RESPONDER,
78
- LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
79
- },
80
- RESPONDER_ACTIVE_LONG_PRESS_START: {
81
- DELAY: ERROR,
82
- RESPONDER_GRANT: ERROR,
83
- RESPONDER_RELEASE: NOT_RESPONDER,
84
- RESPONDER_TERMINATED: NOT_RESPONDER,
85
- LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
86
- },
87
- ERROR: {
88
- DELAY: NOT_RESPONDER,
89
- RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
90
- RESPONDER_RELEASE: NOT_RESPONDER,
91
- RESPONDER_TERMINATED: NOT_RESPONDER,
92
- LONG_PRESS_DETECTED: NOT_RESPONDER
93
- }
94
- }),
95
- isActiveSignal = function (signal) {
96
- return signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
62
+ var DELAY = "DELAY";
63
+ var ERROR = "ERROR";
64
+ var LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED";
65
+ var NOT_RESPONDER = "NOT_RESPONDER";
66
+ var RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START";
67
+ var RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START";
68
+ var RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START";
69
+ var RESPONDER_GRANT = "RESPONDER_GRANT";
70
+ var RESPONDER_RELEASE = "RESPONDER_RELEASE";
71
+ var RESPONDER_TERMINATED = "RESPONDER_TERMINATED";
72
+ var Transitions = Object.freeze({
73
+ NOT_RESPONDER: {
74
+ DELAY: ERROR,
75
+ RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
76
+ RESPONDER_RELEASE: ERROR,
77
+ RESPONDER_TERMINATED: ERROR,
78
+ LONG_PRESS_DETECTED: ERROR
97
79
  },
98
- isButtonRole = function (element) {
99
- return element.getAttribute("role") === "button";
80
+ RESPONDER_INACTIVE_PRESS_START: {
81
+ DELAY: RESPONDER_ACTIVE_PRESS_START,
82
+ RESPONDER_GRANT: ERROR,
83
+ RESPONDER_RELEASE: NOT_RESPONDER,
84
+ RESPONDER_TERMINATED: NOT_RESPONDER,
85
+ LONG_PRESS_DETECTED: ERROR
100
86
  },
101
- isPressStartSignal = function (signal) {
102
- return signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
87
+ RESPONDER_ACTIVE_PRESS_START: {
88
+ DELAY: ERROR,
89
+ RESPONDER_GRANT: ERROR,
90
+ RESPONDER_RELEASE: NOT_RESPONDER,
91
+ RESPONDER_TERMINATED: NOT_RESPONDER,
92
+ LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
103
93
  },
104
- isTerminalSignal = function (signal) {
105
- return signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
94
+ RESPONDER_ACTIVE_LONG_PRESS_START: {
95
+ DELAY: ERROR,
96
+ RESPONDER_GRANT: ERROR,
97
+ RESPONDER_RELEASE: NOT_RESPONDER,
98
+ RESPONDER_TERMINATED: NOT_RESPONDER,
99
+ LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
106
100
  },
107
- isValidKeyPress = function (event) {
108
- var key = event.key,
109
- target = event.target,
110
- role = target.getAttribute("role"),
111
- isSpacebar = key === " " || key === "Spacebar";
112
- return key === "Enter" || isSpacebar && role === "button";
113
- },
114
- DEFAULT_LONG_PRESS_DELAY_MS = 450,
115
- DEFAULT_PRESS_DELAY_MS = 50,
116
- PressResponder = /* @__PURE__ */function () {
117
- "use strict";
101
+ ERROR: {
102
+ DELAY: NOT_RESPONDER,
103
+ RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
104
+ RESPONDER_RELEASE: NOT_RESPONDER,
105
+ RESPONDER_TERMINATED: NOT_RESPONDER,
106
+ LONG_PRESS_DETECTED: NOT_RESPONDER
107
+ }
108
+ });
109
+ var isActiveSignal = function (signal) {
110
+ return signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
111
+ };
112
+ var isButtonRole = function (element) {
113
+ return element.getAttribute("role") === "button";
114
+ };
115
+ var isPressStartSignal = function (signal) {
116
+ return signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
117
+ };
118
+ var isTerminalSignal = function (signal) {
119
+ return signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
120
+ };
121
+ var isValidKeyPress = function (event) {
122
+ var key = event.key;
123
+ var target = event.target;
124
+ var role = target.getAttribute("role");
125
+ var isSpacebar = key === " " || key === "Spacebar";
126
+ return key === "Enter" || isSpacebar && role === "button";
127
+ };
128
+ var DEFAULT_LONG_PRESS_DELAY_MS = 450;
129
+ var DEFAULT_PRESS_DELAY_MS = 50;
130
+ var PressResponder = /* @__PURE__ */function () {
131
+ "use strict";
118
132
 
119
- function PressResponder2(config) {
120
- _class_call_check(this, PressResponder2), _define_property(this, "_touchActivatePosition", null), _define_property(this, "_pressDelayTimeout", 0), _define_property(this, "_selectionTerminated", !1), _define_property(this, "_isPointerTouch", !1), _define_property(this, "_longPressDelayTimeout", 0), _define_property(this, "_longPressDispatched", !1), _define_property(this, "_pressOutDelayTimeout", 0), _define_property(this, "_touchState", NOT_RESPONDER), _define_property(this, "_config", null), _define_property(this, "_eventHandlers", null), this.configure(config);
133
+ function PressResponder2(config) {
134
+ _class_call_check(this, PressResponder2);
135
+ _define_property(this, "_touchActivatePosition", null);
136
+ _define_property(this, "_pressDelayTimeout", 0);
137
+ _define_property(this, "_selectionTerminated", false);
138
+ _define_property(this, "_isPointerTouch", false);
139
+ _define_property(this, "_longPressDelayTimeout", 0);
140
+ _define_property(this, "_longPressDispatched", false);
141
+ _define_property(this, "_pressOutDelayTimeout", 0);
142
+ _define_property(this, "_touchState", NOT_RESPONDER);
143
+ _define_property(this, "_config", null);
144
+ _define_property(this, "_eventHandlers", null);
145
+ this.configure(config);
146
+ }
147
+ _create_class(PressResponder2, [{
148
+ key: "configure",
149
+ value: function configure(config) {
150
+ this._config = config;
121
151
  }
122
- return _create_class(PressResponder2, [{
123
- key: "configure",
124
- value: function (config) {
125
- this._config = config;
126
- }
127
- }, {
128
- /**
129
- * Resets any pending timers. This should be called on unmount.
130
- */
131
- key: "reset",
132
- value: function () {
133
- this._cancelLongPressDelayTimeout(), this._cancelPressDelayTimeout(), this._cancelPressOutDelayTimeout();
134
- }
135
- }, {
136
- /**
137
- * Returns a set of props to spread into the interactive element.
138
- */
139
- key: "getEventHandlers",
140
- value: function () {
141
- return this._eventHandlers == null && (this._eventHandlers = this._createEventHandlers()), this._eventHandlers;
152
+ }, {
153
+ /**
154
+ * Resets any pending timers. This should be called on unmount.
155
+ */
156
+ key: "reset",
157
+ value: function reset() {
158
+ this._cancelLongPressDelayTimeout();
159
+ this._cancelPressDelayTimeout();
160
+ this._cancelPressOutDelayTimeout();
161
+ }
162
+ }, {
163
+ /**
164
+ * Returns a set of props to spread into the interactive element.
165
+ */
166
+ key: "getEventHandlers",
167
+ value: function getEventHandlers() {
168
+ if (this._eventHandlers == null) {
169
+ this._eventHandlers = this._createEventHandlers();
142
170
  }
143
- }, {
144
- key: "_createEventHandlers",
145
- value: function () {
146
- var _this = this,
147
- start = function (event, shouldDelay) {
148
- event.persist(), _this._cancelPressOutDelayTimeout(), _this._longPressDispatched = !1, _this._selectionTerminated = !1, _this._touchState = NOT_RESPONDER, _this._isPointerTouch = event.nativeEvent.type === "touchstart", _this._receiveSignal(RESPONDER_GRANT, event);
149
- var delayPressStart = normalizeDelay(_this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);
150
- shouldDelay !== !1 && delayPressStart > 0 ? _this._pressDelayTimeout = setTimeout(function () {
151
- _this._receiveSignal(DELAY, event);
152
- }, delayPressStart) : _this._receiveSignal(DELAY, event);
153
- var delayLongPress = normalizeDelay(_this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);
154
- _this._longPressDelayTimeout = setTimeout(function () {
155
- _this._handleLongPress(event);
156
- }, delayLongPress + delayPressStart);
157
- },
158
- end = function (event) {
159
- _this._receiveSignal(RESPONDER_RELEASE, event);
160
- },
161
- keyupHandler = function (event) {
162
- var onPress = _this._config.onPress,
163
- target = event.target;
164
- if (_this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
165
- end(event), document.removeEventListener("keyup", keyupHandler);
166
- var role = target.getAttribute("role"),
167
- elementType = target.tagName.toLowerCase(),
168
- isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
169
- onPress != null && !isNativeInteractiveElement && onPress(event);
171
+ return this._eventHandlers;
172
+ }
173
+ }, {
174
+ key: "_createEventHandlers",
175
+ value: function _createEventHandlers() {
176
+ var _this = this;
177
+ var start = function (event, shouldDelay) {
178
+ event.persist();
179
+ _this._cancelPressOutDelayTimeout();
180
+ _this._longPressDispatched = false;
181
+ _this._selectionTerminated = false;
182
+ _this._touchState = NOT_RESPONDER;
183
+ _this._isPointerTouch = event.nativeEvent.type === "touchstart";
184
+ _this._receiveSignal(RESPONDER_GRANT, event);
185
+ var delayPressStart = normalizeDelay(_this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);
186
+ if (shouldDelay !== false && delayPressStart > 0) {
187
+ _this._pressDelayTimeout = setTimeout(function () {
188
+ _this._receiveSignal(DELAY, event);
189
+ }, delayPressStart);
190
+ } else {
191
+ _this._receiveSignal(DELAY, event);
192
+ }
193
+ var delayLongPress = normalizeDelay(_this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);
194
+ _this._longPressDelayTimeout = setTimeout(function () {
195
+ _this._handleLongPress(event);
196
+ }, delayLongPress + delayPressStart);
197
+ };
198
+ var end = function (event) {
199
+ _this._receiveSignal(RESPONDER_RELEASE, event);
200
+ };
201
+ var keyupHandler = function (event) {
202
+ var onPress = _this._config.onPress;
203
+ var target = event.target;
204
+ if (_this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
205
+ end(event);
206
+ document.removeEventListener("keyup", keyupHandler);
207
+ var role = target.getAttribute("role");
208
+ var elementType = target.tagName.toLowerCase();
209
+ var isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
210
+ if (onPress != null && !isNativeInteractiveElement) {
211
+ onPress(event);
212
+ }
213
+ }
214
+ };
215
+ return {
216
+ onStartShouldSetResponder: function (event) {
217
+ var disabled = _this._config.disabled;
218
+ if (disabled && isButtonRole(event.currentTarget)) {
219
+ event.stopPropagation();
220
+ }
221
+ if (disabled == null) {
222
+ return true;
223
+ }
224
+ return !disabled;
225
+ },
226
+ onKeyDown: function (event) {
227
+ var disabled = _this._config.disabled;
228
+ var key = event.key;
229
+ var target = event.target;
230
+ if (!disabled && isValidKeyPress(event)) {
231
+ if (_this._touchState === NOT_RESPONDER) {
232
+ start(event, false);
233
+ document.addEventListener("keyup", keyupHandler);
170
234
  }
171
- };
172
- return {
173
- onStartShouldSetResponder: function (event) {
174
- var disabled = _this._config.disabled;
175
- return disabled && isButtonRole(event.currentTarget) && event.stopPropagation(), disabled == null ? !0 : !disabled;
176
- },
177
- onKeyDown: function (event) {
178
- var disabled = _this._config.disabled,
179
- key = event.key,
180
- target = event.target;
181
- if (!disabled && isValidKeyPress(event)) {
182
- _this._touchState === NOT_RESPONDER && (start(event, !1), document.addEventListener("keyup", keyupHandler));
183
- var role = target.getAttribute("role"),
184
- isSpacebarKey = key === " " || key === "Spacebar",
185
- _isButtonRole = role === "button" || role === "menuitem";
186
- isSpacebarKey && _isButtonRole && event.preventDefault(), event.stopPropagation();
235
+ var role = target.getAttribute("role");
236
+ var isSpacebarKey = key === " " || key === "Spacebar";
237
+ var _isButtonRole = role === "button" || role === "menuitem";
238
+ if (isSpacebarKey && _isButtonRole) {
239
+ event.preventDefault();
187
240
  }
188
- },
189
- onResponderGrant: function (event) {
190
- return start(event);
191
- },
192
- onResponderMove: function (event) {
193
- _this._config.onPressMove != null && _this._config.onPressMove(event);
194
- var touch = getTouchFromResponderEvent(event);
195
- if (_this._touchActivatePosition != null) {
196
- var deltaX = _this._touchActivatePosition.pageX - touch.pageX,
197
- deltaY = _this._touchActivatePosition.pageY - touch.pageY;
198
- Math.hypot(deltaX, deltaY) > 10 && _this._cancelLongPressDelayTimeout();
241
+ event.stopPropagation();
242
+ }
243
+ },
244
+ onResponderGrant: function (event) {
245
+ return start(event);
246
+ },
247
+ onResponderMove: function (event) {
248
+ if (_this._config.onPressMove != null) {
249
+ _this._config.onPressMove(event);
250
+ }
251
+ var touch = getTouchFromResponderEvent(event);
252
+ if (_this._touchActivatePosition != null) {
253
+ var deltaX = _this._touchActivatePosition.pageX - touch.pageX;
254
+ var deltaY = _this._touchActivatePosition.pageY - touch.pageY;
255
+ if (Math.hypot(deltaX, deltaY) > 10) {
256
+ _this._cancelLongPressDelayTimeout();
199
257
  }
200
- },
201
- onResponderRelease: function (event) {
202
- return end(event);
203
- },
204
- onResponderTerminate: function (event) {
205
- event.nativeEvent.type === "selectionchange" && (_this._selectionTerminated = !0), _this._receiveSignal(RESPONDER_TERMINATED, event);
206
- },
207
- onResponderTerminationRequest: function (event) {
208
- var _this$_config = _this._config,
209
- cancelable = _this$_config.cancelable,
210
- disabled = _this$_config.disabled,
211
- onLongPress = _this$_config.onLongPress;
212
- return !disabled && onLongPress != null && _this._isPointerTouch && event.nativeEvent.type === "contextmenu" ? !1 : cancelable ?? !0;
213
- },
214
- // NOTE: this diverges from react-native in 3 significant ways:
215
- // * The `onPress` callback is not connected to the responder system (the native
216
- // `click` event must be used but is dispatched in many scenarios where no pointers
217
- // are on the screen.) Therefore, it's possible for `onPress` to be called without
218
- // `onPress{Start,End}` being called first.
219
- // * The `onPress` callback is only be called on the first ancestor of the native
220
- // `click` target that is using the PressResponder.
221
- // * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.
222
- onClick: function (event) {
223
- var _this$_config2 = _this._config,
224
- disabled = _this$_config2.disabled,
225
- onPress = _this$_config2.onPress;
226
- disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : (event.stopPropagation(), _this._longPressDispatched || _this._selectionTerminated ? event.preventDefault() : onPress != null && event.altKey === !1 && onPress(event));
227
- },
228
- // If `onLongPress` is provided and a touch pointer is being used, prevent the
229
- // default context menu from opening.
230
- onContextMenu: function (event) {
231
- var _this$_config3 = _this._config,
232
- disabled = _this$_config3.disabled,
233
- onLongPress = _this$_config3.onLongPress;
234
- disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : onLongPress != null && _this._isPointerTouch && !event.defaultPrevented && (event.preventDefault(), event.stopPropagation());
235
258
  }
236
- };
259
+ },
260
+ onResponderRelease: function (event) {
261
+ return end(event);
262
+ },
263
+ onResponderTerminate: function (event) {
264
+ if (event.nativeEvent.type === "selectionchange") {
265
+ _this._selectionTerminated = true;
266
+ }
267
+ _this._receiveSignal(RESPONDER_TERMINATED, event);
268
+ },
269
+ onResponderTerminationRequest: function (event) {
270
+ var _this$_config = _this._config;
271
+ var cancelable = _this$_config.cancelable;
272
+ var disabled = _this$_config.disabled;
273
+ var onLongPress = _this$_config.onLongPress;
274
+ if (!disabled && onLongPress != null && _this._isPointerTouch && event.nativeEvent.type === "contextmenu") {
275
+ return false;
276
+ }
277
+ if (cancelable == null) {
278
+ return true;
279
+ }
280
+ return cancelable;
281
+ },
282
+ // NOTE: this diverges from react-native in 3 significant ways:
283
+ // * The `onPress` callback is not connected to the responder system (the native
284
+ // `click` event must be used but is dispatched in many scenarios where no pointers
285
+ // are on the screen.) Therefore, it's possible for `onPress` to be called without
286
+ // `onPress{Start,End}` being called first.
287
+ // * The `onPress` callback is only be called on the first ancestor of the native
288
+ // `click` target that is using the PressResponder.
289
+ // * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.
290
+ onClick: function (event) {
291
+ var _this$_config2 = _this._config;
292
+ var disabled = _this$_config2.disabled;
293
+ var onPress = _this$_config2.onPress;
294
+ if (!disabled) {
295
+ event.stopPropagation();
296
+ if (_this._longPressDispatched || _this._selectionTerminated) {
297
+ event.preventDefault();
298
+ } else if (onPress != null && event.altKey === false) {
299
+ onPress(event);
300
+ }
301
+ } else {
302
+ if (isButtonRole(event.currentTarget)) {
303
+ event.stopPropagation();
304
+ }
305
+ }
306
+ },
307
+ // If `onLongPress` is provided and a touch pointer is being used, prevent the
308
+ // default context menu from opening.
309
+ onContextMenu: function (event) {
310
+ var _this$_config3 = _this._config;
311
+ var disabled = _this$_config3.disabled;
312
+ var onLongPress = _this$_config3.onLongPress;
313
+ if (!disabled) {
314
+ if (onLongPress != null && _this._isPointerTouch && !event.defaultPrevented) {
315
+ event.preventDefault();
316
+ event.stopPropagation();
317
+ }
318
+ } else {
319
+ if (isButtonRole(event.currentTarget)) {
320
+ event.stopPropagation();
321
+ }
322
+ }
323
+ }
324
+ };
325
+ }
326
+ }, {
327
+ /**
328
+ * Receives a state machine signal, performs side effects of the transition
329
+ * and stores the new state. Validates the transition as well.
330
+ */
331
+ key: "_receiveSignal",
332
+ value: function _receiveSignal(signal, event) {
333
+ var prevState = this._touchState;
334
+ var nextState = null;
335
+ if (Transitions[prevState] != null) {
336
+ nextState = Transitions[prevState][signal];
337
+ }
338
+ if (this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) {
339
+ return;
237
340
  }
238
- }, {
239
- /**
240
- * Receives a state machine signal, performs side effects of the transition
241
- * and stores the new state. Validates the transition as well.
242
- */
243
- key: "_receiveSignal",
244
- value: function (signal, event) {
245
- var prevState = this._touchState,
246
- nextState = null;
247
- Transitions[prevState] != null && (nextState = Transitions[prevState][signal]), !(this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) && (nextState == null || nextState === ERROR ? console.error(`PressResponder: Invalid signal ${signal} for state ${prevState} on responder`) : prevState !== nextState && (this._performTransitionSideEffects(prevState, nextState, signal, event), this._touchState = nextState));
341
+ if (nextState == null || nextState === ERROR) {
342
+ console.error(`PressResponder: Invalid signal ${signal} for state ${prevState} on responder`);
343
+ } else if (prevState !== nextState) {
344
+ this._performTransitionSideEffects(prevState, nextState, signal, event);
345
+ this._touchState = nextState;
248
346
  }
249
- }, {
250
- /**
251
- * Performs a transition between touchable states and identify any activations
252
- * or deactivations (and callback invocations).
253
- */
254
- key: "_performTransitionSideEffects",
255
- value: function (prevState, nextState, signal, event) {
256
- var _this = this;
257
- if (isTerminalSignal(signal) && (setTimeout(function () {
258
- _this._isPointerTouch = !1;
259
- }, 0), this._touchActivatePosition = null, this._cancelLongPressDelayTimeout()), isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {
260
- var onLongPress = this._config.onLongPress;
261
- onLongPress != null && event.nativeEvent.key == null && (onLongPress(event), this._longPressDispatched = !0);
347
+ }
348
+ }, {
349
+ /**
350
+ * Performs a transition between touchable states and identify any activations
351
+ * or deactivations (and callback invocations).
352
+ */
353
+ key: "_performTransitionSideEffects",
354
+ value: function _performTransitionSideEffects(prevState, nextState, signal, event) {
355
+ var _this = this;
356
+ if (isTerminalSignal(signal)) {
357
+ setTimeout(function () {
358
+ _this._isPointerTouch = false;
359
+ }, 0);
360
+ this._touchActivatePosition = null;
361
+ this._cancelLongPressDelayTimeout();
362
+ }
363
+ if (isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {
364
+ var onLongPress = this._config.onLongPress;
365
+ if (onLongPress != null && event.nativeEvent.key == null) {
366
+ onLongPress(event);
367
+ this._longPressDispatched = true;
262
368
  }
263
- var isPrevActive = isActiveSignal(prevState),
264
- isNextActive = isActiveSignal(nextState);
265
- if (!isPrevActive && isNextActive ? this._activate(event) : isPrevActive && !isNextActive && this._deactivate(event), isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {
266
- var _this$_config4 = this._config,
267
- _onLongPress = _this$_config4.onLongPress,
268
- onPress = _this$_config4.onPress;
269
- if (onPress != null) {
270
- var isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;
271
- isPressCanceledByLongPress || isNextActive || isPrevActive || (this._activate(event), this._deactivate(event));
369
+ }
370
+ var isPrevActive = isActiveSignal(prevState);
371
+ var isNextActive = isActiveSignal(nextState);
372
+ if (!isPrevActive && isNextActive) {
373
+ this._activate(event);
374
+ } else if (isPrevActive && !isNextActive) {
375
+ this._deactivate(event);
376
+ }
377
+ if (isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {
378
+ var _this$_config4 = this._config;
379
+ var _onLongPress = _this$_config4.onLongPress;
380
+ var onPress = _this$_config4.onPress;
381
+ if (onPress != null) {
382
+ var isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;
383
+ if (!isPressCanceledByLongPress) {
384
+ if (!(isNextActive || isPrevActive)) {
385
+ this._activate(event);
386
+ this._deactivate(event);
387
+ }
272
388
  }
273
389
  }
274
- this._cancelPressDelayTimeout();
275
390
  }
276
- }, {
277
- key: "_activate",
278
- value: function (event) {
279
- var _this$_config5 = this._config,
280
- onPressChange = _this$_config5.onPressChange,
281
- onPressStart = _this$_config5.onPressStart,
282
- touch = getTouchFromResponderEvent(event);
283
- this._touchActivatePosition = {
284
- pageX: touch.pageX,
285
- pageY: touch.pageY
286
- }, onPressStart?.(event), onPressChange?.(!0);
391
+ this._cancelPressDelayTimeout();
392
+ }
393
+ }, {
394
+ key: "_activate",
395
+ value: function _activate(event) {
396
+ var _this$_config5 = this._config;
397
+ var onPressChange = _this$_config5.onPressChange;
398
+ var onPressStart = _this$_config5.onPressStart;
399
+ var touch = getTouchFromResponderEvent(event);
400
+ this._touchActivatePosition = {
401
+ pageX: touch.pageX,
402
+ pageY: touch.pageY
403
+ };
404
+ if (onPressStart != null) {
405
+ onPressStart(event);
406
+ }
407
+ if (onPressChange != null) {
408
+ onPressChange(true);
287
409
  }
288
- }, {
289
- key: "_deactivate",
290
- value: function (event) {
291
- var _this$_config6 = this._config,
292
- onPressChange = _this$_config6.onPressChange,
293
- onPressEnd = _this$_config6.onPressEnd;
294
- function end() {
295
- onPressEnd?.(event), onPressChange?.(!1);
410
+ }
411
+ }, {
412
+ key: "_deactivate",
413
+ value: function _deactivate(event) {
414
+ var _this$_config6 = this._config;
415
+ var onPressChange = _this$_config6.onPressChange;
416
+ var onPressEnd = _this$_config6.onPressEnd;
417
+ function end() {
418
+ if (onPressEnd != null) {
419
+ onPressEnd(event);
296
420
  }
297
- var delayPressEnd = normalizeDelay(this._config.delayPressEnd);
298
- delayPressEnd > 0 ? this._pressOutDelayTimeout = setTimeout(function () {
421
+ if (onPressChange != null) {
422
+ onPressChange(false);
423
+ }
424
+ }
425
+ var delayPressEnd = normalizeDelay(this._config.delayPressEnd);
426
+ if (delayPressEnd > 0) {
427
+ this._pressOutDelayTimeout = setTimeout(function () {
299
428
  end();
300
- }, delayPressEnd) : end();
429
+ }, delayPressEnd);
430
+ } else {
431
+ end();
301
432
  }
302
- }, {
303
- key: "_handleLongPress",
304
- value: function (event) {
305
- (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) && this._receiveSignal(LONG_PRESS_DETECTED, event);
433
+ }
434
+ }, {
435
+ key: "_handleLongPress",
436
+ value: function _handleLongPress(event) {
437
+ if (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) {
438
+ this._receiveSignal(LONG_PRESS_DETECTED, event);
306
439
  }
307
- }, {
308
- key: "_cancelLongPressDelayTimeout",
309
- value: function () {
310
- this._longPressDelayTimeout != null && (clearTimeout(this._longPressDelayTimeout), this._longPressDelayTimeout = null);
440
+ }
441
+ }, {
442
+ key: "_cancelLongPressDelayTimeout",
443
+ value: function _cancelLongPressDelayTimeout() {
444
+ if (this._longPressDelayTimeout != null) {
445
+ clearTimeout(this._longPressDelayTimeout);
446
+ this._longPressDelayTimeout = null;
311
447
  }
312
- }, {
313
- key: "_cancelPressDelayTimeout",
314
- value: function () {
315
- this._pressDelayTimeout != null && (clearTimeout(this._pressDelayTimeout), this._pressDelayTimeout = null);
448
+ }
449
+ }, {
450
+ key: "_cancelPressDelayTimeout",
451
+ value: function _cancelPressDelayTimeout() {
452
+ if (this._pressDelayTimeout != null) {
453
+ clearTimeout(this._pressDelayTimeout);
454
+ this._pressDelayTimeout = null;
316
455
  }
317
- }, {
318
- key: "_cancelPressOutDelayTimeout",
319
- value: function () {
320
- this._pressOutDelayTimeout != null && (clearTimeout(this._pressOutDelayTimeout), this._pressOutDelayTimeout = null);
456
+ }
457
+ }, {
458
+ key: "_cancelPressOutDelayTimeout",
459
+ value: function _cancelPressOutDelayTimeout() {
460
+ if (this._pressOutDelayTimeout != null) {
461
+ clearTimeout(this._pressOutDelayTimeout);
462
+ this._pressOutDelayTimeout = null;
321
463
  }
322
- }]), PressResponder2;
323
- }();
464
+ }
465
+ }]);
466
+ return PressResponder2;
467
+ }();
324
468
  function normalizeDelay(delay, min, fallback) {
325
- return min === void 0 && (min = 0), fallback === void 0 && (fallback = 0), Math.max(min, delay ?? fallback);
469
+ if (min === void 0) {
470
+ min = 0;
471
+ }
472
+ if (fallback === void 0) {
473
+ fallback = 0;
474
+ }
475
+ return Math.max(min, delay !== null && delay !== void 0 ? delay : fallback);
326
476
  }
327
477
  function getTouchFromResponderEvent(event) {
328
- var _event$nativeEvent = event.nativeEvent,
329
- changedTouches = _event$nativeEvent.changedTouches,
330
- touches = _event$nativeEvent.touches;
331
- return touches != null && touches.length > 0 ? touches[0] : changedTouches != null && changedTouches.length > 0 ? changedTouches[0] : event.nativeEvent;
478
+ var _event$nativeEvent = event.nativeEvent;
479
+ var changedTouches = _event$nativeEvent.changedTouches;
480
+ var touches = _event$nativeEvent.touches;
481
+ if (touches != null && touches.length > 0) {
482
+ return touches[0];
483
+ }
484
+ if (changedTouches != null && changedTouches.length > 0) {
485
+ return changedTouches[0];
486
+ }
487
+ return event.nativeEvent;
332
488
  }
333
489
  //# sourceMappingURL=PressResponder.native.js.map