// Metro module 5340 (f5341). import _classCallCheck from "./_classCallCheck"; import _createClass from "./_createClass"; import _possibleConstructorReturn from "./_possibleConstructorReturn"; import _getPrototypeOf from "./_getPrototypeOf"; import _inherits from "./_inherits"; import { Component } from "react"; import { Platform, Animated } from "react-native"; import { State } from "./Module5278"; import { BaseButton } from "./InnerBaseButton"; let c3252_8; let GenericTouchable; let env3252 = {}; env3252[7] = function _isNativeReflectConstruct() { let c14811_0; try { c14811_0 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch ($e) {} const _isNativeReflectConstruct2 = function _isNativeReflectConstruct() { return !!c14811_0; }; env3252[7] = _isNativeReflectConstruct2; return _isNativeReflectConstruct2(); }; Platform; c3252_8 = { UNDETERMINED: 0, BEGAN: 1, MOVED_OUTSIDE: 2 }; GenericTouchable = function GenericTouchable(...args) { _classCallCheck(this, GenericTouchable); const r11 = [...args]; const r10 = _getPrototypeOf(GenericTouchable); const r27 = _possibleConstructorReturn(this, (0, env3252[7])() ? Reflect.construct(r10, r11, _getPrototypeOf(this).constructor) : r10.apply(this, r11)); r27.longPressDetected = false; r27.pointerInside = true; r27.STATE = c3252_8.UNDETERMINED; r27.onGestureEvent = (a0) => { const pointerInside = a0.nativeEvent.pointerInside; if (this.pointerInside !== pointerInside) { if (pointerInside) { this.onMoveIn(); } else { this.onMoveOut(); } } this.pointerInside = pointerInside; }; r27.onHandlerStateChange = (a0) => { L14: { const state = a0.nativeEvent.state; if (state !== State.CANCELLED && state !== State.FAILED) { if (state === State.BEGAN) { if (this.STATE === c3252_8.UNDETERMINED) { this.handlePressIn(); break L14; } } if (state !== State.END) { break L14; } const longPressDetected = this.longPressDetected; const r0 = (longPressDetected ? !longPressDetected : this.STATE !== c3252_8.MOVED_OUTSIDE) && this.pressOutTimeout === void 0; this.handleGoToUndetermined(); if (!r0) { break L14; } const props = this.props; const onPress = props.onPress; if (onPress == null) { break L14; } onPress.call(props); } else { this.moveToState(c3252_8.UNDETERMINED); } } }; r27.onLongPressDetected = () => { this.longPressDetected = true; const props = this.props; const onLongPress = props.onLongPress; if (onLongPress != null) { onLongPress.call(props); } }; return r27; }; _inherits(GenericTouchable, Component); const r61 = _createClass(GenericTouchable, [{ key: "handlePressIn", value: function handlePressIn() { if (this.props.delayPressIn) { this.pressInTimeout = setTimeout(() => { this.moveToState(c3252_8.BEGAN); this.pressInTimeout = void 0; }, this.props.delayPressIn); } else { this.moveToState(c3252_8.BEGAN); } if (this.props.onLongPress) { this.longPressTimeout = setTimeout(this.onLongPressDetected, (this.props.delayPressIn || 0) + (this.props.delayLongPress || 0)); } } }, { key: "handleMoveOutside", value: function handleMoveOutside() { if (this.props.delayPressOut) { this.pressOutTimeout = this.pressOutTimeout || setTimeout(() => { this.moveToState(c3252_8.MOVED_OUTSIDE); this.pressOutTimeout = void 0; }, this.props.delayPressOut); } else { this.moveToState(c3252_8.MOVED_OUTSIDE); } } }, { key: "handleGoToUndetermined", value: function handleGoToUndetermined() { clearTimeout(this.pressOutTimeout); if (this.props.delayPressOut) { this.pressOutTimeout = setTimeout(() => { const STATE = this.STATE; if (STATE === c3252_8.UNDETERMINED) { this.moveToState(c3252_8.BEGAN); } this.moveToState(c3252_8.UNDETERMINED); this.pressOutTimeout = void 0; }, this.props.delayPressOut); } else { const STATE = this.STATE; if (STATE === c3252_8.UNDETERMINED) { this.moveToState(c3252_8.BEGAN); } this.moveToState(c3252_8.UNDETERMINED); } } }, { key: "componentDidMount", value: function componentDidMount() { this.reset(); } }, { key: "reset", value: function reset() { this.longPressDetected = false; this.pointerInside = true; clearTimeout(this.pressInTimeout); clearTimeout(this.pressOutTimeout); clearTimeout(this.longPressTimeout); this.pressOutTimeout = void 0; this.longPressTimeout = void 0; this.pressInTimeout = void 0; } }, { key: "moveToState", value: function moveToState(a0) { if (a0 !== this.STATE) { if (a0 === c3252_8.BEGAN) { const props4 = this.props; const onPressIn = props4.onPressIn; if (onPressIn != null) { onPressIn.call(props4); } } else if (a0 === c3252_8.MOVED_OUTSIDE) { const props3 = this.props; const onPressOut2 = props3.onPressOut; if (onPressOut2 != null) { onPressOut2.call(props3); } } else if (a0 === c3252_8.UNDETERMINED) { this.reset(); if (this.STATE === c3252_8.BEGAN) { const props2 = this.props; const onPressOut = props2.onPressOut; if (onPressOut != null) { onPressOut.call(props2); } } } const props = this.props; const onStateChange = props.onStateChange; if (onStateChange != null) { onStateChange.call(props, this.STATE, a0); } this.STATE = a0; } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.reset(); } }, { key: "onMoveIn", value: function onMoveIn() { const STATE = this.STATE; if (STATE === c3252_8.MOVED_OUTSIDE) { this.moveToState(c3252_8.BEGAN); } } }, { key: "onMoveOut", value: function onMoveOut() { clearTimeout(this.longPressTimeout); this.longPressTimeout = void 0; if (this.STATE === c3252_8.BEGAN) { this.handleMoveOutside(); } } }, { key: "render", value: function render() { let hitSlop = typeof this.props.hitSlop === "number" ? { top: this.props.hitSlop, left: this.props.hitSlop, bottom: this.props.hitSlop, right: this.props.hitSlop } : this.props.hitSlop; if (hitSlop == null) { hitSlop = void 0; } const props = { accessible: this.props.accessible !== false, accessibilityLabel: this.props.accessibilityLabel, accessibilityHint: this.props.accessibilityHint, accessibilityRole: this.props.accessibilityRole, accessibilityState: this.props.accessibilityState, accessibilityActions: this.props.accessibilityActions, onAccessibilityAction: this.props.onAccessibilityAction, nativeID: this.props.nativeID, onLayout: this.props.onLayout }; const onHandlerStateChange = this.props.disabled ? void 0 : this.onHandlerStateChange; let touchSoundDisabled = this.props.touchSoundDisabled; if (touchSoundDisabled == null) { touchSoundDisabled = false; } return {this.props.children} ; } }]); r61.defaultProps = { delayLongPress: 600, extraButtonProps: { rippleColor: "transparent", exclusive: true } }; export default r61; export { c3252_8 as TOUCHABLE_STATE };