{"ast":null,"code":"import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport _react, { useContext, useEffect, useMemo, useRef, useState, useCallback } from \"react\";\nimport { mergeProps, runAfterTransition, focusWithoutScrolling, useGlobalListeners, useSyncRef, isMac, useEvent } from \"@react-aria/utils\";\nimport _babelRuntimeHelpersEsmObjectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _babelRuntimeHelpersEsmExtends from \"@babel/runtime/helpers/esm/extends\";\nvar $e17c9db826984f8ab8e5d837bf0b8$var$state = 'default';\nvar $e17c9db826984f8ab8e5d837bf0b8$var$savedUserSelect = '';\n\nfunction $e17c9db826984f8ab8e5d837bf0b8$export$disableTextSelection() {\n  if ($e17c9db826984f8ab8e5d837bf0b8$var$state === 'default') {\n    $e17c9db826984f8ab8e5d837bf0b8$var$savedUserSelect = document.documentElement.style.webkitUserSelect;\n    document.documentElement.style.webkitUserSelect = 'none';\n  }\n\n  $e17c9db826984f8ab8e5d837bf0b8$var$state = 'disabled';\n}\n\nfunction $e17c9db826984f8ab8e5d837bf0b8$export$restoreTextSelection() {\n  if ($e17c9db826984f8ab8e5d837bf0b8$var$state !== 'disabled') {\n    return;\n  }\n\n  $e17c9db826984f8ab8e5d837bf0b8$var$state = 'restoring';\n  setTimeout(function () {\n    runAfterTransition(function () {\n      if ($e17c9db826984f8ab8e5d837bf0b8$var$state === 'restoring') {\n        if (document.documentElement.style.webkitUserSelect === 'none') {\n          document.documentElement.style.webkitUserSelect = $e17c9db826984f8ab8e5d837bf0b8$var$savedUserSelect || '';\n        }\n\n        $e17c9db826984f8ab8e5d837bf0b8$var$savedUserSelect = '';\n        $e17c9db826984f8ab8e5d837bf0b8$var$state = 'default';\n      }\n    });\n  }, 300);\n}\n\nfunction $f67ef9f1b8ed09b4b00fd0840cd8b94b$export$isVirtualClick(event) {\n  if (event.mozInputSource === 0 && event.isTrusted) {\n    return true;\n  }\n\n  return event.detail === 0 && !event.pointerType;\n}\n\nvar $a3ff51240de6f955c79cf17a88e349$export$PressResponderContext = _react.createContext(null);\n\n$a3ff51240de6f955c79cf17a88e349$export$PressResponderContext.displayName = 'PressResponderContext';\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$usePressResponderContext(props) {\n  var context = useContext($a3ff51240de6f955c79cf17a88e349$export$PressResponderContext);\n\n  if (context) {\n    var register = context.register,\n        contextProps = _babelRuntimeHelpersEsmObjectWithoutPropertiesLoose(context, [\"register\"]);\n\n    props = mergeProps(contextProps, props);\n    register();\n  }\n\n  useSyncRef(context, props.ref);\n  return props;\n}\n\nexport function usePress(props) {\n  var _usePressResponderCon = $ffc54430b1dbeee65879852feaaff07d$var$usePressResponderContext(props),\n      onPress = _usePressResponderCon.onPress,\n      onPressChange = _usePressResponderCon.onPressChange,\n      onPressStart = _usePressResponderCon.onPressStart,\n      onPressEnd = _usePressResponderCon.onPressEnd,\n      onPressUp = _usePressResponderCon.onPressUp,\n      isDisabled = _usePressResponderCon.isDisabled,\n      isPressedProp = _usePressResponderCon.isPressed,\n      preventFocusOnPress = _usePressResponderCon.preventFocusOnPress,\n      shouldCancelOnPointerExit = _usePressResponderCon.shouldCancelOnPointerExit,\n      domProps = _babelRuntimeHelpersEsmObjectWithoutPropertiesLoose(_usePressResponderCon, [\"onPress\", \"onPressChange\", \"onPressStart\", \"onPressEnd\", \"onPressUp\", \"isDisabled\", \"isPressed\", \"preventFocusOnPress\", \"shouldCancelOnPointerExit\", \"ref\"]);\n\n  var propsRef = useRef(null);\n  propsRef.current = {\n    onPress: onPress,\n    onPressChange: onPressChange,\n    onPressStart: onPressStart,\n    onPressEnd: onPressEnd,\n    onPressUp: onPressUp,\n    isDisabled: isDisabled,\n    shouldCancelOnPointerExit: shouldCancelOnPointerExit\n  };\n\n  var _useState = useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      isPressed = _useState2[0],\n      setPressed = _useState2[1];\n\n  var ref = useRef({\n    isPressed: false,\n    ignoreEmulatedMouseEvents: false,\n    ignoreClickAfterPress: false,\n    didFirePressStart: false,\n    activePointerId: null,\n    target: null,\n    isOverTarget: false,\n    pointerType: null\n  });\n\n  var _useGlobalListeners = useGlobalListeners(),\n      addGlobalListener = _useGlobalListeners.addGlobalListener,\n      removeAllGlobalListeners = _useGlobalListeners.removeAllGlobalListeners;\n\n  var pressProps = useMemo(function () {\n    var state = ref.current;\n\n    var triggerPressStart = function triggerPressStart(originalEvent, pointerType) {\n      var _propsRef$current = propsRef.current,\n          onPressStart = _propsRef$current.onPressStart,\n          onPressChange = _propsRef$current.onPressChange,\n          isDisabled = _propsRef$current.isDisabled;\n\n      if (isDisabled || state.didFirePressStart) {\n        return;\n      }\n\n      if (onPressStart) {\n        onPressStart({\n          type: 'pressstart',\n          pointerType: pointerType,\n          target: originalEvent.currentTarget,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n\n      if (onPressChange) {\n        onPressChange(true);\n      }\n\n      state.didFirePressStart = true;\n      setPressed(true);\n    };\n\n    var triggerPressEnd = function triggerPressEnd(originalEvent, pointerType, wasPressed) {\n      if (wasPressed === void 0) {\n        wasPressed = true;\n      }\n\n      var _propsRef$current2 = propsRef.current,\n          onPressEnd = _propsRef$current2.onPressEnd,\n          onPressChange = _propsRef$current2.onPressChange,\n          onPress = _propsRef$current2.onPress,\n          isDisabled = _propsRef$current2.isDisabled;\n\n      if (!state.didFirePressStart) {\n        return;\n      }\n\n      state.ignoreClickAfterPress = true;\n      state.didFirePressStart = false;\n\n      if (onPressEnd) {\n        onPressEnd({\n          type: 'pressend',\n          pointerType: pointerType,\n          target: originalEvent.currentTarget,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n\n      if (onPressChange) {\n        onPressChange(false);\n      }\n\n      setPressed(false);\n\n      if (onPress && wasPressed && !isDisabled) {\n        onPress({\n          type: 'press',\n          pointerType: pointerType,\n          target: originalEvent.currentTarget,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n    };\n\n    var triggerPressUp = function triggerPressUp(originalEvent, pointerType) {\n      var _propsRef$current3 = propsRef.current,\n          onPressUp = _propsRef$current3.onPressUp,\n          isDisabled = _propsRef$current3.isDisabled;\n\n      if (isDisabled) {\n        return;\n      }\n\n      if (onPressUp) {\n        onPressUp({\n          type: 'pressup',\n          pointerType: pointerType,\n          target: originalEvent.currentTarget,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n    };\n\n    var cancel = function cancel(e) {\n      if (state.isPressed) {\n        if (state.isOverTarget) {\n          triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType, false);\n        }\n\n        state.isPressed = false;\n        state.isOverTarget = false;\n        state.activePointerId = null;\n        state.pointerType = null;\n        removeAllGlobalListeners();\n        $e17c9db826984f8ab8e5d837bf0b8$export$restoreTextSelection();\n      }\n    };\n\n    var pressProps = {\n      onKeyDown: function onKeyDown(e) {\n        if ($ffc54430b1dbeee65879852feaaff07d$var$isValidKeyboardEvent(e.nativeEvent) && e.currentTarget.contains(e.target)) {\n          e.preventDefault();\n          e.stopPropagation();\n\n          if (!state.isPressed && !e.repeat) {\n            state.target = e.currentTarget;\n            state.isPressed = true;\n            triggerPressStart(e, 'keyboard');\n            addGlobalListener(document, 'keyup', onKeyUp, false);\n          }\n        }\n      },\n      onKeyUp: function onKeyUp(e) {\n        if ($ffc54430b1dbeee65879852feaaff07d$var$isValidKeyboardEvent(e.nativeEvent) && !e.repeat && e.currentTarget.contains(e.target)) {\n          triggerPressUp($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), 'keyboard');\n        }\n      },\n      onClick: function onClick(e) {\n        if (e && !e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        if (e && e.button === 0) {\n          e.stopPropagation();\n\n          if (isDisabled) {\n            e.preventDefault();\n          }\n\n          if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && $f67ef9f1b8ed09b4b00fd0840cd8b94b$export$isVirtualClick(e.nativeEvent)) {\n            if (!isDisabled && !preventFocusOnPress) {\n              focusWithoutScrolling(e.currentTarget);\n            }\n\n            triggerPressStart(e, 'virtual');\n            triggerPressUp(e, 'virtual');\n            triggerPressEnd(e, 'virtual');\n          }\n\n          state.ignoreEmulatedMouseEvents = false;\n          state.ignoreClickAfterPress = false;\n        }\n      }\n    };\n\n    var onKeyUp = function onKeyUp(e) {\n      if (state.isPressed && $ffc54430b1dbeee65879852feaaff07d$var$isValidKeyboardEvent(e)) {\n        e.preventDefault();\n        e.stopPropagation();\n        state.isPressed = false;\n        triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), 'keyboard', e.target === state.target);\n        removeAllGlobalListeners();\n\n        if (e.target === state.target && $ffc54430b1dbeee65879852feaaff07d$var$isHTMLAnchorLink(state.target) || state.target.getAttribute('role') === 'link') {\n          state.target.click();\n        }\n      }\n    };\n\n    if (typeof PointerEvent !== 'undefined') {\n      pressProps.onPointerDown = function (e) {\n        if (e.button !== 0 || !e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        if ($ffc54430b1dbeee65879852feaaff07d$var$shouldPreventDefault(e.target)) {\n          e.preventDefault();\n        }\n\n        state.pointerType = $ffc54430b1dbeee65879852feaaff07d$var$isVirtualPointerEvent(e.nativeEvent) ? 'virtual' : e.pointerType;\n        e.stopPropagation();\n\n        if (!state.isPressed) {\n          state.isPressed = true;\n          state.isOverTarget = true;\n          state.activePointerId = e.pointerId;\n          state.target = e.currentTarget;\n\n          if (!isDisabled && !preventFocusOnPress) {\n            focusWithoutScrolling(e.currentTarget);\n          }\n\n          $e17c9db826984f8ab8e5d837bf0b8$export$disableTextSelection();\n          triggerPressStart(e, state.pointerType);\n          addGlobalListener(document, 'pointermove', onPointerMove, false);\n          addGlobalListener(document, 'pointerup', onPointerUp, false);\n          addGlobalListener(document, 'pointercancel', onPointerCancel, false);\n        }\n      };\n\n      pressProps.onMouseDown = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        if (e.button === 0) {\n          if ($ffc54430b1dbeee65879852feaaff07d$var$shouldPreventDefault(e.target)) {\n            e.preventDefault();\n          }\n\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onPointerUp = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        if (e.button === 0 && $ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(e, e.currentTarget)) {\n          triggerPressUp(e, state.pointerType || ($ffc54430b1dbeee65879852feaaff07d$var$isVirtualPointerEvent(e.nativeEvent) ? 'virtual' : e.pointerType));\n        }\n      };\n\n      var onPointerMove = function onPointerMove(e) {\n        if (e.pointerId !== state.activePointerId) {\n          return;\n        }\n\n        if ($ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(e, state.target)) {\n          if (!state.isOverTarget) {\n            state.isOverTarget = true;\n            triggerPressStart($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType);\n          }\n        } else if (state.isOverTarget) {\n          state.isOverTarget = false;\n          triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType, false);\n\n          if (propsRef.current.shouldCancelOnPointerExit) {\n            cancel(e);\n          }\n        }\n      };\n\n      var onPointerUp = function onPointerUp(e) {\n        if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0) {\n          if ($ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(e, state.target)) {\n            triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType);\n          } else if (state.isOverTarget) {\n            triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType, false);\n          }\n\n          state.isPressed = false;\n          state.isOverTarget = false;\n          state.activePointerId = null;\n          state.pointerType = null;\n          removeAllGlobalListeners();\n          $e17c9db826984f8ab8e5d837bf0b8$export$restoreTextSelection();\n        }\n      };\n\n      var onPointerCancel = function onPointerCancel(e) {\n        cancel(e);\n      };\n\n      pressProps.onDragStart = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        cancel(e);\n      };\n    } else {\n      pressProps.onMouseDown = function (e) {\n        if (e.button !== 0 || !e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        if ($ffc54430b1dbeee65879852feaaff07d$var$shouldPreventDefault(e.target)) {\n          e.preventDefault();\n        }\n\n        e.stopPropagation();\n\n        if (state.ignoreEmulatedMouseEvents) {\n          return;\n        }\n\n        state.isPressed = true;\n        state.isOverTarget = true;\n        state.target = e.currentTarget;\n        state.pointerType = $f67ef9f1b8ed09b4b00fd0840cd8b94b$export$isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n        if (!isDisabled && !preventFocusOnPress) {\n          focusWithoutScrolling(e.currentTarget);\n        }\n\n        triggerPressStart(e, state.pointerType);\n        addGlobalListener(document, 'mouseup', onMouseUp, false);\n      };\n\n      pressProps.onMouseEnter = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        e.stopPropagation();\n\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents) {\n          state.isOverTarget = true;\n          triggerPressStart(e, state.pointerType);\n        }\n      };\n\n      pressProps.onMouseLeave = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        e.stopPropagation();\n\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents) {\n          state.isOverTarget = false;\n          triggerPressEnd(e, state.pointerType, false);\n\n          if (propsRef.current.shouldCancelOnPointerExit) {\n            cancel(e);\n          }\n        }\n      };\n\n      pressProps.onMouseUp = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n          triggerPressUp(e, state.pointerType);\n        }\n      };\n\n      var onMouseUp = function onMouseUp(e) {\n        if (e.button !== 0) {\n          return;\n        }\n\n        state.isPressed = false;\n        removeAllGlobalListeners();\n\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n          return;\n        }\n\n        if ($ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(e, state.target)) {\n          triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType);\n        } else if (state.isOverTarget) {\n          triggerPressEnd($ffc54430b1dbeee65879852feaaff07d$var$createEvent(state.target, e), state.pointerType, false);\n        }\n\n        state.isOverTarget = false;\n      };\n\n      pressProps.onTouchStart = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        e.stopPropagation();\n        var touch = $ffc54430b1dbeee65879852feaaff07d$var$getTouchFromEvent(e.nativeEvent);\n\n        if (!touch) {\n          return;\n        }\n\n        state.activePointerId = touch.identifier;\n        state.ignoreEmulatedMouseEvents = true;\n        state.isOverTarget = true;\n        state.isPressed = true;\n        state.target = e.currentTarget;\n        state.pointerType = 'touch';\n\n        if (!isDisabled && !preventFocusOnPress) {\n          focusWithoutScrolling(e.currentTarget);\n        }\n\n        $e17c9db826984f8ab8e5d837bf0b8$export$disableTextSelection();\n        triggerPressStart(e, state.pointerType);\n        addGlobalListener(window, 'scroll', onScroll, true);\n      };\n\n      pressProps.onTouchMove = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        e.stopPropagation();\n\n        if (!state.isPressed) {\n          return;\n        }\n\n        var touch = $ffc54430b1dbeee65879852feaaff07d$var$getTouchById(e.nativeEvent, state.activePointerId);\n\n        if (touch && $ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(touch, e.currentTarget)) {\n          if (!state.isOverTarget) {\n            state.isOverTarget = true;\n            triggerPressStart(e, state.pointerType);\n          }\n        } else if (state.isOverTarget) {\n          state.isOverTarget = false;\n          triggerPressEnd(e, state.pointerType, false);\n\n          if (propsRef.current.shouldCancelOnPointerExit) {\n            cancel(e);\n          }\n        }\n      };\n\n      pressProps.onTouchEnd = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        e.stopPropagation();\n\n        if (!state.isPressed) {\n          return;\n        }\n\n        var touch = $ffc54430b1dbeee65879852feaaff07d$var$getTouchById(e.nativeEvent, state.activePointerId);\n\n        if (touch && $ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(touch, e.currentTarget)) {\n          triggerPressUp(e, state.pointerType);\n          triggerPressEnd(e, state.pointerType);\n        } else if (state.isOverTarget) {\n          triggerPressEnd(e, state.pointerType, false);\n        }\n\n        state.isPressed = false;\n        state.activePointerId = null;\n        state.isOverTarget = false;\n        state.ignoreEmulatedMouseEvents = true;\n        $e17c9db826984f8ab8e5d837bf0b8$export$restoreTextSelection();\n        removeAllGlobalListeners();\n      };\n\n      pressProps.onTouchCancel = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        e.stopPropagation();\n\n        if (state.isPressed) {\n          cancel(e);\n        }\n      };\n\n      var onScroll = function onScroll(e) {\n        if (state.isPressed && e.target.contains(state.target)) {\n          cancel({\n            currentTarget: state.target,\n            shiftKey: false,\n            ctrlKey: false,\n            metaKey: false,\n            altKey: false\n          });\n        }\n      };\n\n      pressProps.onDragStart = function (e) {\n        if (!e.currentTarget.contains(e.target)) {\n          return;\n        }\n\n        cancel(e);\n      };\n    }\n\n    return pressProps;\n  }, [addGlobalListener, isDisabled, preventFocusOnPress, removeAllGlobalListeners]);\n  useEffect(function () {\n    return function () {\n      return $e17c9db826984f8ab8e5d837bf0b8$export$restoreTextSelection();\n    };\n  }, []);\n  return {\n    isPressed: isPressedProp || isPressed,\n    pressProps: mergeProps(domProps, pressProps)\n  };\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$isHTMLAnchorLink(target) {\n  return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$isValidKeyboardEvent(event) {\n  var key = event.key,\n      target = event.target;\n  var element = target;\n  var tagName = element.tagName,\n      isContentEditable = element.isContentEditable;\n  var role = element.getAttribute('role');\n  return (key === 'Enter' || key === ' ' || key === 'Spacebar') && tagName !== 'INPUT' && tagName !== 'TEXTAREA' && isContentEditable !== true && (!$ffc54430b1dbeee65879852feaaff07d$var$isHTMLAnchorLink(element) || role === 'button' && key !== 'Enter') && !(role === 'link' && key !== 'Enter');\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$getTouchFromEvent(event) {\n  var targetTouches = event.targetTouches;\n\n  if (targetTouches.length > 0) {\n    return targetTouches[0];\n  }\n\n  return null;\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$getTouchById(event, pointerId) {\n  var changedTouches = event.changedTouches;\n\n  for (var i = 0; i < changedTouches.length; i++) {\n    var touch = changedTouches[i];\n\n    if (touch.identifier === pointerId) {\n      return touch;\n    }\n  }\n\n  return null;\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$createEvent(target, e) {\n  return {\n    currentTarget: target,\n    shiftKey: e.shiftKey,\n    ctrlKey: e.ctrlKey,\n    metaKey: e.metaKey,\n    altKey: e.altKey\n  };\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$getPointClientRect(point) {\n  var offsetX = point.width / 2 || point.radiusX || 0;\n  var offsetY = point.height / 2 || point.radiusY || 0;\n  return {\n    top: point.clientY - offsetY,\n    right: point.clientX + offsetX,\n    bottom: point.clientY + offsetY,\n    left: point.clientX - offsetX\n  };\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$areRectanglesOverlapping(a, b) {\n  if (a.left > b.right || b.left > a.right) {\n    return false;\n  }\n\n  if (a.top > b.bottom || b.top > a.bottom) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$isOverTarget(point, target) {\n  var rect = target.getBoundingClientRect();\n  var pointRect = $ffc54430b1dbeee65879852feaaff07d$var$getPointClientRect(point);\n  return $ffc54430b1dbeee65879852feaaff07d$var$areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$shouldPreventDefault(target) {\n  return !target.closest('[draggable=\"true\"]');\n}\n\nfunction $ffc54430b1dbeee65879852feaaff07d$var$isVirtualPointerEvent(event) {\n  return event.width === 0 && event.height === 0;\n}\n\nexport var Pressable = _react.forwardRef(function (_ref, ref) {\n  var _ref2;\n\n  var children = _ref.children,\n      props = _babelRuntimeHelpersEsmObjectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n  var newRef = useRef();\n  ref = (_ref2 = ref) != null ? _ref2 : newRef;\n\n  var _usePress = usePress(_babelRuntimeHelpersEsmExtends({}, props, {\n    ref: ref\n  })),\n      pressProps = _usePress.pressProps;\n\n  var child = _react.Children.only(children);\n\n  return _react.cloneElement(child, _babelRuntimeHelpersEsmExtends({\n    ref: ref\n  }, mergeProps(child.props, pressProps)));\n});\nexport var PressResponder = _react.forwardRef(function (_ref, ref) {\n  var children = _ref.children,\n      props = _babelRuntimeHelpersEsmObjectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n  var isRegistered = useRef(false);\n  var prevContext = useContext($a3ff51240de6f955c79cf17a88e349$export$PressResponderContext);\n  var context = mergeProps(prevContext || {}, _babelRuntimeHelpersEsmExtends({}, props, {\n    ref: ref || (prevContext == null ? void 0 : prevContext.ref),\n    register: function register() {\n      isRegistered.current = true;\n\n      if (prevContext) {\n        prevContext.register();\n      }\n    }\n  }));\n  useSyncRef(prevContext, ref);\n  useEffect(function () {\n    if (!isRegistered.current) {\n      console.warn('A PressResponder was rendered without a pressable child. ' + 'Either call the usePress hook, or wrap your DOM node with <Pressable> component.');\n    }\n  }, []);\n  return _react.createElement($a3ff51240de6f955c79cf17a88e349$export$PressResponderContext.Provider, {\n    value: context\n  }, children);\n});\nexport function useFocus(props) {\n  if (props.isDisabled) {\n    return {\n      focusProps: {}\n    };\n  }\n\n  var onFocus, onBlur;\n\n  if (props.onFocus || props.onFocusChange) {\n    onFocus = function onFocus(e) {\n      if (e.target === e.currentTarget) {\n        if (props.onFocus) {\n          props.onFocus(e);\n        }\n\n        if (props.onFocusChange) {\n          props.onFocusChange(true);\n        }\n      }\n    };\n  }\n\n  if (props.onBlur || props.onFocusChange) {\n    onBlur = function onBlur(e) {\n      if (e.target === e.currentTarget) {\n        if (props.onBlur) {\n          props.onBlur(e);\n        }\n\n        if (props.onFocusChange) {\n          props.onFocusChange(false);\n        }\n      }\n    };\n  }\n\n  return {\n    focusProps: {\n      onFocus: onFocus,\n      onBlur: onBlur\n    }\n  };\n}\nvar $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality = null;\nvar $d01f69bb2ab5f70dfd0005370a2a2cbc$var$changeHandlers = new Set();\nvar $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasSetupGlobalListeners = false;\nvar $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = false;\nvar $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasBlurredWindowRecently = false;\nvar $d01f69bb2ab5f70dfd0005370a2a2cbc$var$FOCUS_VISIBLE_INPUT_KEYS = {\n  Tab: true,\n  Escape: true\n};\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$triggerChangeHandlers(modality, e) {\n  for (var _iterator = _createForOfIteratorHelperLoose($d01f69bb2ab5f70dfd0005370a2a2cbc$var$changeHandlers), _step; !(_step = _iterator()).done;) {\n    var handler = _step.value;\n    handler(modality, e);\n  }\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$isValidKey(e) {\n  return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.type === 'keyup' && (e.key === 'Control' || e.key === 'Shift'));\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleKeyboardEvent(e) {\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = true;\n\n  if ($d01f69bb2ab5f70dfd0005370a2a2cbc$var$isValidKey(e)) {\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality = 'keyboard';\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$triggerChangeHandlers('keyboard', e);\n  }\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent(e) {\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality = 'pointer';\n\n  if (e.type === 'mousedown' || e.type === 'pointerdown') {\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = true;\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$triggerChangeHandlers('pointer', e);\n  }\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleClickEvent(e) {\n  if ($f67ef9f1b8ed09b4b00fd0840cd8b94b$export$isVirtualClick(e)) {\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = true;\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality = 'virtual';\n  }\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleFocusEvent(e) {\n  if (e.target === window || e.target === document) {\n    return;\n  }\n\n  if (!$d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus && !$d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasBlurredWindowRecently) {\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality = 'virtual';\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$triggerChangeHandlers('virtual', e);\n  }\n\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = false;\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasBlurredWindowRecently = false;\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleWindowBlur() {\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = false;\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasBlurredWindowRecently = true;\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$setupGlobalFocusEvents() {\n  if (typeof window === 'undefined' || $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasSetupGlobalListeners) {\n    return;\n  }\n\n  var focus = HTMLElement.prototype.focus;\n\n  HTMLElement.prototype.focus = function () {\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasEventBeforeFocus = true;\n    focus.apply(this, arguments);\n  };\n\n  document.addEventListener('keydown', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleKeyboardEvent, true);\n  document.addEventListener('keyup', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleKeyboardEvent, true);\n  document.addEventListener('click', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleClickEvent, true);\n  window.addEventListener('focus', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleFocusEvent, true);\n  window.addEventListener('blur', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handleWindowBlur, false);\n\n  if (typeof PointerEvent !== 'undefined') {\n    document.addEventListener('pointerdown', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent, true);\n    document.addEventListener('pointermove', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent, true);\n    document.addEventListener('pointerup', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent, true);\n  } else {\n    document.addEventListener('mousedown', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent, true);\n    document.addEventListener('mousemove', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent, true);\n    document.addEventListener('mouseup', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$handlePointerEvent, true);\n  }\n\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$hasSetupGlobalListeners = true;\n}\n\nif (typeof document !== 'undefined') {\n  if (document.readyState !== 'loading') {\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$setupGlobalFocusEvents();\n  } else {\n    document.addEventListener('DOMContentLoaded', $d01f69bb2ab5f70dfd0005370a2a2cbc$var$setupGlobalFocusEvents);\n  }\n}\n\nexport function isFocusVisible() {\n  return $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality !== 'pointer';\n}\nexport function getInteractionModality() {\n  return $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality;\n}\nexport function setInteractionModality(modality) {\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality = modality;\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$triggerChangeHandlers(modality, null);\n}\nexport function useInteractionModality() {\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$setupGlobalFocusEvents();\n\n  var _useState3 = useState($d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality),\n      _useState4 = _slicedToArray(_useState3, 2),\n      modality = _useState4[0],\n      setModality = _useState4[1];\n\n  useEffect(function () {\n    var handler = function handler() {\n      setModality($d01f69bb2ab5f70dfd0005370a2a2cbc$var$currentModality);\n    };\n\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$changeHandlers.add(handler);\n    return function () {\n      $d01f69bb2ab5f70dfd0005370a2a2cbc$var$changeHandlers.delete(handler);\n    };\n  }, []);\n  return modality;\n}\n\nfunction $d01f69bb2ab5f70dfd0005370a2a2cbc$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n  return !(isTextInput && modality === 'keyboard' && e instanceof KeyboardEvent && !$d01f69bb2ab5f70dfd0005370a2a2cbc$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\n\nexport function useFocusVisible(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      isTextInput = _props.isTextInput,\n      autoFocus = _props.autoFocus;\n\n  var _useState5 = useState(autoFocus || isFocusVisible()),\n      _useState6 = _slicedToArray(_useState5, 2),\n      isFocusVisibleState = _useState6[0],\n      setFocusVisible = _useState6[1];\n\n  useFocusVisibleListener(function (isFocusVisible) {\n    setFocusVisible(isFocusVisible);\n  }, [isTextInput], {\n    isTextInput: isTextInput\n  });\n  return {\n    isFocusVisible: isFocusVisibleState\n  };\n}\nexport function useFocusVisibleListener(fn, deps, opts) {\n  $d01f69bb2ab5f70dfd0005370a2a2cbc$var$setupGlobalFocusEvents();\n  useEffect(function () {\n    var handler = function handler(modality, e) {\n      if (!$d01f69bb2ab5f70dfd0005370a2a2cbc$var$isKeyboardFocusEvent(opts == null ? void 0 : opts.isTextInput, modality, e)) {\n        return;\n      }\n\n      fn(isFocusVisible());\n    };\n\n    $d01f69bb2ab5f70dfd0005370a2a2cbc$var$changeHandlers.add(handler);\n    return function () {\n      return $d01f69bb2ab5f70dfd0005370a2a2cbc$var$changeHandlers.delete(handler);\n    };\n  }, deps);\n}\nexport function useFocusWithin(props) {\n  var state = useRef({\n    isFocusWithin: false\n  }).current;\n\n  if (props.isDisabled) {\n    return {\n      focusWithinProps: {}\n    };\n  }\n\n  var onFocus = function onFocus(e) {\n    if (!state.isFocusWithin) {\n      if (props.onFocusWithin) {\n        props.onFocusWithin(e);\n      }\n\n      if (props.onFocusWithinChange) {\n        props.onFocusWithinChange(true);\n      }\n\n      state.isFocusWithin = true;\n    }\n  };\n\n  var onBlur = function onBlur(e) {\n    if (state.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n      if (props.onBlurWithin) {\n        props.onBlurWithin(e);\n      }\n\n      if (props.onFocusWithinChange) {\n        props.onFocusWithinChange(false);\n      }\n\n      state.isFocusWithin = false;\n    }\n  };\n\n  return {\n    focusWithinProps: {\n      onFocus: onFocus,\n      onBlur: onBlur\n    }\n  };\n}\nvar $b1a784c66b81d90efa4f74e05b$var$globalIgnoreEmulatedMouseEvents = false;\nvar $b1a784c66b81d90efa4f74e05b$var$hoverCount = 0;\n\nfunction $b1a784c66b81d90efa4f74e05b$var$setGlobalIgnoreEmulatedMouseEvents() {\n  $b1a784c66b81d90efa4f74e05b$var$globalIgnoreEmulatedMouseEvents = true;\n  setTimeout(function () {\n    $b1a784c66b81d90efa4f74e05b$var$globalIgnoreEmulatedMouseEvents = false;\n  }, 50);\n}\n\nfunction $b1a784c66b81d90efa4f74e05b$var$handleGlobalPointerEvent(e) {\n  if (e.pointerType === 'touch') {\n    $b1a784c66b81d90efa4f74e05b$var$setGlobalIgnoreEmulatedMouseEvents();\n  }\n}\n\nfunction $b1a784c66b81d90efa4f74e05b$var$setupGlobalTouchEvents() {\n  if (typeof document === 'undefined') {\n    return;\n  }\n\n  if (typeof PointerEvent !== 'undefined') {\n    document.addEventListener('pointerup', $b1a784c66b81d90efa4f74e05b$var$handleGlobalPointerEvent);\n  } else {\n    document.addEventListener('touchend', $b1a784c66b81d90efa4f74e05b$var$setGlobalIgnoreEmulatedMouseEvents);\n  }\n\n  $b1a784c66b81d90efa4f74e05b$var$hoverCount++;\n  return function () {\n    $b1a784c66b81d90efa4f74e05b$var$hoverCount--;\n\n    if ($b1a784c66b81d90efa4f74e05b$var$hoverCount > 0) {\n      return;\n    }\n\n    if (typeof PointerEvent !== 'undefined') {\n      document.removeEventListener('pointerup', $b1a784c66b81d90efa4f74e05b$var$handleGlobalPointerEvent);\n    } else {\n      document.removeEventListener('touchend', $b1a784c66b81d90efa4f74e05b$var$setGlobalIgnoreEmulatedMouseEvents);\n    }\n  };\n}\n\nexport function useHover(props) {\n  var onHoverStart = props.onHoverStart,\n      onHoverChange = props.onHoverChange,\n      onHoverEnd = props.onHoverEnd,\n      isDisabled = props.isDisabled;\n\n  var _useState7 = useState(false),\n      _useState8 = _slicedToArray(_useState7, 2),\n      isHovered = _useState8[0],\n      setHovered = _useState8[1];\n\n  var state = useRef({\n    isHovered: false,\n    ignoreEmulatedMouseEvents: false,\n    pointerType: '',\n    target: null\n  }).current;\n  useEffect($b1a784c66b81d90efa4f74e05b$var$setupGlobalTouchEvents, []);\n\n  var _useMemo = useMemo(function () {\n    var triggerHoverStart = function triggerHoverStart(event, pointerType) {\n      state.pointerType = pointerType;\n\n      if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) {\n        return;\n      }\n\n      state.isHovered = true;\n      var target = event.target;\n      state.target = target;\n\n      if (onHoverStart) {\n        onHoverStart({\n          type: 'hoverstart',\n          target: target,\n          pointerType: pointerType\n        });\n      }\n\n      if (onHoverChange) {\n        onHoverChange(true);\n      }\n\n      setHovered(true);\n    };\n\n    var triggerHoverEnd = function triggerHoverEnd(event, pointerType) {\n      state.pointerType = '';\n      state.target = null;\n\n      if (pointerType === 'touch' || !state.isHovered) {\n        return;\n      }\n\n      state.isHovered = false;\n      var target = event.target;\n\n      if (onHoverEnd) {\n        onHoverEnd({\n          type: 'hoverend',\n          target: target,\n          pointerType: pointerType\n        });\n      }\n\n      if (onHoverChange) {\n        onHoverChange(false);\n      }\n\n      setHovered(false);\n    };\n\n    var hoverProps = {};\n\n    if (typeof PointerEvent !== 'undefined') {\n      hoverProps.onPointerEnter = function (e) {\n        if ($b1a784c66b81d90efa4f74e05b$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') {\n          return;\n        }\n\n        triggerHoverStart(e, e.pointerType);\n      };\n\n      hoverProps.onPointerLeave = function (e) {\n        if (!isDisabled && e.currentTarget.contains(e.target)) {\n          triggerHoverEnd(e, e.pointerType);\n        }\n      };\n    } else {\n      hoverProps.onTouchStart = function () {\n        state.ignoreEmulatedMouseEvents = true;\n      };\n\n      hoverProps.onMouseEnter = function (e) {\n        if (!state.ignoreEmulatedMouseEvents && !$b1a784c66b81d90efa4f74e05b$var$globalIgnoreEmulatedMouseEvents) {\n          triggerHoverStart(e, 'mouse');\n        }\n\n        state.ignoreEmulatedMouseEvents = false;\n      };\n\n      hoverProps.onMouseLeave = function (e) {\n        if (!isDisabled && e.currentTarget.contains(e.target)) {\n          triggerHoverEnd(e, 'mouse');\n        }\n      };\n    }\n\n    return {\n      hoverProps: hoverProps,\n      triggerHoverEnd: triggerHoverEnd\n    };\n  }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state]),\n      hoverProps = _useMemo.hoverProps,\n      triggerHoverEnd = _useMemo.triggerHoverEnd;\n\n  useEffect(function () {\n    if (isDisabled) {\n      triggerHoverEnd({\n        target: state.target\n      }, state.pointerType);\n    }\n  }, [isDisabled]);\n  return {\n    hoverProps: hoverProps,\n    isHovered: isHovered\n  };\n}\nexport function useInteractOutside(props) {\n  var ref = props.ref,\n      onInteractOutside = props.onInteractOutside,\n      isDisabled = props.isDisabled,\n      onInteractOutsideStart = props.onInteractOutsideStart;\n  var stateRef = useRef({\n    isPointerDown: false,\n    ignoreEmulatedMouseEvents: false,\n    onInteractOutside: onInteractOutside,\n    onInteractOutsideStart: onInteractOutsideStart\n  });\n  var state = stateRef.current;\n  state.onInteractOutside = onInteractOutside;\n  state.onInteractOutsideStart = onInteractOutsideStart;\n  useEffect(function () {\n    if (isDisabled) {\n      return;\n    }\n\n    var onPointerDown = function onPointerDown(e) {\n      if ($e415bb64ab27cb8fbfac2f417412022f$var$isValidEvent(e, ref) && state.onInteractOutside) {\n        if (state.onInteractOutsideStart) {\n          state.onInteractOutsideStart(e);\n        }\n\n        state.isPointerDown = true;\n      }\n    };\n\n    if (typeof PointerEvent !== 'undefined') {\n      var onPointerUp = function onPointerUp(e) {\n        if (state.isPointerDown && state.onInteractOutside && $e415bb64ab27cb8fbfac2f417412022f$var$isValidEvent(e, ref)) {\n          state.isPointerDown = false;\n          state.onInteractOutside(e);\n        }\n      };\n\n      document.addEventListener('pointerdown', onPointerDown, true);\n      document.addEventListener('pointerup', onPointerUp, true);\n      return function () {\n        document.removeEventListener('pointerdown', onPointerDown, true);\n        document.removeEventListener('pointerup', onPointerUp, true);\n      };\n    } else {\n      var onMouseUp = function onMouseUp(e) {\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n        } else if (state.isPointerDown && state.onInteractOutside && $e415bb64ab27cb8fbfac2f417412022f$var$isValidEvent(e, ref)) {\n          state.isPointerDown = false;\n          state.onInteractOutside(e);\n        }\n      };\n\n      var onTouchEnd = function onTouchEnd(e) {\n        state.ignoreEmulatedMouseEvents = true;\n\n        if (state.onInteractOutside && state.isPointerDown && $e415bb64ab27cb8fbfac2f417412022f$var$isValidEvent(e, ref)) {\n          state.isPointerDown = false;\n          state.onInteractOutside(e);\n        }\n      };\n\n      document.addEventListener('mousedown', onPointerDown, true);\n      document.addEventListener('mouseup', onMouseUp, true);\n      document.addEventListener('touchstart', onPointerDown, true);\n      document.addEventListener('touchend', onTouchEnd, true);\n      return function () {\n        document.removeEventListener('mousedown', onPointerDown, true);\n        document.removeEventListener('mouseup', onMouseUp, true);\n        document.removeEventListener('touchstart', onPointerDown, true);\n        document.removeEventListener('touchend', onTouchEnd, true);\n      };\n    }\n  }, [ref, state, isDisabled]);\n}\n\nfunction $e415bb64ab27cb8fbfac2f417412022f$var$isValidEvent(event, ref) {\n  if (event.button > 0) {\n    return false;\n  }\n\n  if (event.target) {\n    var ownerDocument = event.target.ownerDocument;\n\n    if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) {\n      return false;\n    }\n  }\n\n  return ref.current && !ref.current.contains(event.target);\n}\n\nfunction $dc0d75166de722fbf58eb6c3552$export$createEventHandler(handler) {\n  if (!handler) {\n    return;\n  }\n\n  var shouldStopPropagation = true;\n  return function (e) {\n    var event = _babelRuntimeHelpersEsmExtends({}, e, {\n      preventDefault: function preventDefault() {\n        e.preventDefault();\n      },\n      isDefaultPrevented: function isDefaultPrevented() {\n        return e.isDefaultPrevented();\n      },\n      stopPropagation: function stopPropagation() {\n        console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n      },\n      continuePropagation: function continuePropagation() {\n        shouldStopPropagation = false;\n      }\n    });\n\n    handler(event);\n\n    if (shouldStopPropagation) {\n      e.stopPropagation();\n    }\n  };\n}\n\nexport function useKeyboard(props) {\n  return {\n    keyboardProps: props.isDisabled ? {} : {\n      onKeyDown: $dc0d75166de722fbf58eb6c3552$export$createEventHandler(props.onKeyDown),\n      onKeyUp: $dc0d75166de722fbf58eb6c3552$export$createEventHandler(props.onKeyUp)\n    }\n  };\n}\nexport function useMove(props) {\n  var onMoveStart = props.onMoveStart,\n      onMove = props.onMove,\n      onMoveEnd = props.onMoveEnd;\n  var state = useRef({\n    didMove: false,\n    lastPosition: null,\n    id: null\n  });\n\n  var _useGlobalListeners2 = useGlobalListeners(),\n      addGlobalListener = _useGlobalListeners2.addGlobalListener,\n      removeGlobalListener = _useGlobalListeners2.removeGlobalListener;\n\n  var moveProps = useMemo(function () {\n    var moveProps = {};\n\n    var start = function start() {\n      $e17c9db826984f8ab8e5d837bf0b8$export$disableTextSelection();\n      state.current.didMove = false;\n    };\n\n    var move = function move(pointerType, deltaX, deltaY) {\n      if (deltaX === 0 && deltaY === 0) {\n        return;\n      }\n\n      if (!state.current.didMove) {\n        state.current.didMove = true;\n        onMoveStart == null ? void 0 : onMoveStart({\n          type: 'movestart',\n          pointerType: pointerType\n        });\n      }\n\n      onMove({\n        type: 'move',\n        pointerType: pointerType,\n        deltaX: deltaX,\n        deltaY: deltaY\n      });\n    };\n\n    var end = function end(pointerType) {\n      $e17c9db826984f8ab8e5d837bf0b8$export$restoreTextSelection();\n\n      if (state.current.didMove) {\n        onMoveEnd == null ? void 0 : onMoveEnd({\n          type: 'moveend',\n          pointerType: pointerType\n        });\n      }\n    };\n\n    if (typeof PointerEvent === 'undefined') {\n      var onMouseMove = function onMouseMove(e) {\n        if (e.button === 0) {\n          move('mouse', e.pageX - state.current.lastPosition.pageX, e.pageY - state.current.lastPosition.pageY);\n          state.current.lastPosition = {\n            pageX: e.pageX,\n            pageY: e.pageY\n          };\n        }\n      };\n\n      var onMouseUp = function onMouseUp(e) {\n        if (e.button === 0) {\n          end('mouse');\n          removeGlobalListener(window, 'mousemove', onMouseMove, false);\n          removeGlobalListener(window, 'mouseup', onMouseUp, false);\n        }\n      };\n\n      moveProps.onMouseDown = function (e) {\n        if (e.button === 0) {\n          start();\n          e.stopPropagation();\n          e.preventDefault();\n          state.current.lastPosition = {\n            pageX: e.pageX,\n            pageY: e.pageY\n          };\n          addGlobalListener(window, 'mousemove', onMouseMove, false);\n          addGlobalListener(window, 'mouseup', onMouseUp, false);\n        }\n      };\n\n      var onTouchMove = function onTouchMove(e) {\n        var touch = _toConsumableArray(e.changedTouches).findIndex(function (_ref) {\n          var identifier = _ref.identifier;\n          return identifier === state.current.id;\n        });\n\n        if (touch >= 0) {\n          var _e$changedTouches$tou = e.changedTouches[touch],\n              pageX = _e$changedTouches$tou.pageX,\n              pageY = _e$changedTouches$tou.pageY;\n          move('touch', pageX - state.current.lastPosition.pageX, pageY - state.current.lastPosition.pageY);\n          state.current.lastPosition = {\n            pageX: pageX,\n            pageY: pageY\n          };\n        }\n      };\n\n      var onTouchEnd = function onTouchEnd(e) {\n        var touch = _toConsumableArray(e.changedTouches).findIndex(function (_ref2) {\n          var identifier = _ref2.identifier;\n          return identifier === state.current.id;\n        });\n\n        if (touch >= 0) {\n          end('touch');\n          state.current.id = null;\n          removeGlobalListener(window, 'touchmove', onTouchMove);\n          removeGlobalListener(window, 'touchend', onTouchEnd);\n          removeGlobalListener(window, 'touchcancel', onTouchEnd);\n        }\n      };\n\n      moveProps.onTouchStart = function (e) {\n        if (e.changedTouches.length === 0 || state.current.id != null) {\n          return;\n        }\n\n        var _e$changedTouches$ = e.changedTouches[0],\n            pageX = _e$changedTouches$.pageX,\n            pageY = _e$changedTouches$.pageY,\n            identifier = _e$changedTouches$.identifier;\n        start();\n        e.stopPropagation();\n        e.preventDefault();\n        state.current.lastPosition = {\n          pageX: pageX,\n          pageY: pageY\n        };\n        state.current.id = identifier;\n        addGlobalListener(window, 'touchmove', onTouchMove, false);\n        addGlobalListener(window, 'touchend', onTouchEnd, false);\n        addGlobalListener(window, 'touchcancel', onTouchEnd, false);\n      };\n    } else {\n      var onPointerMove = function onPointerMove(e) {\n        if (e.pointerId === state.current.id) {\n          var pointerType = e.pointerType || 'mouse';\n          move(pointerType, e.pageX - state.current.lastPosition.pageX, e.pageY - state.current.lastPosition.pageY);\n          state.current.lastPosition = {\n            pageX: e.pageX,\n            pageY: e.pageY\n          };\n        }\n      };\n\n      var onPointerUp = function onPointerUp(e) {\n        if (e.pointerId === state.current.id) {\n          var pointerType = e.pointerType || 'mouse';\n          end(pointerType);\n          state.current.id = null;\n          removeGlobalListener(window, 'pointermove', onPointerMove, false);\n          removeGlobalListener(window, 'pointerup', onPointerUp, false);\n          removeGlobalListener(window, 'pointercancel', onPointerUp, false);\n        }\n      };\n\n      moveProps.onPointerDown = function (e) {\n        if (e.button === 0 && state.current.id == null) {\n          start();\n          e.stopPropagation();\n          e.preventDefault();\n          state.current.lastPosition = {\n            pageX: e.pageX,\n            pageY: e.pageY\n          };\n          state.current.id = e.pointerId;\n          addGlobalListener(window, 'pointermove', onPointerMove, false);\n          addGlobalListener(window, 'pointerup', onPointerUp, false);\n          addGlobalListener(window, 'pointercancel', onPointerUp, false);\n        }\n      };\n    }\n\n    var triggerKeyboardMove = function triggerKeyboardMove(deltaX, deltaY) {\n      start();\n      move('keyboard', deltaX, deltaY);\n      end('keyboard');\n    };\n\n    moveProps.onKeyDown = function (e) {\n      switch (e.key) {\n        case 'Left':\n        case 'ArrowLeft':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(-1, 0);\n          break;\n\n        case 'Right':\n        case 'ArrowRight':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(1, 0);\n          break;\n\n        case 'Up':\n        case 'ArrowUp':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(0, -1);\n          break;\n\n        case 'Down':\n        case 'ArrowDown':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(0, 1);\n          break;\n      }\n    };\n\n    return moveProps;\n  }, [state, onMoveStart, onMove, onMoveEnd, addGlobalListener, removeGlobalListener]);\n  return {\n    moveProps: moveProps\n  };\n}\nexport function useScrollWheel(props, ref) {\n  var onScroll = props.onScroll,\n      isDisabled = props.isDisabled;\n  var onScrollHandler = useCallback(function (e) {\n    if (e.ctrlKey) {\n      return;\n    }\n\n    e.preventDefault();\n    e.stopPropagation();\n\n    if (onScroll) {\n      onScroll({\n        deltaX: e.deltaX,\n        deltaY: e.deltaY\n      });\n    }\n  }, [onScroll]);\n  useEvent(ref, 'wheel', isDisabled ? null : onScrollHandler);\n}","map":{"version":3,"sources":["packages/@react-aria/interactions/src/textSelection.ts","packages/@react-aria/interactions/src/utils.ts","packages/@react-aria/interactions/src/context.ts","packages/@react-aria/interactions/src/usePress.ts","packages/@react-aria/interactions/src/Pressable.tsx","packages/@react-aria/interactions/src/PressResponder.tsx","packages/@react-aria/interactions/src/useFocus.ts","packages/@react-aria/interactions/src/useFocusVisible.ts","packages/@react-aria/interactions/src/useFocusWithin.ts","packages/@react-aria/interactions/src/useHover.ts","packages/@react-aria/interactions/src/useInteractOutside.ts","packages/@react-aria/interactions/src/createEventHandler.ts","packages/@react-aria/interactions/src/useKeyboard.ts","packages/@react-aria/interactions/src/useMove.ts","packages/@react-aria/interactions/src/useScrollWheel.ts"],"names":["state","savedUserSelect","document","setTimeout","runAfterTransition","event","PressResponderContext","React","context","useContext","register","props","mergeProps","useSyncRef","isPressed","shouldCancelOnPointerExit","usePressResponderContext","propsRef","useRef","onPress","onPressChange","onPressStart","onPressEnd","onPressUp","isDisabled","useState","ref","ignoreEmulatedMouseEvents","ignoreClickAfterPress","didFirePressStart","activePointerId","target","isOverTarget","pointerType","removeAllGlobalListeners","useGlobalListeners","pressProps","useMemo","triggerPressStart","type","originalEvent","shiftKey","metaKey","ctrlKey","altKey","setPressed","triggerPressEnd","wasPressed","triggerPressUp","cancel","e","createEvent","onKeyDown","isValidKeyboardEvent","addGlobalListener","onKeyUp","onClick","focusWithoutScrolling","isHTMLAnchorLink","shouldPreventDefault","isVirtualPointerEvent","onPointerMove","onPointerUp","onPointerCancel","onMouseUp","touch","getTouchFromEvent","getTouchById","onScroll","currentTarget","useEffect","isPressedProp","element","isContentEditable","role","key","tagName","targetTouches","changedTouches","i","offsetX","point","offsetY","top","right","bottom","left","a","b","rect","pointRect","getPointClientRect","areRectanglesOverlapping","Pressable","children","newRef","child","PressResponder","isRegistered","prevContext","console","focusProps","onFocus","onBlur","currentModality","changeHandlers","hasSetupGlobalListeners","hasEventBeforeFocus","hasBlurredWindowRecently","FOCUS_VISIBLE_INPUT_KEYS","Tab","Escape","handler","isMac","isValidKey","triggerChangeHandlers","focus","HTMLElement","window","setupGlobalFocusEvents","setModality","isTextInput","modality","autoFocus","isFocusVisible","useFocusVisibleListener","setFocusVisible","isFocusVisibleState","isKeyboardFocusEvent","opts","fn","isFocusWithin","focusWithinProps","globalIgnoreEmulatedMouseEvents","hoverCount","setGlobalIgnoreEmulatedMouseEvents","isHovered","triggerHoverEnd","triggerHoverStart","onHoverStart","onHoverChange","setHovered","onHoverEnd","hoverProps","onInteractOutsideStart","stateRef","isPointerDown","onInteractOutside","onPointerDown","isValidEvent","onTouchEnd","ownerDocument","shouldStopPropagation","preventDefault","isDefaultPrevented","stopPropagation","continuePropagation","keyboardProps","onMoveEnd","didMove","lastPosition","id","removeGlobalListener","moveProps","start","move","deltaX","deltaY","onMoveStart","onMove","end","onMouseMove","pageX","pageY","onTouchMove","identifier","triggerKeyboardMove","onScrollHandler","useCallback","useEvent"],"mappings":"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","sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {runAfterTransition} from '@react-aria/utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\ntype State = 'default' | 'disabled' | 'restoring';\n\nlet state: State = 'default';\nlet savedUserSelect = '';\n\nexport function disableTextSelection() {\n  if (state === 'default') {\n    savedUserSelect = document.documentElement.style.webkitUserSelect;\n    document.documentElement.style.webkitUserSelect = 'none';\n  }\n\n  state = 'disabled';\n}\n\nexport function restoreTextSelection() {\n  // If the state is already default, there's nothing to do.\n  // If it is restoring, then there's no need to queue a second restore.\n  if (state !== 'disabled') {\n    return;\n  }\n\n  state = 'restoring';\n\n  // There appears to be a delay on iOS where selection still might occur\n  // after pointer up, so wait a bit before removing user-select.\n  setTimeout(() => {\n    // Wait for any CSS transitions to complete so we don't recompute style\n    // for the whole page in the middle of the animation and cause jank.\n    runAfterTransition(() => {\n      // Avoid race conditions\n      if (state === 'restoring') {\n        if (document.documentElement.style.webkitUserSelect === 'none') {\n          document.documentElement.style.webkitUserSelect = savedUserSelect || '';\n        }\n\n        savedUserSelect = '';\n        state = 'default';\n      }\n    });\n  }, 300);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Original licensing for the following method can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/blob/3c713d513195a53788b3f8bb4b70279d68b15bcc/packages/react-interactions/events/src/dom/shared/index.js#L74-L87\n\n// Keyboards, Assistive Technologies, and element.click() all produce a \"virtual\"\n// click event. This is a method of inferring such clicks. Every browser except\n// IE 11 only sets a zero value of \"detail\" for click events that are \"virtual\".\n// However, IE 11 uses a zero value for all click events. For IE 11 we rely on\n// the quirk that it produces click events that are of type PointerEvent, and\n// where only the \"virtual\" click lacks a pointerType field.\n\nexport function isVirtualClick(event: MouseEvent | PointerEvent): boolean {\n  // JAWS/NVDA with Firefox.\n  if ((event as any).mozInputSource === 0 && event.isTrusted) {\n    return true;\n  }\n\n  return event.detail === 0 && !(event as PointerEvent).pointerType;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {PressProps} from './usePress';\nimport React, {MutableRefObject} from 'react';\n\ninterface IPressResponderContext extends PressProps {\n  register(): void,\n  ref?: MutableRefObject<HTMLElement>\n}\n\nexport const PressResponderContext = React.createContext<IPressResponderContext>(null);\nPressResponderContext.displayName = 'PressResponderContext';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {disableTextSelection, restoreTextSelection} from './textSelection';\nimport {focusWithoutScrolling, mergeProps, useGlobalListeners, useSyncRef} from '@react-aria/utils';\nimport {HTMLAttributes, RefObject, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {isVirtualClick} from './utils';\nimport {PointerType, PressEvents} from '@react-types/shared';\nimport {PressResponderContext} from './context';\n\nexport interface PressProps extends PressEvents {\n  /** Whether the target is in a controlled press state (e.g. an overlay it triggers is open). */\n  isPressed?: boolean,\n  /** Whether the press events should be disabled. */\n  isDisabled?: boolean,\n  /** Whether the target should not receive focus on press. */\n  preventFocusOnPress?: boolean,\n  /**\n   * Whether press events should be canceled when the pointer leaves the target while pressed.\n   * By default, this is `false`, which means if the pointer returns back over the target while\n   * still pressed, onPressStart will be fired again. If set to `true`, the press is canceled\n   * when the pointer leaves the target and onPressStart will not be fired if the pointer returns.\n   */\n  shouldCancelOnPointerExit?: boolean\n}\n\nexport interface PressHookProps extends PressProps {\n  /** A ref to the target element. */\n  ref?: RefObject<HTMLElement>\n}\n\ninterface PressState {\n  isPressed: boolean,\n  ignoreEmulatedMouseEvents: boolean,\n  ignoreClickAfterPress: boolean,\n  didFirePressStart: boolean,\n  activePointerId: any,\n  target: HTMLElement | null,\n  isOverTarget: boolean,\n  pointerType: PointerType,\n  userSelect?: string\n}\n\ninterface EventBase {\n  currentTarget: EventTarget,\n  shiftKey: boolean,\n  ctrlKey: boolean,\n  metaKey: boolean,\n  altKey: boolean\n}\n\nexport interface PressResult {\n  /** Whether the target is currently pressed. */\n  isPressed: boolean,\n  /** Props to spread on the target element. */\n  pressProps: HTMLAttributes<HTMLElement>\n}\n\nfunction usePressResponderContext(props: PressHookProps): PressHookProps {\n  // Consume context from <PressResponder> and merge with props.\n  let context = useContext(PressResponderContext);\n  if (context) {\n    let {register, ...contextProps} = context;\n    props = mergeProps(contextProps, props) as PressHookProps;\n    register();\n  }\n  useSyncRef(context, props.ref);\n\n  return props;\n}\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */\nexport function usePress(props: PressHookProps): PressResult {\n  let {\n    onPress,\n    onPressChange,\n    onPressStart,\n    onPressEnd,\n    onPressUp,\n    isDisabled,\n    isPressed: isPressedProp,\n    preventFocusOnPress,\n    shouldCancelOnPointerExit,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ref: _, // Removing `ref` from `domProps` because TypeScript is dumb,\n    ...domProps\n  } = usePressResponderContext(props);\n  let propsRef = useRef<PressHookProps>(null);\n  propsRef.current = {onPress, onPressChange, onPressStart, onPressEnd, onPressUp, isDisabled, shouldCancelOnPointerExit};\n\n  let [isPressed, setPressed] = useState(false);\n  let ref = useRef<PressState>({\n    isPressed: false,\n    ignoreEmulatedMouseEvents: false,\n    ignoreClickAfterPress: false,\n    didFirePressStart: false,\n    activePointerId: null,\n    target: null,\n    isOverTarget: false,\n    pointerType: null\n  });\n\n  let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\n\n  let pressProps = useMemo(() => {\n    let state = ref.current;\n    let triggerPressStart = (originalEvent: EventBase, pointerType: PointerType) => {\n      let {onPressStart, onPressChange, isDisabled} = propsRef.current;\n      if (isDisabled || state.didFirePressStart) {\n        return;\n      }\n\n      if (onPressStart) {\n        onPressStart({\n          type: 'pressstart',\n          pointerType,\n          target: originalEvent.currentTarget as HTMLElement,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n\n      if (onPressChange) {\n        onPressChange(true);\n      }\n\n      state.didFirePressStart = true;\n      setPressed(true);\n    };\n\n    let triggerPressEnd = (originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n      let {onPressEnd, onPressChange, onPress, isDisabled} = propsRef.current;\n      if (!state.didFirePressStart) {\n        return;\n      }\n\n      state.ignoreClickAfterPress = true;\n      state.didFirePressStart = false;\n\n      if (onPressEnd) {\n        onPressEnd({\n          type: 'pressend',\n          pointerType,\n          target: originalEvent.currentTarget as HTMLElement,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n\n      if (onPressChange) {\n        onPressChange(false);\n      }\n\n      setPressed(false);\n\n      if (onPress && wasPressed && !isDisabled) {\n        onPress({\n          type: 'press',\n          pointerType,\n          target: originalEvent.currentTarget as HTMLElement,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n    };\n\n    let triggerPressUp = (originalEvent: EventBase, pointerType: PointerType) => {\n      let {onPressUp, isDisabled} = propsRef.current;\n      if (isDisabled) {\n        return;\n      }\n\n      if (onPressUp) {\n        onPressUp({\n          type: 'pressup',\n          pointerType,\n          target: originalEvent.currentTarget as HTMLElement,\n          shiftKey: originalEvent.shiftKey,\n          metaKey: originalEvent.metaKey,\n          ctrlKey: originalEvent.ctrlKey,\n          altKey: originalEvent.altKey\n        });\n      }\n    };\n\n    let cancel = (e: EventBase) => {\n      if (state.isPressed) {\n        if (state.isOverTarget) {\n          triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n        }\n        state.isPressed = false;\n        state.isOverTarget = false;\n        state.activePointerId = null;\n        state.pointerType = null;\n        removeAllGlobalListeners();\n        restoreTextSelection();\n      }\n    };\n\n    let pressProps: HTMLAttributes<HTMLElement> = {\n      onKeyDown(e) {\n        if (isValidKeyboardEvent(e.nativeEvent) && e.currentTarget.contains(e.target as HTMLElement)) {\n          e.preventDefault();\n          e.stopPropagation();\n\n          // If the event is repeating, it may have started on a different element\n          // after which focus moved to the current element. Ignore these events and\n          // only handle the first key down event.\n          if (!state.isPressed && !e.repeat) {\n            state.target = e.currentTarget as HTMLElement;\n            state.isPressed = true;\n            triggerPressStart(e, 'keyboard');\n\n            // Focus may move before the key up event, so register the event on the document\n            // instead of the same element where the key down event occurred.\n            addGlobalListener(document, 'keyup', onKeyUp, false);\n          }\n        }\n      },\n      onKeyUp(e) {\n        if (isValidKeyboardEvent(e.nativeEvent) && !e.repeat && e.currentTarget.contains(e.target as HTMLElement)) {\n          triggerPressUp(createEvent(state.target, e), 'keyboard');\n        }\n      },\n      onClick(e) {\n        if (e && !e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        if (e && e.button === 0) {\n          e.stopPropagation();\n          if (isDisabled) {\n            e.preventDefault();\n          }\n\n          // If triggered from a screen reader or by using element.click(),\n          // trigger as if it were a keyboard click.\n          if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && isVirtualClick(e.nativeEvent)) {\n            // Ensure the element receives focus (VoiceOver on iOS does not do this)\n            if (!isDisabled && !preventFocusOnPress) {\n              focusWithoutScrolling(e.currentTarget);\n            }\n\n            triggerPressStart(e, 'virtual');\n            triggerPressUp(e, 'virtual');\n            triggerPressEnd(e, 'virtual');\n          }\n\n          state.ignoreEmulatedMouseEvents = false;\n          state.ignoreClickAfterPress = false;\n        }\n      }\n    };\n\n    let onKeyUp = (e: KeyboardEvent) => {\n      if (state.isPressed && isValidKeyboardEvent(e)) {\n        e.preventDefault();\n        e.stopPropagation();\n\n        state.isPressed = false;\n        triggerPressEnd(createEvent(state.target, e), 'keyboard', e.target === state.target);\n        removeAllGlobalListeners();\n\n        // If the target is a link, trigger the click method to open the URL,\n        // but defer triggering pressEnd until onClick event handler.\n        if (e.target === state.target && isHTMLAnchorLink(state.target) || state.target.getAttribute('role') === 'link') {\n          state.target.click();\n        }\n      }\n    };\n\n    if (typeof PointerEvent !== 'undefined') {\n      pressProps.onPointerDown = (e) => {\n        // Only handle left clicks, and ignore events that bubbled through portals.\n        if (e.button !== 0 || !e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        // Due to browser inconsistencies, especially on mobile browsers, we prevent\n        // default on pointer down and handle focusing the pressable element ourselves.\n        if (shouldPreventDefault(e.target as Element)) {\n          e.preventDefault();\n        }\n\n        // iOS safari fires pointer events from VoiceOver (but only when outside an iframe...)\n        // https://bugs.webkit.org/show_bug.cgi?id=222627\n        state.pointerType = isVirtualPointerEvent(e.nativeEvent) ? 'virtual' : e.pointerType;\n\n        e.stopPropagation();\n        if (!state.isPressed) {\n          state.isPressed = true;\n          state.isOverTarget = true;\n          state.activePointerId = e.pointerId;\n          state.target = e.currentTarget;\n\n          if (!isDisabled && !preventFocusOnPress) {\n            focusWithoutScrolling(e.currentTarget);\n          }\n\n          disableTextSelection();\n          triggerPressStart(e, state.pointerType);\n\n          addGlobalListener(document, 'pointermove', onPointerMove, false);\n          addGlobalListener(document, 'pointerup', onPointerUp, false);\n          addGlobalListener(document, 'pointercancel', onPointerCancel, false);\n        }\n      };\n\n      pressProps.onMouseDown = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        if (e.button === 0) {\n          // Chrome and Firefox on touch Windows devices require mouse down events\n          // to be canceled in addition to pointer events, or an extra asynchronous\n          // focus event will be fired.\n          if (shouldPreventDefault(e.target as Element)) {\n            e.preventDefault();\n          }\n\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onPointerUp = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        // Only handle left clicks\n        // Safari on iOS sometimes fires pointerup events, even\n        // when the touch isn't over the target, so double check.\n        if (e.button === 0 && isOverTarget(e, e.currentTarget)) {\n          triggerPressUp(e, state.pointerType || (isVirtualPointerEvent(e.nativeEvent) ? 'virtual' : e.pointerType));\n        }\n      };\n\n      // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n      // Use pointer move events instead to implement our own hit testing.\n      // See https://bugs.webkit.org/show_bug.cgi?id=199803\n      let onPointerMove = (e: PointerEvent) => {\n        if (e.pointerId !== state.activePointerId) {\n          return;\n        }\n\n        if (isOverTarget(e, state.target)) {\n          if (!state.isOverTarget) {\n            state.isOverTarget = true;\n            triggerPressStart(createEvent(state.target, e), state.pointerType);\n          }\n        } else if (state.isOverTarget) {\n          state.isOverTarget = false;\n          triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n          if (propsRef.current.shouldCancelOnPointerExit) {\n            cancel(e);\n          }\n        }\n      };\n\n      let onPointerUp = (e: PointerEvent) => {\n        if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0) {\n          if (isOverTarget(e, state.target)) {\n            triggerPressEnd(createEvent(state.target, e), state.pointerType);\n          } else if (state.isOverTarget) {\n            triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n          }\n\n          state.isPressed = false;\n          state.isOverTarget = false;\n          state.activePointerId = null;\n          state.pointerType = null;\n          removeAllGlobalListeners();\n          restoreTextSelection();\n        }\n      };\n\n      let onPointerCancel = (e: PointerEvent) => {\n        cancel(e);\n      };\n\n      pressProps.onDragStart = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n        cancel(e);\n      };\n    } else {\n      pressProps.onMouseDown = (e) => {\n        // Only handle left clicks\n        if (e.button !== 0 || !e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        // Due to browser inconsistencies, especially on mobile browsers, we prevent\n        // default on mouse down and handle focusing the pressable element ourselves.\n        if (shouldPreventDefault(e.target as Element)) {\n          e.preventDefault();\n        }\n\n        e.stopPropagation();\n        if (state.ignoreEmulatedMouseEvents) {\n          return;\n        }\n\n        state.isPressed = true;\n        state.isOverTarget = true;\n        state.target = e.currentTarget;\n        state.pointerType = isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n        if (!isDisabled && !preventFocusOnPress) {\n          focusWithoutScrolling(e.currentTarget);\n        }\n\n        triggerPressStart(e, state.pointerType);\n\n        addGlobalListener(document, 'mouseup', onMouseUp, false);\n      };\n\n      pressProps.onMouseEnter = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents) {\n          state.isOverTarget = true;\n          triggerPressStart(e, state.pointerType);\n        }\n      };\n\n      pressProps.onMouseLeave = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents) {\n          state.isOverTarget = false;\n          triggerPressEnd(e, state.pointerType, false);\n          if (propsRef.current.shouldCancelOnPointerExit) {\n            cancel(e);\n          }\n        }\n      };\n\n      pressProps.onMouseUp = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n          triggerPressUp(e, state.pointerType);\n        }\n      };\n\n      let onMouseUp = (e: MouseEvent) => {\n        // Only handle left clicks\n        if (e.button !== 0) {\n          return;\n        }\n\n        state.isPressed = false;\n        removeAllGlobalListeners();\n\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n          return;\n        }\n\n        if (isOverTarget(e, state.target)) {\n          triggerPressEnd(createEvent(state.target, e), state.pointerType);\n        } else if (state.isOverTarget) {\n          triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n        }\n\n        state.isOverTarget = false;\n      };\n\n      pressProps.onTouchStart = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        e.stopPropagation();\n        let touch = getTouchFromEvent(e.nativeEvent);\n        if (!touch) {\n          return;\n        }\n        state.activePointerId = touch.identifier;\n        state.ignoreEmulatedMouseEvents = true;\n        state.isOverTarget = true;\n        state.isPressed = true;\n        state.target = e.currentTarget;\n        state.pointerType = 'touch';\n\n        // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n        // on the emulated mouse event and handle focusing the pressable element ourselves.\n        if (!isDisabled && !preventFocusOnPress) {\n          focusWithoutScrolling(e.currentTarget);\n        }\n\n        disableTextSelection();\n        triggerPressStart(e, state.pointerType);\n\n        addGlobalListener(window, 'scroll', onScroll, true);\n      };\n\n      pressProps.onTouchMove = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (!state.isPressed) {\n          return;\n        }\n\n        let touch = getTouchById(e.nativeEvent, state.activePointerId);\n        if (touch && isOverTarget(touch, e.currentTarget)) {\n          if (!state.isOverTarget) {\n            state.isOverTarget = true;\n            triggerPressStart(e, state.pointerType);\n          }\n        } else if (state.isOverTarget) {\n          state.isOverTarget = false;\n          triggerPressEnd(e, state.pointerType, false);\n          if (propsRef.current.shouldCancelOnPointerExit) {\n            cancel(e);\n          }\n        }\n      };\n\n      pressProps.onTouchEnd = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (!state.isPressed) {\n          return;\n        }\n\n        let touch = getTouchById(e.nativeEvent, state.activePointerId);\n        if (touch && isOverTarget(touch, e.currentTarget)) {\n          triggerPressUp(e, state.pointerType);\n          triggerPressEnd(e, state.pointerType);\n        } else if (state.isOverTarget) {\n          triggerPressEnd(e, state.pointerType, false);\n        }\n\n        state.isPressed = false;\n        state.activePointerId = null;\n        state.isOverTarget = false;\n        state.ignoreEmulatedMouseEvents = true;\n        restoreTextSelection();\n        removeAllGlobalListeners();\n      };\n\n      pressProps.onTouchCancel = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (state.isPressed) {\n          cancel(e);\n        }\n      };\n\n      let onScroll = (e: Event) => {\n        if (state.isPressed && (e.target as HTMLElement).contains(state.target)) {\n          cancel({\n            currentTarget: state.target,\n            shiftKey: false,\n            ctrlKey: false,\n            metaKey: false,\n            altKey: false\n          });\n        }\n      };\n\n      pressProps.onDragStart = (e) => {\n        if (!e.currentTarget.contains(e.target as HTMLElement)) {\n          return;\n        }\n\n        cancel(e);\n      };\n    }\n\n    return pressProps;\n  }, [addGlobalListener, isDisabled, preventFocusOnPress, removeAllGlobalListeners]);\n\n  // Remove user-select: none in case component unmounts immediately after pressStart\n  // eslint-disable-next-line arrow-body-style\n  useEffect(() => {\n    return () => restoreTextSelection();\n  }, []);\n\n  return {\n    isPressed: isPressedProp || isPressed,\n    pressProps: mergeProps(domProps, pressProps)\n  };\n}\n\nfunction isHTMLAnchorLink(target: HTMLElement): boolean {\n  return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent): boolean {\n  const {key, target} = event;\n  const element = target as HTMLElement;\n  const {tagName, isContentEditable} = element;\n  const role = element.getAttribute('role');\n  // Accessibility for keyboards. Space and Enter only.\n  // \"Spacebar\" is for IE 11\n  return (\n    (key === 'Enter' || key === ' ' || key === 'Spacebar') &&\n    (tagName !== 'INPUT' &&\n      tagName !== 'TEXTAREA' &&\n      isContentEditable !== true) &&\n    // A link with a valid href should be handled natively,\n    // unless it also has role='button' and was triggered using Space.\n    (!isHTMLAnchorLink(element) || (role === 'button' && key !== 'Enter')) &&\n    // An element with role='link' should only trigger with Enter key\n    !(role === 'link' && key !== 'Enter')\n  );\n}\n\nfunction getTouchFromEvent(event: TouchEvent): Touch | null {\n  const {targetTouches} = event;\n  if (targetTouches.length > 0) {\n    return targetTouches[0];\n  }\n  return null;\n}\n\nfunction getTouchById(\n  event: TouchEvent,\n  pointerId: null | number\n): null | Touch {\n  const changedTouches = event.changedTouches;\n  for (let i = 0; i < changedTouches.length; i++) {\n    const touch = changedTouches[i];\n    if (touch.identifier === pointerId) {\n      return touch;\n    }\n  }\n  return null;\n}\n\nfunction createEvent(target: HTMLElement, e: EventBase): EventBase {\n  return {\n    currentTarget: target,\n    shiftKey: e.shiftKey,\n    ctrlKey: e.ctrlKey,\n    metaKey: e.metaKey,\n    altKey: e.altKey\n  };\n}\n\ninterface Rect {\n  top: number,\n  right: number,\n  bottom: number,\n  left: number\n}\n\ninterface EventPoint {\n  clientX: number,\n  clientY: number,\n  width?: number,\n  height?: number,\n  radiusX?: number,\n  radiusY?: number\n}\n\nfunction getPointClientRect(point: EventPoint): Rect {\n  let offsetX = (point.width / 2) || point.radiusX || 0;\n  let offsetY = (point.height / 2) || point.radiusY || 0;\n\n  return {\n    top: point.clientY - offsetY,\n    right: point.clientX + offsetX,\n    bottom: point.clientY + offsetY,\n    left: point.clientX - offsetX\n  };\n}\n\nfunction areRectanglesOverlapping(a: Rect, b: Rect) {\n  // check if they cannot overlap on x axis\n  if (a.left > b.right || b.left > a.right) {\n    return false;\n  }\n  // check if they cannot overlap on y axis\n  if (a.top > b.bottom || b.top > a.bottom) {\n    return false;\n  }\n  return true;\n}\n\nfunction isOverTarget(point: EventPoint, target: HTMLElement) {\n  let rect = target.getBoundingClientRect();\n  let pointRect = getPointClientRect(point);\n  return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefault(target: Element) {\n  // We cannot prevent default if the target is inside a draggable element.\n  return !target.closest('[draggable=\"true\"]');\n}\n\nfunction isVirtualPointerEvent(event: PointerEvent) {\n  // If the pointer size is zero, then we assume it's from a screen reader.\n  return event.width === 0 && event.height === 0;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {mergeProps} from '@react-aria/utils';\nimport {PressProps, usePress} from './usePress';\nimport React, {HTMLAttributes, ReactElement, RefObject, useRef} from 'react';\n\ninterface PressableProps extends PressProps {\n  children: ReactElement<HTMLAttributes<HTMLElement>, string>\n}\n\nexport const Pressable = React.forwardRef(({children, ...props}: PressableProps, ref: RefObject<HTMLElement>) => {\n  let newRef = useRef();\n  ref = ref ?? newRef;\n  let {pressProps} = usePress({...props, ref});\n  let child = React.Children.only(children);\n  return React.cloneElement(\n    child,\n    // @ts-ignore\n    {ref, ...mergeProps(child.props, pressProps)}\n  );\n});\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {mergeProps, useSyncRef} from '@react-aria/utils';\nimport {PressProps} from './usePress';\nimport {PressResponderContext} from './context';\nimport React, {ReactNode, RefObject, useContext, useEffect, useRef} from 'react';\n\ninterface PressResponderProps extends PressProps {\n  children: ReactNode\n}\n\nexport const PressResponder = React.forwardRef(({children, ...props}: PressResponderProps, ref: RefObject<HTMLElement>) => {\n  let isRegistered = useRef(false);\n  let prevContext = useContext(PressResponderContext);\n  let context = mergeProps(prevContext || {}, {\n    ...props,\n    ref: ref || prevContext?.ref,\n    register() {\n      isRegistered.current = true;\n      if (prevContext) {\n        prevContext.register();\n      }\n    }\n  });\n\n  useSyncRef(prevContext, ref);\n\n  useEffect(() => {\n    if (!isRegistered.current) {\n      console.warn(\n        'A PressResponder was rendered without a pressable child. ' +\n        'Either call the usePress hook, or wrap your DOM node with <Pressable> component.'\n      );\n    }\n  }, []);\n\n  return (\n    <PressResponderContext.Provider value={context}>\n      {children}\n    </PressResponderContext.Provider>\n  );\n});\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {FocusEvent, HTMLAttributes} from 'react';\nimport {FocusEvents} from '@react-types/shared';\n\ninterface FocusProps extends FocusEvents {\n  /** Whether the focus events should be disabled. */\n  isDisabled?: boolean\n}\n\ninterface FocusResult {\n  /** Props to spread onto the target element. */\n  focusProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */\nexport function useFocus(props: FocusProps): FocusResult {\n  if (props.isDisabled) {\n    return {focusProps: {}};\n  }\n\n  let onFocus, onBlur;\n  if (props.onFocus || props.onFocusChange) {\n    onFocus = (e: FocusEvent) => {\n      if (e.target === e.currentTarget) {\n        if (props.onFocus) {\n          props.onFocus(e);\n        }\n\n        if (props.onFocusChange) {\n          props.onFocusChange(true);\n        }\n      }\n    };\n  }\n\n  if (props.onBlur || props.onFocusChange) {\n    onBlur = (e: FocusEvent) => {\n      if (e.target === e.currentTarget) {\n        if (props.onBlur) {\n          props.onBlur(e);\n        }\n\n        if (props.onFocusChange) {\n          props.onFocusChange(false);\n        }\n      }\n    };\n  }\n\n  return {\n    focusProps: {\n      onFocus,\n      onBlur\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {isMac} from '@react-aria/utils';\nimport {isVirtualClick} from './utils';\nimport {useEffect, useState} from 'react';\n\ntype Modality = 'keyboard' | 'pointer' | 'virtual';\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\ntype FocusVisibleHandler = (isFocusVisible: boolean) => void;\ninterface FocusVisibleProps {\n  /** Whether the element is a text input. */\n  isTextInput?: boolean,\n  /** Whether the element will be auto focused. */\n  autoFocus?: boolean\n}\n\ninterface FocusVisibleResult {\n  /** Whether keyboard focus is visible globally. */\n  isFocusVisible: boolean\n}\n\nlet currentModality = null;\nlet changeHandlers = new Set<Handler>();\nlet hasSetupGlobalListeners = false;\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n\n// Only Tab or Esc keys will make focus visible on text input elements\nconst FOCUS_VISIBLE_INPUT_KEYS = {\n  Tab: true,\n  Escape: true\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n  for (let handler of changeHandlers) {\n    handler(modality, e);\n  }\n}\n\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */\nfunction isValidKey(e: KeyboardEvent) {\n  // Control and Shift keys trigger when navigating back to the tab with keyboard.\n  return !(e.metaKey || (!isMac() && e.altKey) || e.ctrlKey || e.type === 'keyup' && (e.key === 'Control' || e.key === 'Shift'));\n}\n\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n  hasEventBeforeFocus = true;\n  if (isValidKey(e)) {\n    currentModality = 'keyboard';\n    triggerChangeHandlers('keyboard', e);\n  }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n  currentModality = 'pointer';\n  if (e.type === 'mousedown' || e.type === 'pointerdown') {\n    hasEventBeforeFocus = true;\n    triggerChangeHandlers('pointer', e);\n  }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n  if (isVirtualClick(e)) {\n    hasEventBeforeFocus = true;\n    currentModality = 'virtual';\n  }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n  // Firefox fires two extra focus events when the user first clicks into an iframe:\n  // first on the window, then on the document. We ignore these events so they don't\n  // cause keyboard focus rings to appear.\n  if (e.target === window || e.target === document) {\n    return;\n  }\n\n  // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n  // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n  if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n    currentModality = 'virtual';\n    triggerChangeHandlers('virtual', e);\n  }\n\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n  // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n  // for example, since a subsequent focus event won't be fired.\n  hasEventBeforeFocus = false;\n  hasBlurredWindowRecently = true;\n}\n\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */\nfunction setupGlobalFocusEvents() {\n  if (typeof window === 'undefined' || hasSetupGlobalListeners) {\n    return;\n  }\n\n  // Programmatic focus() calls shouldn't affect the current input modality.\n  // However, we need to detect other cases when a focus event occurs without\n  // a preceding user event (e.g. screen reader focus). Overriding the focus\n  // method on HTMLElement.prototype is a bit hacky, but works.\n  let focus = HTMLElement.prototype.focus;\n  HTMLElement.prototype.focus = function () {\n    hasEventBeforeFocus = true;\n    focus.apply(this, arguments);\n  };\n\n  document.addEventListener('keydown', handleKeyboardEvent, true);\n  document.addEventListener('keyup', handleKeyboardEvent, true);\n  document.addEventListener('click', handleClickEvent, true);\n\n  // Register focus events on the window so they are sure to happen\n  // before React's event listeners (registered on the document).\n  window.addEventListener('focus', handleFocusEvent, true);\n  window.addEventListener('blur', handleWindowBlur, false);\n\n  if (typeof PointerEvent !== 'undefined') {\n    document.addEventListener('pointerdown', handlePointerEvent, true);\n    document.addEventListener('pointermove', handlePointerEvent, true);\n    document.addEventListener('pointerup', handlePointerEvent, true);\n  } else {\n    document.addEventListener('mousedown', handlePointerEvent, true);\n    document.addEventListener('mousemove', handlePointerEvent, true);\n    document.addEventListener('mouseup', handlePointerEvent, true);\n  }\n\n  hasSetupGlobalListeners = true;\n}\n\nif (typeof document !== 'undefined') {\n  if (document.readyState !== 'loading') {\n    setupGlobalFocusEvents();\n  } else {\n    document.addEventListener('DOMContentLoaded', setupGlobalFocusEvents);\n  }\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n  return currentModality !== 'pointer';\n}\n\nexport function getInteractionModality(): Modality {\n  return currentModality;\n}\n\nexport function setInteractionModality(modality: Modality) {\n  currentModality = modality;\n  triggerChangeHandlers(modality, null);\n}\n\n/**\n * Keeps state of the current modality.\n */\nexport function useInteractionModality(): Modality {\n  setupGlobalFocusEvents();\n\n  let [modality, setModality] = useState(currentModality);\n  useEffect(() => {\n    let handler = () => {\n      setModality(currentModality);\n    };\n\n    changeHandlers.add(handler);\n    return () => {\n      changeHandlers.delete(handler);\n    };\n  }, []);\n\n  return modality;\n}\n\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent) {\n  return !(isTextInput && modality === 'keyboard' && e instanceof KeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\n\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */\nexport function useFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n  let {isTextInput, autoFocus} = props;\n  let [isFocusVisibleState, setFocusVisible] = useState(autoFocus || isFocusVisible());\n  useFocusVisibleListener((isFocusVisible) => {\n    setFocusVisible(isFocusVisible);\n  }, [isTextInput], {isTextInput});\n\n  return {isFocusVisible: isFocusVisibleState};\n}\n\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */\nexport function useFocusVisibleListener(fn: FocusVisibleHandler, deps: ReadonlyArray<any>, opts?: {isTextInput?: boolean}): void {\n  setupGlobalFocusEvents();\n\n  useEffect(() => {\n    let handler = (modality: Modality, e: HandlerEvent) => {\n      if (!isKeyboardFocusEvent(opts?.isTextInput, modality, e)) {\n        return;\n      }\n      fn(isFocusVisible());\n    };\n    changeHandlers.add(handler);\n    return () => changeHandlers.delete(handler);\n  }, deps);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {FocusEvent, HTMLAttributes, useRef} from 'react';\n\ninterface FocusWithinProps {\n  /** Whether the focus within events should be disabled. */\n  isDisabled?: boolean,\n  /** Handler that is called when the target element or a descendant receives focus. */\n  onFocusWithin?: (e: FocusEvent) => void,\n  /** Handler that is called when the target element and all descendants lose focus. */\n  onBlurWithin?: (e: FocusEvent) => void,\n  /** Handler that is called when the the focus within state changes. */\n  onFocusWithinChange?: (isFocusWithin: boolean) => void\n}\n\ninterface FocusWithinResult {\n  /** Props to spread onto the target element. */\n  focusWithinProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Handles focus events for the target and its descendants.\n */\nexport function useFocusWithin(props: FocusWithinProps): FocusWithinResult {\n  let state = useRef({\n    isFocusWithin: false\n  }).current;\n\n  if (props.isDisabled) {\n    return {focusWithinProps: {}};\n  }\n\n  let onFocus = (e: FocusEvent) => {\n    if (!state.isFocusWithin) {\n      if (props.onFocusWithin) {\n        props.onFocusWithin(e);\n      }\n\n      if (props.onFocusWithinChange) {\n        props.onFocusWithinChange(true);\n      }\n\n      state.isFocusWithin = true;\n    }\n  };\n\n  let onBlur = (e: FocusEvent) => {\n    // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n    // when moving focus inside the element. Only trigger if the currentTarget doesn't\n    // include the relatedTarget (where focus is moving).\n    if (state.isFocusWithin && !e.currentTarget.contains(e.relatedTarget as HTMLElement)) {\n      if (props.onBlurWithin) {\n        props.onBlurWithin(e);\n      }\n\n      if (props.onFocusWithinChange) {\n        props.onFocusWithinChange(false);\n      }\n\n      state.isFocusWithin = false;\n    }\n  };\n\n  return {\n    focusWithinProps: {\n      onFocus: onFocus,\n      onBlur: onBlur\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {HoverEvents} from '@react-types/shared';\nimport {HTMLAttributes, useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface HoverProps extends HoverEvents {\n  /** Whether the hover events should be disabled. */\n  isDisabled?: boolean\n}\n\ninterface HoverResult {\n  /** Props to spread on the target element. */\n  hoverProps: HTMLAttributes<HTMLElement>,\n  isHovered: boolean\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n  globalIgnoreEmulatedMouseEvents = true;\n\n  // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n  // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n  // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n  // the distant future because a user previously touched the element.\n  setTimeout(() => {\n    globalIgnoreEmulatedMouseEvents = false;\n  }, 50);\n}\n\nfunction handleGlobalPointerEvent(e) {\n  if (e.pointerType === 'touch') {\n    setGlobalIgnoreEmulatedMouseEvents();\n  }\n}\n\nfunction setupGlobalTouchEvents() {\n  if (typeof document === 'undefined') {\n    return;\n  }\n\n  if (typeof PointerEvent !== 'undefined') {\n    document.addEventListener('pointerup', handleGlobalPointerEvent);\n  } else {\n    document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n  }\n\n  hoverCount++;\n  return () => {\n    hoverCount--;\n    if (hoverCount > 0) {\n      return;\n    }\n\n    if (typeof PointerEvent !== 'undefined') {\n      document.removeEventListener('pointerup', handleGlobalPointerEvent);\n    } else {\n      document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n    }\n  };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps): HoverResult {\n  let {\n    onHoverStart,\n    onHoverChange,\n    onHoverEnd,\n    isDisabled\n  } = props;\n\n  let [isHovered, setHovered] = useState(false);\n  let state = useRef({\n    isHovered: false,\n    ignoreEmulatedMouseEvents: false,\n    pointerType: '',\n    target: null\n  }).current;\n\n  useEffect(setupGlobalTouchEvents, []);\n\n  let {hoverProps, triggerHoverEnd} = useMemo(() => {\n    let triggerHoverStart = (event, pointerType) => {\n      state.pointerType = pointerType;\n      if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) {\n        return;\n      }\n\n      state.isHovered = true;\n      let target = event.target;\n      state.target = target;\n\n      if (onHoverStart) {\n        onHoverStart({\n          type: 'hoverstart',\n          target,\n          pointerType\n        });\n      }\n\n      if (onHoverChange) {\n        onHoverChange(true);\n      }\n\n      setHovered(true);\n    };\n\n    let triggerHoverEnd = (event, pointerType) => {\n      state.pointerType = '';\n      state.target = null;\n\n      if (pointerType === 'touch' || !state.isHovered) {\n        return;\n      }\n\n      state.isHovered = false;\n      let target = event.target;\n      if (onHoverEnd) {\n        onHoverEnd({\n          type: 'hoverend',\n          target,\n          pointerType\n        });\n      }\n\n      if (onHoverChange) {\n        onHoverChange(false);\n      }\n\n      setHovered(false);\n    };\n\n    let hoverProps: HTMLAttributes<HTMLElement> = {};\n\n    if (typeof PointerEvent !== 'undefined') {\n      hoverProps.onPointerEnter = (e) => {\n        if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') {\n          return;\n        }\n\n        triggerHoverStart(e, e.pointerType);\n      };\n\n      hoverProps.onPointerLeave = (e) => {\n        if (!isDisabled && e.currentTarget.contains(e.target as HTMLElement)) {\n          triggerHoverEnd(e, e.pointerType);\n        }\n      };\n    } else {\n      hoverProps.onTouchStart = () => {\n        state.ignoreEmulatedMouseEvents = true;\n      };\n\n      hoverProps.onMouseEnter = (e) => {\n        if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) {\n          triggerHoverStart(e, 'mouse');\n        }\n\n        state.ignoreEmulatedMouseEvents = false;\n      };\n\n      hoverProps.onMouseLeave = (e) => {\n        if (!isDisabled && e.currentTarget.contains(e.target as HTMLElement)) {\n          triggerHoverEnd(e, 'mouse');\n        }\n      };\n    }\n    return {hoverProps, triggerHoverEnd};\n  }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state]);\n\n  useEffect(() => {\n    // Call the triggerHoverEnd as soon as isDisabled changes to true\n    // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n    if (isDisabled) {\n      triggerHoverEnd({target: state.target}, state.pointerType);\n    }\n  }, [isDisabled]);\n\n  return {\n    hoverProps,\n    isHovered\n  };\n}\n\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {RefObject, SyntheticEvent, useEffect, useRef} from 'react';\n\ninterface InteractOutsideProps {\n  ref: RefObject<Element>,\n  onInteractOutside?: (e: SyntheticEvent) => void,\n  onInteractOutsideStart?: (e: SyntheticEvent) => void,\n  /** Whether the interact outside events should be disabled. */\n  isDisabled?: boolean\n}\n\n/**\n * Example, used in components like Dialogs and Popovers so they can close\n * when a user clicks outside them.\n */\nexport function useInteractOutside(props: InteractOutsideProps) {\n  let {ref, onInteractOutside, isDisabled, onInteractOutsideStart} = props;\n  let stateRef = useRef({\n    isPointerDown: false,\n    ignoreEmulatedMouseEvents: false,\n    onInteractOutside,\n    onInteractOutsideStart\n  });\n  let state = stateRef.current;\n  state.onInteractOutside = onInteractOutside;\n  state.onInteractOutsideStart = onInteractOutsideStart;\n\n  useEffect(() => {\n    if (isDisabled) {\n      return;\n    }\n\n    let onPointerDown = (e) => {\n      if (isValidEvent(e, ref) && state.onInteractOutside) {\n        if (state.onInteractOutsideStart) {\n          state.onInteractOutsideStart(e);\n        }\n        state.isPointerDown = true;\n      }\n    };\n\n    // Use pointer events if available. Otherwise, fall back to mouse and touch events.\n    if (typeof PointerEvent !== 'undefined') {\n      let onPointerUp = (e) => {\n        if (state.isPointerDown && state.onInteractOutside && isValidEvent(e, ref)) {\n          state.isPointerDown = false;\n          state.onInteractOutside(e);\n        }\n      };\n\n      // changing these to capture phase fixed combobox\n      document.addEventListener('pointerdown', onPointerDown, true);\n      document.addEventListener('pointerup', onPointerUp, true);\n\n      return () => {\n        document.removeEventListener('pointerdown', onPointerDown, true);\n        document.removeEventListener('pointerup', onPointerUp, true);\n      };\n    } else {\n      let onMouseUp = (e) => {\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n        } else if (state.isPointerDown && state.onInteractOutside && isValidEvent(e, ref)) {\n          state.isPointerDown = false;\n          state.onInteractOutside(e);\n        }\n      };\n\n      let onTouchEnd = (e) => {\n        state.ignoreEmulatedMouseEvents = true;\n        if (state.onInteractOutside && state.isPointerDown && isValidEvent(e, ref)) {\n          state.isPointerDown = false;\n          state.onInteractOutside(e);\n        }\n      };\n\n      document.addEventListener('mousedown', onPointerDown, true);\n      document.addEventListener('mouseup', onMouseUp, true);\n      document.addEventListener('touchstart', onPointerDown, true);\n      document.addEventListener('touchend', onTouchEnd, true);\n\n      return () => {\n        document.removeEventListener('mousedown', onPointerDown, true);\n        document.removeEventListener('mouseup', onMouseUp, true);\n        document.removeEventListener('touchstart', onPointerDown, true);\n        document.removeEventListener('touchend', onTouchEnd, true);\n      };\n    }\n  }, [ref, state, isDisabled]);\n}\n\nfunction isValidEvent(event, ref) {\n  if (event.button > 0) {\n    return false;\n  }\n\n  // if the event target is no longer in the document\n  if (event.target) {\n    const ownerDocument = event.target.ownerDocument;\n    if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) {\n      return false;\n    }\n  }\n\n  return ref.current && !ref.current.contains(event.target);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BaseEvent} from '@react-types/shared';\nimport {SyntheticEvent} from 'react';\n\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */\nexport function createEventHandler<T extends SyntheticEvent>(handler: (e: BaseEvent<T>) => void): (e: T) => void {\n  if (!handler) {\n    return;\n  }\n\n  let shouldStopPropagation = true;\n  return (e: T) => {\n    let event: BaseEvent<T> = {\n      ...e,\n      preventDefault() {\n        e.preventDefault();\n      },\n      isDefaultPrevented() {\n        return e.isDefaultPrevented();\n      },\n      stopPropagation() {\n        console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n      },\n      continuePropagation() {\n        shouldStopPropagation = false;\n      }\n    };\n\n    handler(event);\n\n    if (shouldStopPropagation) {\n      e.stopPropagation();\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {createEventHandler} from './createEventHandler';\nimport {HTMLAttributes} from 'react';\nimport {KeyboardEvents} from '@react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n  /** Whether the keyboard events should be disabled. */\n  isDisabled?: boolean\n}\n\ninterface KeyboardResult {\n  /** Props to spread onto the target element. */\n  keyboardProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Handles keyboard interactions for a focusable element.\n */\nexport function useKeyboard(props: KeyboardProps): KeyboardResult {\n  return {\n    keyboardProps: props.isDisabled ? {} : {\n      onKeyDown: createEventHandler(props.onKeyDown),\n      onKeyUp: createEventHandler(props.onKeyUp)\n    }\n  };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {disableTextSelection, restoreTextSelection}  from './textSelection';\nimport {MoveEvents, PointerType} from '@react-types/shared';\nimport React, {HTMLAttributes, useMemo, useRef} from 'react';\nimport {useGlobalListeners} from '@react-aria/utils';\n\ninterface MoveResult {\n  /** Props to spread on the target element. */\n  moveProps: HTMLAttributes<HTMLElement>\n}\n\n/**\n * Handles move interactions across mouse, touch, and keyboard, including dragging with\n * the mouse or touch, and using the arrow keys. Normalizes behavior across browsers and\n * platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useMove(props: MoveEvents): MoveResult {\n  let {onMoveStart, onMove, onMoveEnd} = props;\n\n  let state = useRef<{\n    didMove: boolean,\n    lastPosition: {pageX: number, pageY: number} | null,\n    id: number | null\n  }>({didMove: false, lastPosition: null, id: null});\n\n  let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n  let moveProps = useMemo(() => {\n    let moveProps: HTMLAttributes<HTMLElement> = {};\n\n    let start = () => {\n      disableTextSelection();\n      state.current.didMove = false;\n    };\n    let move = (pointerType: PointerType, deltaX: number, deltaY: number) => {\n      if (deltaX === 0 && deltaY === 0) {\n        return;\n      }\n\n      if (!state.current.didMove) {\n        state.current.didMove = true;\n        onMoveStart?.({\n          type: 'movestart',\n          pointerType\n        });\n      }\n      onMove({\n        type: 'move',\n        pointerType,\n        deltaX: deltaX,\n        deltaY: deltaY\n      });\n    };\n    let end = (pointerType: PointerType) => {\n      restoreTextSelection();\n      if (state.current.didMove) {\n        onMoveEnd?.({\n          type: 'moveend',\n          pointerType\n        });\n      }\n    };\n\n    if (typeof PointerEvent === 'undefined') {\n      let onMouseMove = (e: MouseEvent) => {\n        if (e.button === 0) {\n          move('mouse', e.pageX - state.current.lastPosition.pageX, e.pageY - state.current.lastPosition.pageY);\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n        }\n      };\n      let onMouseUp = (e: MouseEvent) => {\n        if (e.button === 0) {\n          end('mouse');\n          removeGlobalListener(window, 'mousemove', onMouseMove, false);\n          removeGlobalListener(window, 'mouseup', onMouseUp, false);\n        }\n      };\n      moveProps.onMouseDown = (e: React.MouseEvent) => {\n        if (e.button === 0) {\n          start();\n          e.stopPropagation();\n          e.preventDefault();\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n          addGlobalListener(window, 'mousemove', onMouseMove, false);\n          addGlobalListener(window, 'mouseup', onMouseUp, false);\n        }\n      };\n\n      let onTouchMove = (e: TouchEvent) => {\n        // @ts-ignore\n        let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n        if (touch >= 0) {\n          let {pageX, pageY} = e.changedTouches[touch];\n          move('touch', pageX - state.current.lastPosition.pageX, pageY - state.current.lastPosition.pageY);\n          state.current.lastPosition = {pageX, pageY};\n        }\n      };\n      let onTouchEnd = (e: TouchEvent) => {\n        // @ts-ignore\n        let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n        if (touch >= 0) {\n          end('touch');\n          state.current.id = null;\n          removeGlobalListener(window, 'touchmove', onTouchMove);\n          removeGlobalListener(window, 'touchend', onTouchEnd);\n          removeGlobalListener(window, 'touchcancel', onTouchEnd);\n        }\n      };\n      moveProps.onTouchStart = (e: React.TouchEvent) => {\n        if (e.changedTouches.length === 0 || state.current.id != null) {\n          return;\n        }\n\n        let {pageX, pageY, identifier} = e.changedTouches[0];\n        start();\n        e.stopPropagation();\n        e.preventDefault();\n        state.current.lastPosition = {pageX, pageY};\n        state.current.id = identifier;\n        addGlobalListener(window, 'touchmove', onTouchMove, false);\n        addGlobalListener(window, 'touchend', onTouchEnd, false);\n        addGlobalListener(window, 'touchcancel', onTouchEnd, false);\n      };\n    } else {\n      let onPointerMove = (e: PointerEvent) => {\n        if (e.pointerId === state.current.id) {\n          // @ts-ignore\n          let pointerType: PointerType = e.pointerType || 'mouse';\n\n          // Problems with PointerEvent#movementX/movementY:\n          // 1. it is always 0 on macOS Safari.\n          // 2. On Chrome Android, it's scaled by devicePixelRatio, but not on Chrome macOS\n          move(pointerType, e.pageX - state.current.lastPosition.pageX, e.pageY - state.current.lastPosition.pageY);\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n        }\n      };\n\n      let onPointerUp = (e: PointerEvent) => {\n        if (e.pointerId === state.current.id) {\n            // @ts-ignore\n          let pointerType: PointerType = e.pointerType || 'mouse';\n          end(pointerType);\n          state.current.id = null;\n          removeGlobalListener(window, 'pointermove', onPointerMove, false);\n          removeGlobalListener(window, 'pointerup', onPointerUp, false);\n          removeGlobalListener(window, 'pointercancel', onPointerUp, false);\n        }\n      };\n\n      moveProps.onPointerDown = (e: React.PointerEvent) => {\n        if (e.button === 0 && state.current.id == null) {\n          start();\n          e.stopPropagation();\n          e.preventDefault();\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n          state.current.id = e.pointerId;\n          addGlobalListener(window, 'pointermove', onPointerMove, false);\n          addGlobalListener(window, 'pointerup', onPointerUp, false);\n          addGlobalListener(window, 'pointercancel', onPointerUp, false);\n        }\n      };\n    }\n\n    let triggerKeyboardMove = (deltaX: number, deltaY: number) => {\n      start();\n      move('keyboard', deltaX, deltaY);\n      end('keyboard');\n    };\n\n    moveProps.onKeyDown = (e) => {\n      switch (e.key) {\n        case 'Left':\n        case 'ArrowLeft':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(-1, 0);\n          break;\n        case 'Right':\n        case 'ArrowRight':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(1, 0);\n          break;\n        case 'Up':\n        case 'ArrowUp':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(0, -1);\n          break;\n        case 'Down':\n        case 'ArrowDown':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(0, 1);\n          break;\n      }\n    };\n\n    return moveProps;\n  }, [state, onMoveStart, onMove, onMoveEnd, addGlobalListener, removeGlobalListener]);\n\n  return {moveProps};\n}\n","/*\n * Copyright 2021 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {RefObject, useCallback} from 'react';\nimport {ScrollEvents} from '@react-types/shared';\nimport {useEvent} from '@react-aria/utils';\n\nexport interface ScrollWheelProps extends ScrollEvents {\n  /** Whether the scroll listener should be disabled. */\n  isDisabled?: boolean\n}\n\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nexport function useScrollWheel(props: ScrollWheelProps, ref: RefObject<HTMLElement>): void {\n  let {onScroll, isDisabled} = props;\n  let onScrollHandler = useCallback((e) => {\n    // If the ctrlKey is pressed, this is a zoom event, do nothing.\n    if (e.ctrlKey) {\n      return;\n    }\n\n    // stop scrolling the page\n    e.preventDefault();\n    e.stopPropagation();\n\n    if (onScroll) {\n      onScroll({deltaX: e.deltaX, deltaY: e.deltaY});\n    }\n  }, [onScroll]);\n\n  useEvent(ref, 'wheel', isDisabled ? null : onScrollHandler);\n}\n"]},"metadata":{},"sourceType":"module"}