{"ast":null,"code":"'use strict';\n\nvar DELAY = 'DELAY';\nvar ERROR = 'ERROR';\nvar LONG_PRESS_DETECTED = 'LONG_PRESS_DETECTED';\nvar NOT_RESPONDER = 'NOT_RESPONDER';\nvar RESPONDER_ACTIVE_LONG_PRESS_START = 'RESPONDER_ACTIVE_LONG_PRESS_START';\nvar RESPONDER_ACTIVE_PRESS_START = 'RESPONDER_ACTIVE_PRESS_START';\nvar RESPONDER_INACTIVE_PRESS_START = 'RESPONDER_INACTIVE_PRESS_START';\nvar RESPONDER_GRANT = 'RESPONDER_GRANT';\nvar RESPONDER_RELEASE = 'RESPONDER_RELEASE';\nvar RESPONDER_TERMINATED = 'RESPONDER_TERMINATED';\nvar Transitions = Object.freeze({\n  NOT_RESPONDER: {\n    DELAY: ERROR,\n    RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,\n    RESPONDER_RELEASE: ERROR,\n    RESPONDER_TERMINATED: ERROR,\n    LONG_PRESS_DETECTED: ERROR\n  },\n  RESPONDER_INACTIVE_PRESS_START: {\n    DELAY: RESPONDER_ACTIVE_PRESS_START,\n    RESPONDER_GRANT: ERROR,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: ERROR\n  },\n  RESPONDER_ACTIVE_PRESS_START: {\n    DELAY: ERROR,\n    RESPONDER_GRANT: ERROR,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_START: {\n    DELAY: ERROR,\n    RESPONDER_GRANT: ERROR,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START\n  },\n  ERROR: {\n    DELAY: NOT_RESPONDER,\n    RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: NOT_RESPONDER\n  }\n});\n\nvar isActiveSignal = function isActiveSignal(signal) {\n  return signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;\n};\n\nvar isButtonRole = function isButtonRole(element) {\n  return element.getAttribute('role') === 'button';\n};\n\nvar isPressStartSignal = function isPressStartSignal(signal) {\n  return signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;\n};\n\nvar isTerminalSignal = function isTerminalSignal(signal) {\n  return signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;\n};\n\nvar isValidKeyPress = function isValidKeyPress(event) {\n  var key = event.key;\n  var target = event.currentTarget;\n  var role = target.getAttribute('role');\n  var isSpacebar = key === ' ' || key === 'Spacebar';\n  return !event.repeat && (key === 'Enter' || isSpacebar && (role === 'button' || role === 'menuitem'));\n};\n\nvar DEFAULT_LONG_PRESS_DELAY_MS = 450;\nvar DEFAULT_PRESS_DELAY_MS = 50;\n\nvar PressResponder = function () {\n  function PressResponder(config) {\n    this._eventHandlers = null;\n    this._isPointerTouch = false;\n    this._longPressDelayTimeout = null;\n    this._longPressDispatched = false;\n    this._pressDelayTimeout = null;\n    this._pressOutDelayTimeout = null;\n    this._touchState = NOT_RESPONDER;\n    this.configure(config);\n  }\n\n  var _proto = PressResponder.prototype;\n\n  _proto.configure = function configure(config) {\n    this._config = config;\n  };\n\n  _proto.reset = function reset() {\n    this._cancelLongPressDelayTimeout();\n\n    this._cancelPressDelayTimeout();\n\n    this._cancelPressOutDelayTimeout();\n  };\n\n  _proto.getEventHandlers = function getEventHandlers() {\n    if (this._eventHandlers == null) {\n      this._eventHandlers = this._createEventHandlers();\n    }\n\n    return this._eventHandlers;\n  };\n\n  _proto._createEventHandlers = function _createEventHandlers() {\n    var _this = this;\n\n    var start = function start(event, shouldDelay) {\n      event.persist();\n\n      _this._cancelPressOutDelayTimeout();\n\n      _this._longPressDispatched = false;\n      _this._selectionTerminated = false;\n      _this._touchState = NOT_RESPONDER;\n      _this._isPointerTouch = event.nativeEvent.type === 'touchstart';\n\n      _this._receiveSignal(RESPONDER_GRANT, event);\n\n      var delayPressStart = normalizeDelay(_this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);\n\n      if (shouldDelay !== false && delayPressStart > 0) {\n        _this._pressDelayTimeout = setTimeout(function () {\n          _this._receiveSignal(DELAY, event);\n        }, delayPressStart);\n      } else {\n        _this._receiveSignal(DELAY, event);\n      }\n\n      var delayLongPress = normalizeDelay(_this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);\n      _this._longPressDelayTimeout = setTimeout(function () {\n        _this._handleLongPress(event);\n      }, delayLongPress + delayPressStart);\n    };\n\n    var end = function end(event) {\n      _this._receiveSignal(RESPONDER_RELEASE, event);\n    };\n\n    var keyupHandler = function keyupHandler(event) {\n      if (_this._touchState !== NOT_RESPONDER) {\n        end(event);\n        document.removeEventListener('keyup', keyupHandler);\n      }\n    };\n\n    return {\n      onStartShouldSetResponder: function onStartShouldSetResponder(event) {\n        var disabled = _this._config.disabled;\n\n        if (disabled && isButtonRole(event.currentTarget)) {\n          event.stopPropagation();\n        }\n\n        if (disabled == null) {\n          return true;\n        }\n\n        return !disabled;\n      },\n      onKeyDown: function onKeyDown(event) {\n        if (isValidKeyPress(event)) {\n          if (_this._touchState === NOT_RESPONDER) {\n            start(event, false);\n            document.addEventListener('keyup', keyupHandler);\n          }\n\n          event.stopPropagation();\n        }\n      },\n      onResponderGrant: function onResponderGrant(event) {\n        return start(event);\n      },\n      onResponderMove: function onResponderMove(event) {\n        if (_this._config.onPressMove != null) {\n          _this._config.onPressMove(event);\n        }\n\n        var touch = getTouchFromResponderEvent(event);\n\n        if (_this._touchActivatePosition != null) {\n          var deltaX = _this._touchActivatePosition.pageX - touch.pageX;\n          var deltaY = _this._touchActivatePosition.pageY - touch.pageY;\n\n          if (Math.hypot(deltaX, deltaY) > 10) {\n            _this._cancelLongPressDelayTimeout();\n          }\n        }\n      },\n      onResponderRelease: function onResponderRelease(event) {\n        return end(event);\n      },\n      onResponderTerminate: function onResponderTerminate(event) {\n        if (event.nativeEvent.type === 'selectionchange') {\n          _this._selectionTerminated = true;\n        }\n\n        _this._receiveSignal(RESPONDER_TERMINATED, event);\n      },\n      onResponderTerminationRequest: function onResponderTerminationRequest(event) {\n        var _this$_config = _this._config,\n            cancelable = _this$_config.cancelable,\n            disabled = _this$_config.disabled,\n            onLongPress = _this$_config.onLongPress;\n\n        if (!disabled && onLongPress != null && _this._isPointerTouch && event.nativeEvent.type === 'contextmenu') {\n          return false;\n        }\n\n        if (cancelable == null) {\n          return true;\n        }\n\n        return cancelable;\n      },\n      onClick: function onClick(event) {\n        var _this$_config2 = _this._config,\n            disabled = _this$_config2.disabled,\n            onPress = _this$_config2.onPress;\n\n        if (!disabled) {\n          event.stopPropagation();\n\n          if (_this._longPressDispatched || _this._selectionTerminated) {\n            event.preventDefault();\n          } else if (onPress != null && event.altKey === false) {\n            onPress(event);\n          }\n        } else {\n          if (isButtonRole(event.currentTarget)) {\n            event.stopPropagation();\n          }\n        }\n      },\n      onContextMenu: function onContextMenu(event) {\n        var _this$_config3 = _this._config,\n            disabled = _this$_config3.disabled,\n            onLongPress = _this$_config3.onLongPress;\n\n        if (!disabled) {\n          if (onLongPress != null && _this._isPointerTouch && !event.defaultPrevented) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        } else {\n          if (isButtonRole(event.currentTarget)) {\n            event.stopPropagation();\n          }\n        }\n      }\n    };\n  };\n\n  _proto._receiveSignal = function _receiveSignal(signal, event) {\n    var prevState = this._touchState;\n    var nextState = null;\n\n    if (Transitions[prevState] != null) {\n      nextState = Transitions[prevState][signal];\n    }\n\n    if (this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) {\n      return;\n    }\n\n    if (nextState == null || nextState === ERROR) {\n      console.error(\"PressResponder: Invalid signal \" + signal + \" for state \" + prevState + \" on responder\");\n    } else if (prevState !== nextState) {\n      this._performTransitionSideEffects(prevState, nextState, signal, event);\n\n      this._touchState = nextState;\n    }\n  };\n\n  _proto._performTransitionSideEffects = function _performTransitionSideEffects(prevState, nextState, signal, event) {\n    if (isTerminalSignal(signal)) {\n      this._isPointerTouch = false;\n      this._touchActivatePosition = null;\n\n      this._cancelLongPressDelayTimeout();\n    }\n\n    if (isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {\n      var onLongPress = this._config.onLongPress;\n\n      if (onLongPress != null && event.nativeEvent.key == null) {\n        onLongPress(event);\n        this._longPressDispatched = true;\n      }\n    }\n\n    var isPrevActive = isActiveSignal(prevState);\n    var isNextActive = isActiveSignal(nextState);\n\n    if (!isPrevActive && isNextActive) {\n      this._activate(event);\n    } else if (isPrevActive && !isNextActive) {\n      this._deactivate(event);\n    }\n\n    if (isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {\n      var _this$_config4 = this._config,\n          _onLongPress = _this$_config4.onLongPress,\n          onPress = _this$_config4.onPress;\n\n      if (onPress != null) {\n        var isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;\n\n        if (!isPressCanceledByLongPress) {\n          if (!isNextActive && !isPrevActive) {\n            this._activate(event);\n\n            this._deactivate(event);\n          }\n        }\n      }\n    }\n\n    this._cancelPressDelayTimeout();\n  };\n\n  _proto._activate = function _activate(event) {\n    var _this$_config5 = this._config,\n        onPressChange = _this$_config5.onPressChange,\n        onPressStart = _this$_config5.onPressStart;\n    var touch = getTouchFromResponderEvent(event);\n    this._touchActivatePosition = {\n      pageX: touch.pageX,\n      pageY: touch.pageY\n    };\n\n    if (onPressStart != null) {\n      onPressStart(event);\n    }\n\n    if (onPressChange != null) {\n      onPressChange(true);\n    }\n  };\n\n  _proto._deactivate = function _deactivate(event) {\n    var _this$_config6 = this._config,\n        onPressChange = _this$_config6.onPressChange,\n        onPressEnd = _this$_config6.onPressEnd;\n\n    function end() {\n      if (onPressEnd != null) {\n        onPressEnd(event);\n      }\n\n      if (onPressChange != null) {\n        onPressChange(false);\n      }\n    }\n\n    var delayPressEnd = normalizeDelay(this._config.delayPressEnd);\n\n    if (delayPressEnd > 0) {\n      this._pressOutDelayTimeout = setTimeout(function () {\n        end();\n      }, delayPressEnd);\n    } else {\n      end();\n    }\n  };\n\n  _proto._handleLongPress = function _handleLongPress(event) {\n    if (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) {\n      this._receiveSignal(LONG_PRESS_DETECTED, event);\n    }\n  };\n\n  _proto._cancelLongPressDelayTimeout = function _cancelLongPressDelayTimeout() {\n    if (this._longPressDelayTimeout != null) {\n      clearTimeout(this._longPressDelayTimeout);\n      this._longPressDelayTimeout = null;\n    }\n  };\n\n  _proto._cancelPressDelayTimeout = function _cancelPressDelayTimeout() {\n    if (this._pressDelayTimeout != null) {\n      clearTimeout(this._pressDelayTimeout);\n      this._pressDelayTimeout = null;\n    }\n  };\n\n  _proto._cancelPressOutDelayTimeout = function _cancelPressOutDelayTimeout() {\n    if (this._pressOutDelayTimeout != null) {\n      clearTimeout(this._pressOutDelayTimeout);\n      this._pressOutDelayTimeout = null;\n    }\n  };\n\n  return PressResponder;\n}();\n\nexport { PressResponder as default };\n\nfunction normalizeDelay(delay, min, fallback) {\n  if (min === void 0) {\n    min = 0;\n  }\n\n  if (fallback === void 0) {\n    fallback = 0;\n  }\n\n  return Math.max(min, delay !== null && delay !== void 0 ? delay : fallback);\n}\n\nfunction getTouchFromResponderEvent(event) {\n  var _event$nativeEvent = event.nativeEvent,\n      changedTouches = _event$nativeEvent.changedTouches,\n      touches = _event$nativeEvent.touches;\n\n  if (touches != null && touches.length > 0) {\n    return touches[0];\n  }\n\n  if (changedTouches != null && changedTouches.length > 0) {\n    return changedTouches[0];\n  }\n\n  return event.nativeEvent;\n}","map":{"version":3,"sources":["/Users/rohitsingh/Documents/projects/new-nativebase-setup/NativeBase/example/node_modules/react-native-web/dist/modules/usePressEvents/PressResponder.js"],"names":["DELAY","ERROR","LONG_PRESS_DETECTED","NOT_RESPONDER","RESPONDER_ACTIVE_LONG_PRESS_START","RESPONDER_ACTIVE_PRESS_START","RESPONDER_INACTIVE_PRESS_START","RESPONDER_GRANT","RESPONDER_RELEASE","RESPONDER_TERMINATED","Transitions","Object","freeze","isActiveSignal","signal","isButtonRole","element","getAttribute","isPressStartSignal","isTerminalSignal","isValidKeyPress","event","key","target","currentTarget","role","isSpacebar","repeat","DEFAULT_LONG_PRESS_DELAY_MS","DEFAULT_PRESS_DELAY_MS","PressResponder","config","_eventHandlers","_isPointerTouch","_longPressDelayTimeout","_longPressDispatched","_pressDelayTimeout","_pressOutDelayTimeout","_touchState","configure","_proto","prototype","_config","reset","_cancelLongPressDelayTimeout","_cancelPressDelayTimeout","_cancelPressOutDelayTimeout","getEventHandlers","_createEventHandlers","_this","start","shouldDelay","persist","_selectionTerminated","nativeEvent","type","_receiveSignal","delayPressStart","normalizeDelay","setTimeout","delayLongPress","_handleLongPress","end","keyupHandler","document","removeEventListener","onStartShouldSetResponder","disabled","stopPropagation","onKeyDown","addEventListener","onResponderGrant","onResponderMove","onPressMove","touch","getTouchFromResponderEvent","_touchActivatePosition","deltaX","pageX","deltaY","pageY","Math","hypot","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","_this$_config","cancelable","onLongPress","onClick","_this$_config2","onPress","preventDefault","altKey","onContextMenu","_this$_config3","defaultPrevented","prevState","nextState","console","error","_performTransitionSideEffects","isPrevActive","isNextActive","_activate","_deactivate","_this$_config4","_onLongPress","isPressCanceledByLongPress","_this$_config5","onPressChange","onPressStart","_this$_config6","onPressEnd","delayPressEnd","clearTimeout","default","delay","min","fallback","max","_event$nativeEvent","changedTouches","touches","length"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @format\n */\n'use strict';\n\nvar DELAY = 'DELAY';\nvar ERROR = 'ERROR';\nvar LONG_PRESS_DETECTED = 'LONG_PRESS_DETECTED';\nvar NOT_RESPONDER = 'NOT_RESPONDER';\nvar RESPONDER_ACTIVE_LONG_PRESS_START = 'RESPONDER_ACTIVE_LONG_PRESS_START';\nvar RESPONDER_ACTIVE_PRESS_START = 'RESPONDER_ACTIVE_PRESS_START';\nvar RESPONDER_INACTIVE_PRESS_START = 'RESPONDER_INACTIVE_PRESS_START';\nvar RESPONDER_GRANT = 'RESPONDER_GRANT';\nvar RESPONDER_RELEASE = 'RESPONDER_RELEASE';\nvar RESPONDER_TERMINATED = 'RESPONDER_TERMINATED';\nvar Transitions = Object.freeze({\n  NOT_RESPONDER: {\n    DELAY: ERROR,\n    RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,\n    RESPONDER_RELEASE: ERROR,\n    RESPONDER_TERMINATED: ERROR,\n    LONG_PRESS_DETECTED: ERROR\n  },\n  RESPONDER_INACTIVE_PRESS_START: {\n    DELAY: RESPONDER_ACTIVE_PRESS_START,\n    RESPONDER_GRANT: ERROR,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: ERROR\n  },\n  RESPONDER_ACTIVE_PRESS_START: {\n    DELAY: ERROR,\n    RESPONDER_GRANT: ERROR,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_START: {\n    DELAY: ERROR,\n    RESPONDER_GRANT: ERROR,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: RESPONDER_ACTIVE_LONG_PRESS_START\n  },\n  ERROR: {\n    DELAY: NOT_RESPONDER,\n    RESPONDER_GRANT: RESPONDER_INACTIVE_PRESS_START,\n    RESPONDER_RELEASE: NOT_RESPONDER,\n    RESPONDER_TERMINATED: NOT_RESPONDER,\n    LONG_PRESS_DETECTED: NOT_RESPONDER\n  }\n});\n\nvar isActiveSignal = function isActiveSignal(signal) {\n  return signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;\n};\n\nvar isButtonRole = function isButtonRole(element) {\n  return element.getAttribute('role') === 'button';\n};\n\nvar isPressStartSignal = function isPressStartSignal(signal) {\n  return signal === RESPONDER_INACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_PRESS_START || signal === RESPONDER_ACTIVE_LONG_PRESS_START;\n};\n\nvar isTerminalSignal = function isTerminalSignal(signal) {\n  return signal === RESPONDER_TERMINATED || signal === RESPONDER_RELEASE;\n};\n\nvar isValidKeyPress = function isValidKeyPress(event) {\n  var key = event.key;\n  var target = event.currentTarget;\n  var role = target.getAttribute('role');\n  var isSpacebar = key === ' ' || key === 'Spacebar';\n  return !event.repeat && (key === 'Enter' || isSpacebar && (role === 'button' || role === 'menuitem'));\n};\n\nvar DEFAULT_LONG_PRESS_DELAY_MS = 450; // 500 - 50\n\nvar DEFAULT_PRESS_DELAY_MS = 50;\n/**\n * =========================== PressResponder Tutorial ===========================\n *\n * The `PressResponder` class helps you create press interactions by analyzing the\n * geometry of elements and observing when another responder (e.g. ScrollView)\n * has stolen the touch lock. It offers hooks for your component to provide\n * interaction feedback to the user:\n *\n * - When a press has activated (e.g. highlight an element)\n * - When a press has deactivated (e.g. un-highlight an element)\n * - When a press sould trigger an action, meaning it activated and deactivated\n *   while within the geometry of the element without the lock being stolen.\n *\n * A high quality interaction isn't as simple as you might think. There should\n * be a slight delay before activation. Moving your finger beyond an element's\n * bounds should trigger deactivation, but moving the same finger back within an\n * element's bounds should trigger reactivation.\n *\n * In order to use `PressResponder`, do the following:\n *\n *     const pressResponder = new PressResponder(config);\n *\n * 2. Choose the rendered component who should collect the press events. On that\n *    element, spread `pressability.getEventHandlers()` into its props.\n *\n *    return (\n *      <View {...this.state.pressResponder.getEventHandlers()} />\n *    );\n *\n * 3. Reset `PressResponder` when your component unmounts.\n *\n *    componentWillUnmount() {\n *      this.state.pressResponder.reset();\n *    }\n *\n * ==================== Implementation Details ====================\n *\n * `PressResponder` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * # Geometry\n *\n *  ┌────────────────────────┐\n *  │  ┌──────────────────┐  │ - Presses start anywhere within `HitRect`.\n *  │  │  ┌────────────┐  │  │\n *  │  │  │ VisualRect │  │  │\n *  │  │  └────────────┘  │  │ - When pressed down for sufficient amount of time\n *  │  │    HitRect       │  │   before letting up, `VisualRect` activates.\n *  │  └──────────────────┘  │\n *  │       Out Region   o   │\n *  └────────────────────│───┘\n *                       └────── When the press is released outside the `HitRect`,\n *                               the responder is NOT eligible for a \"press\".\n *\n * # State Machine\n *\n * ┌───────────────┐ ◀──── RESPONDER_RELEASE\n * │ NOT_RESPONDER │\n * └───┬───────────┘ ◀──── RESPONDER_TERMINATED\n *     │\n *     │ RESPONDER_GRANT (HitRect)\n *     │\n *     ▼\n * ┌─────────────────────┐          ┌───────────────────┐              ┌───────────────────┐\n * │ RESPONDER_INACTIVE_ │  DELAY   │ RESPONDER_ACTIVE_ │  T + DELAY   │ RESPONDER_ACTIVE_ │\n * │ PRESS_START         ├────────▶ │ PRESS_START       ├────────────▶ │ LONG_PRESS_START  │\n * └─────────────────────┘          └───────────────────┘              └───────────────────┘\n *\n * T + DELAY => LONG_PRESS_DELAY + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the invocation of `onLongPress`. Only when the browser produces a\n * `click` event is `onPress` invoked.\n */\n\nvar PressResponder = /*#__PURE__*/function () {\n  function PressResponder(config) {\n    this._eventHandlers = null;\n    this._isPointerTouch = false;\n    this._longPressDelayTimeout = null;\n    this._longPressDispatched = false;\n    this._pressDelayTimeout = null;\n    this._pressOutDelayTimeout = null;\n    this._touchState = NOT_RESPONDER;\n    this.configure(config);\n  }\n\n  var _proto = PressResponder.prototype;\n\n  _proto.configure = function configure(config) {\n    this._config = config;\n  }\n  /**\n   * Resets any pending timers. This should be called on unmount.\n   */\n  ;\n\n  _proto.reset = function reset() {\n    this._cancelLongPressDelayTimeout();\n\n    this._cancelPressDelayTimeout();\n\n    this._cancelPressOutDelayTimeout();\n  }\n  /**\n   * Returns a set of props to spread into the interactive element.\n   */\n  ;\n\n  _proto.getEventHandlers = function getEventHandlers() {\n    if (this._eventHandlers == null) {\n      this._eventHandlers = this._createEventHandlers();\n    }\n\n    return this._eventHandlers;\n  };\n\n  _proto._createEventHandlers = function _createEventHandlers() {\n    var _this = this;\n\n    var start = function start(event, shouldDelay) {\n      event.persist();\n\n      _this._cancelPressOutDelayTimeout();\n\n      _this._longPressDispatched = false;\n      _this._selectionTerminated = false;\n      _this._touchState = NOT_RESPONDER;\n      _this._isPointerTouch = event.nativeEvent.type === 'touchstart';\n\n      _this._receiveSignal(RESPONDER_GRANT, event);\n\n      var delayPressStart = normalizeDelay(_this._config.delayPressStart, 0, DEFAULT_PRESS_DELAY_MS);\n\n      if (shouldDelay !== false && delayPressStart > 0) {\n        _this._pressDelayTimeout = setTimeout(function () {\n          _this._receiveSignal(DELAY, event);\n        }, delayPressStart);\n      } else {\n        _this._receiveSignal(DELAY, event);\n      }\n\n      var delayLongPress = normalizeDelay(_this._config.delayLongPress, 10, DEFAULT_LONG_PRESS_DELAY_MS);\n      _this._longPressDelayTimeout = setTimeout(function () {\n        _this._handleLongPress(event);\n      }, delayLongPress + delayPressStart);\n    };\n\n    var end = function end(event) {\n      _this._receiveSignal(RESPONDER_RELEASE, event);\n    };\n\n    var keyupHandler = function keyupHandler(event) {\n      if (_this._touchState !== NOT_RESPONDER) {\n        end(event);\n        document.removeEventListener('keyup', keyupHandler);\n      }\n    };\n\n    return {\n      onStartShouldSetResponder: function onStartShouldSetResponder(event) {\n        var disabled = _this._config.disabled;\n\n        if (disabled && isButtonRole(event.currentTarget)) {\n          event.stopPropagation();\n        }\n\n        if (disabled == null) {\n          return true;\n        }\n\n        return !disabled;\n      },\n      onKeyDown: function onKeyDown(event) {\n        if (isValidKeyPress(event)) {\n          if (_this._touchState === NOT_RESPONDER) {\n            start(event, false); // Listen to 'keyup' on document to account for situations where\n            // focus is moved to another element during 'keydown'.\n\n            document.addEventListener('keyup', keyupHandler);\n          }\n\n          event.stopPropagation();\n        }\n      },\n      onResponderGrant: function onResponderGrant(event) {\n        return start(event);\n      },\n      onResponderMove: function onResponderMove(event) {\n        if (_this._config.onPressMove != null) {\n          _this._config.onPressMove(event);\n        }\n\n        var touch = getTouchFromResponderEvent(event);\n\n        if (_this._touchActivatePosition != null) {\n          var deltaX = _this._touchActivatePosition.pageX - touch.pageX;\n          var deltaY = _this._touchActivatePosition.pageY - touch.pageY;\n\n          if (Math.hypot(deltaX, deltaY) > 10) {\n            _this._cancelLongPressDelayTimeout();\n          }\n        }\n      },\n      onResponderRelease: function onResponderRelease(event) {\n        return end(event);\n      },\n      onResponderTerminate: function onResponderTerminate(event) {\n        if (event.nativeEvent.type === 'selectionchange') {\n          _this._selectionTerminated = true;\n        }\n\n        _this._receiveSignal(RESPONDER_TERMINATED, event);\n      },\n      onResponderTerminationRequest: function onResponderTerminationRequest(event) {\n        var _this$_config = _this._config,\n            cancelable = _this$_config.cancelable,\n            disabled = _this$_config.disabled,\n            onLongPress = _this$_config.onLongPress; // If `onLongPress` is provided, don't terminate on `contextmenu` as default\n        // behavior will be prevented for non-mouse pointers.\n\n        if (!disabled && onLongPress != null && _this._isPointerTouch && event.nativeEvent.type === 'contextmenu') {\n          return false;\n        }\n\n        if (cancelable == null) {\n          return true;\n        }\n\n        return cancelable;\n      },\n      // NOTE: this diverges from react-native in 3 significant ways:\n      // * The `onPress` callback is not connected to the responder system (the native\n      //  `click` event must be used but is dispatched in many scenarios where no pointers\n      //   are on the screen.) Therefore, it's possible for `onPress` to be called without\n      //   `onPress{Start,End}` being called first.\n      // * The `onPress` callback is only be called on the first ancestor of the native\n      //   `click` target that is using the PressResponder.\n      // * The event's `nativeEvent` is a `MouseEvent` not a `TouchEvent`.\n      onClick: function onClick(event) {\n        var _this$_config2 = _this._config,\n            disabled = _this$_config2.disabled,\n            onPress = _this$_config2.onPress;\n\n        if (!disabled) {\n          // If long press dispatched, cancel default click behavior.\n          // If the responder terminated because text was selected during the gesture,\n          // cancel the default click behavior.\n          event.stopPropagation();\n\n          if (_this._longPressDispatched || _this._selectionTerminated) {\n            event.preventDefault();\n          } else if (onPress != null && event.altKey === false) {\n            onPress(event);\n          }\n        } else {\n          if (isButtonRole(event.currentTarget)) {\n            event.stopPropagation();\n          }\n        }\n      },\n      // If `onLongPress` is provided and a touch pointer is being used, prevent the\n      // default context menu from opening.\n      onContextMenu: function onContextMenu(event) {\n        var _this$_config3 = _this._config,\n            disabled = _this$_config3.disabled,\n            onLongPress = _this$_config3.onLongPress;\n\n        if (!disabled) {\n          if (onLongPress != null && _this._isPointerTouch && !event.defaultPrevented) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        } else {\n          if (isButtonRole(event.currentTarget)) {\n            event.stopPropagation();\n          }\n        }\n      }\n    };\n  }\n  /**\n   * Receives a state machine signal, performs side effects of the transition\n   * and stores the new state. Validates the transition as well.\n   */\n  ;\n\n  _proto._receiveSignal = function _receiveSignal(signal, event) {\n    var prevState = this._touchState;\n    var nextState = null;\n\n    if (Transitions[prevState] != null) {\n      nextState = Transitions[prevState][signal];\n    }\n\n    if (this._touchState === NOT_RESPONDER && signal === RESPONDER_RELEASE) {\n      return;\n    }\n\n    if (nextState == null || nextState === ERROR) {\n      console.error(\"PressResponder: Invalid signal \" + signal + \" for state \" + prevState + \" on responder\");\n    } else if (prevState !== nextState) {\n      this._performTransitionSideEffects(prevState, nextState, signal, event);\n\n      this._touchState = nextState;\n    }\n  }\n  /**\n   * Performs a transition between touchable states and identify any activations\n   * or deactivations (and callback invocations).\n   */\n  ;\n\n  _proto._performTransitionSideEffects = function _performTransitionSideEffects(prevState, nextState, signal, event) {\n    if (isTerminalSignal(signal)) {\n      this._isPointerTouch = false;\n      this._touchActivatePosition = null;\n\n      this._cancelLongPressDelayTimeout();\n    }\n\n    if (isPressStartSignal(prevState) && signal === LONG_PRESS_DETECTED) {\n      var onLongPress = this._config.onLongPress; // Long press is not supported for keyboards because 'click' can be dispatched\n      // immediately (and multiple times) after 'keydown'.\n\n      if (onLongPress != null && event.nativeEvent.key == null) {\n        onLongPress(event);\n        this._longPressDispatched = true;\n      }\n    }\n\n    var isPrevActive = isActiveSignal(prevState);\n    var isNextActive = isActiveSignal(nextState);\n\n    if (!isPrevActive && isNextActive) {\n      this._activate(event);\n    } else if (isPrevActive && !isNextActive) {\n      this._deactivate(event);\n    }\n\n    if (isPressStartSignal(prevState) && signal === RESPONDER_RELEASE) {\n      var _this$_config4 = this._config,\n          _onLongPress = _this$_config4.onLongPress,\n          onPress = _this$_config4.onPress;\n\n      if (onPress != null) {\n        var isPressCanceledByLongPress = _onLongPress != null && prevState === RESPONDER_ACTIVE_LONG_PRESS_START;\n\n        if (!isPressCanceledByLongPress) {\n          // If we never activated (due to delays), activate and deactivate now.\n          if (!isNextActive && !isPrevActive) {\n            this._activate(event);\n\n            this._deactivate(event);\n          }\n        }\n      }\n    }\n\n    this._cancelPressDelayTimeout();\n  };\n\n  _proto._activate = function _activate(event) {\n    var _this$_config5 = this._config,\n        onPressChange = _this$_config5.onPressChange,\n        onPressStart = _this$_config5.onPressStart;\n    var touch = getTouchFromResponderEvent(event);\n    this._touchActivatePosition = {\n      pageX: touch.pageX,\n      pageY: touch.pageY\n    };\n\n    if (onPressStart != null) {\n      onPressStart(event);\n    }\n\n    if (onPressChange != null) {\n      onPressChange(true);\n    }\n  };\n\n  _proto._deactivate = function _deactivate(event) {\n    var _this$_config6 = this._config,\n        onPressChange = _this$_config6.onPressChange,\n        onPressEnd = _this$_config6.onPressEnd;\n\n    function end() {\n      if (onPressEnd != null) {\n        onPressEnd(event);\n      }\n\n      if (onPressChange != null) {\n        onPressChange(false);\n      }\n    }\n\n    var delayPressEnd = normalizeDelay(this._config.delayPressEnd);\n\n    if (delayPressEnd > 0) {\n      this._pressOutDelayTimeout = setTimeout(function () {\n        end();\n      }, delayPressEnd);\n    } else {\n      end();\n    }\n  };\n\n  _proto._handleLongPress = function _handleLongPress(event) {\n    if (this._touchState === RESPONDER_ACTIVE_PRESS_START || this._touchState === RESPONDER_ACTIVE_LONG_PRESS_START) {\n      this._receiveSignal(LONG_PRESS_DETECTED, event);\n    }\n  };\n\n  _proto._cancelLongPressDelayTimeout = function _cancelLongPressDelayTimeout() {\n    if (this._longPressDelayTimeout != null) {\n      clearTimeout(this._longPressDelayTimeout);\n      this._longPressDelayTimeout = null;\n    }\n  };\n\n  _proto._cancelPressDelayTimeout = function _cancelPressDelayTimeout() {\n    if (this._pressDelayTimeout != null) {\n      clearTimeout(this._pressDelayTimeout);\n      this._pressDelayTimeout = null;\n    }\n  };\n\n  _proto._cancelPressOutDelayTimeout = function _cancelPressOutDelayTimeout() {\n    if (this._pressOutDelayTimeout != null) {\n      clearTimeout(this._pressOutDelayTimeout);\n      this._pressOutDelayTimeout = null;\n    }\n  };\n\n  return PressResponder;\n}();\n\nexport { PressResponder as default };\n\nfunction normalizeDelay(delay, min, fallback) {\n  if (min === void 0) {\n    min = 0;\n  }\n\n  if (fallback === void 0) {\n    fallback = 0;\n  }\n\n  return Math.max(min, delay !== null && delay !== void 0 ? delay : fallback);\n}\n\nfunction getTouchFromResponderEvent(event) {\n  var _event$nativeEvent = event.nativeEvent,\n      changedTouches = _event$nativeEvent.changedTouches,\n      touches = _event$nativeEvent.touches;\n\n  if (touches != null && touches.length > 0) {\n    return touches[0];\n  }\n\n  if (changedTouches != null && changedTouches.length > 0) {\n    return changedTouches[0];\n  }\n\n  return event.nativeEvent;\n}"]},"metadata":{},"sourceType":"module"}