Socket
Socket
Sign inDemoInstall

@tamagui/react-native-use-pressable

Package Overview
Dependencies
Maintainers
1
Versions
858
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tamagui/react-native-use-pressable - npm Package Compare versions

Comparing version 1.111.8 to 1.111.9

21

dist/esm/index.native.js
import React from "react";
import PressResponder from "./PressResponder";
import PressResponder from "./PressResponder.native.js";
function usePressEvents(_, config) {

@@ -7,18 +7,11 @@ var pressResponderRef = React.useRef(null);

var pressResponder = pressResponderRef.current;
return React.useEffect(function() {
return React.useEffect(function () {
pressResponder.configure(config);
}, [
config,
pressResponder
]), React.useEffect(function() {
return function() {
}, [config, pressResponder]), React.useEffect(function () {
return function () {
pressResponder.reset();
};
}, [
pressResponder
]), React.useDebugValue(config), pressResponder.getEventHandlers();
}, [pressResponder]), React.useDebugValue(config), pressResponder.getEventHandlers();
}
export {
usePressEvents
};
//# sourceMappingURL=index.js.map
export { usePressEvents };
//# sourceMappingURL=index.native.js.map
function _class_call_check(instance, Constructor) {
if (!(instance instanceof Constructor))
throw new TypeError("Cannot call a class as a function");
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
}

@@ -22,62 +21,82 @@ function _defineProperties(target, props) {

}
var DELAY = "DELAY", ERROR = "ERROR", LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED", NOT_RESPONDER = "NOT_RESPONDER", RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START", RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START", RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START", RESPONDER_GRANT = "RESPONDER_GRANT", RESPONDER_RELEASE = "RESPONDER_RELEASE", RESPONDER_TERMINATED = "RESPONDER_TERMINATED", Transitions = Object.freeze({
NOT_RESPONDER: {
DELAY: ERROR,
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
RESPONDER_RELEASE: ERROR,
RESPONDER_TERMINATED: ERROR,
LONG_PRESS_DETECTED: ERROR
var DELAY = "DELAY",
ERROR = "ERROR",
LONG_PRESS_DETECTED = "LONG_PRESS_DETECTED",
NOT_RESPONDER = "NOT_RESPONDER",
RESPONDER_ACTIVE_LONG_PRESS_START = "RESPONDER_ACTIVE_LONG_PRESS_START",
RESPONDER_ACTIVE_PRESS_START = "RESPONDER_ACTIVE_PRESS_START",
RESPONDER_INACTIVE_PRESS_START = "RESPONDER_INACTIVE_PRESS_START",
RESPONDER_GRANT = "RESPONDER_GRANT",
RESPONDER_RELEASE = "RESPONDER_RELEASE",
RESPONDER_TERMINATED = "RESPONDER_TERMINATED",
Transitions = Object.freeze({
NOT_RESPONDER: {
DELAY: ERROR,
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
RESPONDER_RELEASE: ERROR,
RESPONDER_TERMINATED: ERROR,
LONG_PRESS_DETECTED: ERROR
},
RESPONDER_INACTIVE_PRESS_START: {
DELAY: RESPONDER_ACTIVE_PRESS_START,
RESPONDER_GRANT: ERROR,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: ERROR
},
RESPONDER_ACTIVE_PRESS_START: {
DELAY: ERROR,
RESPONDER_GRANT: ERROR,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
},
RESPONDER_ACTIVE_LONG_PRESS_START: {
DELAY: ERROR,
RESPONDER_GRANT: ERROR,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
},
ERROR: {
DELAY: NOT_RESPONDER,
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: NOT_RESPONDER
}
}),
isActiveSignal = function (signal) {
return signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
},
RESPONDER_INACTIVE_PRESS_START: {
DELAY: RESPONDER_ACTIVE_PRESS_START,
RESPONDER_GRANT: ERROR,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: ERROR
isButtonRole = function (element) {
return element.getAttribute("role") === "button";
},
RESPONDER_ACTIVE_PRESS_START: {
DELAY: ERROR,
RESPONDER_GRANT: ERROR,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
isPressStartSignal = function (signal) {
return signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
},
RESPONDER_ACTIVE_LONG_PRESS_START: {
DELAY: ERROR,
RESPONDER_GRANT: ERROR,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START
isTerminalSignal = function (signal) {
return signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
},
ERROR: {
DELAY: NOT_RESPONDER,
RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,
RESPONDER_RELEASE: NOT_RESPONDER,
RESPONDER_TERMINATED: NOT_RESPONDER,
LONG_PRESS_DETECTED: NOT_RESPONDER
}
}), isActiveSignal = function(signal) {
return signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
}, isButtonRole = function(element) {
return element.getAttribute("role") === "button";
}, isPressStartSignal = function(signal) {
return signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;
}, isTerminalSignal = function(signal) {
return signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;
}, isValidKeyPress = function(event) {
var key = event.key, target = event.target, role = target.getAttribute("role"), isSpacebar = key === " " || key === "Spacebar";
return key === "Enter" || isSpacebar && role === "button";
}, DEFAULT_LONG_PRESS_DELAY_MS = 450, DEFAULT_PRESS_DELAY_MS = 50, PressResponder = /* @__PURE__ */ function() {
"use strict";
function PressResponder2(config) {
_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);
}
return _create_class(PressResponder2, [
{
isValidKeyPress = function (event) {
var key = event.key,
target = event.target,
role = target.getAttribute("role"),
isSpacebar = key === " " || key === "Spacebar";
return key === "Enter" || isSpacebar && role === "button";
},
DEFAULT_LONG_PRESS_DELAY_MS = 450,
DEFAULT_PRESS_DELAY_MS = 50,
PressResponder = /* @__PURE__ */function () {
"use strict";
function PressResponder2(config) {
_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);
}
return _create_class(PressResponder2, [{
key: "configure",
value: function(config) {
value: function (config) {
this._config = config;
}
},
{
}, {
/**

@@ -87,7 +106,6 @@ * Resets any pending timers. This should be called on unmount.

key: "reset",
value: function() {
value: function () {
this._cancelLongPressDelayTimeout(), this._cancelPressDelayTimeout(), this._cancelPressOutDelayTimeout();
}
},
{
}, {
/**

@@ -97,61 +115,74 @@ * Returns a set of props to spread into the interactive element.

key: "getEventHandlers",
value: function() {
value: function () {
return this._eventHandlers == null && (this._eventHandlers = this._createEventHandlers()), this._eventHandlers;
}
},
{
}, {
key: "_createEventHandlers",
value: function() {
var _this = this, start = function(event, shouldDelay) {
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);
var delayPressStart = normalizeDelay(_this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);
shouldDelay !== !1 && delayPressStart > 0 ? _this._pressDelayTimeout = setTimeout(function() {
_this._receiveSignal(DELAY, event);
}, delayPressStart) : _this._receiveSignal(DELAY, event);
var delayLongPress = normalizeDelay(_this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);
_this._longPressDelayTimeout = setTimeout(function() {
_this._handleLongPress(event);
}, delayLongPress + delayPressStart);
}, end = function(event) {
_this._receiveSignal(RESPONDER_RELEASE, event);
}, keyupHandler = function(event) {
var onPress = _this._config.onPress, target = event.target;
if (_this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
end(event), document.removeEventListener("keyup", keyupHandler);
var role = target.getAttribute("role"), elementType = target.tagName.toLowerCase(), isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
onPress != null && !isNativeInteractiveElement && onPress(event);
}
};
value: function () {
var _this = this,
start = function (event, shouldDelay) {
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);
var delayPressStart = normalizeDelay(_this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);
shouldDelay !== !1 && delayPressStart > 0 ? _this._pressDelayTimeout = setTimeout(function () {
_this._receiveSignal(DELAY, event);
}, delayPressStart) : _this._receiveSignal(DELAY, event);
var delayLongPress = normalizeDelay(_this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);
_this._longPressDelayTimeout = setTimeout(function () {
_this._handleLongPress(event);
}, delayLongPress + delayPressStart);
},
end = function (event) {
_this._receiveSignal(RESPONDER_RELEASE, event);
},
keyupHandler = function (event) {
var onPress = _this._config.onPress,
target = event.target;
if (_this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {
end(event), document.removeEventListener("keyup", keyupHandler);
var role = target.getAttribute("role"),
elementType = target.tagName.toLowerCase(),
isNativeInteractiveElement = role === "link" || elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea";
onPress != null && !isNativeInteractiveElement && onPress(event);
}
};
return {
onStartShouldSetResponder: function(event) {
onStartShouldSetResponder: function (event) {
var disabled = _this._config.disabled;
return disabled && isButtonRole(event.currentTarget) && event.stopPropagation(), disabled == null ? !0 : !disabled;
},
onKeyDown: function(event) {
var disabled = _this._config.disabled, key = event.key, target = event.target;
onKeyDown: function (event) {
var disabled = _this._config.disabled,
key = event.key,
target = event.target;
if (!disabled && isValidKeyPress(event)) {
_this._touchState === NOT_RESPONDER && (start(event, !1), document.addEventListener("keyup", keyupHandler));
var role = target.getAttribute("role"), isSpacebarKey = key === " " || key === "Spacebar", _isButtonRole = role === "button" || role === "menuitem";
var role = target.getAttribute("role"),
isSpacebarKey = key === " " || key === "Spacebar",
_isButtonRole = role === "button" || role === "menuitem";
isSpacebarKey && _isButtonRole && event.preventDefault(), event.stopPropagation();
}
},
onResponderGrant: function(event) {
onResponderGrant: function (event) {
return start(event);
},
onResponderMove: function(event) {
onResponderMove: function (event) {
_this._config.onPressMove != null && _this._config.onPressMove(event);
var touch = getTouchFromResponderEvent(event);
if (_this._touchActivatePosition != null) {
var deltaX = _this._touchActivatePosition.pageX - touch.pageX, deltaY = _this._touchActivatePosition.pageY - touch.pageY;
var deltaX = _this._touchActivatePosition.pageX - touch.pageX,
deltaY = _this._touchActivatePosition.pageY - touch.pageY;
Math.hypot(deltaX, deltaY) > 10 && _this._cancelLongPressDelayTimeout();
}
},
onResponderRelease: function(event) {
onResponderRelease: function (event) {
return end(event);
},
onResponderTerminate: function(event) {
onResponderTerminate: function (event) {
event.nativeEvent.type === "selectionchange" && (_this._selectionTerminated = !0), _this._receiveSignal(RESPONDER_TERMINATED, event);
},
onResponderTerminationRequest: function(event) {
var _this$_config = _this._config, cancelable = _this$_config.cancelable, disabled = _this$_config.disabled, onLongPress = _this$_config.onLongPress;
onResponderTerminationRequest: function (event) {
var _this$_config = _this._config,
cancelable = _this$_config.cancelable,
disabled = _this$_config.disabled,
onLongPress = _this$_config.onLongPress;
return !disabled && onLongPress != null && _this._isPointerTouch && event.nativeEvent.type === "contextmenu" ? !1 : cancelable ?? !0;

@@ -167,4 +198,6 @@ },

// * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.
onClick: function(event) {
var _this$_config2 = _this._config, disabled = _this$_config2.disabled, onPress = _this$_config2.onPress;
onClick: function (event) {
var _this$_config2 = _this._config,
disabled = _this$_config2.disabled,
onPress = _this$_config2.onPress;
disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : (event.stopPropagation(), _this._longPressDispatched || _this._selectionTerminated ? event.preventDefault() : onPress != null && event.altKey === !1 && onPress(event));

@@ -174,4 +207,6 @@ },

// default context menu from opening.
onContextMenu: function(event) {
var _this$_config3 = _this._config, disabled = _this$_config3.disabled, onLongPress = _this$_config3.onLongPress;
onContextMenu: function (event) {
var _this$_config3 = _this._config,
disabled = _this$_config3.disabled,
onLongPress = _this$_config3.onLongPress;
disabled ? isButtonRole(event.currentTarget) && event.stopPropagation() : onLongPress != null && _this._isPointerTouch && !event.defaultPrevented && (event.preventDefault(), event.stopPropagation());

@@ -181,4 +216,3 @@ }

}
},
{
}, {
/**

@@ -189,8 +223,8 @@ * Receives a state machine signal, performs side effects of the transition

key: "_receiveSignal",
value: function(signal, event) {
var prevState = this._touchState, nextState = null;
value: function (signal, event) {
var prevState = this._touchState,
nextState = null;
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));
}
},
{
}, {
/**

@@ -201,5 +235,5 @@ * Performs a transition between touchable states and identify any activations

key: "_performTransitionSideEffects",
value: function(prevState, nextState, signal, event) {
value: function (prevState, nextState, signal, event) {
var _this = this;
if (isTerminalSignal(signal) && (setTimeout(function() {
if (isTerminalSignal(signal) && (setTimeout(function () {
_this._isPointerTouch = !1;

@@ -210,5 +244,8 @@ }, 0), this._touchActivatePosition = null, this._cancelLongPressDelayTimeout()), isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {

}
var isPrevActive = isActiveSignal(prevState), isNextActive = isActiveSignal(nextState);
var isPrevActive = isActiveSignal(prevState),
isNextActive = isActiveSignal(nextState);
if (!isPrevActive && isNextActive ? this._activate(event) : isPrevActive && !isNextActive && this._deactivate(event), isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {
var _this$_config4 = this._config, _onLongPress = _this$_config4.onLongPress, onPress = _this$_config4.onPress;
var _this$_config4 = this._config,
_onLongPress = _this$_config4.onLongPress,
onPress = _this$_config4.onPress;
if (onPress != null) {

@@ -221,7 +258,9 @@ var isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;

}
},
{
}, {
key: "_activate",
value: function(event) {
var _this$_config5 = this._config, onPressChange = _this$_config5.onPressChange, onPressStart = _this$_config5.onPressStart, touch = getTouchFromResponderEvent(event);
value: function (event) {
var _this$_config5 = this._config,
onPressChange = _this$_config5.onPressChange,
onPressStart = _this$_config5.onPressStart,
touch = getTouchFromResponderEvent(event);
this._touchActivatePosition = {

@@ -232,7 +271,8 @@ pageX: touch.pageX,

}
},
{
}, {
key: "_deactivate",
value: function(event) {
var _this$_config6 = this._config, onPressChange = _this$_config6.onPressChange, onPressEnd = _this$_config6.onPressEnd;
value: function (event) {
var _this$_config6 = this._config,
onPressChange = _this$_config6.onPressChange,
onPressEnd = _this$_config6.onPressEnd;
function end() {

@@ -242,33 +282,28 @@ onPressEnd?.(event), onPressChange?.(!1);

var delayPressEnd = normalizeDelay(this._config.delayPressEnd);
delayPressEnd > 0 ? this._pressOutDelayTimeout = setTimeout(function() {
delayPressEnd > 0 ? this._pressOutDelayTimeout = setTimeout(function () {
end();
}, delayPressEnd) : end();
}
},
{
}, {
key: "_handleLongPress",
value: function(event) {
value: function (event) {
(this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) && this._receiveSignal(LONG_PRESS_DETECTED, event);
}
},
{
}, {
key: "_cancelLongPressDelayTimeout",
value: function() {
value: function () {
this._longPressDelayTimeout != null && (clearTimeout(this._longPressDelayTimeout), this._longPressDelayTimeout = null);
}
},
{
}, {
key: "_cancelPressDelayTimeout",
value: function() {
value: function () {
this._pressDelayTimeout != null && (clearTimeout(this._pressDelayTimeout), this._pressDelayTimeout = null);
}
},
{
}, {
key: "_cancelPressOutDelayTimeout",
value: function() {
value: function () {
this._pressOutDelayTimeout != null && (clearTimeout(this._pressOutDelayTimeout), this._pressOutDelayTimeout = null);
}
}
]), PressResponder2;
}();
}]), PressResponder2;
}();
function normalizeDelay(delay, min, fallback) {

@@ -278,8 +313,8 @@ return min === void 0 && (min = 0), fallback === void 0 && (fallback = 0), Math.max(min, delay ?? fallback);

function getTouchFromResponderEvent(event) {
var _event$nativeEvent = event.nativeEvent, changedTouches = _event$nativeEvent.changedTouches, touches = _event$nativeEvent.touches;
var _event$nativeEvent = event.nativeEvent,
changedTouches = _event$nativeEvent.changedTouches,
touches = _event$nativeEvent.touches;
return touches != null && touches.length > 0 ? touches[0] : changedTouches != null && changedTouches.length > 0 ? changedTouches[0] : event.nativeEvent;
}
export {
PressResponder as default
};
//# sourceMappingURL=PressResponder.js.map
export { PressResponder as default };
//# sourceMappingURL=PressResponder.native.js.map
{
"name": "@tamagui/react-native-use-pressable",
"version": "1.111.8",
"version": "1.111.9",
"types": "./types/index.d.ts",

@@ -23,3 +23,3 @@ "main": "dist/cjs",

".": {
"react-native-import": "./dist/esm/index.native.mjs",
"react-native-import": "./dist/esm/index.native.js",
"react-native": "./dist/cjs/index.native.js",

@@ -32,3 +32,3 @@ "types": "./types/index.d.ts",

"devDependencies": {
"@tamagui/build": "1.111.8",
"@tamagui/build": "1.111.9",
"react": "^18.2.0 || ^19.0.0"

@@ -35,0 +35,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc