{"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      target = event.target;\n  var role = target.getAttribute('role');\n  var isSpacebar = key === ' ' || key === 'Spacebar';\n  return key === 'Enter' || isSpacebar && role === 'button';\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      var onPress = _this._config.onPress;\n      var target = event.target;\n\n      if (_this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {\n        end(event);\n        document.removeEventListener('keyup', keyupHandler);\n        var role = target.getAttribute('role');\n        var elementType = target.tagName.toLowerCase();\n        var isNativeInteractiveElement = role === 'link' || elementType === 'a' || elementType === 'button' || elementType === 'input' || elementType === 'select' || elementType === 'textarea';\n\n        if (onPress != null && !isNativeInteractiveElement) {\n          onPress(event);\n        }\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        var disabled = _this._config.disabled;\n        var key = event.key,\n            target = event.target;\n\n        if (!disabled && isValidKeyPress(event)) {\n          if (_this._touchState === NOT_RESPONDER) {\n            start(event, false);\n            document.addEventListener('keyup', keyupHandler);\n          }\n\n          var role = target.getAttribute('role');\n          var isSpacebarKey = key === ' ' || key === 'Spacebar';\n\n          var _isButtonRole = role === 'button' || role === 'menuitem';\n\n          if (isSpacebarKey && _isButtonRole) {\n            event.preventDefault();\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","role","isSpacebar","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","onPress","document","removeEventListener","elementType","tagName","toLowerCase","isNativeInteractiveElement","onStartShouldSetResponder","disabled","currentTarget","stopPropagation","onKeyDown","addEventListener","isSpacebarKey","_isButtonRole","preventDefault","onResponderGrant","onResponderMove","onPressMove","touch","getTouchFromResponderEvent","_touchActivatePosition","deltaX","pageX","deltaY","pageY","Math","hypot","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","_this$_config","cancelable","onLongPress","onClick","_this$_config2","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      target = event.target;\n  var role = target.getAttribute('role');\n  var isSpacebar = key === ' ' || key === 'Spacebar';\n  return key === 'Enter' || isSpacebar && role === 'button';\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      var onPress = _this._config.onPress;\n      var target = event.target;\n\n      if (_this._touchState !== NOT_RESPONDER && isValidKeyPress(event)) {\n        end(event);\n        document.removeEventListener('keyup', keyupHandler);\n        var role = target.getAttribute('role');\n        var elementType = target.tagName.toLowerCase();\n        var isNativeInteractiveElement = role === 'link' || elementType === 'a' || elementType === 'button' || elementType === 'input' || elementType === 'select' || elementType === 'textarea';\n\n        if (onPress != null && !isNativeInteractiveElement) {\n          onPress(event);\n        }\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        var disabled = _this._config.disabled;\n        var key = event.key,\n            target = event.target;\n\n        if (!disabled && 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          var role = target.getAttribute('role');\n          var isSpacebarKey = key === ' ' || key === 'Spacebar';\n\n          var _isButtonRole = role === 'button' || role === 'menuitem';\n\n          if (isSpacebarKey && _isButtonRole) {\n            // Prevent spacebar scrolling the window\n            event.preventDefault();\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"}