{"ast":null,"code":"'use strict';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    if (enumerableOnly) symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    });\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nimport AccessibilityUtil from \"../../modules/AccessibilityUtil\";\nimport BoundingDimensions from \"./BoundingDimensions\";\nimport findNodeHandle from \"../findNodeHandle\";\nimport normalizeColor from 'normalize-css-color';\nimport Position from \"./Position\";\nimport React from 'react';\nimport UIManager from \"../UIManager\";\nimport View from \"../View\";\n\nvar extractSingleTouch = function extractSingleTouch(nativeEvent) {\n  var touches = nativeEvent.touches;\n  var changedTouches = nativeEvent.changedTouches;\n  var hasTouches = touches && touches.length > 0;\n  var hasChangedTouches = changedTouches && changedTouches.length > 0;\n  return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;\n};\n\nvar States = {\n  NOT_RESPONDER: 'NOT_RESPONDER',\n  RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN',\n  RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT',\n  RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN',\n  RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT',\n  RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n  ERROR: 'ERROR'\n};\nvar baseStatesConditions = {\n  NOT_RESPONDER: false,\n  RESPONDER_INACTIVE_PRESS_IN: false,\n  RESPONDER_INACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_PRESS_IN: false,\n  RESPONDER_ACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n  ERROR: false\n};\n\nvar IsActive = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n  RESPONDER_ACTIVE_PRESS_OUT: true,\n  RESPONDER_ACTIVE_PRESS_IN: true\n});\n\nvar IsPressingIn = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n  RESPONDER_INACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true\n});\n\nvar IsLongPressingIn = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true\n});\n\nvar Signals = {\n  DELAY: 'DELAY',\n  RESPONDER_GRANT: 'RESPONDER_GRANT',\n  RESPONDER_RELEASE: 'RESPONDER_RELEASE',\n  RESPONDER_TERMINATED: 'RESPONDER_TERMINATED',\n  ENTER_PRESS_RECT: 'ENTER_PRESS_RECT',\n  LEAVE_PRESS_RECT: 'LEAVE_PRESS_RECT',\n  LONG_PRESS_DETECTED: 'LONG_PRESS_DETECTED'\n};\nvar Transitions = {\n  NOT_RESPONDER: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.ERROR,\n    RESPONDER_TERMINATED: States.ERROR,\n    ENTER_PRESS_RECT: States.ERROR,\n    LEAVE_PRESS_RECT: States.ERROR,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_INACTIVE_PRESS_IN: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_INACTIVE_PRESS_OUT: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_ACTIVE_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN\n  },\n  RESPONDER_ACTIVE_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  error: {\n    DELAY: States.NOT_RESPONDER,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.NOT_RESPONDER,\n    LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n    LONG_PRESS_DETECTED: States.NOT_RESPONDER\n  }\n};\nvar HIGHLIGHT_DELAY_MS = 130;\nvar PRESS_EXPAND_PX = 20;\nvar LONG_PRESS_THRESHOLD = 500;\nvar LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\nvar LONG_PRESS_ALLOWED_MOVEMENT = 10;\nvar TouchableMixin = {\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    this._touchableNode = findNodeHandle(this);\n\n    if (this._touchableNode && this._touchableNode.addEventListener) {\n      this._touchableBlurListener = function (e) {\n        if (_this._isTouchableKeyboardActive) {\n          if (_this.state.touchable.touchState && _this.state.touchable.touchState !== States.NOT_RESPONDER) {\n            _this.touchableHandleResponderTerminate({\n              nativeEvent: e\n            });\n          }\n\n          _this._isTouchableKeyboardActive = false;\n        }\n      };\n\n      this._touchableNode.addEventListener('blur', this._touchableBlurListener);\n    }\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    if (this._touchableNode && this._touchableNode.addEventListener) {\n      this._touchableNode.removeEventListener('blur', this._touchableBlurListener);\n    }\n\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n    this.pressInLocation = null;\n    this.state.touchable.responderID = null;\n    this._touchableNode = null;\n  },\n  touchableGetInitialState: function touchableGetInitialState() {\n    return {\n      touchable: {\n        touchState: undefined,\n        responderID: null\n      }\n    };\n  },\n  touchableHandleResponderTerminationRequest: function touchableHandleResponderTerminationRequest() {\n    return !this.props.rejectResponderTermination;\n  },\n  touchableHandleStartShouldSetResponder: function touchableHandleStartShouldSetResponder() {\n    return !this.props.disabled;\n  },\n  touchableLongPressCancelsPress: function touchableLongPressCancelsPress() {\n    return true;\n  },\n  touchableHandleResponderGrant: function touchableHandleResponderGrant(e) {\n    var dispatchID = e.currentTarget;\n    e.persist();\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n    this.pressOutDelayTimeout = null;\n    this.state.touchable.touchState = States.NOT_RESPONDER;\n    this.state.touchable.responderID = dispatchID;\n\n    this._receiveSignal(Signals.RESPONDER_GRANT, e);\n\n    var delayMS = this.touchableGetHighlightDelayMS !== undefined ? Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS;\n    delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n\n    if (delayMS !== 0) {\n      this.touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS);\n    } else {\n      this._handleDelay(e);\n    }\n\n    var longDelayMS = this.touchableGetLongPressDelayMS !== undefined ? Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS;\n    longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n    this.longPressDelayTimeout = setTimeout(this._handleLongDelay.bind(this, e), longDelayMS + delayMS);\n  },\n  touchableHandleResponderRelease: function touchableHandleResponderRelease(e) {\n    this.pressInLocation = null;\n\n    this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n  },\n  touchableHandleResponderTerminate: function touchableHandleResponderTerminate(e) {\n    this.pressInLocation = null;\n\n    this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n  },\n  touchableHandleResponderMove: function touchableHandleResponderMove(e) {\n    if (!this.state.touchable.positionOnActivate) {\n      return;\n    }\n\n    var positionOnActivate = this.state.touchable.positionOnActivate;\n    var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n    var pressRectOffset = this.touchableGetPressRectOffset ? this.touchableGetPressRectOffset() : {\n      left: PRESS_EXPAND_PX,\n      right: PRESS_EXPAND_PX,\n      top: PRESS_EXPAND_PX,\n      bottom: PRESS_EXPAND_PX\n    };\n    var pressExpandLeft = pressRectOffset.left;\n    var pressExpandTop = pressRectOffset.top;\n    var pressExpandRight = pressRectOffset.right;\n    var pressExpandBottom = pressRectOffset.bottom;\n    var hitSlop = this.touchableGetHitSlop ? this.touchableGetHitSlop() : null;\n\n    if (hitSlop) {\n      pressExpandLeft += hitSlop.left || 0;\n      pressExpandTop += hitSlop.top || 0;\n      pressExpandRight += hitSlop.right || 0;\n      pressExpandBottom += hitSlop.bottom || 0;\n    }\n\n    var touch = extractSingleTouch(e.nativeEvent);\n    var pageX = touch && touch.pageX;\n    var pageY = touch && touch.pageY;\n\n    if (this.pressInLocation) {\n      var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY);\n\n      if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n        this._cancelLongPressDelayTimeout();\n      }\n    }\n\n    var isTouchWithinActive = pageX > positionOnActivate.left - pressExpandLeft && pageY > positionOnActivate.top - pressExpandTop && pageX < positionOnActivate.left + dimensionsOnActivate.width + pressExpandRight && pageY < positionOnActivate.top + dimensionsOnActivate.height + pressExpandBottom;\n\n    if (isTouchWithinActive) {\n      var prevState = this.state.touchable.touchState;\n\n      this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n\n      var curState = this.state.touchable.touchState;\n\n      if (curState === States.RESPONDER_INACTIVE_PRESS_IN && prevState !== States.RESPONDER_INACTIVE_PRESS_IN) {\n        this._cancelLongPressDelayTimeout();\n      }\n    } else {\n      this._cancelLongPressDelayTimeout();\n\n      this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n    }\n  },\n  touchableHandleFocus: function touchableHandleFocus(e) {\n    this.props.onFocus && this.props.onFocus(e);\n  },\n  touchableHandleBlur: function touchableHandleBlur(e) {\n    this.props.onBlur && this.props.onBlur(e);\n  },\n  _remeasureMetricsOnActivation: function _remeasureMetricsOnActivation() {\n    var tag = this.state.touchable.responderID;\n\n    if (tag == null) {\n      return;\n    }\n\n    UIManager.measure(tag, this._handleQueryLayout);\n  },\n  _handleQueryLayout: function _handleQueryLayout(l, t, w, h, globalX, globalY) {\n    if (!l && !t && !w && !h && !globalX && !globalY) {\n      return;\n    }\n\n    this.state.touchable.positionOnActivate && Position.release(this.state.touchable.positionOnActivate);\n    this.state.touchable.dimensionsOnActivate && BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n    this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY);\n    this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n  },\n  _handleDelay: function _handleDelay(e) {\n    this.touchableDelayTimeout = null;\n\n    this._receiveSignal(Signals.DELAY, e);\n  },\n  _handleLongDelay: function _handleLongDelay(e) {\n    this.longPressDelayTimeout = null;\n    var curState = this.state.touchable.touchState;\n\n    if (curState !== States.RESPONDER_ACTIVE_PRESS_IN && curState !== States.RESPONDER_ACTIVE_LONG_PRESS_IN) {\n      console.error('Attempted to transition from state `' + curState + '` to `' + States.RESPONDER_ACTIVE_LONG_PRESS_IN + '`, which is not supported. This is ' + 'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.');\n    } else {\n      this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n    }\n  },\n  _receiveSignal: function _receiveSignal(signal, e) {\n    var responderID = this.state.touchable.responderID;\n    var curState = this.state.touchable.touchState;\n    var nextState = Transitions[curState] && Transitions[curState][signal];\n\n    if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n      return;\n    }\n\n    if (!nextState) {\n      throw new Error('Unrecognized signal `' + signal + '` or state `' + curState + '` for Touchable responder `' + responderID + '`');\n    }\n\n    if (nextState === States.ERROR) {\n      throw new Error('Touchable cannot transition from `' + curState + '` to `' + signal + '` for responder `' + responderID + '`');\n    }\n\n    if (curState !== nextState) {\n      this._performSideEffectsForTransition(curState, nextState, signal, e);\n\n      this.state.touchable.touchState = nextState;\n    }\n  },\n  _cancelLongPressDelayTimeout: function _cancelLongPressDelayTimeout() {\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.longPressDelayTimeout = null;\n  },\n  _isHighlight: function _isHighlight(state) {\n    return state === States.RESPONDER_ACTIVE_PRESS_IN || state === States.RESPONDER_ACTIVE_LONG_PRESS_IN;\n  },\n  _savePressInLocation: function _savePressInLocation(e) {\n    var touch = extractSingleTouch(e.nativeEvent);\n    var pageX = touch && touch.pageX;\n    var pageY = touch && touch.pageY;\n    var locationX = touch && touch.locationX;\n    var locationY = touch && touch.locationY;\n    this.pressInLocation = {\n      pageX: pageX,\n      pageY: pageY,\n      locationX: locationX,\n      locationY: locationY\n    };\n  },\n  _getDistanceBetweenPoints: function _getDistanceBetweenPoints(aX, aY, bX, bY) {\n    var deltaX = aX - bX;\n    var deltaY = aY - bY;\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  },\n  _performSideEffectsForTransition: function _performSideEffectsForTransition(curState, nextState, signal, e) {\n    var curIsHighlight = this._isHighlight(curState);\n\n    var newIsHighlight = this._isHighlight(nextState);\n\n    var isFinalSignal = signal === Signals.RESPONDER_TERMINATED || signal === Signals.RESPONDER_RELEASE;\n\n    if (isFinalSignal) {\n      this._cancelLongPressDelayTimeout();\n    }\n\n    var isInitialTransition = curState === States.NOT_RESPONDER && nextState === States.RESPONDER_INACTIVE_PRESS_IN;\n    var isActiveTransition = !IsActive[curState] && IsActive[nextState];\n\n    if (isInitialTransition || isActiveTransition) {\n      this._remeasureMetricsOnActivation();\n    }\n\n    if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n      this.touchableHandleLongPress && this.touchableHandleLongPress(e);\n    }\n\n    if (newIsHighlight && !curIsHighlight) {\n      this._startHighlight(e);\n    } else if (!newIsHighlight && curIsHighlight) {\n      this._endHighlight(e);\n    }\n\n    if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n      var hasLongPressHandler = !!this.props.onLongPress;\n      var pressIsLongButStillCallOnPress = IsLongPressingIn[curState] && (!hasLongPressHandler || !this.touchableLongPressCancelsPress());\n      var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n\n      if (shouldInvokePress && this.touchableHandlePress) {\n        if (!newIsHighlight && !curIsHighlight) {\n          this._startHighlight(e);\n\n          this._endHighlight(e);\n        }\n\n        this.touchableHandlePress(e);\n      }\n    }\n\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.touchableDelayTimeout = null;\n  },\n  _playTouchSound: function _playTouchSound() {\n    UIManager.playTouchSound();\n  },\n  _startHighlight: function _startHighlight(e) {\n    this._savePressInLocation(e);\n\n    this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n  },\n  _endHighlight: function _endHighlight(e) {\n    var _this2 = this;\n\n    if (this.touchableHandleActivePressOut) {\n      if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n        this.pressOutDelayTimeout = setTimeout(function () {\n          _this2.touchableHandleActivePressOut(e);\n        }, this.touchableGetPressOutDelayMS());\n      } else {\n        this.touchableHandleActivePressOut(e);\n      }\n    }\n  },\n  touchableHandleKeyEvent: function touchableHandleKeyEvent(e) {\n    var type = e.type,\n        key = e.key;\n\n    if (key === 'Enter' || key === ' ') {\n      if (type === 'keydown') {\n        if (!this._isTouchableKeyboardActive) {\n          if (!this.state.touchable.touchState || this.state.touchable.touchState === States.NOT_RESPONDER) {\n            this.touchableHandleResponderGrant(e);\n            this._isTouchableKeyboardActive = true;\n          }\n        }\n      } else if (type === 'keyup') {\n        if (this._isTouchableKeyboardActive) {\n          if (this.state.touchable.touchState && this.state.touchable.touchState !== States.NOT_RESPONDER) {\n            this.touchableHandleResponderRelease(e);\n            this._isTouchableKeyboardActive = false;\n          }\n        }\n      }\n\n      e.stopPropagation();\n\n      if (!(key === 'Enter' && AccessibilityUtil.propsToAriaRole(this.props) === 'link')) {\n        e.preventDefault();\n      }\n    }\n  },\n  withoutDefaultFocusAndBlur: {}\n};\n\nvar touchableHandleFocus = TouchableMixin.touchableHandleFocus,\n    touchableHandleBlur = TouchableMixin.touchableHandleBlur,\n    TouchableMixinWithoutDefaultFocusAndBlur = _objectWithoutPropertiesLoose(TouchableMixin, [\"touchableHandleFocus\", \"touchableHandleBlur\"]);\n\nTouchableMixin.withoutDefaultFocusAndBlur = TouchableMixinWithoutDefaultFocusAndBlur;\nvar Touchable = {\n  Mixin: TouchableMixin,\n  TOUCH_TARGET_DEBUG: false,\n  renderDebugView: function renderDebugView(_ref) {\n    var color = _ref.color,\n        hitSlop = _ref.hitSlop;\n\n    if (!Touchable.TOUCH_TARGET_DEBUG) {\n      return null;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      throw Error('Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!');\n    }\n\n    var debugHitSlopStyle = {};\n    hitSlop = hitSlop || {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0\n    };\n\n    for (var key in hitSlop) {\n      debugHitSlopStyle[key] = -hitSlop[key];\n    }\n\n    var normalizedColor = normalizeColor(color);\n\n    if (typeof normalizedColor !== 'number') {\n      return null;\n    }\n\n    var hexColor = '#' + ('00000000' + normalizedColor.toString(16)).substr(-8);\n    return React.createElement(View, {\n      pointerEvents: \"none\",\n      style: _objectSpread({\n        position: 'absolute',\n        borderColor: hexColor.slice(0, -2) + '55',\n        borderWidth: 1,\n        borderStyle: 'dashed',\n        backgroundColor: hexColor.slice(0, -2) + '0F'\n      }, debugHitSlopStyle)\n    });\n  }\n};\nexport default Touchable;","map":{"version":3,"sources":["/Users/rohitsingh/Documents/projects/new-nativebase-setup/NativeBase/example/node_modules/react-native-web/dist/exports/Touchable/index.js"],"names":["_objectWithoutPropertiesLoose","source","excluded","target","sourceKeys","Object","keys","key","i","length","indexOf","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","AccessibilityUtil","BoundingDimensions","findNodeHandle","normalizeColor","Position","React","UIManager","View","extractSingleTouch","nativeEvent","touches","changedTouches","hasTouches","hasChangedTouches","States","NOT_RESPONDER","RESPONDER_INACTIVE_PRESS_IN","RESPONDER_INACTIVE_PRESS_OUT","RESPONDER_ACTIVE_PRESS_IN","RESPONDER_ACTIVE_PRESS_OUT","RESPONDER_ACTIVE_LONG_PRESS_IN","RESPONDER_ACTIVE_LONG_PRESS_OUT","ERROR","baseStatesConditions","IsActive","IsPressingIn","IsLongPressingIn","Signals","DELAY","RESPONDER_GRANT","RESPONDER_RELEASE","RESPONDER_TERMINATED","ENTER_PRESS_RECT","LEAVE_PRESS_RECT","LONG_PRESS_DETECTED","Transitions","error","HIGHLIGHT_DELAY_MS","PRESS_EXPAND_PX","LONG_PRESS_THRESHOLD","LONG_PRESS_DELAY_MS","LONG_PRESS_ALLOWED_MOVEMENT","TouchableMixin","componentDidMount","_this","_touchableNode","addEventListener","_touchableBlurListener","e","_isTouchableKeyboardActive","state","touchable","touchState","touchableHandleResponderTerminate","componentWillUnmount","removeEventListener","touchableDelayTimeout","clearTimeout","longPressDelayTimeout","pressOutDelayTimeout","pressInLocation","responderID","touchableGetInitialState","undefined","touchableHandleResponderTerminationRequest","props","rejectResponderTermination","touchableHandleStartShouldSetResponder","disabled","touchableLongPressCancelsPress","touchableHandleResponderGrant","dispatchID","currentTarget","persist","_receiveSignal","delayMS","touchableGetHighlightDelayMS","Math","max","isNaN","setTimeout","_handleDelay","bind","longDelayMS","touchableGetLongPressDelayMS","_handleLongDelay","touchableHandleResponderRelease","touchableHandleResponderMove","positionOnActivate","dimensionsOnActivate","pressRectOffset","touchableGetPressRectOffset","left","right","top","bottom","pressExpandLeft","pressExpandTop","pressExpandRight","pressExpandBottom","hitSlop","touchableGetHitSlop","touch","pageX","pageY","movedDistance","_getDistanceBetweenPoints","_cancelLongPressDelayTimeout","isTouchWithinActive","width","height","prevState","curState","touchableHandleFocus","onFocus","touchableHandleBlur","onBlur","_remeasureMetricsOnActivation","tag","measure","_handleQueryLayout","l","t","w","h","globalX","globalY","release","getPooled","console","signal","nextState","Error","_performSideEffectsForTransition","_isHighlight","_savePressInLocation","locationX","locationY","aX","aY","bX","bY","deltaX","deltaY","sqrt","curIsHighlight","newIsHighlight","isFinalSignal","isInitialTransition","isActiveTransition","touchableHandleLongPress","_startHighlight","_endHighlight","hasLongPressHandler","onLongPress","pressIsLongButStillCallOnPress","shouldInvokePress","touchableHandlePress","_playTouchSound","playTouchSound","touchableHandleActivePressIn","_this2","touchableHandleActivePressOut","touchableGetPressOutDelayMS","touchableHandleKeyEvent","type","stopPropagation","propsToAriaRole","preventDefault","withoutDefaultFocusAndBlur","TouchableMixinWithoutDefaultFocusAndBlur","Touchable","Mixin","TOUCH_TARGET_DEBUG","renderDebugView","_ref","color","process","env","NODE_ENV","debugHitSlopStyle","normalizedColor","hexColor","toString","substr","createElement","pointerEvents","style","position","borderColor","slice","borderWidth","borderStyle","backgroundColor"],"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\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport AccessibilityUtil from '../../modules/AccessibilityUtil';\nimport BoundingDimensions from './BoundingDimensions';\nimport findNodeHandle from '../findNodeHandle';\nimport normalizeColor from 'normalize-css-color';\nimport Position from './Position';\nimport React from 'react';\nimport UIManager from '../UIManager';\nimport View from '../View';\n\nvar extractSingleTouch = function extractSingleTouch(nativeEvent) {\n  var touches = nativeEvent.touches;\n  var changedTouches = nativeEvent.changedTouches;\n  var hasTouches = touches && touches.length > 0;\n  var hasChangedTouches = changedTouches && changedTouches.length > 0;\n  return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;\n};\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n *   of the element, and no other element (like scroller) has \"stolen\" touch\n *   lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the element, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n *   getInitialState: function() {\n *     return merge(this.touchableGetInitialState(), yourComponentState);\n *   }\n *\n * - Choose the rendered component who's touches should start the interactive\n *   sequence. On that rendered node, forward all `Touchable` responder\n *   handlers. You can choose any rendered node you like. Choose a node whose\n *   hit target you'd like to instigate the interaction sequence:\n *\n *   // In render function:\n *   return (\n *     <View\n *       onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n *       onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n *       onResponderGrant={this.touchableHandleResponderGrant}\n *       onResponderMove={this.touchableHandleResponderMove}\n *       onResponderRelease={this.touchableHandleResponderRelease}\n *       onResponderTerminate={this.touchableHandleResponderTerminate}>\n *       <View>\n *         Even though the hit detection/interactions are triggered by the\n *         wrapping (typically larger) node, we usually end up implementing\n *         custom logic that highlights this inner one.\n *       </View>\n *     </View>\n *   );\n *\n * - You may set up your own handlers for each of these events, so long as you\n *   also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n *   feedback to the user. See documentation for each of these class methods\n *   that you should implement.\n *\n *   touchableHandlePress: function() {\n *      this.performBounceAnimation();  // or whatever you want to do.\n *   },\n *   touchableHandleActivePressIn: function() {\n *     this.beginHighlighting(...);  // Whatever you like to convey activation\n *   },\n *   touchableHandleActivePressOut: function() {\n *     this.endHighlighting(...);  // Whatever you like to convey deactivation\n *   },\n *\n * - There are more advanced methods you can implement (see documentation below):\n *   touchableGetHighlightDelayMS: function() {\n *     return 20;\n *   }\n *   // In practice, *always* use a predeclared constant (conserve memory).\n *   touchableGetPressRectOffset: function() {\n *     return {top: 20, left: 20, right: 20, bottom: 100};\n *   }\n */\n\n/**\n * Touchable states.\n */\n\n\nvar States = {\n  NOT_RESPONDER: 'NOT_RESPONDER',\n  // Not the responder\n  RESPONDER_INACTIVE_PRESS_IN: 'RESPONDER_INACTIVE_PRESS_IN',\n  // Responder, inactive, in the `PressRect`\n  RESPONDER_INACTIVE_PRESS_OUT: 'RESPONDER_INACTIVE_PRESS_OUT',\n  // Responder, inactive, out of `PressRect`\n  RESPONDER_ACTIVE_PRESS_IN: 'RESPONDER_ACTIVE_PRESS_IN',\n  // Responder, active, in the `PressRect`\n  RESPONDER_ACTIVE_PRESS_OUT: 'RESPONDER_ACTIVE_PRESS_OUT',\n  // Responder, active, out of `PressRect`\n  RESPONDER_ACTIVE_LONG_PRESS_IN: 'RESPONDER_ACTIVE_LONG_PRESS_IN',\n  // Responder, active, in the `PressRect`, after long press threshold\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: 'RESPONDER_ACTIVE_LONG_PRESS_OUT',\n  // Responder, active, out of `PressRect`, after long press threshold\n  ERROR: 'ERROR'\n};\n\n/*\n * Quick lookup map for states that are considered to be \"active\"\n */\nvar baseStatesConditions = {\n  NOT_RESPONDER: false,\n  RESPONDER_INACTIVE_PRESS_IN: false,\n  RESPONDER_INACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_PRESS_IN: false,\n  RESPONDER_ACTIVE_PRESS_OUT: false,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: false,\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: false,\n  ERROR: false\n};\n\nvar IsActive = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n  RESPONDER_ACTIVE_PRESS_OUT: true,\n  RESPONDER_ACTIVE_PRESS_IN: true\n});\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\n\n\nvar IsPressingIn = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n  RESPONDER_INACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_PRESS_IN: true,\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true\n});\n\nvar IsLongPressingIn = _objectSpread(_objectSpread({}, baseStatesConditions), {}, {\n  RESPONDER_ACTIVE_LONG_PRESS_IN: true\n});\n/**\n * Inputs to the state machine.\n */\n\n\nvar Signals = {\n  DELAY: 'DELAY',\n  RESPONDER_GRANT: 'RESPONDER_GRANT',\n  RESPONDER_RELEASE: 'RESPONDER_RELEASE',\n  RESPONDER_TERMINATED: 'RESPONDER_TERMINATED',\n  ENTER_PRESS_RECT: 'ENTER_PRESS_RECT',\n  LEAVE_PRESS_RECT: 'LEAVE_PRESS_RECT',\n  LONG_PRESS_DETECTED: 'LONG_PRESS_DETECTED'\n};\n\n/**\n * Mapping from States x Signals => States\n */\nvar Transitions = {\n  NOT_RESPONDER: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.ERROR,\n    RESPONDER_TERMINATED: States.ERROR,\n    ENTER_PRESS_RECT: States.ERROR,\n    LEAVE_PRESS_RECT: States.ERROR,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_INACTIVE_PRESS_IN: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_INACTIVE_PRESS_OUT: {\n    DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_ACTIVE_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN\n  },\n  RESPONDER_ACTIVE_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_IN: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN\n  },\n  RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n    DELAY: States.ERROR,\n    RESPONDER_GRANT: States.ERROR,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n    LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n    LONG_PRESS_DETECTED: States.ERROR\n  },\n  error: {\n    DELAY: States.NOT_RESPONDER,\n    RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n    RESPONDER_RELEASE: States.NOT_RESPONDER,\n    RESPONDER_TERMINATED: States.NOT_RESPONDER,\n    ENTER_PRESS_RECT: States.NOT_RESPONDER,\n    LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n    LONG_PRESS_DETECTED: States.NOT_RESPONDER\n  }\n}; // ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\n\nvar HIGHLIGHT_DELAY_MS = 130;\nvar PRESS_EXPAND_PX = 20;\nvar LONG_PRESS_THRESHOLD = 500;\nvar LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\nvar LONG_PRESS_ALLOWED_MOVEMENT = 10; // Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n *  +--------------------------+\n *  |                          | - \"Start\" events in `HitRect` cause `HitRect`\n *  |  +--------------------+  |   to become the responder.\n *  |  |  +--------------+  |  | - `HitRect` is typically expanded around\n *  |  |  |              |  |  |   the `VisualRect`, but shifted downward.\n *  |  |  |  VisualRect  |  |  | - After pressing down, after some delay,\n *  |  |  |              |  |  |   and before letting up, the Visual React\n *  |  |  +--------------+  |  |   will become \"active\". This makes it eligible\n *  |  |     HitRect        |  |   for being highlighted (so long as the\n *  |  +--------------------+  |   press remains in the `PressRect`).\n *  |        PressRect     o   |\n *  +----------------------|---+\n *           Out Region    |\n *                         +-----+ This gap between the `HitRect` and\n *                                 `PressRect` allows a touch to move far away\n *                                 from the original hit rect, and remain\n *                                 highlighted, and eligible for a \"Press\".\n *                                 Customize this via\n *                                 `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n *     +\n *     | RESPONDER_GRANT (HitRect)\n *     v\n * +---------------------------+  DELAY   +-------------------------+  T + DELAY     +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+          +-------------------------+                +------------------------------+\n *     +            ^                         +           ^                                 +           ^\n *     |LEAVE_      |ENTER_                   |LEAVE_     |ENTER_                           |LEAVE_     |ENTER_\n *     |PRESS_RECT  |PRESS_RECT               |PRESS_RECT |PRESS_RECT                       |PRESS_RECT |PRESS_RECT\n *     |            |                         |           |                                 |           |\n *     v            +                         v           +                                 v           +\n * +----------------------------+  DELAY  +--------------------------+               +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT|               |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+         +--------------------------+               +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\n\nvar TouchableMixin = {\n  // HACK (part 1): basic support for touchable interactions using a keyboard\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    this._touchableNode = findNodeHandle(this);\n\n    if (this._touchableNode && this._touchableNode.addEventListener) {\n      this._touchableBlurListener = function (e) {\n        if (_this._isTouchableKeyboardActive) {\n          if (_this.state.touchable.touchState && _this.state.touchable.touchState !== States.NOT_RESPONDER) {\n            _this.touchableHandleResponderTerminate({\n              nativeEvent: e\n            });\n          }\n\n          _this._isTouchableKeyboardActive = false;\n        }\n      };\n\n      this._touchableNode.addEventListener('blur', this._touchableBlurListener);\n    }\n  },\n\n  /**\n   * Clear all timeouts on unmount\n   */\n  componentWillUnmount: function componentWillUnmount() {\n    if (this._touchableNode && this._touchableNode.addEventListener) {\n      this._touchableNode.removeEventListener('blur', this._touchableBlurListener);\n    }\n\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout); // Clear DOM nodes\n\n    this.pressInLocation = null;\n    this.state.touchable.responderID = null;\n    this._touchableNode = null;\n  },\n\n  /**\n   * It's prefer that mixins determine state in this way, having the class\n   * explicitly mix the state in the one and only `getInitialState` method.\n   *\n   * @return {object} State object to be placed inside of\n   * `this.state.touchable`.\n   */\n  touchableGetInitialState: function touchableGetInitialState() {\n    return {\n      touchable: {\n        touchState: undefined,\n        responderID: null\n      }\n    };\n  },\n  // ==== Hooks to Gesture Responder system ====\n\n  /**\n   * Must return true if embedded in a native platform scroll view.\n   */\n  touchableHandleResponderTerminationRequest: function touchableHandleResponderTerminationRequest() {\n    return !this.props.rejectResponderTermination;\n  },\n\n  /**\n   * Must return true to start the process of `Touchable`.\n   */\n  touchableHandleStartShouldSetResponder: function touchableHandleStartShouldSetResponder() {\n    return !this.props.disabled;\n  },\n\n  /**\n   * Return true to cancel press on long press.\n   */\n  touchableLongPressCancelsPress: function touchableLongPressCancelsPress() {\n    return true;\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderGrant` event.\n   * @param {SyntheticEvent} e Synthetic event from event system.\n   *\n   */\n  touchableHandleResponderGrant: function touchableHandleResponderGrant(e) {\n    var dispatchID = e.currentTarget; // Since e is used in a callback invoked on another event loop\n    // (as in setTimeout etc), we need to call e.persist() on the\n    // event to make sure it doesn't get reused in the event object pool.\n\n    e.persist();\n    this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n    this.pressOutDelayTimeout = null;\n    this.state.touchable.touchState = States.NOT_RESPONDER;\n    this.state.touchable.responderID = dispatchID;\n\n    this._receiveSignal(Signals.RESPONDER_GRANT, e);\n\n    var delayMS = this.touchableGetHighlightDelayMS !== undefined ? Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS;\n    delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n\n    if (delayMS !== 0) {\n      this.touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS);\n    } else {\n      this._handleDelay(e);\n    }\n\n    var longDelayMS = this.touchableGetLongPressDelayMS !== undefined ? Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS;\n    longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n    this.longPressDelayTimeout = setTimeout(this._handleLongDelay.bind(this, e), longDelayMS + delayMS);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderRelease` event.\n   */\n  touchableHandleResponderRelease: function touchableHandleResponderRelease(e) {\n    this.pressInLocation = null;\n\n    this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderTerminate` event.\n   */\n  touchableHandleResponderTerminate: function touchableHandleResponderTerminate(e) {\n    this.pressInLocation = null;\n\n    this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n  },\n\n  /**\n   * Place as callback for a DOM element's `onResponderMove` event.\n   */\n  touchableHandleResponderMove: function touchableHandleResponderMove(e) {\n    // Measurement may not have returned yet.\n    if (!this.state.touchable.positionOnActivate) {\n      return;\n    }\n\n    var positionOnActivate = this.state.touchable.positionOnActivate;\n    var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n    var pressRectOffset = this.touchableGetPressRectOffset ? this.touchableGetPressRectOffset() : {\n      left: PRESS_EXPAND_PX,\n      right: PRESS_EXPAND_PX,\n      top: PRESS_EXPAND_PX,\n      bottom: PRESS_EXPAND_PX\n    };\n    var pressExpandLeft = pressRectOffset.left;\n    var pressExpandTop = pressRectOffset.top;\n    var pressExpandRight = pressRectOffset.right;\n    var pressExpandBottom = pressRectOffset.bottom;\n    var hitSlop = this.touchableGetHitSlop ? this.touchableGetHitSlop() : null;\n\n    if (hitSlop) {\n      pressExpandLeft += hitSlop.left || 0;\n      pressExpandTop += hitSlop.top || 0;\n      pressExpandRight += hitSlop.right || 0;\n      pressExpandBottom += hitSlop.bottom || 0;\n    }\n\n    var touch = extractSingleTouch(e.nativeEvent);\n    var pageX = touch && touch.pageX;\n    var pageY = touch && touch.pageY;\n\n    if (this.pressInLocation) {\n      var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY);\n\n      if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n        this._cancelLongPressDelayTimeout();\n      }\n    }\n\n    var isTouchWithinActive = pageX > positionOnActivate.left - pressExpandLeft && pageY > positionOnActivate.top - pressExpandTop && pageX < positionOnActivate.left + dimensionsOnActivate.width + pressExpandRight && pageY < positionOnActivate.top + dimensionsOnActivate.height + pressExpandBottom;\n\n    if (isTouchWithinActive) {\n      var prevState = this.state.touchable.touchState;\n\n      this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n\n      var curState = this.state.touchable.touchState;\n\n      if (curState === States.RESPONDER_INACTIVE_PRESS_IN && prevState !== States.RESPONDER_INACTIVE_PRESS_IN) {\n        // fix for t7967420\n        this._cancelLongPressDelayTimeout();\n      }\n    } else {\n      this._cancelLongPressDelayTimeout();\n\n      this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n    }\n  },\n\n  /**\n   * Invoked when the item receives focus. Mixers might override this to\n   * visually distinguish the `VisualRect` so that the user knows that it\n   * currently has the focus. Most platforms only support a single element being\n   * focused at a time, in which case there may have been a previously focused\n   * element that was blurred just prior to this. This can be overridden when\n   * using `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n   */\n  touchableHandleFocus: function touchableHandleFocus(e) {\n    this.props.onFocus && this.props.onFocus(e);\n  },\n\n  /**\n   * Invoked when the item loses focus. Mixers might override this to\n   * visually distinguish the `VisualRect` so that the user knows that it\n   * no longer has focus. Most platforms only support a single element being\n   * focused at a time, in which case the focus may have moved to another.\n   * This can be overridden when using\n   * `Touchable.Mixin.withoutDefaultFocusAndBlur`.\n   */\n  touchableHandleBlur: function touchableHandleBlur(e) {\n    this.props.onBlur && this.props.onBlur(e);\n  },\n  // ==== Abstract Application Callbacks ====\n\n  /**\n   * Invoked when the item should be highlighted. Mixers should implement this\n   * to visually distinguish the `VisualRect` so that the user knows that\n   * releasing a touch will result in a \"selection\" (analog to click).\n   *\n   * @abstract\n   * touchableHandleActivePressIn: function,\n   */\n\n  /**\n   * Invoked when the item is \"active\" (in that it is still eligible to become\n   * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n   * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n   * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n   * again and the mixer should probably highlight the `VisualRect` again. This\n   * event will not fire on an `touchEnd/mouseUp` event, only move events while\n   * the user is depressing the mouse/touch.\n   *\n   * @abstract\n   * touchableHandleActivePressOut: function\n   */\n\n  /**\n   * Invoked when the item is \"selected\" - meaning the interaction ended by\n   * letting up while the item was either in the state\n   * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n   *\n   * @abstract\n   * touchableHandlePress: function\n   */\n\n  /**\n   * Invoked when the item is long pressed - meaning the interaction ended by\n   * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n   * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n   * be called as it normally is. If `touchableHandleLongPress` is provided, by\n   * default any `touchableHandlePress` callback will not be invoked. To\n   * override this default behavior, override `touchableLongPressCancelsPress`\n   * to return false. As a result, `touchableHandlePress` will be called when\n   * lifting up, even if `touchableHandleLongPress` has also been called.\n   *\n   * @abstract\n   * touchableHandleLongPress: function\n   */\n\n  /**\n   * Returns the number of millis to wait before triggering a highlight.\n   *\n   * @abstract\n   * touchableGetHighlightDelayMS: function\n   */\n\n  /**\n   * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n   * numbers mean the size expands outwards.\n   *\n   * @abstract\n   * touchableGetPressRectOffset: function\n   */\n  // ==== Internal Logic ====\n\n  /**\n   * Measures the `HitRect` node on activation. The Bounding rectangle is with\n   * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n   * should result in points that are in the same coordinate system as an\n   * event's `globalX/globalY` data values.\n   *\n   * - Consider caching this for the lifetime of the component, or possibly\n   *   being able to share this cache between any `ScrollMap` view.\n   *\n   * @sideeffects\n   * @private\n   */\n  _remeasureMetricsOnActivation: function _remeasureMetricsOnActivation() {\n    var tag = this.state.touchable.responderID;\n\n    if (tag == null) {\n      return;\n    }\n\n    UIManager.measure(tag, this._handleQueryLayout);\n  },\n  _handleQueryLayout: function _handleQueryLayout(l, t, w, h, globalX, globalY) {\n    //don't do anything UIManager failed to measure node\n    if (!l && !t && !w && !h && !globalX && !globalY) {\n      return;\n    }\n\n    this.state.touchable.positionOnActivate && Position.release(this.state.touchable.positionOnActivate);\n    this.state.touchable.dimensionsOnActivate && // $FlowFixMe\n    BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n    this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY); // $FlowFixMe\n\n    this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n  },\n  _handleDelay: function _handleDelay(e) {\n    this.touchableDelayTimeout = null;\n\n    this._receiveSignal(Signals.DELAY, e);\n  },\n  _handleLongDelay: function _handleLongDelay(e) {\n    this.longPressDelayTimeout = null;\n    var curState = this.state.touchable.touchState;\n\n    if (curState !== States.RESPONDER_ACTIVE_PRESS_IN && curState !== States.RESPONDER_ACTIVE_LONG_PRESS_IN) {\n      console.error('Attempted to transition from state `' + curState + '` to `' + States.RESPONDER_ACTIVE_LONG_PRESS_IN + '`, which is not supported. This is ' + 'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.');\n    } else {\n      this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\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   * @param {Signals} signal State machine signal.\n   * @throws Error if invalid state transition or unrecognized signal.\n   * @sideeffects\n   */\n  _receiveSignal: function _receiveSignal(signal, e) {\n    var responderID = this.state.touchable.responderID;\n    var curState = this.state.touchable.touchState;\n    var nextState = Transitions[curState] && Transitions[curState][signal];\n\n    if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n      return;\n    }\n\n    if (!nextState) {\n      throw new Error('Unrecognized signal `' + signal + '` or state `' + curState + '` for Touchable responder `' + responderID + '`');\n    }\n\n    if (nextState === States.ERROR) {\n      throw new Error('Touchable cannot transition from `' + curState + '` to `' + signal + '` for responder `' + responderID + '`');\n    }\n\n    if (curState !== nextState) {\n      this._performSideEffectsForTransition(curState, nextState, signal, e);\n\n      this.state.touchable.touchState = nextState;\n    }\n  },\n  _cancelLongPressDelayTimeout: function _cancelLongPressDelayTimeout() {\n    this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n    this.longPressDelayTimeout = null;\n  },\n  _isHighlight: function _isHighlight(state) {\n    return state === States.RESPONDER_ACTIVE_PRESS_IN || state === States.RESPONDER_ACTIVE_LONG_PRESS_IN;\n  },\n  _savePressInLocation: function _savePressInLocation(e) {\n    var touch = extractSingleTouch(e.nativeEvent);\n    var pageX = touch && touch.pageX;\n    var pageY = touch && touch.pageY;\n    var locationX = touch && touch.locationX;\n    var locationY = touch && touch.locationY;\n    this.pressInLocation = {\n      pageX: pageX,\n      pageY: pageY,\n      locationX: locationX,\n      locationY: locationY\n    };\n  },\n  _getDistanceBetweenPoints: function _getDistanceBetweenPoints(aX, aY, bX, bY) {\n    var deltaX = aX - bX;\n    var deltaY = aY - bY;\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  },\n\n  /**\n   * Will perform a transition between touchable states, and identify any\n   * highlighting or unhighlighting that must be performed for this particular\n   * transition.\n   *\n   * @param {States} curState Current Touchable state.\n   * @param {States} nextState Next Touchable state.\n   * @param {Signal} signal Signal that triggered the transition.\n   * @param {Event} e Native event.\n   * @sideeffects\n   */\n  _performSideEffectsForTransition: function _performSideEffectsForTransition(curState, nextState, signal, e) {\n    var curIsHighlight = this._isHighlight(curState);\n\n    var newIsHighlight = this._isHighlight(nextState);\n\n    var isFinalSignal = signal === Signals.RESPONDER_TERMINATED || signal === Signals.RESPONDER_RELEASE;\n\n    if (isFinalSignal) {\n      this._cancelLongPressDelayTimeout();\n    }\n\n    var isInitialTransition = curState === States.NOT_RESPONDER && nextState === States.RESPONDER_INACTIVE_PRESS_IN;\n    var isActiveTransition = !IsActive[curState] && IsActive[nextState];\n\n    if (isInitialTransition || isActiveTransition) {\n      this._remeasureMetricsOnActivation();\n    }\n\n    if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n      this.touchableHandleLongPress && this.touchableHandleLongPress(e);\n    }\n\n    if (newIsHighlight && !curIsHighlight) {\n      this._startHighlight(e);\n    } else if (!newIsHighlight && curIsHighlight) {\n      this._endHighlight(e);\n    }\n\n    if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n      var hasLongPressHandler = !!this.props.onLongPress;\n      var pressIsLongButStillCallOnPress = IsLongPressingIn[curState] && ( // We *are* long pressing.. // But either has no long handler\n      !hasLongPressHandler || !this.touchableLongPressCancelsPress()); // or we're told to ignore it.\n\n      var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n\n      if (shouldInvokePress && this.touchableHandlePress) {\n        if (!newIsHighlight && !curIsHighlight) {\n          // we never highlighted because of delay, but we should highlight now\n          this._startHighlight(e);\n\n          this._endHighlight(e);\n        }\n\n        this.touchableHandlePress(e);\n      }\n    }\n\n    this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n    this.touchableDelayTimeout = null;\n  },\n  _playTouchSound: function _playTouchSound() {\n    UIManager.playTouchSound();\n  },\n  _startHighlight: function _startHighlight(e) {\n    this._savePressInLocation(e);\n\n    this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n  },\n  _endHighlight: function _endHighlight(e) {\n    var _this2 = this;\n\n    if (this.touchableHandleActivePressOut) {\n      if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n        this.pressOutDelayTimeout = setTimeout(function () {\n          _this2.touchableHandleActivePressOut(e);\n        }, this.touchableGetPressOutDelayMS());\n      } else {\n        this.touchableHandleActivePressOut(e);\n      }\n    }\n  },\n  // HACK (part 2): basic support for touchable interactions using a keyboard (including\n  // delays and longPress)\n  touchableHandleKeyEvent: function touchableHandleKeyEvent(e) {\n    var type = e.type,\n        key = e.key;\n\n    if (key === 'Enter' || key === ' ') {\n      if (type === 'keydown') {\n        if (!this._isTouchableKeyboardActive) {\n          if (!this.state.touchable.touchState || this.state.touchable.touchState === States.NOT_RESPONDER) {\n            this.touchableHandleResponderGrant(e);\n            this._isTouchableKeyboardActive = true;\n          }\n        }\n      } else if (type === 'keyup') {\n        if (this._isTouchableKeyboardActive) {\n          if (this.state.touchable.touchState && this.state.touchable.touchState !== States.NOT_RESPONDER) {\n            this.touchableHandleResponderRelease(e);\n            this._isTouchableKeyboardActive = false;\n          }\n        }\n      }\n\n      e.stopPropagation(); // prevent the default behaviour unless the Touchable functions as a link\n      // and Enter is pressed\n\n      if (!(key === 'Enter' && AccessibilityUtil.propsToAriaRole(this.props) === 'link')) {\n        e.preventDefault();\n      }\n    }\n  },\n  withoutDefaultFocusAndBlur: {}\n};\n/**\n * Provide an optional version of the mixin where `touchableHandleFocus` and\n * `touchableHandleBlur` can be overridden. This allows appropriate defaults to\n * be set on TV platforms, without breaking existing implementations of\n * `Touchable`.\n */\n\nvar touchableHandleFocus = TouchableMixin.touchableHandleFocus,\n    touchableHandleBlur = TouchableMixin.touchableHandleBlur,\n    TouchableMixinWithoutDefaultFocusAndBlur = _objectWithoutPropertiesLoose(TouchableMixin, [\"touchableHandleFocus\", \"touchableHandleBlur\"]);\n\nTouchableMixin.withoutDefaultFocusAndBlur = TouchableMixinWithoutDefaultFocusAndBlur;\nvar Touchable = {\n  Mixin: TouchableMixin,\n  TOUCH_TARGET_DEBUG: false,\n  // Highlights all touchable targets. Toggle with Inspector.\n\n  /**\n   * Renders a debugging overlay to visualize touch target with hitSlop (might not work on Android).\n   */\n  renderDebugView: function renderDebugView(_ref) {\n    var color = _ref.color,\n        hitSlop = _ref.hitSlop;\n\n    if (!Touchable.TOUCH_TARGET_DEBUG) {\n      return null;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      throw Error('Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!');\n    }\n\n    var debugHitSlopStyle = {};\n    hitSlop = hitSlop || {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0\n    };\n\n    for (var key in hitSlop) {\n      debugHitSlopStyle[key] = -hitSlop[key];\n    }\n\n    var normalizedColor = normalizeColor(color);\n\n    if (typeof normalizedColor !== 'number') {\n      return null;\n    }\n\n    var hexColor = '#' + ('00000000' + normalizedColor.toString(16)).substr(-8);\n    return /*#__PURE__*/React.createElement(View, {\n      pointerEvents: \"none\",\n      style: _objectSpread({\n        position: 'absolute',\n        borderColor: hexColor.slice(0, -2) + '55',\n        // More opaque\n        borderWidth: 1,\n        borderStyle: 'dashed',\n        backgroundColor: hexColor.slice(0, -2) + '0F'\n      }, debugHitSlopStyle)\n    });\n  }\n};\nexport default Touchable;"]},"metadata":{},"sourceType":"module"}