{"mappings":"C,A,S,C,C,C,C,C,C,C,C,C,E,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,A,Y,O,C,C,E,E,C,C,E,C,E,E,K,E,C,E,E,A,a,O,Q,A,Y,O,O,O,E,O,O,C,I,C,Q,S,E,C,C,C,E,G,C,C,C,E,C,C,G,C,C,C,E,C,C,I,E,A,Y,O,C,C,E,E,C,C,E,C,G,C,G,E,O,E,E,C,G,G,E,O,E,E,C,G,G,G,A,U,O,E,O,E,G,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,O,C,S,C,E,I,E,C,C,E,C,E,C,E,C,O,A,M,E,E,C,E,E,K,C,C,E,I,E,C,C,E,C,I,E,M,C,G,C,C,E,C,E,C,I,C,E,O,C,E,E,E,O,C,E,C,O,C,C,E,C,O,C,S,E,C,E,I,E,E,O,C,G,M,A,C,I,E,C,E,E,E,C,C,E,e,C,C,E,E,M,C,S,C,E,I,C,E,C,E,I,C,M,C,E,I,C,O,C,C,C,E,E,O,C,E,E,K,C,E,E,M,C,E,E,Q,C,S,C,C,C,E,C,C,E,C,C,S,C,C,C,E,E,O,C,C,E,C,E,A,E,O,c,C,E,O,C,I,W,O,C,C,E,A,C,G,C,C,E,C,E,I,I,E,E,E,E,M,C,I,E,C,C,E,C,E,C,M,C,S,C,C,C,C,C,C,C,ECUC,IAAA,EAAA,EAAA,kD,E,iB,C,GAED,EAAA,MAAA,CAAA,EAAA,YAAA,IAAA,EAAA,SAAA,EACA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,cAAA,EAAA,EAAA,MAAA,CAAA,EAAA,sBAAA,IAAA,EAAA,mBAAA,EACA,EAAA,MAAA,CAAA,EAAA,WAAA,IAAA,EAAA,QAAA,EACA,EAAA,MAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,cAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,yBAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,MAAA,CAAA,EAAA,kBAAA,IAAA,EAAA,eAAA,EAAA,EAAA,MAAA,CAAA,E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","sources":["<anon>","packages/@react-aria/interactions/src/index.ts","packages/@react-aria/interactions/src/PressResponder.tsx","packages/@react-aria/interactions/src/context.ts","packages/@react-aria/interactions/src/useFocus.ts","packages/@react-aria/interactions/src/utils.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/useKeyboard.ts","packages/@react-aria/interactions/src/createEventHandler.ts","packages/@react-aria/interactions/src/useMove.ts","packages/@react-aria/interactions/src/textSelection.ts","packages/@react-aria/interactions/src/usePress.ts","packages/@react-aria/interactions/src/useScrollWheel.ts","packages/@react-aria/interactions/src/useLongPress.ts","packages/@react-aria/interactions/src/useFocusable.tsx","packages/@react-aria/interactions/src/focusSafely.ts"],"sourcesContent":["// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (modules, entry, mainEntry, parcelRequireName, globalName) {\n  /* eslint-disable no-undef */\n  var globalObject =\n    typeof globalThis !== 'undefined'\n      ? globalThis\n      : typeof self !== 'undefined'\n      ? self\n      : typeof window !== 'undefined'\n      ? window\n      : typeof global !== 'undefined'\n      ? global\n      : {};\n  /* eslint-enable no-undef */\n\n  // Save the require from previous bundle to this closure if any\n  var previousRequire =\n    typeof globalObject[parcelRequireName] === 'function' &&\n    globalObject[parcelRequireName];\n\n  var cache = previousRequire.cache || {};\n  // Do not use `require` to prevent Webpack from trying to bundle this call\n  var nodeRequire =\n    typeof module !== 'undefined' &&\n    typeof module.require === 'function' &&\n    module.require.bind(module);\n\n  function newRequire(name, jumped) {\n    if (!cache[name]) {\n      if (!modules[name]) {\n        // if we cannot find the module within our internal map or\n        // cache jump to the current global require ie. the last bundle\n        // that was added to the page.\n        var currentRequire =\n          typeof globalObject[parcelRequireName] === 'function' &&\n          globalObject[parcelRequireName];\n        if (!jumped && currentRequire) {\n          return currentRequire(name, true);\n        }\n\n        // If there are other bundles on this page the require from the\n        // previous one is saved to 'previousRequire'. Repeat this as\n        // many times as there are bundles until the module is found or\n        // we exhaust the require chain.\n        if (previousRequire) {\n          return previousRequire(name, true);\n        }\n\n        // Try the node require function if it exists.\n        if (nodeRequire && typeof name === 'string') {\n          return nodeRequire(name);\n        }\n\n        var err = new Error(\"Cannot find module '\" + name + \"'\");\n        err.code = 'MODULE_NOT_FOUND';\n        throw err;\n      }\n\n      localRequire.resolve = resolve;\n      localRequire.cache = {};\n\n      var module = (cache[name] = new newRequire.Module(name));\n\n      modules[name][0].call(\n        module.exports,\n        localRequire,\n        module,\n        module.exports,\n        globalObject\n      );\n    }\n\n    return cache[name].exports;\n\n    function localRequire(x) {\n      var res = localRequire.resolve(x);\n      return res === false ? {} : newRequire(res);\n    }\n\n    function resolve(x) {\n      var id = modules[name][1][x];\n      return id != null ? id : x;\n    }\n  }\n\n  function Module(moduleName) {\n    this.id = moduleName;\n    this.bundle = newRequire;\n    this.exports = {};\n  }\n\n  newRequire.isParcelRequire = true;\n  newRequire.Module = Module;\n  newRequire.modules = modules;\n  newRequire.cache = cache;\n  newRequire.parent = previousRequire;\n  newRequire.register = function (id, exports) {\n    modules[id] = [\n      function (require, module) {\n        module.exports = exports;\n      },\n      {},\n    ];\n  };\n\n  Object.defineProperty(newRequire, 'root', {\n    get: function () {\n      return globalObject[parcelRequireName];\n    },\n  });\n\n  globalObject[parcelRequireName] = newRequire;\n\n  for (var i = 0; i < entry.length; i++) {\n    newRequire(entry[i]);\n  }\n\n  if (mainEntry) {\n    // Expose entry point to Node, AMD or browser globals\n    // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n    var mainExports = newRequire(mainEntry);\n\n    // CommonJS\n    if (typeof exports === 'object' && typeof module !== 'undefined') {\n      module.exports = mainExports;\n\n      // RequireJS\n    } else if (typeof define === 'function' && define.amd) {\n      define(function () {\n        return mainExports;\n      });\n\n      // <script>\n    } else if (globalName) {\n      this[globalName] = mainExports;\n    }\n  }\n})({\"dtdXE\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"Pressable\", ()=>(0, _pressable.Pressable));\nparcelHelpers.export(exports, \"PressResponder\", ()=>(0, _pressResponder.PressResponder));\nparcelHelpers.export(exports, \"ClearPressResponder\", ()=>(0, _pressResponder.ClearPressResponder));\nparcelHelpers.export(exports, \"useFocus\", ()=>(0, _useFocus.useFocus));\nparcelHelpers.export(exports, \"isFocusVisible\", ()=>(0, _useFocusVisible.isFocusVisible));\nparcelHelpers.export(exports, \"getInteractionModality\", ()=>(0, _useFocusVisible.getInteractionModality));\nparcelHelpers.export(exports, \"setInteractionModality\", ()=>(0, _useFocusVisible.setInteractionModality));\nparcelHelpers.export(exports, \"addWindowFocusTracking\", ()=>(0, _useFocusVisible.addWindowFocusTracking));\nparcelHelpers.export(exports, \"useInteractionModality\", ()=>(0, _useFocusVisible.useInteractionModality));\nparcelHelpers.export(exports, \"useFocusVisible\", ()=>(0, _useFocusVisible.useFocusVisible));\nparcelHelpers.export(exports, \"useFocusVisibleListener\", ()=>(0, _useFocusVisible.useFocusVisibleListener));\nparcelHelpers.export(exports, \"useFocusWithin\", ()=>(0, _useFocusWithin.useFocusWithin));\nparcelHelpers.export(exports, \"useHover\", ()=>(0, _useHover.useHover));\nparcelHelpers.export(exports, \"useInteractOutside\", ()=>(0, _useInteractOutside.useInteractOutside));\nparcelHelpers.export(exports, \"useKeyboard\", ()=>(0, _useKeyboard.useKeyboard));\nparcelHelpers.export(exports, \"useMove\", ()=>(0, _useMove.useMove));\nparcelHelpers.export(exports, \"usePress\", ()=>(0, _usePress.usePress));\nparcelHelpers.export(exports, \"useScrollWheel\", ()=>(0, _useScrollWheel.useScrollWheel));\nparcelHelpers.export(exports, \"useLongPress\", ()=>(0, _useLongPress.useLongPress));\nparcelHelpers.export(exports, \"useFocusable\", ()=>(0, _useFocusable.useFocusable));\nparcelHelpers.export(exports, \"FocusableProvider\", ()=>(0, _useFocusable.FocusableProvider));\nparcelHelpers.export(exports, \"Focusable\", ()=>(0, _useFocusable.Focusable));\nparcelHelpers.export(exports, \"FocusableContext\", ()=>(0, _useFocusable.FocusableContext));\nparcelHelpers.export(exports, \"focusSafely\", ()=>(0, _focusSafely.focusSafely));\nvar _pressable = require(\"./Pressable\");\nvar _pressResponder = require(\"./PressResponder\");\nvar _useFocus = require(\"./useFocus\");\nvar _useFocusVisible = require(\"./useFocusVisible\");\nvar _useFocusWithin = require(\"./useFocusWithin\");\nvar _useHover = require(\"./useHover\");\nvar _useInteractOutside = require(\"./useInteractOutside\");\nvar _useKeyboard = require(\"./useKeyboard\");\nvar _useMove = require(\"./useMove\");\nvar _usePress = require(\"./usePress\");\nvar _useScrollWheel = require(\"./useScrollWheel\");\nvar _useLongPress = require(\"./useLongPress\");\nvar _useFocusable = require(\"./useFocusable\");\nvar _focusSafely = require(\"./focusSafely\");\n\n},{\"./Pressable\":false,\"./PressResponder\":\"gV9F2\",\"./useFocus\":\"5lXaz\",\"./useFocusVisible\":\"cebUE\",\"./useFocusWithin\":\"ldMvb\",\"./useHover\":\"jXiCN\",\"./useInteractOutside\":\"az5o7\",\"./useKeyboard\":\"6oNef\",\"./useMove\":\"fAGcD\",\"./usePress\":\"fOpRp\",\"./useScrollWheel\":\"4d7Vp\",\"./useLongPress\":\"6FTm4\",\"./useFocusable\":\"3Hzxp\",\"./focusSafely\":\"5fTM6\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"gV9F2\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"PressResponder\", ()=>PressResponder);\nparcelHelpers.export(exports, \"ClearPressResponder\", ()=>ClearPressResponder);\nvar _utils = require(\"@react-aria/utils\");\nvar _context = require(\"./context\");\nvar _react = require(\"react\");\nvar _reactDefault = parcelHelpers.interopDefault(_react);\nconst PressResponder = /*#__PURE__*/ (0, _reactDefault.default).forwardRef(({ children, ...props }, ref)=>{\n    let isRegistered = (0, _react.useRef)(false);\n    let prevContext = (0, _react.useContext)((0, _context.PressResponderContext));\n    ref = (0, _utils.useObjectRef)(ref || prevContext?.ref);\n    let context = (0, _utils.mergeProps)(prevContext || {}, {\n        ...props,\n        ref,\n        register () {\n            isRegistered.current = true;\n            if (prevContext) prevContext.register();\n        }\n    });\n    (0, _utils.useSyncRef)(prevContext, ref);\n    (0, _react.useEffect)(()=>{\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            isRegistered.current = true; // only warn once in strict mode.\n        }\n    }, []);\n    return /*#__PURE__*/ (0, _reactDefault.default).createElement((0, _context.PressResponderContext).Provider, {\n        value: context\n    }, children);\n});\nfunction ClearPressResponder({ children }) {\n    let context = (0, _react.useMemo)(()=>({\n            register: ()=>{}\n        }), []);\n    return /*#__PURE__*/ (0, _reactDefault.default).createElement((0, _context.PressResponderContext).Provider, {\n        value: context\n    }, children);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./context\":\"6hjZq\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"6hjZq\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"PressResponderContext\", ()=>PressResponderContext);\nvar _react = require(\"react\");\nvar _reactDefault = parcelHelpers.interopDefault(_react);\nconst PressResponderContext = (0, _reactDefault.default).createContext({\n    register: ()=>{}\n});\nPressResponderContext.displayName = 'PressResponderContext';\n\n},{\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"5lXaz\":[function(require,module,exports,__globalThis) {\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 */ // 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\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */ parcelHelpers.export(exports, \"useFocus\", ()=>useFocus);\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nvar _utils1 = require(\"./utils\");\nfunction useFocus(props) {\n    let { isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange } = props;\n    const onBlur = (0, _react.useCallback)((e)=>{\n        if (e.target === e.currentTarget) {\n            if (onBlurProp) onBlurProp(e);\n            if (onFocusChange) onFocusChange(false);\n            return true;\n        }\n    }, [\n        onBlurProp,\n        onFocusChange\n    ]);\n    const onSyntheticFocus = (0, _utils1.useSyntheticBlurEvent)(onBlur);\n    const onFocus = (0, _react.useCallback)((e)=>{\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        const ownerDocument = (0, _utils.getOwnerDocument)(e.target);\n        const activeElement = ownerDocument ? (0, _utils.getActiveElement)(ownerDocument) : (0, _utils.getActiveElement)();\n        if (e.target === e.currentTarget && activeElement === (0, _utils.getEventTarget)(e.nativeEvent)) {\n            if (onFocusProp) onFocusProp(e);\n            if (onFocusChange) onFocusChange(true);\n            onSyntheticFocus(e);\n        }\n    }, [\n        onFocusChange,\n        onFocusProp,\n        onSyntheticFocus\n    ]);\n    return {\n        focusProps: {\n            onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n            onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n        }\n    };\n}\n\n},{\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"./utils\":\"9VJmY\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"9VJmY\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"SyntheticFocusEvent\", ()=>SyntheticFocusEvent);\nparcelHelpers.export(exports, \"useSyntheticBlurEvent\", ()=>useSyntheticBlurEvent);\nparcelHelpers.export(exports, \"ignoreFocusEvent\", ()=>ignoreFocusEvent);\n/**\n * This function prevents the next focus event fired on `target`, without using `event.preventDefault()`.\n * It works by waiting for the series of focus events to occur, and reverts focus back to where it was before.\n * It also makes these events mostly non-observable by using a capturing listener on the window and stopping propagation.\n */ parcelHelpers.export(exports, \"preventFocus\", ()=>preventFocus);\nvar _utils = require(\"@react-aria/utils\");\nvar _react = require(\"react\");\nclass SyntheticFocusEvent {\n    constructor(type, nativeEvent){\n        this.nativeEvent = nativeEvent;\n        this.target = nativeEvent.target;\n        this.currentTarget = nativeEvent.currentTarget;\n        this.relatedTarget = nativeEvent.relatedTarget;\n        this.bubbles = nativeEvent.bubbles;\n        this.cancelable = nativeEvent.cancelable;\n        this.defaultPrevented = nativeEvent.defaultPrevented;\n        this.eventPhase = nativeEvent.eventPhase;\n        this.isTrusted = nativeEvent.isTrusted;\n        this.timeStamp = nativeEvent.timeStamp;\n        this.type = type;\n    }\n    isDefaultPrevented() {\n        return this.nativeEvent.defaultPrevented;\n    }\n    preventDefault() {\n        this.defaultPrevented = true;\n        this.nativeEvent.preventDefault();\n    }\n    stopPropagation() {\n        this.nativeEvent.stopPropagation();\n        this.isPropagationStopped = ()=>true;\n    }\n    isPropagationStopped() {\n        return false;\n    }\n    persist() {}\n}\nfunction useSyntheticBlurEvent(onBlur) {\n    let stateRef = (0, _react.useRef)({\n        isFocused: false,\n        observer: null\n    });\n    // Clean up MutationObserver on unmount. See below.\n    (0, _utils.useLayoutEffect)(()=>{\n        const state = stateRef.current;\n        return ()=>{\n            if (state.observer) {\n                state.observer.disconnect();\n                state.observer = null;\n            }\n        };\n    }, []);\n    let dispatchBlur = (0, _utils.useEffectEvent)((e)=>{\n        onBlur?.(e);\n    });\n    // This function is called during a React onFocus event.\n    return (0, _react.useCallback)((e)=>{\n        // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n        // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n        // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n        // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n        if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n            stateRef.current.isFocused = true;\n            let target = e.target;\n            let onBlurHandler = (e)=>{\n                stateRef.current.isFocused = false;\n                if (target.disabled) // For backward compatibility, dispatch a (fake) React synthetic event.\n                dispatchBlur(new SyntheticFocusEvent('blur', e));\n                // We no longer need the MutationObserver once the target is blurred.\n                if (stateRef.current.observer) {\n                    stateRef.current.observer.disconnect();\n                    stateRef.current.observer = null;\n                }\n            };\n            target.addEventListener('focusout', onBlurHandler, {\n                once: true\n            });\n            stateRef.current.observer = new MutationObserver(()=>{\n                if (stateRef.current.isFocused && target.disabled) {\n                    stateRef.current.observer?.disconnect();\n                    let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n                    target.dispatchEvent(new FocusEvent('blur', {\n                        relatedTarget: relatedTargetEl\n                    }));\n                    target.dispatchEvent(new FocusEvent('focusout', {\n                        bubbles: true,\n                        relatedTarget: relatedTargetEl\n                    }));\n                }\n            });\n            stateRef.current.observer.observe(target, {\n                attributes: true,\n                attributeFilter: [\n                    'disabled'\n                ]\n            });\n        }\n    }, [\n        dispatchBlur\n    ]);\n}\nlet ignoreFocusEvent = false;\nfunction preventFocus(target) {\n    // The browser will focus the nearest focusable ancestor of our target.\n    while(target && !(0, _utils.isFocusable)(target))target = target.parentElement;\n    let window = (0, _utils.getOwnerWindow)(target);\n    let activeElement = window.document.activeElement;\n    if (!activeElement || activeElement === target) return;\n    ignoreFocusEvent = true;\n    let isRefocusing = false;\n    let onBlur = (e)=>{\n        if (e.target === activeElement || isRefocusing) e.stopImmediatePropagation();\n    };\n    let onFocusOut = (e)=>{\n        if (e.target === activeElement || isRefocusing) {\n            e.stopImmediatePropagation();\n            // If there was no focusable ancestor, we don't expect a focus event.\n            // Re-focus the original active element here.\n            if (!target && !isRefocusing) {\n                isRefocusing = true;\n                (0, _utils.focusWithoutScrolling)(activeElement);\n                cleanup();\n            }\n        }\n    };\n    let onFocus = (e)=>{\n        if (e.target === target || isRefocusing) e.stopImmediatePropagation();\n    };\n    let onFocusIn = (e)=>{\n        if (e.target === target || isRefocusing) {\n            e.stopImmediatePropagation();\n            if (!isRefocusing) {\n                isRefocusing = true;\n                (0, _utils.focusWithoutScrolling)(activeElement);\n                cleanup();\n            }\n        }\n    };\n    window.addEventListener('blur', onBlur, true);\n    window.addEventListener('focusout', onFocusOut, true);\n    window.addEventListener('focusin', onFocusIn, true);\n    window.addEventListener('focus', onFocus, true);\n    let cleanup = ()=>{\n        cancelAnimationFrame(raf);\n        window.removeEventListener('blur', onBlur, true);\n        window.removeEventListener('focusout', onFocusOut, true);\n        window.removeEventListener('focusin', onFocusIn, true);\n        window.removeEventListener('focus', onFocus, true);\n        ignoreFocusEvent = false;\n        isRefocusing = false;\n    };\n    let raf = requestAnimationFrame(cleanup);\n    return cleanup;\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"cebUE\":[function(require,module,exports,__globalThis) {\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 */ // 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\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"hasSetupGlobalListeners\", ()=>hasSetupGlobalListeners);\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */ parcelHelpers.export(exports, \"addWindowFocusTracking\", ()=>addWindowFocusTracking);\n/**\n * If true, keyboard focus is visible.\n */ parcelHelpers.export(exports, \"isFocusVisible\", ()=>isFocusVisible);\nparcelHelpers.export(exports, \"getInteractionModality\", ()=>getInteractionModality);\nparcelHelpers.export(exports, \"setInteractionModality\", ()=>setInteractionModality);\n/**\n * Keeps state of the current modality.\n */ parcelHelpers.export(exports, \"useInteractionModality\", ()=>useInteractionModality);\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */ parcelHelpers.export(exports, \"useFocusVisible\", ()=>useFocusVisible);\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */ parcelHelpers.export(exports, \"useFocusVisibleListener\", ()=>useFocusVisibleListener);\nvar _utils = require(\"@react-aria/utils\");\nvar _utils1 = require(\"./utils\");\nvar _react = require(\"react\");\nvar _ssr = require(\"@react-aria/ssr\");\nlet currentModality = null;\nlet changeHandlers = new Set();\nlet hasSetupGlobalListeners = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\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};\nfunction triggerChangeHandlers(modality, e) {\n    for (let handler of changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function isValidKey(e) {\n    // Control and Shift keys trigger when navigating back to the tab with keyboard.\n    return !(e.metaKey || !(0, _utils.isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction handleKeyboardEvent(e) {\n    hasEventBeforeFocus = true;\n    if (isValidKey(e)) {\n        currentModality = 'keyboard';\n        triggerChangeHandlers('keyboard', e);\n    }\n}\nfunction handlePointerEvent(e) {\n    currentModality = 'pointer';\n    if (e.type === 'mousedown' || e.type === 'pointerdown') {\n        hasEventBeforeFocus = true;\n        triggerChangeHandlers('pointer', e);\n    }\n}\nfunction handleClickEvent(e) {\n    if ((0, _utils.isVirtualClick)(e)) {\n        hasEventBeforeFocus = true;\n        currentModality = 'virtual';\n    }\n}\nfunction handleFocusEvent(e) {\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 || (0, _utils1.ignoreFocusEvent) || !e.isTrusted) return;\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    hasEventBeforeFocus = false;\n    hasBlurredWindowRecently = false;\n}\nfunction handleWindowBlur() {\n    if (0, _utils1.ignoreFocusEvent) return;\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 * Setup global event listeners to control when keyboard focus style should be visible.\n */ function setupGlobalFocusEvents(element) {\n    if (typeof window === 'undefined' || hasSetupGlobalListeners.get((0, _utils.getOwnerWindow)(element))) return;\n    const windowObject = (0, _utils.getOwnerWindow)(element);\n    const documentObject = (0, _utils.getOwnerDocument)(element);\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 = windowObject.HTMLElement.prototype.focus;\n    windowObject.HTMLElement.prototype.focus = function() {\n        hasEventBeforeFocus = true;\n        focus.apply(this, arguments);\n    };\n    documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n    documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n    documentObject.addEventListener('click', handleClickEvent, true);\n    // Register focus events on the window so they are sure to happen\n    // before React's event listeners (registered on the document).\n    windowObject.addEventListener('focus', handleFocusEvent, true);\n    windowObject.addEventListener('blur', handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n        documentObject.addEventListener('pointermove', handlePointerEvent, true);\n        documentObject.addEventListener('pointerup', handlePointerEvent, true);\n    } else {\n        documentObject.addEventListener('mousedown', handlePointerEvent, true);\n        documentObject.addEventListener('mousemove', handlePointerEvent, true);\n        documentObject.addEventListener('mouseup', handlePointerEvent, true);\n    }\n    // Add unmount handler\n    windowObject.addEventListener('beforeunload', ()=>{\n        tearDownWindowFocusTracking(element);\n    }, {\n        once: true\n    });\n    hasSetupGlobalListeners.set(windowObject, {\n        focus\n    });\n}\nconst tearDownWindowFocusTracking = (element, loadListener)=>{\n    const windowObject = (0, _utils.getOwnerWindow)(element);\n    const documentObject = (0, _utils.getOwnerDocument)(element);\n    if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n    if (!hasSetupGlobalListeners.has(windowObject)) return;\n    windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject).focus;\n    documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n    documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n    documentObject.removeEventListener('click', handleClickEvent, true);\n    windowObject.removeEventListener('focus', handleFocusEvent, true);\n    windowObject.removeEventListener('blur', handleWindowBlur, false);\n    if (typeof PointerEvent !== 'undefined') {\n        documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n        documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n        documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n    } else {\n        documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n        documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n        documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n    }\n    hasSetupGlobalListeners.delete(windowObject);\n};\nfunction addWindowFocusTracking(element) {\n    const documentObject = (0, _utils.getOwnerDocument)(element);\n    let loadListener;\n    if (documentObject.readyState !== 'loading') setupGlobalFocusEvents(element);\n    else {\n        loadListener = ()=>{\n            setupGlobalFocusEvents(element);\n        };\n        documentObject.addEventListener('DOMContentLoaded', loadListener);\n    }\n    return ()=>tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') addWindowFocusTracking();\nfunction isFocusVisible() {\n    return currentModality !== 'pointer';\n}\nfunction getInteractionModality() {\n    return currentModality;\n}\nfunction setInteractionModality(modality) {\n    currentModality = modality;\n    triggerChangeHandlers(modality, null);\n}\nfunction useInteractionModality() {\n    setupGlobalFocusEvents();\n    let [modality, setModality] = (0, _react.useState)(currentModality);\n    (0, _react.useEffect)(()=>{\n        let handler = ()=>{\n            setModality(currentModality);\n        };\n        changeHandlers.add(handler);\n        return ()=>{\n            changeHandlers.delete(handler);\n        };\n    }, []);\n    return (0, _ssr.useIsSSR)() ? null : modality;\n}\nconst nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\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 */ function isKeyboardFocusEvent(isTextInput, modality, e) {\n    let document1 = (0, _utils.getOwnerDocument)(e?.target);\n    const IHTMLInputElement = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).HTMLInputElement : HTMLInputElement;\n    const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).HTMLTextAreaElement : HTMLTextAreaElement;\n    const IHTMLElement = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).HTMLElement : HTMLElement;\n    const IKeyboardEvent = typeof window !== 'undefined' ? (0, _utils.getOwnerWindow)(e?.target).KeyboardEvent : KeyboardEvent;\n    // For keyboard events that occur on a non-input element that will move focus into input element (aka ArrowLeft going from Datepicker button to the main input group)\n    // we need to rely on the user passing isTextInput into here. This way we can skip toggling focus visiblity for said input element\n    isTextInput = isTextInput || document1.activeElement instanceof IHTMLInputElement && !nonTextInputTypes.has(document1.activeElement.type) || document1.activeElement instanceof IHTMLTextAreaElement || document1.activeElement instanceof IHTMLElement && document1.activeElement.isContentEditable;\n    return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction useFocusVisible(props = {}) {\n    let { isTextInput, autoFocus } = props;\n    let [isFocusVisibleState, setFocusVisible] = (0, _react.useState)(autoFocus || isFocusVisible());\n    useFocusVisibleListener((isFocusVisible)=>{\n        setFocusVisible(isFocusVisible);\n    }, [\n        isTextInput\n    ], {\n        isTextInput\n    });\n    return {\n        isFocusVisible: isFocusVisibleState\n    };\n}\nfunction useFocusVisibleListener(fn, deps, opts) {\n    setupGlobalFocusEvents();\n    (0, _react.useEffect)(()=>{\n        let handler = (modality, e)=>{\n            // We want to early return for any keyboard events that occur inside text inputs EXCEPT for Tab and Escape\n            if (!isKeyboardFocusEvent(!!opts?.isTextInput, modality, e)) return;\n            fn(isFocusVisible());\n        };\n        changeHandlers.add(handler);\n        return ()=>{\n            changeHandlers.delete(handler);\n        };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, deps);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./utils\":\"9VJmY\",\"react\":\"jEiK2\",\"@react-aria/ssr\":\"jNw7O\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"ldMvb\":[function(require,module,exports,__globalThis) {\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 */ // 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\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles focus events for the target and its descendants.\n */ parcelHelpers.export(exports, \"useFocusWithin\", ()=>useFocusWithin);\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nvar _utils1 = require(\"./utils\");\nfunction useFocusWithin(props) {\n    let { isDisabled, onBlurWithin, onFocusWithin, onFocusWithinChange } = props;\n    let state = (0, _react.useRef)({\n        isFocusWithin: false\n    });\n    let { addGlobalListener, removeAllGlobalListeners } = (0, _utils.useGlobalListeners)();\n    let onBlur = (0, _react.useCallback)((e)=>{\n        // Ignore events bubbling through portals.\n        if (!e.currentTarget.contains(e.target)) return;\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.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n            state.current.isFocusWithin = false;\n            removeAllGlobalListeners();\n            if (onBlurWithin) onBlurWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(false);\n        }\n    }, [\n        onBlurWithin,\n        onFocusWithinChange,\n        state,\n        removeAllGlobalListeners\n    ]);\n    let onSyntheticFocus = (0, _utils1.useSyntheticBlurEvent)(onBlur);\n    let onFocus = (0, _react.useCallback)((e)=>{\n        // Ignore events bubbling through portals.\n        if (!e.currentTarget.contains(e.target)) return;\n        // Double check that document.activeElement actually matches e.target in case a previously chained\n        // focus handler already moved focus somewhere else.\n        const ownerDocument = (0, _utils.getOwnerDocument)(e.target);\n        const activeElement = (0, _utils.getActiveElement)(ownerDocument);\n        if (!state.current.isFocusWithin && activeElement === (0, _utils.getEventTarget)(e.nativeEvent)) {\n            if (onFocusWithin) onFocusWithin(e);\n            if (onFocusWithinChange) onFocusWithinChange(true);\n            state.current.isFocusWithin = true;\n            onSyntheticFocus(e);\n            // Browsers don't fire blur events when elements are removed from the DOM.\n            // However, if a focus event occurs outside the element we're tracking, we\n            // can manually fire onBlur.\n            let currentTarget = e.currentTarget;\n            addGlobalListener(ownerDocument, 'focus', (e)=>{\n                if (state.current.isFocusWithin && !(0, _utils.nodeContains)(currentTarget, e.target)) {\n                    let event = new (0, _utils1.SyntheticFocusEvent)('blur', new ownerDocument.defaultView.FocusEvent('blur', {\n                        relatedTarget: e.target\n                    }));\n                    event.target = currentTarget;\n                    event.currentTarget = currentTarget;\n                    onBlur(event);\n                }\n            }, {\n                capture: true\n            });\n        }\n    }, [\n        onFocusWithin,\n        onFocusWithinChange,\n        onSyntheticFocus,\n        addGlobalListener,\n        onBlur\n    ]);\n    if (isDisabled) return {\n        focusWithinProps: {\n            // These cannot be null, that would conflict in mergeProps\n            onFocus: undefined,\n            onBlur: undefined\n        }\n    };\n    return {\n        focusWithinProps: {\n            onFocus,\n            onBlur\n        }\n    };\n}\n\n},{\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"./utils\":\"9VJmY\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"jXiCN\":[function(require,module,exports,__globalThis) {\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 */ // 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\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\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 */ parcelHelpers.export(exports, \"useHover\", ()=>useHover);\nvar _utils = require(\"@react-aria/utils\");\nvar _react = require(\"react\");\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;\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n    globalIgnoreEmulatedMouseEvents = true;\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}\nfunction handleGlobalPointerEvent(e) {\n    if (e.pointerType === 'touch') setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction setupGlobalTouchEvents() {\n    if (typeof document === 'undefined') return;\n    if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', handleGlobalPointerEvent);\n    else document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n    hoverCount++;\n    return ()=>{\n        hoverCount--;\n        if (hoverCount > 0) return;\n        if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', handleGlobalPointerEvent);\n        else document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n    };\n}\nfunction useHover(props) {\n    let { onHoverStart, onHoverChange, onHoverEnd, isDisabled } = props;\n    let [isHovered, setHovered] = (0, _react.useState)(false);\n    let state = (0, _react.useRef)({\n        isHovered: false,\n        ignoreEmulatedMouseEvents: false,\n        pointerType: '',\n        target: null\n    }).current;\n    (0, _react.useEffect)(setupGlobalTouchEvents, []);\n    let { addGlobalListener, removeAllGlobalListeners } = (0, _utils.useGlobalListeners)();\n    let { hoverProps, triggerHoverEnd } = (0, _react.useMemo)(()=>{\n        let triggerHoverStart = (event, pointerType)=>{\n            state.pointerType = pointerType;\n            if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n            state.isHovered = true;\n            let target = event.currentTarget;\n            state.target = target;\n            // When an element that is hovered over is removed, no pointerleave event is fired by the browser,\n            // even though the originally hovered target may have shrunk in size so it is no longer hovered.\n            // However, a pointerover event will be fired on the new target the mouse is over.\n            // In Chrome this happens immediately. In Safari and Firefox, it happens upon moving the mouse one pixel.\n            addGlobalListener((0, _utils.getOwnerDocument)(event.target), 'pointerover', (e)=>{\n                if (state.isHovered && state.target && !(0, _utils.nodeContains)(state.target, e.target)) triggerHoverEnd(e, e.pointerType);\n            }, {\n                capture: true\n            });\n            if (onHoverStart) onHoverStart({\n                type: 'hoverstart',\n                target,\n                pointerType\n            });\n            if (onHoverChange) onHoverChange(true);\n            setHovered(true);\n        };\n        let triggerHoverEnd = (event, pointerType)=>{\n            let target = state.target;\n            state.pointerType = '';\n            state.target = null;\n            if (pointerType === 'touch' || !state.isHovered || !target) return;\n            state.isHovered = false;\n            removeAllGlobalListeners();\n            if (onHoverEnd) onHoverEnd({\n                type: 'hoverend',\n                target,\n                pointerType\n            });\n            if (onHoverChange) onHoverChange(false);\n            setHovered(false);\n        };\n        let hoverProps = {};\n        if (typeof PointerEvent !== 'undefined') {\n            hoverProps.onPointerEnter = (e)=>{\n                if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n                triggerHoverStart(e, e.pointerType);\n            };\n            hoverProps.onPointerLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n            };\n        } else {\n            hoverProps.onTouchStart = ()=>{\n                state.ignoreEmulatedMouseEvents = true;\n            };\n            hoverProps.onMouseEnter = (e)=>{\n                if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n                state.ignoreEmulatedMouseEvents = false;\n            };\n            hoverProps.onMouseLeave = (e)=>{\n                if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n            };\n        }\n        return {\n            hoverProps,\n            triggerHoverEnd\n        };\n    }, [\n        onHoverStart,\n        onHoverChange,\n        onHoverEnd,\n        isDisabled,\n        state,\n        addGlobalListener,\n        removeAllGlobalListeners\n    ]);\n    (0, _react.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) triggerHoverEnd({\n            currentTarget: state.target\n        }, state.pointerType);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [\n        isDisabled\n    ]);\n    return {\n        hoverProps,\n        isHovered\n    };\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"az5o7\":[function(require,module,exports,__globalThis) {\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 */ // 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\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Example, used in components like Dialogs and Popovers so they can close\n * when a user clicks outside them.\n */ parcelHelpers.export(exports, \"useInteractOutside\", ()=>useInteractOutside);\nvar _utils = require(\"@react-aria/utils\");\nvar _react = require(\"react\");\nfunction useInteractOutside(props) {\n    let { ref, onInteractOutside, isDisabled, onInteractOutsideStart } = props;\n    let stateRef = (0, _react.useRef)({\n        isPointerDown: false,\n        ignoreEmulatedMouseEvents: false\n    });\n    let onPointerDown = (0, _utils.useEffectEvent)((e)=>{\n        if (onInteractOutside && isValidEvent(e, ref)) {\n            if (onInteractOutsideStart) onInteractOutsideStart(e);\n            stateRef.current.isPointerDown = true;\n        }\n    });\n    let triggerInteractOutside = (0, _utils.useEffectEvent)((e)=>{\n        if (onInteractOutside) onInteractOutside(e);\n    });\n    (0, _react.useEffect)(()=>{\n        let state = stateRef.current;\n        if (isDisabled) return;\n        const element = ref.current;\n        const documentObject = (0, _utils.getOwnerDocument)(element);\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 && isValidEvent(e, ref)) triggerInteractOutside(e);\n                state.isPointerDown = false;\n            };\n            // changing these to capture phase fixed combobox\n            documentObject.addEventListener('pointerdown', onPointerDown, true);\n            documentObject.addEventListener('pointerup', onPointerUp, true);\n            return ()=>{\n                documentObject.removeEventListener('pointerdown', onPointerDown, true);\n                documentObject.removeEventListener('pointerup', onPointerUp, true);\n            };\n        } else {\n            let onMouseUp = (e)=>{\n                if (state.ignoreEmulatedMouseEvents) state.ignoreEmulatedMouseEvents = false;\n                else if (state.isPointerDown && isValidEvent(e, ref)) triggerInteractOutside(e);\n                state.isPointerDown = false;\n            };\n            let onTouchEnd = (e)=>{\n                state.ignoreEmulatedMouseEvents = true;\n                if (state.isPointerDown && isValidEvent(e, ref)) triggerInteractOutside(e);\n                state.isPointerDown = false;\n            };\n            documentObject.addEventListener('mousedown', onPointerDown, true);\n            documentObject.addEventListener('mouseup', onMouseUp, true);\n            documentObject.addEventListener('touchstart', onPointerDown, true);\n            documentObject.addEventListener('touchend', onTouchEnd, true);\n            return ()=>{\n                documentObject.removeEventListener('mousedown', onPointerDown, true);\n                documentObject.removeEventListener('mouseup', onMouseUp, true);\n                documentObject.removeEventListener('touchstart', onPointerDown, true);\n                documentObject.removeEventListener('touchend', onTouchEnd, true);\n            };\n        }\n    }, [\n        ref,\n        isDisabled,\n        onPointerDown,\n        triggerInteractOutside\n    ]);\n}\nfunction isValidEvent(event, ref) {\n    if (event.button > 0) return false;\n    if (event.target) {\n        // if the event target is no longer in the document, ignore\n        const ownerDocument = event.target.ownerDocument;\n        if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) return false;\n        // If the target is within a top layer element (e.g. toasts), ignore.\n        if (event.target.closest('[data-react-aria-top-layer]')) return false;\n    }\n    if (!ref.current) return false;\n    // When the event source is inside a Shadow DOM, event.target is just the shadow root.\n    // Using event.composedPath instead means we can get the actual element inside the shadow root.\n    // This only works if the shadow root is open, there is no way to detect if it is closed.\n    // If the event composed path contains the ref, interaction is inside.\n    return !event.composedPath().includes(ref.current);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"6oNef\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles keyboard interactions for a focusable element.\n */ parcelHelpers.export(exports, \"useKeyboard\", ()=>useKeyboard);\nvar _createEventHandler = require(\"./createEventHandler\");\nfunction useKeyboard(props) {\n    return {\n        keyboardProps: props.isDisabled ? {} : {\n            onKeyDown: (0, _createEventHandler.createEventHandler)(props.onKeyDown),\n            onKeyUp: (0, _createEventHandler.createEventHandler)(props.onKeyUp)\n        }\n    };\n}\n\n},{\"./createEventHandler\":\"1as4h\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"1as4h\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */ parcelHelpers.export(exports, \"createEventHandler\", ()=>createEventHandler);\nfunction createEventHandler(handler) {\n    if (!handler) return undefined;\n    let shouldStopPropagation = true;\n    return (e)=>{\n        let event = {\n            ...e,\n            preventDefault () {\n                e.preventDefault();\n            },\n            isDefaultPrevented () {\n                return e.isDefaultPrevented();\n            },\n            stopPropagation () {\n                if (shouldStopPropagation) console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n                else shouldStopPropagation = true;\n            },\n            continuePropagation () {\n                shouldStopPropagation = false;\n            },\n            isPropagationStopped () {\n                return shouldStopPropagation;\n            }\n        };\n        handler(event);\n        if (shouldStopPropagation) e.stopPropagation();\n    };\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"fAGcD\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\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 */ parcelHelpers.export(exports, \"useMove\", ()=>useMove);\nvar _textSelection = require(\"./textSelection\");\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nfunction useMove(props) {\n    let { onMoveStart, onMove, onMoveEnd } = props;\n    let state = (0, _react.useRef)({\n        didMove: false,\n        lastPosition: null,\n        id: null\n    });\n    let { addGlobalListener, removeGlobalListener } = (0, _utils.useGlobalListeners)();\n    let move = (0, _utils.useEffectEvent)((originalEvent, pointerType, deltaX, deltaY)=>{\n        if (deltaX === 0 && deltaY === 0) return;\n        if (!state.current.didMove) {\n            state.current.didMove = true;\n            onMoveStart?.({\n                type: 'movestart',\n                pointerType,\n                shiftKey: originalEvent.shiftKey,\n                metaKey: originalEvent.metaKey,\n                ctrlKey: originalEvent.ctrlKey,\n                altKey: originalEvent.altKey\n            });\n        }\n        onMove?.({\n            type: 'move',\n            pointerType,\n            deltaX: deltaX,\n            deltaY: deltaY,\n            shiftKey: originalEvent.shiftKey,\n            metaKey: originalEvent.metaKey,\n            ctrlKey: originalEvent.ctrlKey,\n            altKey: originalEvent.altKey\n        });\n    });\n    let end = (0, _utils.useEffectEvent)((originalEvent, pointerType)=>{\n        (0, _textSelection.restoreTextSelection)();\n        if (state.current.didMove) onMoveEnd?.({\n            type: 'moveend',\n            pointerType,\n            shiftKey: originalEvent.shiftKey,\n            metaKey: originalEvent.metaKey,\n            ctrlKey: originalEvent.ctrlKey,\n            altKey: originalEvent.altKey\n        });\n    });\n    let moveProps = (0, _react.useMemo)(()=>{\n        let moveProps = {};\n        let start = ()=>{\n            (0, _textSelection.disableTextSelection)();\n            state.current.didMove = false;\n        };\n        if (typeof PointerEvent === 'undefined') {\n            let onMouseMove = (e)=>{\n                if (e.button === 0) {\n                    move(e, 'mouse', e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n                    state.current.lastPosition = {\n                        pageX: e.pageX,\n                        pageY: e.pageY\n                    };\n                }\n            };\n            let onMouseUp = (e)=>{\n                if (e.button === 0) {\n                    end(e, 'mouse');\n                    removeGlobalListener(window, 'mousemove', onMouseMove, false);\n                    removeGlobalListener(window, 'mouseup', onMouseUp, false);\n                }\n            };\n            moveProps.onMouseDown = (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            let onTouchMove = (e)=>{\n                let touch = [\n                    ...e.changedTouches\n                ].findIndex(({ identifier })=>identifier === state.current.id);\n                if (touch >= 0) {\n                    let { pageX, pageY } = e.changedTouches[touch];\n                    move(e, 'touch', pageX - (state.current.lastPosition?.pageX ?? 0), pageY - (state.current.lastPosition?.pageY ?? 0));\n                    state.current.lastPosition = {\n                        pageX,\n                        pageY\n                    };\n                }\n            };\n            let onTouchEnd = (e)=>{\n                let touch = [\n                    ...e.changedTouches\n                ].findIndex(({ identifier })=>identifier === state.current.id);\n                if (touch >= 0) {\n                    end(e, '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)=>{\n                if (e.changedTouches.length === 0 || state.current.id != null) return;\n                let { pageX, pageY, identifier } = e.changedTouches[0];\n                start();\n                e.stopPropagation();\n                e.preventDefault();\n                state.current.lastPosition = {\n                    pageX,\n                    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            let onPointerMove = (e)=>{\n                if (e.pointerId === state.current.id) {\n                    let pointerType = e.pointerType || 'mouse';\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(e, pointerType, e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n                    state.current.lastPosition = {\n                        pageX: e.pageX,\n                        pageY: e.pageY\n                    };\n                }\n            };\n            let onPointerUp = (e)=>{\n                if (e.pointerId === state.current.id) {\n                    let pointerType = e.pointerType || 'mouse';\n                    end(e, 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            moveProps.onPointerDown = (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        let triggerKeyboardMove = (e, deltaX, deltaY)=>{\n            start();\n            move(e, 'keyboard', deltaX, deltaY);\n            end(e, 'keyboard');\n        };\n        moveProps.onKeyDown = (e)=>{\n            switch(e.key){\n                case 'Left':\n                case 'ArrowLeft':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, -1, 0);\n                    break;\n                case 'Right':\n                case 'ArrowRight':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, 1, 0);\n                    break;\n                case 'Up':\n                case 'ArrowUp':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, 0, -1);\n                    break;\n                case 'Down':\n                case 'ArrowDown':\n                    e.preventDefault();\n                    e.stopPropagation();\n                    triggerKeyboardMove(e, 0, 1);\n                    break;\n            }\n        };\n        return moveProps;\n    }, [\n        state,\n        addGlobalListener,\n        removeGlobalListener,\n        move,\n        end\n    ]);\n    return {\n        moveProps\n    };\n}\n\n},{\"./textSelection\":\"7DdaW\",\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"7DdaW\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"disableTextSelection\", ()=>disableTextSelection);\nparcelHelpers.export(exports, \"restoreTextSelection\", ()=>restoreTextSelection);\nvar _utils = require(\"@react-aria/utils\");\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap();\nfunction disableTextSelection(target) {\n    if ((0, _utils.isIOS)()) {\n        if (state === 'default') {\n            const documentObject = (0, _utils.getOwnerDocument)(target);\n            savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n            documentObject.documentElement.style.webkitUserSelect = 'none';\n        }\n        state = 'disabled';\n    } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n        // If not iOS, store the target's original user-select and change to user-select: none\n        // Ignore state since it doesn't apply for non iOS\n        let property = 'userSelect' in target.style ? 'userSelect' : 'webkitUserSelect';\n        modifiedElementMap.set(target, target.style[property]);\n        target.style[property] = 'none';\n    }\n}\nfunction restoreTextSelection(target) {\n    if ((0, _utils.isIOS)()) {\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') return;\n        state = 'restoring';\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            (0, _utils.runAfterTransition)(()=>{\n                // Avoid race conditions\n                if (state === 'restoring') {\n                    const documentObject = (0, _utils.getOwnerDocument)(target);\n                    if (documentObject.documentElement.style.webkitUserSelect === 'none') documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n                    savedUserSelect = '';\n                    state = 'default';\n                }\n            });\n        }, 300);\n    } else if (target instanceof HTMLElement || target instanceof SVGElement) // If not iOS, restore the target's original user-select if any\n    // Ignore state since it doesn't apply for non iOS\n    {\n        if (target && modifiedElementMap.has(target)) {\n            let targetOldUserSelect = modifiedElementMap.get(target);\n            let property = 'userSelect' in target.style ? 'userSelect' : 'webkitUserSelect';\n            if (target.style[property] === 'none') target.style[property] = targetOldUserSelect;\n            if (target.getAttribute('style') === '') target.removeAttribute('style');\n            modifiedElementMap.delete(target);\n        }\n    }\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"fOpRp\":[function(require,module,exports,__globalThis) {\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 */ // 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\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\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 */ parcelHelpers.export(exports, \"usePress\", ()=>usePress);\nvar _utils = require(\"@react-aria/utils\");\nvar _textSelection = require(\"./textSelection\");\nvar _reactDom = require(\"react-dom\");\nvar _context = require(\"./context\");\nvar _utils1 = require(\"./utils\");\nvar _react = require(\"react\");\nfunction usePressResponderContext(props) {\n    // Consume context from <PressResponder> and merge with props.\n    let context = (0, _react.useContext)((0, _context.PressResponderContext));\n    if (context) {\n        let { register, ...contextProps } = context;\n        props = (0, _utils.mergeProps)(contextProps, props);\n        register();\n    }\n    (0, _utils.useSyncRef)(context, props.ref);\n    return props;\n}\nclass PressEvent {\n    #shouldStopPropagation;\n    constructor(type, pointerType, originalEvent, state){\n        this.#shouldStopPropagation = true;\n        let currentTarget = state?.target ?? originalEvent.currentTarget;\n        const rect = currentTarget?.getBoundingClientRect();\n        let x, y = 0;\n        let clientX, clientY = null;\n        if (originalEvent.clientX != null && originalEvent.clientY != null) {\n            clientX = originalEvent.clientX;\n            clientY = originalEvent.clientY;\n        }\n        if (rect) {\n            if (clientX != null && clientY != null) {\n                x = clientX - rect.left;\n                y = clientY - rect.top;\n            } else {\n                x = rect.width / 2;\n                y = rect.height / 2;\n            }\n        }\n        this.type = type;\n        this.pointerType = pointerType;\n        this.target = originalEvent.currentTarget;\n        this.shiftKey = originalEvent.shiftKey;\n        this.metaKey = originalEvent.metaKey;\n        this.ctrlKey = originalEvent.ctrlKey;\n        this.altKey = originalEvent.altKey;\n        this.x = x;\n        this.y = y;\n    }\n    continuePropagation() {\n        this.#shouldStopPropagation = false;\n    }\n    get shouldStopPropagation() {\n        return this.#shouldStopPropagation;\n    }\n}\nconst LINK_CLICKED = Symbol('linkClicked');\nfunction usePress(props) {\n    let { onPress, onPressChange, onPressStart, onPressEnd, onPressUp, isDisabled, isPressed: isPressedProp, preventFocusOnPress, shouldCancelOnPointerExit, allowTextSelectionOnPress, // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ref: _, ...domProps } = usePressResponderContext(props);\n    let [isPressed, setPressed] = (0, _react.useState)(false);\n    let ref = (0, _react.useRef)({\n        isPressed: false,\n        ignoreEmulatedMouseEvents: false,\n        didFirePressStart: false,\n        isTriggeringEvent: false,\n        activePointerId: null,\n        target: null,\n        isOverTarget: false,\n        pointerType: null,\n        disposables: []\n    });\n    let { addGlobalListener, removeAllGlobalListeners } = (0, _utils.useGlobalListeners)();\n    let triggerPressStart = (0, _utils.useEffectEvent)((originalEvent, pointerType)=>{\n        let state = ref.current;\n        if (isDisabled || state.didFirePressStart) return false;\n        let shouldStopPropagation = true;\n        state.isTriggeringEvent = true;\n        if (onPressStart) {\n            let event = new PressEvent('pressstart', pointerType, originalEvent);\n            onPressStart(event);\n            shouldStopPropagation = event.shouldStopPropagation;\n        }\n        if (onPressChange) onPressChange(true);\n        state.isTriggeringEvent = false;\n        state.didFirePressStart = true;\n        setPressed(true);\n        return shouldStopPropagation;\n    });\n    let triggerPressEnd = (0, _utils.useEffectEvent)((originalEvent, pointerType, wasPressed = true)=>{\n        let state = ref.current;\n        if (!state.didFirePressStart) return false;\n        state.didFirePressStart = false;\n        state.isTriggeringEvent = true;\n        let shouldStopPropagation = true;\n        if (onPressEnd) {\n            let event = new PressEvent('pressend', pointerType, originalEvent);\n            onPressEnd(event);\n            shouldStopPropagation = event.shouldStopPropagation;\n        }\n        if (onPressChange) onPressChange(false);\n        setPressed(false);\n        if (onPress && wasPressed && !isDisabled) {\n            let event = new PressEvent('press', pointerType, originalEvent);\n            onPress(event);\n            shouldStopPropagation &&= event.shouldStopPropagation;\n        }\n        state.isTriggeringEvent = false;\n        return shouldStopPropagation;\n    });\n    let triggerPressUp = (0, _utils.useEffectEvent)((originalEvent, pointerType)=>{\n        let state = ref.current;\n        if (isDisabled) return false;\n        if (onPressUp) {\n            state.isTriggeringEvent = true;\n            let event = new PressEvent('pressup', pointerType, originalEvent);\n            onPressUp(event);\n            state.isTriggeringEvent = false;\n            return event.shouldStopPropagation;\n        }\n        return true;\n    });\n    let cancel = (0, _utils.useEffectEvent)((e)=>{\n        let state = ref.current;\n        if (state.isPressed && state.target) {\n            if (state.didFirePressStart && state.pointerType != null) triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n            state.isPressed = false;\n            state.isOverTarget = false;\n            state.activePointerId = null;\n            state.pointerType = null;\n            removeAllGlobalListeners();\n            if (!allowTextSelectionOnPress) (0, _textSelection.restoreTextSelection)(state.target);\n            for (let dispose of state.disposables)dispose();\n            state.disposables = [];\n        }\n    });\n    let cancelOnPointerExit = (0, _utils.useEffectEvent)((e)=>{\n        if (shouldCancelOnPointerExit) cancel(e);\n    });\n    let pressProps = (0, _react.useMemo)(()=>{\n        let state = ref.current;\n        let pressProps = {\n            onKeyDown (e) {\n                if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && (0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) {\n                    if (shouldPreventDefaultKeyboard((0, _utils.getEventTarget)(e.nativeEvent), e.key)) e.preventDefault();\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                    let shouldStopPropagation = true;\n                    if (!state.isPressed && !e.repeat) {\n                        state.target = e.currentTarget;\n                        state.isPressed = true;\n                        state.pointerType = 'keyboard';\n                        shouldStopPropagation = triggerPressStart(e, 'keyboard');\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. Make it capturing so that it will trigger\n                        // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n                        let originalTarget = e.currentTarget;\n                        let pressUp = (e)=>{\n                            if (isValidKeyboardEvent(e, originalTarget) && !e.repeat && (0, _utils.nodeContains)(originalTarget, (0, _utils.getEventTarget)(e)) && state.target) triggerPressUp(createEvent(state.target, e), 'keyboard');\n                        };\n                        addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'keyup', (0, _utils.chain)(pressUp, onKeyUp), true);\n                    }\n                    if (shouldStopPropagation) e.stopPropagation();\n                    // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n                    // macOS has a bug where keyup events are not fired while the Meta key is down.\n                    // When the Meta key itself is released we will get an event for that, and we'll act as if\n                    // all of these other keys were released as well.\n                    // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n                    // https://bugs.webkit.org/show_bug.cgi?id=55291\n                    // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n                    if (e.metaKey && (0, _utils.isMac)()) state.metaKeyEvents?.set(e.key, e.nativeEvent);\n                } else if (e.key === 'Meta') state.metaKeyEvents = new Map();\n            },\n            onClick (e) {\n                if (e && !(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                if (e && e.button === 0 && !state.isTriggeringEvent && !(0, _utils.openLink).isOpening) {\n                    let shouldStopPropagation = true;\n                    if (isDisabled) e.preventDefault();\n                    // If triggered from a screen reader or by using element.click(),\n                    // trigger as if it were a keyboard click.\n                    if (!state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || (0, _utils.isVirtualClick)(e.nativeEvent))) {\n                        let stopPressStart = triggerPressStart(e, 'virtual');\n                        let stopPressUp = triggerPressUp(e, 'virtual');\n                        let stopPressEnd = triggerPressEnd(e, 'virtual');\n                        shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n                    } else if (state.isPressed && state.pointerType !== 'keyboard') {\n                        let pointerType = state.pointerType || e.nativeEvent.pointerType || 'virtual';\n                        shouldStopPropagation = triggerPressEnd(createEvent(e.currentTarget, e), pointerType, true);\n                        state.isOverTarget = false;\n                        cancel(e);\n                    }\n                    state.ignoreEmulatedMouseEvents = false;\n                    if (shouldStopPropagation) e.stopPropagation();\n                }\n            }\n        };\n        let onKeyUp = (e)=>{\n            if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n                if (shouldPreventDefaultKeyboard((0, _utils.getEventTarget)(e), e.key)) e.preventDefault();\n                let target = (0, _utils.getEventTarget)(e);\n                triggerPressEnd(createEvent(state.target, e), 'keyboard', (0, _utils.nodeContains)(state.target, (0, _utils.getEventTarget)(e)));\n                removeAllGlobalListeners();\n                // If a link was triggered with a key other than Enter, open the URL ourselves.\n                // This means the link has a role override, and the default browser behavior\n                // only applies when using the Enter key.\n                if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && (0, _utils.nodeContains)(state.target, target) && !e[LINK_CLICKED]) {\n                    // Store a hidden property on the event so we only trigger link click once,\n                    // even if there are multiple usePress instances attached to the element.\n                    e[LINK_CLICKED] = true;\n                    (0, _utils.openLink)(state.target, e, false);\n                }\n                state.isPressed = false;\n                state.metaKeyEvents?.delete(e.key);\n            } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n                // If we recorded keydown events that occurred while the Meta key was pressed,\n                // and those haven't received keyup events already, fire keyup events ourselves.\n                // See comment above for more info about the macOS bug causing this.\n                let events = state.metaKeyEvents;\n                state.metaKeyEvents = undefined;\n                for (let event of events.values())state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\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 || !(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n                // Ignore and let the onClick handler take care of it instead.\n                // https://bugs.webkit.org/show_bug.cgi?id=222627\n                // https://bugs.webkit.org/show_bug.cgi?id=223202\n                if ((0, _utils.isVirtualPointerEvent)(e.nativeEvent)) {\n                    state.pointerType = 'virtual';\n                    return;\n                }\n                state.pointerType = e.pointerType;\n                let shouldStopPropagation = true;\n                if (!state.isPressed) {\n                    state.isPressed = true;\n                    state.isOverTarget = true;\n                    state.activePointerId = e.pointerId;\n                    state.target = e.currentTarget;\n                    if (!allowTextSelectionOnPress) (0, _textSelection.disableTextSelection)(state.target);\n                    shouldStopPropagation = triggerPressStart(e, state.pointerType);\n                    // Release pointer capture so that touch interactions can leave the original target.\n                    // This enables onPointerLeave and onPointerEnter to fire.\n                    let target = (0, _utils.getEventTarget)(e.nativeEvent);\n                    if ('releasePointerCapture' in target) target.releasePointerCapture(e.pointerId);\n                    addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'pointerup', onPointerUp, false);\n                    addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'pointercancel', onPointerCancel, false);\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onMouseDown = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                if (e.button === 0) {\n                    if (preventFocusOnPress) {\n                        let dispose = (0, _utils1.preventFocus)(e.target);\n                        if (dispose) state.disposables.push(dispose);\n                    }\n                    e.stopPropagation();\n                }\n            };\n            pressProps.onPointerUp = (e)=>{\n                // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent)) || state.pointerType === 'virtual') return;\n                // Only handle left clicks\n                if (e.button === 0) triggerPressUp(e, state.pointerType || e.pointerType);\n            };\n            pressProps.onPointerEnter = (e)=>{\n                if (e.pointerId === state.activePointerId && state.target && !state.isOverTarget && state.pointerType != null) {\n                    state.isOverTarget = true;\n                    triggerPressStart(createEvent(state.target, e), state.pointerType);\n                }\n            };\n            pressProps.onPointerLeave = (e)=>{\n                if (e.pointerId === state.activePointerId && state.target && state.isOverTarget && state.pointerType != null) {\n                    state.isOverTarget = false;\n                    triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n                    cancelOnPointerExit(e);\n                }\n            };\n            let onPointerUp = (e)=>{\n                if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n                    if ((0, _utils.nodeContains)(state.target, (0, _utils.getEventTarget)(e)) && state.pointerType != null) {\n                        // Wait for onClick to fire onPress. This avoids browser issues when the DOM\n                        // is mutated between onPointerUp and onClick, and is more compatible with third party libraries.\n                        // https://github.com/adobe/react-spectrum/issues/1513\n                        // https://issues.chromium.org/issues/40732224\n                        // However, iOS and Android do not focus or fire onClick after a long press.\n                        // We work around this by triggering a click ourselves after a timeout.\n                        // This timeout is canceled during the click event in case the real one fires first.\n                        // The timeout must be at least 32ms, because Safari on iOS delays the click event on\n                        // non-form elements without certain ARIA roles (for hover emulation).\n                        // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892\n                        let clicked = false;\n                        let timeout = setTimeout(()=>{\n                            if (state.isPressed && state.target instanceof HTMLElement) {\n                                if (clicked) cancel(e);\n                                else {\n                                    (0, _utils.focusWithoutScrolling)(state.target);\n                                    state.target.click();\n                                }\n                            }\n                        }, 80);\n                        // Use a capturing listener to track if a click occurred.\n                        // If stopPropagation is called it may never reach our handler.\n                        addGlobalListener(e.currentTarget, 'click', ()=>clicked = true, true);\n                        state.disposables.push(()=>clearTimeout(timeout));\n                    } else cancel(e);\n                    // Ignore subsequent onPointerLeave event before onClick on touch devices.\n                    state.isOverTarget = false;\n                }\n            };\n            let onPointerCancel = (e)=>{\n                cancel(e);\n            };\n            pressProps.onDragStart = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n                cancel(e);\n            };\n        } else {\n            // NOTE: this fallback branch is almost entirely used by unit tests.\n            // All browsers now support pointer events, but JSDOM still does not.\n            pressProps.onMouseDown = (e)=>{\n                // Only handle left clicks\n                if (e.button !== 0 || !(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                if (state.ignoreEmulatedMouseEvents) {\n                    e.stopPropagation();\n                    return;\n                }\n                state.isPressed = true;\n                state.isOverTarget = true;\n                state.target = e.currentTarget;\n                state.pointerType = (0, _utils.isVirtualClick)(e.nativeEvent) ? 'virtual' : 'mouse';\n                // Flush sync so that focus moved during react re-renders occurs before we yield back to the browser.\n                let shouldStopPropagation = (0, _reactDom.flushSync)(()=>triggerPressStart(e, state.pointerType));\n                if (shouldStopPropagation) e.stopPropagation();\n                if (preventFocusOnPress) {\n                    let dispose = (0, _utils1.preventFocus)(e.target);\n                    if (dispose) state.disposables.push(dispose);\n                }\n                addGlobalListener((0, _utils.getOwnerDocument)(e.currentTarget), 'mouseup', onMouseUp, false);\n            };\n            pressProps.onMouseEnter = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                let shouldStopPropagation = true;\n                if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n                    state.isOverTarget = true;\n                    shouldStopPropagation = triggerPressStart(e, state.pointerType);\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onMouseLeave = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                let shouldStopPropagation = true;\n                if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n                    state.isOverTarget = false;\n                    shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n                    cancelOnPointerExit(e);\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onMouseUp = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                if (!state.ignoreEmulatedMouseEvents && e.button === 0) triggerPressUp(e, state.pointerType || 'mouse');\n            };\n            let onMouseUp = (e)=>{\n                // Only handle left clicks\n                if (e.button !== 0) return;\n                if (state.ignoreEmulatedMouseEvents) {\n                    state.ignoreEmulatedMouseEvents = false;\n                    return;\n                }\n                if (state.target && state.target.contains(e.target) && state.pointerType != null) ;\n                else cancel(e);\n                state.isOverTarget = false;\n            };\n            pressProps.onTouchStart = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                let touch = getTouchFromEvent(e.nativeEvent);\n                if (!touch) return;\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                if (!allowTextSelectionOnPress) (0, _textSelection.disableTextSelection)(state.target);\n                let shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n                if (shouldStopPropagation) e.stopPropagation();\n                addGlobalListener((0, _utils.getOwnerWindow)(e.currentTarget), 'scroll', onScroll, true);\n            };\n            pressProps.onTouchMove = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                if (!state.isPressed) {\n                    e.stopPropagation();\n                    return;\n                }\n                let touch = getTouchById(e.nativeEvent, state.activePointerId);\n                let shouldStopPropagation = true;\n                if (touch && isOverTarget(touch, e.currentTarget)) {\n                    if (!state.isOverTarget && state.pointerType != null) {\n                        state.isOverTarget = true;\n                        shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n                    }\n                } else if (state.isOverTarget && state.pointerType != null) {\n                    state.isOverTarget = false;\n                    shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target, e), state.pointerType, false);\n                    cancelOnPointerExit(createTouchEvent(state.target, e));\n                }\n                if (shouldStopPropagation) e.stopPropagation();\n            };\n            pressProps.onTouchEnd = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                if (!state.isPressed) {\n                    e.stopPropagation();\n                    return;\n                }\n                let touch = getTouchById(e.nativeEvent, state.activePointerId);\n                let shouldStopPropagation = true;\n                if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n                    triggerPressUp(createTouchEvent(state.target, e), state.pointerType);\n                    shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target, e), state.pointerType);\n                } else if (state.isOverTarget && state.pointerType != null) shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target, e), state.pointerType, false);\n                if (shouldStopPropagation) e.stopPropagation();\n                state.isPressed = false;\n                state.activePointerId = null;\n                state.isOverTarget = false;\n                state.ignoreEmulatedMouseEvents = true;\n                if (state.target && !allowTextSelectionOnPress) (0, _textSelection.restoreTextSelection)(state.target);\n                removeAllGlobalListeners();\n            };\n            pressProps.onTouchCancel = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                e.stopPropagation();\n                if (state.isPressed) cancel(createTouchEvent(state.target, e));\n            };\n            let onScroll = (e)=>{\n                if (state.isPressed && (0, _utils.nodeContains)((0, _utils.getEventTarget)(e), state.target)) cancel({\n                    currentTarget: state.target,\n                    shiftKey: false,\n                    ctrlKey: false,\n                    metaKey: false,\n                    altKey: false\n                });\n            };\n            pressProps.onDragStart = (e)=>{\n                if (!(0, _utils.nodeContains)(e.currentTarget, (0, _utils.getEventTarget)(e.nativeEvent))) return;\n                cancel(e);\n            };\n        }\n        return pressProps;\n    }, [\n        addGlobalListener,\n        isDisabled,\n        preventFocusOnPress,\n        removeAllGlobalListeners,\n        allowTextSelectionOnPress,\n        cancel,\n        cancelOnPointerExit,\n        triggerPressEnd,\n        triggerPressStart,\n        triggerPressUp\n    ]);\n    // Remove user-select: none in case component unmounts immediately after pressStart\n    (0, _react.useEffect)(()=>{\n        let state = ref.current;\n        return ()=>{\n            if (!allowTextSelectionOnPress) (0, _textSelection.restoreTextSelection)(state.target ?? undefined);\n            for (let dispose of state.disposables)dispose();\n            state.disposables = [];\n        };\n    }, [\n        allowTextSelectionOnPress\n    ]);\n    return {\n        isPressed: isPressedProp || isPressed,\n        pressProps: (0, _utils.mergeProps)(domProps, pressProps)\n    };\n}\nfunction isHTMLAnchorLink(target) {\n    return target.tagName === 'A' && target.hasAttribute('href');\n}\nfunction isValidKeyboardEvent(event, currentTarget) {\n    const { key, code } = event;\n    const element = currentTarget;\n    const role = element.getAttribute('role');\n    // Accessibility for keyboards. Space and Enter only.\n    // \"Spacebar\" is for IE 11\n    return (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') && !(element instanceof (0, _utils.getOwnerWindow)(element).HTMLInputElement && !isValidInputKey(element, key) || element instanceof (0, _utils.getOwnerWindow)(element).HTMLTextAreaElement || element.isContentEditable) && // Links should only trigger with Enter key\n    !((role === 'link' || !role && isHTMLAnchorLink(element)) && key !== 'Enter');\n}\nfunction getTouchFromEvent(event) {\n    const { targetTouches } = event;\n    if (targetTouches.length > 0) return targetTouches[0];\n    return null;\n}\nfunction getTouchById(event, pointerId) {\n    const changedTouches = event.changedTouches;\n    for(let i = 0; i < changedTouches.length; i++){\n        const touch = changedTouches[i];\n        if (touch.identifier === pointerId) return touch;\n    }\n    return null;\n}\nfunction createTouchEvent(target, e) {\n    let clientX = 0;\n    let clientY = 0;\n    if (e.targetTouches && e.targetTouches.length === 1) {\n        clientX = e.targetTouches[0].clientX;\n        clientY = e.targetTouches[0].clientY;\n    }\n    return {\n        currentTarget: target,\n        shiftKey: e.shiftKey,\n        ctrlKey: e.ctrlKey,\n        metaKey: e.metaKey,\n        altKey: e.altKey,\n        clientX,\n        clientY\n    };\n}\nfunction createEvent(target, e) {\n    let clientX = e.clientX;\n    let clientY = e.clientY;\n    return {\n        currentTarget: target,\n        shiftKey: e.shiftKey,\n        ctrlKey: e.ctrlKey,\n        metaKey: e.metaKey,\n        altKey: e.altKey,\n        clientX,\n        clientY\n    };\n}\nfunction getPointClientRect(point) {\n    let offsetX = 0;\n    let offsetY = 0;\n    if (point.width !== undefined) offsetX = point.width / 2;\n    else if (point.radiusX !== undefined) offsetX = point.radiusX;\n    if (point.height !== undefined) offsetY = point.height / 2;\n    else if (point.radiusY !== undefined) offsetY = point.radiusY;\n    return {\n        top: point.clientY - offsetY,\n        right: point.clientX + offsetX,\n        bottom: point.clientY + offsetY,\n        left: point.clientX - offsetX\n    };\n}\nfunction areRectanglesOverlapping(a, b) {\n    // check if they cannot overlap on x axis\n    if (a.left > b.right || b.left > a.right) return false;\n    // check if they cannot overlap on y axis\n    if (a.top > b.bottom || b.top > a.bottom) return false;\n    return true;\n}\nfunction isOverTarget(point, target) {\n    let rect = target.getBoundingClientRect();\n    let pointRect = getPointClientRect(point);\n    return areRectanglesOverlapping(rect, pointRect);\n}\nfunction shouldPreventDefaultUp(target) {\n    if (target instanceof HTMLInputElement) return false;\n    if (target instanceof HTMLButtonElement) return target.type !== 'submit' && target.type !== 'reset';\n    if (isHTMLAnchorLink(target)) return false;\n    return true;\n}\nfunction shouldPreventDefaultKeyboard(target, key) {\n    if (target instanceof HTMLInputElement) return !isValidInputKey(target, key);\n    return shouldPreventDefaultUp(target);\n}\nconst nonTextInputTypes = new Set([\n    'checkbox',\n    'radio',\n    'range',\n    'color',\n    'file',\n    'image',\n    'button',\n    'submit',\n    'reset'\n]);\nfunction isValidInputKey(target, key) {\n    // Only space should toggle checkboxes and radios, not enter.\n    return target.type === 'checkbox' || target.type === 'radio' ? key === ' ' : nonTextInputTypes.has(target.type);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./textSelection\":\"7DdaW\",\"react-dom\":\"a0ZmT\",\"./context\":\"6hjZq\",\"./utils\":\"9VJmY\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"4d7Vp\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n// scroll wheel needs to be added not passively so it's cancelable, small helper hook to remember that\nparcelHelpers.export(exports, \"useScrollWheel\", ()=>useScrollWheel);\nvar _react = require(\"react\");\nvar _utils = require(\"@react-aria/utils\");\nfunction useScrollWheel(props, ref) {\n    let { onScroll, isDisabled } = props;\n    let onScrollHandler = (0, _react.useCallback)((e)=>{\n        // If the ctrlKey is pressed, this is a zoom event, do nothing.\n        if (e.ctrlKey) return;\n        // stop scrolling the page\n        e.preventDefault();\n        e.stopPropagation();\n        if (onScroll) onScroll({\n            deltaX: e.deltaX,\n            deltaY: e.deltaY\n        });\n    }, [\n        onScroll\n    ]);\n    (0, _utils.useEvent)(ref, 'wheel', isDisabled ? undefined : onScrollHandler);\n}\n\n},{\"react\":\"jEiK2\",\"@react-aria/utils\":\"e9Yvo\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"6FTm4\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * Handles long press interactions across mouse and touch devices. Supports a customizable time threshold,\n * accessibility description, and normalizes behavior across browsers and devices.\n */ parcelHelpers.export(exports, \"useLongPress\", ()=>useLongPress);\nvar _utils = require(\"@react-aria/utils\");\nvar _usePress = require(\"./usePress\");\nvar _react = require(\"react\");\nconst DEFAULT_THRESHOLD = 500;\nfunction useLongPress(props) {\n    let { isDisabled, onLongPressStart, onLongPressEnd, onLongPress, threshold = DEFAULT_THRESHOLD, accessibilityDescription } = props;\n    const timeRef = (0, _react.useRef)(undefined);\n    let { addGlobalListener, removeGlobalListener } = (0, _utils.useGlobalListeners)();\n    let { pressProps } = (0, _usePress.usePress)({\n        isDisabled,\n        onPressStart (e) {\n            e.continuePropagation();\n            if (e.pointerType === 'mouse' || e.pointerType === 'touch') {\n                if (onLongPressStart) onLongPressStart({\n                    ...e,\n                    type: 'longpressstart'\n                });\n                timeRef.current = setTimeout(()=>{\n                    // Prevent other usePress handlers from also handling this event.\n                    e.target.dispatchEvent(new PointerEvent('pointercancel', {\n                        bubbles: true\n                    }));\n                    // Ensure target is focused. On touch devices, browsers typically focus on pointer up.\n                    if ((0, _utils.getOwnerDocument)(e.target).activeElement !== e.target) (0, _utils.focusWithoutScrolling)(e.target);\n                    if (onLongPress) onLongPress({\n                        ...e,\n                        type: 'longpress'\n                    });\n                    timeRef.current = undefined;\n                }, threshold);\n                // Prevent context menu, which may be opened on long press on touch devices\n                if (e.pointerType === 'touch') {\n                    let onContextMenu = (e)=>{\n                        e.preventDefault();\n                    };\n                    addGlobalListener(e.target, 'contextmenu', onContextMenu, {\n                        once: true\n                    });\n                    addGlobalListener(window, 'pointerup', ()=>{\n                        // If no contextmenu event is fired quickly after pointerup, remove the handler\n                        // so future context menu events outside a long press are not prevented.\n                        setTimeout(()=>{\n                            removeGlobalListener(e.target, 'contextmenu', onContextMenu);\n                        }, 30);\n                    }, {\n                        once: true\n                    });\n                }\n            }\n        },\n        onPressEnd (e) {\n            if (timeRef.current) clearTimeout(timeRef.current);\n            if (onLongPressEnd && (e.pointerType === 'mouse' || e.pointerType === 'touch')) onLongPressEnd({\n                ...e,\n                type: 'longpressend'\n            });\n        }\n    });\n    let descriptionProps = (0, _utils.useDescription)(onLongPress && !isDisabled ? accessibilityDescription : undefined);\n    return {\n        longPressProps: (0, _utils.mergeProps)(pressProps, descriptionProps)\n    };\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./usePress\":\"fOpRp\",\"react\":\"jEiK2\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"3Hzxp\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"FocusableContext\", ()=>FocusableContext);\nparcelHelpers.export(exports, \"FocusableProvider\", ()=>FocusableProvider);\n/**\n * Used to make an element focusable and capable of auto focus.\n */ parcelHelpers.export(exports, \"useFocusable\", ()=>useFocusable);\nparcelHelpers.export(exports, \"Focusable\", ()=>Focusable);\nvar _ = require(\"./\");\nvar _utils = require(\"@react-aria/utils\");\nvar _react = require(\"react\");\nvar _reactDefault = parcelHelpers.interopDefault(_react);\nvar _useFocus = require(\"./useFocus\");\nvar _useKeyboard = require(\"./useKeyboard\");\nlet FocusableContext = /*#__PURE__*/ (0, _reactDefault.default).createContext(null);\nfunction useFocusableContext(ref) {\n    let context = (0, _react.useContext)(FocusableContext) || {};\n    (0, _utils.useSyncRef)(context, ref);\n    // eslint-disable-next-line\n    let { ref: _, ...otherProps } = context;\n    return otherProps;\n}\nconst FocusableProvider = /*#__PURE__*/ (0, _reactDefault.default).forwardRef(function FocusableProvider(props, ref) {\n    let { children, ...otherProps } = props;\n    let objRef = (0, _utils.useObjectRef)(ref);\n    let context = {\n        ...otherProps,\n        ref: objRef\n    };\n    return /*#__PURE__*/ (0, _reactDefault.default).createElement(FocusableContext.Provider, {\n        value: context\n    }, children);\n});\nfunction useFocusable(props, domRef) {\n    let { focusProps } = (0, _useFocus.useFocus)(props);\n    let { keyboardProps } = (0, _useKeyboard.useKeyboard)(props);\n    let interactions = (0, _utils.mergeProps)(focusProps, keyboardProps);\n    let domProps = useFocusableContext(domRef);\n    let interactionProps = props.isDisabled ? {} : domProps;\n    let autoFocusRef = (0, _react.useRef)(props.autoFocus);\n    (0, _react.useEffect)(()=>{\n        if (autoFocusRef.current && domRef.current) (0, _.focusSafely)(domRef.current);\n        autoFocusRef.current = false;\n    }, [\n        domRef\n    ]);\n    // Always set a tabIndex so that Safari allows focusing native buttons and inputs.\n    let tabIndex = props.excludeFromTabOrder ? -1 : 0;\n    if (props.isDisabled) tabIndex = undefined;\n    return {\n        focusableProps: (0, _utils.mergeProps)({\n            ...interactions,\n            tabIndex\n        }, interactionProps)\n    };\n}\nconst Focusable = /*#__PURE__*/ (0, _react.forwardRef)(({ children, ...props }, ref)=>{\n    ref = (0, _utils.useObjectRef)(ref);\n    let { focusableProps } = useFocusable(props, ref);\n    let child = (0, _reactDefault.default).Children.only(children);\n    (0, _react.useEffect)(()=>{\n        let el = ref.current;\n        if (!el || !(el instanceof (0, _utils.getOwnerWindow)(el).Element)) {\n            console.error('<Focusable> child must forward its ref to a DOM element.');\n            return;\n        }\n        if (!props.isDisabled && !(0, _utils.isFocusable)(el)) {\n            console.warn('<Focusable> child must be focusable. Please ensure the tabIndex prop is passed through.');\n            return;\n        }\n        if (el.localName !== 'button' && el.localName !== 'input' && el.localName !== 'select' && el.localName !== 'textarea' && el.localName !== 'a' && el.localName !== 'area' && el.localName !== 'summary' && el.localName !== 'img' && el.localName !== 'svg') {\n            let role = el.getAttribute('role');\n            if (!role) console.warn('<Focusable> child must have an interactive ARIA role.');\n            else if (// https://w3c.github.io/aria/#widget_roles\n            role !== 'application' && role !== 'button' && role !== 'checkbox' && role !== 'combobox' && role !== 'gridcell' && role !== 'link' && role !== 'menuitem' && role !== 'menuitemcheckbox' && role !== 'menuitemradio' && role !== 'option' && role !== 'radio' && role !== 'searchbox' && role !== 'separator' && role !== 'slider' && role !== 'spinbutton' && role !== 'switch' && role !== 'tab' && role !== 'tabpanel' && role !== 'textbox' && role !== 'treeitem' && // aria-describedby is also announced on these roles\n            role !== 'img' && role !== 'meter' && role !== 'progressbar') console.warn(`<Focusable> child must have an interactive ARIA role. Got \"${role}\".`);\n        }\n    }, [\n        ref,\n        props.isDisabled\n    ]);\n    // @ts-ignore\n    let childRef = parseInt((0, _reactDefault.default).version, 10) < 19 ? child.ref : child.props.ref;\n    return /*#__PURE__*/ (0, _reactDefault.default).cloneElement(child, {\n        ...(0, _utils.mergeProps)(focusableProps, child.props),\n        // @ts-ignore\n        ref: (0, _utils.mergeRefs)(childRef, ref)\n    });\n});\n\n},{\"./\":\"dtdXE\",\"@react-aria/utils\":\"e9Yvo\",\"react\":\"jEiK2\",\"./useFocus\":\"5lXaz\",\"./useKeyboard\":\"6oNef\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}],\"5fTM6\":[function(require,module,exports,__globalThis) {\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 */ var parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\n/**\n * A utility function that focuses an element while avoiding undesired side effects such\n * as page scrolling and screen reader issues with CSS transitions.\n */ parcelHelpers.export(exports, \"focusSafely\", ()=>focusSafely);\nvar _utils = require(\"@react-aria/utils\");\nvar _useFocusVisible = require(\"./useFocusVisible\");\nfunction focusSafely(element) {\n    // If the user is interacting with a virtual cursor, e.g. screen reader, then\n    // wait until after any animated transitions that are currently occurring on\n    // the page before shifting focus. This avoids issues with VoiceOver on iOS\n    // causing the page to scroll when moving focus if the element is transitioning\n    // from off the screen.\n    const ownerDocument = (0, _utils.getOwnerDocument)(element);\n    const activeElement = (0, _utils.getActiveElement)(ownerDocument);\n    if ((0, _useFocusVisible.getInteractionModality)() === 'virtual') {\n        let lastFocusedElement = activeElement;\n        (0, _utils.runAfterTransition)(()=>{\n            // If focus did not move and the element is still in the document, focus it.\n            if ((0, _utils.getActiveElement)(ownerDocument) === lastFocusedElement && element.isConnected) (0, _utils.focusWithoutScrolling)(element);\n        });\n    } else (0, _utils.focusWithoutScrolling)(element);\n}\n\n},{\"@react-aria/utils\":\"e9Yvo\",\"./useFocusVisible\":\"cebUE\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"diccK\"}]},[], null, \"parcelRequire94c2\")\n\n//# sourceMappingURL=useButton.stories.8cdbf52d.js.map\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\nexport {Pressable} from './Pressable';\nexport {PressResponder, ClearPressResponder} from './PressResponder';\nexport {useFocus} from './useFocus';\nexport {\n  isFocusVisible,\n  getInteractionModality,\n  setInteractionModality,\n  addWindowFocusTracking,\n  useInteractionModality,\n  useFocusVisible,\n  useFocusVisibleListener\n} from './useFocusVisible';\nexport {useFocusWithin} from './useFocusWithin';\nexport {useHover} from './useHover';\nexport {useInteractOutside} from './useInteractOutside';\nexport {useKeyboard} from './useKeyboard';\nexport {useMove} from './useMove';\nexport {usePress} from './usePress';\nexport {useScrollWheel} from './useScrollWheel';\nexport {useLongPress} from './useLongPress';\nexport {useFocusable, FocusableProvider, Focusable, FocusableContext} from './useFocusable';\nexport {focusSafely} from './focusSafely';\n\nexport type {FocusProps, FocusResult} from './useFocus';\nexport type {FocusVisibleHandler, FocusVisibleProps, FocusVisibleResult, Modality} from './useFocusVisible';\nexport type {FocusWithinProps, FocusWithinResult} from './useFocusWithin';\nexport type {HoverProps, HoverResult} from './useHover';\nexport type {InteractOutsideProps} from './useInteractOutside';\nexport type {KeyboardProps, KeyboardResult} from './useKeyboard';\nexport type {PressProps, PressHookProps, PressResult} from './usePress';\nexport type {PressEvent, PressEvents, MoveStartEvent, MoveMoveEvent, MoveEndEvent, MoveEvents, HoverEvent, HoverEvents, FocusEvents, KeyboardEvents} from '@react-types/shared';\nexport type {MoveResult} from './useMove';\nexport type {LongPressProps, LongPressResult} from './useLongPress';\nexport type {ScrollWheelProps} from './useScrollWheel';\nexport type {FocusableAria, FocusableOptions, FocusableProviderProps} from './useFocusable';\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 {FocusableElement} from '@react-types/shared';\nimport {mergeProps, useObjectRef, useSyncRef} from '@react-aria/utils';\nimport {PressProps} from './usePress';\nimport {PressResponderContext} from './context';\nimport React, {ForwardedRef, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';\n\ninterface PressResponderProps extends PressProps {\n  children: ReactNode\n}\n\nexport const PressResponder = React.forwardRef(({children, ...props}: PressResponderProps, ref: ForwardedRef<FocusableElement>) => {\n  let isRegistered = useRef(false);\n  let prevContext = useContext(PressResponderContext);\n  ref = useObjectRef(ref || prevContext?.ref);\n  let context = mergeProps(prevContext || {}, {\n    ...props,\n    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      isRegistered.current = true; // only warn once in strict mode.\n    }\n  }, []);\n\n  return (\n    <PressResponderContext.Provider value={context}>\n      {children}\n    </PressResponderContext.Provider>\n  );\n});\n\nexport function ClearPressResponder({children}: {children: ReactNode}): ReactNode {\n  let context = useMemo(() => ({register: () => {}}), []);\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\nimport {FocusableElement} from '@react-types/shared';\nimport {PressProps} from './usePress';\nimport React, {MutableRefObject} from 'react';\n\ninterface IPressResponderContext extends PressProps {\n  register(): void,\n  ref?: MutableRefObject<FocusableElement>\n}\n\nexport const PressResponderContext = React.createContext<IPressResponderContext>({register: () => {}});\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 {DOMAttributes, FocusableElement, FocusEvents} from '@react-types/shared';\nimport {FocusEvent, useCallback} from 'react';\nimport {getActiveElement, getEventTarget, getOwnerDocument} from '@react-aria/utils';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusProps<Target = FocusableElement> extends FocusEvents<Target> {\n  /** Whether the focus events should be disabled. */\n  isDisabled?: boolean\n}\n\nexport interface FocusResult<Target = FocusableElement> {\n  /** Props to spread onto the target element. */\n  focusProps: DOMAttributes<Target>\n}\n\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */\nexport function useFocus<Target extends FocusableElement = FocusableElement>(props: FocusProps<Target>): FocusResult<Target> {\n  let {\n    isDisabled,\n    onFocus: onFocusProp,\n    onBlur: onBlurProp,\n    onFocusChange\n  } = props;\n\n  const onBlur: FocusProps<Target>['onBlur'] = useCallback((e: FocusEvent<Target>) => {\n    if (e.target === e.currentTarget) {\n      if (onBlurProp) {\n        onBlurProp(e);\n      }\n\n      if (onFocusChange) {\n        onFocusChange(false);\n      }\n\n      return true;\n    }\n  }, [onBlurProp, onFocusChange]);\n\n\n  const onSyntheticFocus = useSyntheticBlurEvent<Target>(onBlur);\n\n  const onFocus: FocusProps<Target>['onFocus'] = useCallback((e: FocusEvent<Target>) => {\n    // Double check that document.activeElement actually matches e.target in case a previously chained\n    // focus handler already moved focus somewhere else.\n\n    const ownerDocument = getOwnerDocument(e.target);\n    const activeElement = ownerDocument ? getActiveElement(ownerDocument) : getActiveElement();\n    if (e.target === e.currentTarget && activeElement === getEventTarget(e.nativeEvent)) {\n      if (onFocusProp) {\n        onFocusProp(e);\n      }\n\n      if (onFocusChange) {\n        onFocusChange(true);\n      }\n\n      onSyntheticFocus(e);\n    }\n  }, [onFocusChange, onFocusProp, onSyntheticFocus]);\n\n  return {\n    focusProps: {\n      onFocus: (!isDisabled && (onFocusProp || onFocusChange || onBlurProp)) ? onFocus : undefined,\n      onBlur: (!isDisabled && (onBlurProp || onFocusChange)) ? onBlur : undefined\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 {FocusableElement} from '@react-types/shared';\nimport {focusWithoutScrolling, getOwnerWindow, isFocusable, useEffectEvent, useLayoutEffect} from '@react-aria/utils';\nimport {FocusEvent as ReactFocusEvent, useCallback, useRef} from 'react';\n\nexport class SyntheticFocusEvent<Target = Element> implements ReactFocusEvent<Target> {\n  nativeEvent: FocusEvent;\n  target: EventTarget & Target;\n  currentTarget: EventTarget & Target;\n  relatedTarget: Element;\n  bubbles: boolean;\n  cancelable: boolean;\n  defaultPrevented: boolean;\n  eventPhase: number;\n  isTrusted: boolean;\n  timeStamp: number;\n  type: string;\n\n  constructor(type: string, nativeEvent: FocusEvent) {\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEvent.target as EventTarget & Target;\n    this.currentTarget = nativeEvent.currentTarget as EventTarget & Target;\n    this.relatedTarget = nativeEvent.relatedTarget as Element;\n    this.bubbles = nativeEvent.bubbles;\n    this.cancelable = nativeEvent.cancelable;\n    this.defaultPrevented = nativeEvent.defaultPrevented;\n    this.eventPhase = nativeEvent.eventPhase;\n    this.isTrusted = nativeEvent.isTrusted;\n    this.timeStamp = nativeEvent.timeStamp;\n    this.type = type;\n  }\n\n  isDefaultPrevented(): boolean {\n    return this.nativeEvent.defaultPrevented;\n  }\n\n  preventDefault(): void {\n    this.defaultPrevented = true;\n    this.nativeEvent.preventDefault();\n  }\n\n  stopPropagation(): void {\n    this.nativeEvent.stopPropagation();\n    this.isPropagationStopped = () => true;\n  }\n\n  isPropagationStopped(): boolean {\n    return false;\n  }\n\n  persist(): void {}\n}\n\nexport function useSyntheticBlurEvent<Target = Element>(onBlur: (e: ReactFocusEvent<Target>) => void): (e: ReactFocusEvent<Target>) => void {\n  let stateRef = useRef({\n    isFocused: false,\n    observer: null as MutationObserver | null\n  });\n\n  // Clean up MutationObserver on unmount. See below.\n\n  useLayoutEffect(() => {\n    const state = stateRef.current;\n    return () => {\n      if (state.observer) {\n        state.observer.disconnect();\n        state.observer = null;\n      }\n    };\n  }, []);\n\n  let dispatchBlur = useEffectEvent((e: SyntheticFocusEvent<Target>) => {\n    onBlur?.(e);\n  });\n\n  // This function is called during a React onFocus event.\n  return useCallback((e: ReactFocusEvent<Target>) => {\n    // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n    // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n    // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n    // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n    if (\n      e.target instanceof HTMLButtonElement ||\n      e.target instanceof HTMLInputElement ||\n      e.target instanceof HTMLTextAreaElement ||\n      e.target instanceof HTMLSelectElement\n    ) {\n      stateRef.current.isFocused = true;\n\n      let target = e.target;\n      let onBlurHandler: EventListenerOrEventListenerObject | null = (e) => {\n        stateRef.current.isFocused = false;\n\n        if (target.disabled) {\n          // For backward compatibility, dispatch a (fake) React synthetic event.\n          dispatchBlur(new SyntheticFocusEvent('blur', e as FocusEvent));\n        }\n\n        // We no longer need the MutationObserver once the target is blurred.\n        if (stateRef.current.observer) {\n          stateRef.current.observer.disconnect();\n          stateRef.current.observer = null;\n        }\n      };\n\n      target.addEventListener('focusout', onBlurHandler, {once: true});\n\n      stateRef.current.observer = new MutationObserver(() => {\n        if (stateRef.current.isFocused && target.disabled) {\n          stateRef.current.observer?.disconnect();\n          let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n          target.dispatchEvent(new FocusEvent('blur', {relatedTarget: relatedTargetEl}));\n          target.dispatchEvent(new FocusEvent('focusout', {bubbles: true, relatedTarget: relatedTargetEl}));\n        }\n      });\n\n      stateRef.current.observer.observe(target, {attributes: true, attributeFilter: ['disabled']});\n    }\n  }, [dispatchBlur]);\n}\n\nexport let ignoreFocusEvent = false;\n\n/**\n * This function prevents the next focus event fired on `target`, without using `event.preventDefault()`.\n * It works by waiting for the series of focus events to occur, and reverts focus back to where it was before.\n * It also makes these events mostly non-observable by using a capturing listener on the window and stopping propagation.\n */\nexport function preventFocus(target: FocusableElement | null): (() => void) | undefined {\n  // The browser will focus the nearest focusable ancestor of our target.\n  while (target && !isFocusable(target)) {\n    target = target.parentElement;\n  }\n\n  let window = getOwnerWindow(target);\n  let activeElement = window.document.activeElement as FocusableElement | null;\n  if (!activeElement || activeElement === target) {\n    return;\n  }\n\n  ignoreFocusEvent = true;\n  let isRefocusing = false;\n  let onBlur = (e: FocusEvent) => {\n    if (e.target === activeElement || isRefocusing) {\n      e.stopImmediatePropagation();\n    }\n  };\n\n  let onFocusOut = (e: FocusEvent) => {\n    if (e.target === activeElement || isRefocusing) {\n      e.stopImmediatePropagation();\n\n      // If there was no focusable ancestor, we don't expect a focus event.\n      // Re-focus the original active element here.\n      if (!target && !isRefocusing) {\n        isRefocusing = true;\n        focusWithoutScrolling(activeElement);\n        cleanup();\n      }\n    }\n  };\n\n  let onFocus = (e: FocusEvent) => {\n    if (e.target === target || isRefocusing) {\n      e.stopImmediatePropagation();\n    }\n  };\n\n  let onFocusIn = (e: FocusEvent) => {\n    if (e.target === target || isRefocusing) {\n      e.stopImmediatePropagation();\n\n      if (!isRefocusing) {\n        isRefocusing = true;\n        focusWithoutScrolling(activeElement);\n        cleanup();\n      }\n    }\n  };\n\n  window.addEventListener('blur', onBlur, true);\n  window.addEventListener('focusout', onFocusOut, true);\n  window.addEventListener('focusin', onFocusIn, true);\n  window.addEventListener('focus', onFocus, true);\n\n  let cleanup = () => {\n    cancelAnimationFrame(raf);\n    window.removeEventListener('blur', onBlur, true);\n    window.removeEventListener('focusout', onFocusOut, true);\n    window.removeEventListener('focusin', onFocusIn, true);\n    window.removeEventListener('focus', onFocus, true);\n    ignoreFocusEvent = false;\n    isRefocusing = false;\n  };\n\n  let raf = requestAnimationFrame(cleanup);\n  return cleanup;\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 {getOwnerDocument, getOwnerWindow, isMac, isVirtualClick} from '@react-aria/utils';\nimport {ignoreFocusEvent} from './utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport type Modality = 'keyboard' | 'pointer' | 'virtual';\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\nexport interface 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\nexport interface FocusVisibleResult {\n  /** Whether keyboard focus is visible globally. */\n  isFocusVisible: boolean\n}\n\nlet currentModality: null | Modality = null;\nlet changeHandlers = new Set<Handler>();\ninterface GlobalListenerData {\n  focus: () => void\n}\nexport let hasSetupGlobalListeners = new Map<Window, GlobalListenerData>(); // We use a map here to support setting event listeners across multiple document objects.\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.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\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 || ignoreFocusEvent || !e.isTrusted) {\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  if (ignoreFocusEvent) {\n    return;\n  }\n\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(element?: HTMLElement | null) {\n  if (typeof window === 'undefined' || hasSetupGlobalListeners.get(getOwnerWindow(element))) {\n    return;\n  }\n\n  const windowObject = getOwnerWindow(element);\n  const documentObject = getOwnerDocument(element);\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 = windowObject.HTMLElement.prototype.focus;\n  windowObject.HTMLElement.prototype.focus = function () {\n    hasEventBeforeFocus = true;\n    focus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n  };\n\n  documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n  documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n  documentObject.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  windowObject.addEventListener('focus', handleFocusEvent, true);\n  windowObject.addEventListener('blur', handleWindowBlur, false);\n\n  if (typeof PointerEvent !== 'undefined') {\n    documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n    documentObject.addEventListener('pointermove', handlePointerEvent, true);\n    documentObject.addEventListener('pointerup', handlePointerEvent, true);\n  } else {\n    documentObject.addEventListener('mousedown', handlePointerEvent, true);\n    documentObject.addEventListener('mousemove', handlePointerEvent, true);\n    documentObject.addEventListener('mouseup', handlePointerEvent, true);\n  }\n\n  // Add unmount handler\n  windowObject.addEventListener('beforeunload', () => {\n    tearDownWindowFocusTracking(element);\n  }, {once: true});\n\n  hasSetupGlobalListeners.set(windowObject, {focus});\n}\n\nconst tearDownWindowFocusTracking = (element, loadListener?: () => void) => {\n  const windowObject = getOwnerWindow(element);\n  const documentObject = getOwnerDocument(element);\n  if (loadListener) {\n    documentObject.removeEventListener('DOMContentLoaded', loadListener);\n  }\n  if (!hasSetupGlobalListeners.has(windowObject)) {\n    return;\n  }\n  windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject)!.focus;\n\n  documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n  documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n  documentObject.removeEventListener('click', handleClickEvent, true);\n\n  windowObject.removeEventListener('focus', handleFocusEvent, true);\n  windowObject.removeEventListener('blur', handleWindowBlur, false);\n\n  if (typeof PointerEvent !== 'undefined') {\n    documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n    documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n    documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n  } else {\n    documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n    documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n    documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n  }\n\n  hasSetupGlobalListeners.delete(windowObject);\n};\n\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n  const documentObject = getOwnerDocument(element);\n  let loadListener;\n  if (documentObject.readyState !== 'loading') {\n    setupGlobalFocusEvents(element);\n  } else {\n    loadListener = () => {\n      setupGlobalFocusEvents(element);\n    };\n    documentObject.addEventListener('DOMContentLoaded', loadListener);\n  }\n\n  return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') {\n  addWindowFocusTracking();\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 | null {\n  return currentModality;\n}\n\nexport function setInteractionModality(modality: Modality): void {\n  currentModality = modality;\n  triggerChangeHandlers(modality, null);\n}\n\n/**\n * Keeps state of the current modality.\n */\nexport function useInteractionModality(): Modality | null {\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 useIsSSR() ? null : modality;\n}\n\nconst nonTextInputTypes = new Set([\n  'checkbox',\n  'radio',\n  'range',\n  'color',\n  'file',\n  'image',\n  'button',\n  'submit',\n  'reset'\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  let document = getOwnerDocument(e?.target as Element);\n  const IHTMLInputElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLInputElement : HTMLInputElement;\n  const IHTMLTextAreaElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLTextAreaElement : HTMLTextAreaElement;\n  const IHTMLElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLElement : HTMLElement;\n  const IKeyboardEvent = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).KeyboardEvent : KeyboardEvent;\n\n  // For keyboard events that occur on a non-input element that will move focus into input element (aka ArrowLeft going from Datepicker button to the main input group)\n  // we need to rely on the user passing isTextInput into here. This way we can skip toggling focus visiblity for said input element\n  isTextInput = isTextInput ||\n    (document.activeElement instanceof IHTMLInputElement && !nonTextInputTypes.has(document.activeElement.type)) ||\n    document.activeElement instanceof IHTMLTextAreaElement ||\n    (document.activeElement instanceof IHTMLElement && document.activeElement.isContentEditable);\n  return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !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      // We want to early return for any keyboard events that occur inside text inputs EXCEPT for Tab and Escape\n      if (!isKeyboardFocusEvent(!!(opts?.isTextInput), modality, e)) {\n        return;\n      }\n      fn(isFocusVisible());\n    };\n    changeHandlers.add(handler);\n    return () => {\n      changeHandlers.delete(handler);\n    };\n  // eslint-disable-next-line react-hooks/exhaustive-deps\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 {DOMAttributes} from '@react-types/shared';\nimport {FocusEvent, useCallback, useRef} from 'react';\nimport {getActiveElement, getEventTarget, getOwnerDocument, nodeContains, useGlobalListeners} from '@react-aria/utils';\nimport {SyntheticFocusEvent, useSyntheticBlurEvent} from './utils';\n\nexport interface 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\nexport interface FocusWithinResult {\n  /** Props to spread onto the target element. */\n  focusWithinProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the target and its descendants.\n */\nexport function useFocusWithin(props: FocusWithinProps): FocusWithinResult {\n  let {\n    isDisabled,\n    onBlurWithin,\n    onFocusWithin,\n    onFocusWithinChange\n  } = props;\n  let state = useRef({\n    isFocusWithin: false\n  });\n\n  let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\n\n  let onBlur = useCallback((e: FocusEvent) => {\n    // Ignore events bubbling through portals.\n    if (!e.currentTarget.contains(e.target)) {\n      return;\n    }\n\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.current.isFocusWithin && !(e.currentTarget as Element).contains(e.relatedTarget as Element)) {\n      state.current.isFocusWithin = false;\n      removeAllGlobalListeners();\n\n      if (onBlurWithin) {\n        onBlurWithin(e);\n      }\n\n      if (onFocusWithinChange) {\n        onFocusWithinChange(false);\n      }\n    }\n  }, [onBlurWithin, onFocusWithinChange, state, removeAllGlobalListeners]);\n\n  let onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n  let onFocus = useCallback((e: FocusEvent) => {\n    // Ignore events bubbling through portals.\n    if (!e.currentTarget.contains(e.target)) {\n      return;\n    }\n\n    // Double check that document.activeElement actually matches e.target in case a previously chained\n    // focus handler already moved focus somewhere else.\n    const ownerDocument = getOwnerDocument(e.target);\n    const activeElement = getActiveElement(ownerDocument);\n    if (!state.current.isFocusWithin && activeElement === getEventTarget(e.nativeEvent)) {\n      if (onFocusWithin) {\n        onFocusWithin(e);\n      }\n\n      if (onFocusWithinChange) {\n        onFocusWithinChange(true);\n      }\n\n      state.current.isFocusWithin = true;\n      onSyntheticFocus(e);\n\n      // Browsers don't fire blur events when elements are removed from the DOM.\n      // However, if a focus event occurs outside the element we're tracking, we\n      // can manually fire onBlur.\n      let currentTarget = e.currentTarget;\n      addGlobalListener(ownerDocument, 'focus', e => {\n        if (state.current.isFocusWithin && !nodeContains(currentTarget, e.target as Element)) {\n          let event = new SyntheticFocusEvent('blur', new ownerDocument.defaultView!.FocusEvent('blur', {relatedTarget: e.target}));\n          event.target = currentTarget;\n          event.currentTarget = currentTarget;\n          onBlur(event);\n        }\n      }, {capture: true});\n    }\n  }, [onFocusWithin, onFocusWithinChange, onSyntheticFocus, addGlobalListener, onBlur]);\n\n  if (isDisabled) {\n    return {\n      focusWithinProps: {\n        // These cannot be null, that would conflict in mergeProps\n        onFocus: undefined,\n        onBlur: undefined\n      }\n    };\n  }\n\n  return {\n    focusWithinProps: {\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 {DOMAttributes, HoverEvents} from '@react-types/shared';\nimport {getOwnerDocument, nodeContains, useGlobalListeners} from '@react-aria/utils';\nimport {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\nexport interface HoverResult {\n  /** Props to spread on the target element. */\n  hoverProps: DOMAttributes,\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  let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\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.currentTarget;\n      state.target = target;\n\n      // When an element that is hovered over is removed, no pointerleave event is fired by the browser,\n      // even though the originally hovered target may have shrunk in size so it is no longer hovered.\n      // However, a pointerover event will be fired on the new target the mouse is over.\n      // In Chrome this happens immediately. In Safari and Firefox, it happens upon moving the mouse one pixel.\n      addGlobalListener(getOwnerDocument(event.target), 'pointerover', e => {\n        if (state.isHovered && state.target && !nodeContains(state.target, e.target as Element)) {\n          triggerHoverEnd(e, e.pointerType);\n        }\n      }, {capture: true});\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      let target = state.target;\n      state.pointerType = '';\n      state.target = null;\n\n      if (pointerType === 'touch' || !state.isHovered || !target) {\n        return;\n      }\n\n      state.isHovered = false;\n      removeAllGlobalListeners();\n\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: DOMAttributes = {};\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 Element)) {\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 Element)) {\n          triggerHoverEnd(e, 'mouse');\n        }\n      };\n    }\n    return {hoverProps, triggerHoverEnd};\n  }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state, addGlobalListener, removeAllGlobalListeners]);\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({currentTarget: state.target}, state.pointerType);\n    }\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isDisabled]);\n\n  return {\n    hoverProps,\n    isHovered\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 {getOwnerDocument, useEffectEvent} from '@react-aria/utils';\nimport {RefObject} from '@react-types/shared';\nimport {useEffect, useRef} from 'react';\n\nexport interface InteractOutsideProps {\n  ref: RefObject<Element | null>,\n  onInteractOutside?: (e: PointerEvent) => void,\n  onInteractOutsideStart?: (e: PointerEvent) => 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): void {\n  let {ref, onInteractOutside, isDisabled, onInteractOutsideStart} = props;\n  let stateRef = useRef({\n    isPointerDown: false,\n    ignoreEmulatedMouseEvents: false\n  });\n\n  let onPointerDown = useEffectEvent((e) => {\n    if (onInteractOutside && isValidEvent(e, ref)) {\n      if (onInteractOutsideStart) {\n        onInteractOutsideStart(e);\n      }\n      stateRef.current.isPointerDown = true;\n    }\n  });\n\n  let triggerInteractOutside = useEffectEvent((e: PointerEvent) => {\n    if (onInteractOutside) {\n      onInteractOutside(e);\n    }\n  });\n\n  useEffect(() => {\n    let state = stateRef.current;\n    if (isDisabled) {\n      return;\n    }\n\n    const element = ref.current;\n    const documentObject = getOwnerDocument(element);\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 && isValidEvent(e, ref)) {\n          triggerInteractOutside(e);\n        }\n        state.isPointerDown = false;\n      };\n\n      // changing these to capture phase fixed combobox\n      documentObject.addEventListener('pointerdown', onPointerDown, true);\n      documentObject.addEventListener('pointerup', onPointerUp, true);\n\n      return () => {\n        documentObject.removeEventListener('pointerdown', onPointerDown, true);\n        documentObject.removeEventListener('pointerup', onPointerUp, true);\n      };\n    } else {\n      let onMouseUp = (e) => {\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n        } else if (state.isPointerDown && isValidEvent(e, ref)) {\n          triggerInteractOutside(e);\n        }\n        state.isPointerDown = false;\n      };\n\n      let onTouchEnd = (e) => {\n        state.ignoreEmulatedMouseEvents = true;\n        if (state.isPointerDown && isValidEvent(e, ref)) {\n          triggerInteractOutside(e);\n        }\n        state.isPointerDown = false;\n      };\n\n      documentObject.addEventListener('mousedown', onPointerDown, true);\n      documentObject.addEventListener('mouseup', onMouseUp, true);\n      documentObject.addEventListener('touchstart', onPointerDown, true);\n      documentObject.addEventListener('touchend', onTouchEnd, true);\n\n      return () => {\n        documentObject.removeEventListener('mousedown', onPointerDown, true);\n        documentObject.removeEventListener('mouseup', onMouseUp, true);\n        documentObject.removeEventListener('touchstart', onPointerDown, true);\n        documentObject.removeEventListener('touchend', onTouchEnd, true);\n      };\n    }\n  }, [ref, isDisabled, onPointerDown, triggerInteractOutside]);\n}\n\nfunction isValidEvent(event, ref) {\n  if (event.button > 0) {\n    return false;\n  }\n  if (event.target) {\n    // if the event target is no longer in the document, ignore\n    const ownerDocument = event.target.ownerDocument;\n    if (!ownerDocument || !ownerDocument.documentElement.contains(event.target)) {\n      return false;\n    }\n    // If the target is within a top layer element (e.g. toasts), ignore.\n    if (event.target.closest('[data-react-aria-top-layer]')) {\n      return false;\n    }\n  }\n\n  if (!ref.current) {\n    return false;\n  }\n\n  // When the event source is inside a Shadow DOM, event.target is just the shadow root.\n  // Using event.composedPath instead means we can get the actual element inside the shadow root.\n  // This only works if the shadow root is open, there is no way to detect if it is closed.\n  // If the event composed path contains the ref, interaction is inside.\n  return !event.composedPath().includes(ref.current);\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 {DOMAttributes, KeyboardEvents} from '@react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n  /** Whether the keyboard events should be disabled. */\n  isDisabled?: boolean\n}\n\nexport interface KeyboardResult {\n  /** Props to spread onto the target element. */\n  keyboardProps: DOMAttributes\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 {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) | undefined {\n  if (!handler) {\n    return undefined;\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        if (shouldStopPropagation) {\n          console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n        } else {\n          shouldStopPropagation = true;\n        }\n      },\n      continuePropagation() {\n        shouldStopPropagation = false;\n      },\n      isPropagationStopped() {\n        return shouldStopPropagation;\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 {disableTextSelection, restoreTextSelection}  from './textSelection';\nimport {DOMAttributes, MoveEvents, PointerType} from '@react-types/shared';\nimport React, {useMemo, useRef} from 'react';\nimport {useEffectEvent, useGlobalListeners} from '@react-aria/utils';\n\nexport interface MoveResult {\n  /** Props to spread on the target element. */\n  moveProps: DOMAttributes\n}\n\ninterface EventBase {\n  shiftKey: boolean,\n  ctrlKey: boolean,\n  metaKey: boolean,\n  altKey: boolean\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 move = useEffectEvent((originalEvent: EventBase, 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        shiftKey: originalEvent.shiftKey,\n        metaKey: originalEvent.metaKey,\n        ctrlKey: originalEvent.ctrlKey,\n        altKey: originalEvent.altKey\n      });\n    }\n    onMove?.({\n      type: 'move',\n      pointerType,\n      deltaX: deltaX,\n      deltaY: deltaY,\n      shiftKey: originalEvent.shiftKey,\n      metaKey: originalEvent.metaKey,\n      ctrlKey: originalEvent.ctrlKey,\n      altKey: originalEvent.altKey\n    });\n  });\n\n  let end = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n    restoreTextSelection();\n    if (state.current.didMove) {\n      onMoveEnd?.({\n        type: 'moveend',\n        pointerType,\n        shiftKey: originalEvent.shiftKey,\n        metaKey: originalEvent.metaKey,\n        ctrlKey: originalEvent.ctrlKey,\n        altKey: originalEvent.altKey\n      });\n    }\n  });\n\n  let moveProps = useMemo(() => {\n    let moveProps: DOMAttributes = {};\n\n    let start = () => {\n      disableTextSelection();\n      state.current.didMove = false;\n    };\n\n    if (typeof PointerEvent === 'undefined') {\n      let onMouseMove = (e: MouseEvent) => {\n        if (e.button === 0) {\n          move(e, 'mouse', e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\n          state.current.lastPosition = {pageX: e.pageX, pageY: e.pageY};\n        }\n      };\n      let onMouseUp = (e: MouseEvent) => {\n        if (e.button === 0) {\n          end(e, '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        let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n        if (touch >= 0) {\n          let {pageX, pageY} = e.changedTouches[touch];\n          move(e, 'touch', pageX - (state.current.lastPosition?.pageX ?? 0), pageY - (state.current.lastPosition?.pageY ?? 0));\n          state.current.lastPosition = {pageX, pageY};\n        }\n      };\n      let onTouchEnd = (e: TouchEvent) => {\n        let touch = [...e.changedTouches].findIndex(({identifier}) => identifier === state.current.id);\n        if (touch >= 0) {\n          end(e, '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          let pointerType = (e.pointerType || 'mouse') as PointerType;\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(e, pointerType, e.pageX - (state.current.lastPosition?.pageX ?? 0), e.pageY - (state.current.lastPosition?.pageY ?? 0));\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          let pointerType = (e.pointerType || 'mouse') as PointerType;\n          end(e, 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 = (e: EventBase, deltaX: number, deltaY: number) => {\n      start();\n      move(e, 'keyboard', deltaX, deltaY);\n      end(e, '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(e, -1, 0);\n          break;\n        case 'Right':\n        case 'ArrowRight':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, 1, 0);\n          break;\n        case 'Up':\n        case 'ArrowUp':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, 0, -1);\n          break;\n        case 'Down':\n        case 'ArrowDown':\n          e.preventDefault();\n          e.stopPropagation();\n          triggerKeyboardMove(e, 0, 1);\n          break;\n      }\n    };\n\n    return moveProps;\n  }, [state, addGlobalListener, removeGlobalListener, move, end]);\n\n  return {moveProps};\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 {getOwnerDocument, isIOS, 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'.\n\n// For non-iOS devices, we apply user-select: none to the pressed element instead to avoid possible\n// performance issues that arise from applying and removing user-select: none to the entire page\n// (see https://github.com/adobe/react-spectrum/issues/1609).\ntype State = 'default' | 'disabled' | 'restoring';\n\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state: State = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap<Element, string>();\n\nexport function disableTextSelection(target?: Element): void {\n  if (isIOS()) {\n    if (state === 'default') {\n\n      const documentObject = getOwnerDocument(target);\n      savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n      documentObject.documentElement.style.webkitUserSelect = 'none';\n    }\n\n    state = 'disabled';\n  } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n    // If not iOS, store the target's original user-select and change to user-select: none\n    // Ignore state since it doesn't apply for non iOS\n    let property = 'userSelect' in target.style ? 'userSelect' : 'webkitUserSelect';\n    modifiedElementMap.set(target, target.style[property]);\n    target.style[property] = 'none';\n  }\n}\n\nexport function restoreTextSelection(target?: Element): void {\n  if (isIOS()) {\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\n          const documentObject = getOwnerDocument(target);\n          if (documentObject.documentElement.style.webkitUserSelect === 'none') {\n            documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n          }\n\n          savedUserSelect = '';\n          state = 'default';\n        }\n      });\n    }, 300);\n  } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n    // If not iOS, restore the target's original user-select if any\n    // Ignore state since it doesn't apply for non iOS\n    if (target && modifiedElementMap.has(target)) {\n      let targetOldUserSelect = modifiedElementMap.get(target) as string;\n      let property = 'userSelect' in target.style ? 'userSelect' : 'webkitUserSelect';\n\n      if (target.style[property] === 'none') {\n        target.style[property] = targetOldUserSelect;\n      }\n\n      if (target.getAttribute('style') === '') {\n        target.removeAttribute('style');\n      }\n      modifiedElementMap.delete(target);\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 {\n  chain,\n  focusWithoutScrolling,\n  getEventTarget,\n  getOwnerDocument,\n  getOwnerWindow,\n  isMac,\n  isVirtualClick,\n  isVirtualPointerEvent,\n  mergeProps,\n  nodeContains,\n  openLink,\n  useEffectEvent,\n  useGlobalListeners,\n  useSyncRef\n} from '@react-aria/utils';\nimport {disableTextSelection, restoreTextSelection} from './textSelection';\nimport {DOMAttributes, FocusableElement, PressEvent as IPressEvent, PointerType, PressEvents, RefObject} from '@react-types/shared';\nimport {flushSync} from 'react-dom';\nimport {PressResponderContext} from './context';\nimport {preventFocus} from './utils';\nimport {TouchEvent as RTouchEvent, useContext, useEffect, useMemo, useRef, useState} from 'react';\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  /** Whether text selection should be enabled on the pressable element. */\n  allowTextSelectionOnPress?: boolean\n}\n\nexport interface PressHookProps extends PressProps {\n  /** A ref to the target element. */\n  ref?: RefObject<Element | null>\n}\n\ninterface PressState {\n  isPressed: boolean,\n  ignoreEmulatedMouseEvents: boolean,\n  didFirePressStart: boolean,\n  isTriggeringEvent: boolean,\n  activePointerId: any,\n  target: FocusableElement | null,\n  isOverTarget: boolean,\n  pointerType: PointerType | null,\n  userSelect?: string,\n  metaKeyEvents?: Map<string, KeyboardEvent>,\n  disposables: Array<() => void>\n}\n\ninterface EventBase {\n  currentTarget: EventTarget | null,\n  shiftKey: boolean,\n  ctrlKey: boolean,\n  metaKey: boolean,\n  altKey: boolean,\n  clientX?: number,\n  clientY?: number,\n  targetTouches?: Array<{clientX?: number, clientY?: number}>\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: DOMAttributes\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\nclass PressEvent implements IPressEvent {\n  type: IPressEvent['type'];\n  pointerType: PointerType;\n  target: Element;\n  shiftKey: boolean;\n  ctrlKey: boolean;\n  metaKey: boolean;\n  altKey: boolean;\n  x: number;\n  y: number;\n  #shouldStopPropagation = true;\n\n  constructor(type: IPressEvent['type'], pointerType: PointerType, originalEvent: EventBase, state?: PressState) {\n    let currentTarget = state?.target ?? originalEvent.currentTarget;\n    const rect: DOMRect | undefined = (currentTarget as Element)?.getBoundingClientRect();\n    let x, y = 0;\n    let clientX, clientY: number | null = null;\n    if (originalEvent.clientX != null && originalEvent.clientY != null) {\n      clientX = originalEvent.clientX;\n      clientY = originalEvent.clientY;\n    }\n    if (rect) {\n      if (clientX != null && clientY != null) {\n        x = clientX - rect.left;\n        y = clientY - rect.top;\n      } else {\n        x = rect.width / 2;\n        y = rect.height / 2;\n      }\n    }\n    this.type = type;\n    this.pointerType = pointerType;\n    this.target = originalEvent.currentTarget as Element;\n    this.shiftKey = originalEvent.shiftKey;\n    this.metaKey = originalEvent.metaKey;\n    this.ctrlKey = originalEvent.ctrlKey;\n    this.altKey = originalEvent.altKey;\n    this.x = x;\n    this.y = y;\n  }\n\n  continuePropagation() {\n    this.#shouldStopPropagation = false;\n  }\n\n  get shouldStopPropagation() {\n    return this.#shouldStopPropagation;\n  }\n}\n\nconst LINK_CLICKED = Symbol('linkClicked');\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    allowTextSelectionOnPress,\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\n  let [isPressed, setPressed] = useState(false);\n  let ref = useRef<PressState>({\n    isPressed: false,\n    ignoreEmulatedMouseEvents: false,\n    didFirePressStart: false,\n    isTriggeringEvent: false,\n    activePointerId: null,\n    target: null,\n    isOverTarget: false,\n    pointerType: null,\n    disposables: []\n  });\n\n  let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\n\n  let triggerPressStart = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n    let state = ref.current;\n    if (isDisabled || state.didFirePressStart) {\n      return false;\n    }\n\n    let shouldStopPropagation = true;\n    state.isTriggeringEvent = true;\n    if (onPressStart) {\n      let event = new PressEvent('pressstart', pointerType, originalEvent);\n      onPressStart(event);\n      shouldStopPropagation = event.shouldStopPropagation;\n    }\n\n    if (onPressChange) {\n      onPressChange(true);\n    }\n\n    state.isTriggeringEvent = false;\n    state.didFirePressStart = true;\n    setPressed(true);\n    return shouldStopPropagation;\n  });\n\n  let triggerPressEnd = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n    let state = ref.current;\n    if (!state.didFirePressStart) {\n      return false;\n    }\n\n    state.didFirePressStart = false;\n    state.isTriggeringEvent = true;\n\n    let shouldStopPropagation = true;\n    if (onPressEnd) {\n      let event = new PressEvent('pressend', pointerType, originalEvent);\n      onPressEnd(event);\n      shouldStopPropagation = event.shouldStopPropagation;\n    }\n\n    if (onPressChange) {\n      onPressChange(false);\n    }\n\n    setPressed(false);\n\n    if (onPress && wasPressed && !isDisabled) {\n      let event = new PressEvent('press', pointerType, originalEvent);\n      onPress(event);\n      shouldStopPropagation &&= event.shouldStopPropagation;\n    }\n\n    state.isTriggeringEvent = false;\n    return shouldStopPropagation;\n  });\n\n  let triggerPressUp = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n    let state = ref.current;\n    if (isDisabled) {\n      return false;\n    }\n\n    if (onPressUp) {\n      state.isTriggeringEvent = true;\n      let event = new PressEvent('pressup', pointerType, originalEvent);\n      onPressUp(event);\n      state.isTriggeringEvent = false;\n      return event.shouldStopPropagation;\n    }\n\n    return true;\n  });\n\n  let cancel = useEffectEvent((e: EventBase) => {\n    let state = ref.current;\n    if (state.isPressed && state.target) {\n      if (state.didFirePressStart && state.pointerType != null) {\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      if (!allowTextSelectionOnPress) {\n        restoreTextSelection(state.target);\n      }\n      for (let dispose of state.disposables) {\n        dispose();\n      }\n      state.disposables = [];\n    }\n  });\n\n  let cancelOnPointerExit = useEffectEvent((e: EventBase) => {\n    if (shouldCancelOnPointerExit) {\n      cancel(e);\n    }\n  });\n\n  let pressProps = useMemo(() => {\n    let state = ref.current;\n    let pressProps: DOMAttributes = {\n      onKeyDown(e) {\n        if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          if (shouldPreventDefaultKeyboard(getEventTarget(e.nativeEvent), e.key)) {\n            e.preventDefault();\n          }\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          let shouldStopPropagation = true;\n          if (!state.isPressed && !e.repeat) {\n            state.target = e.currentTarget;\n            state.isPressed = true;\n            state.pointerType = 'keyboard';\n            shouldStopPropagation = 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. Make it capturing so that it will trigger\n            // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n            let originalTarget = e.currentTarget;\n            let pressUp = (e) => {\n              if (isValidKeyboardEvent(e, originalTarget) && !e.repeat && nodeContains(originalTarget, getEventTarget(e)) && state.target) {\n                triggerPressUp(createEvent(state.target, e), 'keyboard');\n              }\n            };\n\n            addGlobalListener(getOwnerDocument(e.currentTarget), 'keyup', chain(pressUp, onKeyUp), true);\n          }\n\n          if (shouldStopPropagation) {\n            e.stopPropagation();\n          }\n\n          // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n          // macOS has a bug where keyup events are not fired while the Meta key is down.\n          // When the Meta key itself is released we will get an event for that, and we'll act as if\n          // all of these other keys were released as well.\n          // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n          // https://bugs.webkit.org/show_bug.cgi?id=55291\n          // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n          if (e.metaKey && isMac()) {\n            state.metaKeyEvents?.set(e.key, e.nativeEvent);\n          }\n        } else if (e.key === 'Meta') {\n          state.metaKeyEvents = new Map();\n        }\n      },\n      onClick(e) {\n        if (e && !nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {\n          let shouldStopPropagation = true;\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.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))) {\n            let stopPressStart = triggerPressStart(e, 'virtual');\n            let stopPressUp = triggerPressUp(e, 'virtual');\n            let stopPressEnd = triggerPressEnd(e, 'virtual');\n            shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n          } else if (state.isPressed && state.pointerType !== 'keyboard') {\n            let pointerType = state.pointerType || (e.nativeEvent as PointerEvent).pointerType as PointerType || 'virtual';\n            shouldStopPropagation = triggerPressEnd(createEvent(e.currentTarget, e), pointerType, true);\n            state.isOverTarget = false;\n            cancel(e);\n          }\n\n          state.ignoreEmulatedMouseEvents = false;\n          if (shouldStopPropagation) {\n            e.stopPropagation();\n          }\n        }\n      }\n    };\n\n    let onKeyUp = (e: KeyboardEvent) => {\n      if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n        if (shouldPreventDefaultKeyboard(getEventTarget(e), e.key)) {\n          e.preventDefault();\n        }\n\n        let target = getEventTarget(e);\n        triggerPressEnd(createEvent(state.target, e), 'keyboard', nodeContains(state.target, getEventTarget(e)));\n        removeAllGlobalListeners();\n\n        // If a link was triggered with a key other than Enter, open the URL ourselves.\n        // This means the link has a role override, and the default browser behavior\n        // only applies when using the Enter key.\n        if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && nodeContains(state.target, target) && !e[LINK_CLICKED]) {\n          // Store a hidden property on the event so we only trigger link click once,\n          // even if there are multiple usePress instances attached to the element.\n          e[LINK_CLICKED] = true;\n          openLink(state.target, e, false);\n        }\n\n        state.isPressed = false;\n        state.metaKeyEvents?.delete(e.key);\n      } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n        // If we recorded keydown events that occurred while the Meta key was pressed,\n        // and those haven't received keyup events already, fire keyup events ourselves.\n        // See comment above for more info about the macOS bug causing this.\n        let events = state.metaKeyEvents;\n        state.metaKeyEvents = undefined;\n        for (let event of events.values()) {\n          state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\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 || !nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n        // Ignore and let the onClick handler take care of it instead.\n        // https://bugs.webkit.org/show_bug.cgi?id=222627\n        // https://bugs.webkit.org/show_bug.cgi?id=223202\n        if (isVirtualPointerEvent(e.nativeEvent)) {\n          state.pointerType = 'virtual';\n          return;\n        }\n\n        state.pointerType = e.pointerType;\n\n        let shouldStopPropagation = true;\n        if (!state.isPressed) {\n          state.isPressed = true;\n          state.isOverTarget = true;\n          state.activePointerId = e.pointerId;\n          state.target = e.currentTarget as FocusableElement;\n\n          if (!allowTextSelectionOnPress) {\n            disableTextSelection(state.target);\n          }\n\n          shouldStopPropagation = triggerPressStart(e, state.pointerType);\n\n          // Release pointer capture so that touch interactions can leave the original target.\n          // This enables onPointerLeave and onPointerEnter to fire.\n          let target = getEventTarget(e.nativeEvent);\n          if ('releasePointerCapture' in target) {\n            target.releasePointerCapture(e.pointerId);\n          }\n\n          addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);\n          addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onMouseDown = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        if (e.button === 0) {\n          if (preventFocusOnPress) {\n            let dispose = preventFocus(e.target as FocusableElement);\n            if (dispose) {\n              state.disposables.push(dispose);\n            }\n          }\n\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onPointerUp = (e) => {\n        // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent)) || state.pointerType === 'virtual') {\n          return;\n        }\n\n        // Only handle left clicks\n        if (e.button === 0) {\n          triggerPressUp(e, state.pointerType || e.pointerType);\n        }\n      };\n\n      pressProps.onPointerEnter = (e) => {\n        if (e.pointerId === state.activePointerId && state.target && !state.isOverTarget && state.pointerType != null) {\n          state.isOverTarget = true;\n          triggerPressStart(createEvent(state.target, e), state.pointerType);\n        }\n      };\n\n      pressProps.onPointerLeave = (e) => {\n        if (e.pointerId === state.activePointerId && state.target && state.isOverTarget && state.pointerType != null) {\n          state.isOverTarget = false;\n          triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n          cancelOnPointerExit(e);\n        }\n      };\n\n      let onPointerUp = (e: PointerEvent) => {\n        if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n          if (nodeContains(state.target, getEventTarget(e)) && state.pointerType != null) {\n            // Wait for onClick to fire onPress. This avoids browser issues when the DOM\n            // is mutated between onPointerUp and onClick, and is more compatible with third party libraries.\n            // https://github.com/adobe/react-spectrum/issues/1513\n            // https://issues.chromium.org/issues/40732224\n            // However, iOS and Android do not focus or fire onClick after a long press.\n            // We work around this by triggering a click ourselves after a timeout.\n            // This timeout is canceled during the click event in case the real one fires first.\n            // The timeout must be at least 32ms, because Safari on iOS delays the click event on\n            // non-form elements without certain ARIA roles (for hover emulation).\n            // https://github.com/WebKit/WebKit/blob/dccfae42bb29bd4bdef052e469f604a9387241c0/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L875-L892\n            let clicked = false;\n            let timeout = setTimeout(() => {\n              if (state.isPressed && state.target instanceof HTMLElement) {\n                if (clicked) {\n                  cancel(e);\n                } else {\n                  focusWithoutScrolling(state.target);\n                  state.target.click();\n                }\n              }\n            }, 80);\n            // Use a capturing listener to track if a click occurred.\n            // If stopPropagation is called it may never reach our handler.\n            addGlobalListener(e.currentTarget as Document, 'click', () => clicked = true, true);\n            state.disposables.push(() => clearTimeout(timeout));\n          } else {\n            cancel(e);\n          }\n\n          // Ignore subsequent onPointerLeave event before onClick on touch devices.\n          state.isOverTarget = false;\n        }\n      };\n\n      let onPointerCancel = (e: PointerEvent) => {\n        cancel(e);\n      };\n\n      pressProps.onDragStart = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\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      // NOTE: this fallback branch is almost entirely used by unit tests.\n      // All browsers now support pointer events, but JSDOM still does not.\n\n      pressProps.onMouseDown = (e) => {\n        // Only handle left clicks\n        if (e.button !== 0 || !nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        if (state.ignoreEmulatedMouseEvents) {\n          e.stopPropagation();\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        // Flush sync so that focus moved during react re-renders occurs before we yield back to the browser.\n        let shouldStopPropagation = flushSync(() => triggerPressStart(e, state.pointerType!));\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n\n        if (preventFocusOnPress) {\n          let dispose = preventFocus(e.target as FocusableElement);\n          if (dispose) {\n            state.disposables.push(dispose);\n          }\n        }\n\n        addGlobalListener(getOwnerDocument(e.currentTarget), 'mouseup', onMouseUp, false);\n      };\n\n      pressProps.onMouseEnter = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        let shouldStopPropagation = true;\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n          state.isOverTarget = true;\n          shouldStopPropagation = triggerPressStart(e, state.pointerType);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onMouseLeave = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        let shouldStopPropagation = true;\n        if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n          state.isOverTarget = false;\n          shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n          cancelOnPointerExit(e);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onMouseUp = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n          triggerPressUp(e, state.pointerType || 'mouse');\n        }\n      };\n\n      let onMouseUp = (e: MouseEvent) => {\n        // Only handle left clicks\n        if (e.button !== 0) {\n          return;\n        }\n\n        if (state.ignoreEmulatedMouseEvents) {\n          state.ignoreEmulatedMouseEvents = false;\n          return;\n        }\n\n        if (state.target && state.target.contains(e.target as Element) && state.pointerType != null) {\n          // Wait for onClick to fire onPress. This avoids browser issues when the DOM\n          // is mutated between onMouseUp and onClick, and is more compatible with third party libraries.\n        } else {\n          cancel(e);\n        }\n\n        state.isOverTarget = false;\n      };\n\n      pressProps.onTouchStart = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\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        if (!allowTextSelectionOnPress) {\n          disableTextSelection(state.target);\n        }\n\n        let shouldStopPropagation = triggerPressStart(createTouchEvent(state.target, e), state.pointerType);\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n\n        addGlobalListener(getOwnerWindow(e.currentTarget), 'scroll', onScroll, true);\n      };\n\n      pressProps.onTouchMove = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        if (!state.isPressed) {\n          e.stopPropagation();\n          return;\n        }\n\n        let touch = getTouchById(e.nativeEvent, state.activePointerId);\n        let shouldStopPropagation = true;\n        if (touch && isOverTarget(touch, e.currentTarget)) {\n          if (!state.isOverTarget && state.pointerType != null) {\n            state.isOverTarget = true;\n            shouldStopPropagation = triggerPressStart(createTouchEvent(state.target!, e), state.pointerType);\n          }\n        } else if (state.isOverTarget && state.pointerType != null) {\n          state.isOverTarget = false;\n          shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n          cancelOnPointerExit(createTouchEvent(state.target!, e));\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n      };\n\n      pressProps.onTouchEnd = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        if (!state.isPressed) {\n          e.stopPropagation();\n          return;\n        }\n\n        let touch = getTouchById(e.nativeEvent, state.activePointerId);\n        let shouldStopPropagation = true;\n        if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n          triggerPressUp(createTouchEvent(state.target!, e), state.pointerType);\n          shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType);\n        } else if (state.isOverTarget && state.pointerType != null) {\n          shouldStopPropagation = triggerPressEnd(createTouchEvent(state.target!, e), state.pointerType, false);\n        }\n\n        if (shouldStopPropagation) {\n          e.stopPropagation();\n        }\n\n        state.isPressed = false;\n        state.activePointerId = null;\n        state.isOverTarget = false;\n        state.ignoreEmulatedMouseEvents = true;\n        if (state.target && !allowTextSelectionOnPress) {\n          restoreTextSelection(state.target);\n        }\n        removeAllGlobalListeners();\n      };\n\n      pressProps.onTouchCancel = (e) => {\n        if (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        e.stopPropagation();\n        if (state.isPressed) {\n          cancel(createTouchEvent(state.target!, e));\n        }\n      };\n\n      let onScroll = (e: Event) => {\n        if (state.isPressed && nodeContains(getEventTarget(e), 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 (!nodeContains(e.currentTarget, getEventTarget(e.nativeEvent))) {\n          return;\n        }\n\n        cancel(e);\n      };\n    }\n\n    return pressProps;\n  }, [\n    addGlobalListener,\n    isDisabled,\n    preventFocusOnPress,\n    removeAllGlobalListeners,\n    allowTextSelectionOnPress,\n    cancel,\n    cancelOnPointerExit,\n    triggerPressEnd,\n    triggerPressStart,\n    triggerPressUp\n  ]);\n\n  // Remove user-select: none in case component unmounts immediately after pressStart\n\n  useEffect(() => {\n    let state = ref.current;\n    return () => {\n      if (!allowTextSelectionOnPress) {\n         \n        restoreTextSelection(state.target ?? undefined);\n      }\n      for (let dispose of state.disposables) {\n        dispose();\n      }\n      state.disposables = [];\n    };\n  }, [allowTextSelectionOnPress]);\n\n  return {\n    isPressed: isPressedProp || isPressed,\n    pressProps: mergeProps(domProps, pressProps)\n  };\n}\n\nfunction isHTMLAnchorLink(target: Element): target is HTMLAnchorElement {\n  return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n  const {key, code} = event;\n  const element = currentTarget as HTMLElement;\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' || code === 'Space') &&\n    !((element instanceof getOwnerWindow(element).HTMLInputElement && !isValidInputKey(element, key)) ||\n      element instanceof getOwnerWindow(element).HTMLTextAreaElement ||\n      element.isContentEditable) &&\n    // Links should only trigger with Enter key\n    !((role === 'link' || (!role && isHTMLAnchorLink(element))) && 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 createTouchEvent(target: FocusableElement, e: RTouchEvent<FocusableElement>): EventBase {\n  let clientX = 0;\n  let clientY = 0;\n  if (e.targetTouches && e.targetTouches.length === 1) {\n    clientX = e.targetTouches[0].clientX;\n    clientY = e.targetTouches[0].clientY;\n  }\n  return {\n    currentTarget: target,\n    shiftKey: e.shiftKey,\n    ctrlKey: e.ctrlKey,\n    metaKey: e.metaKey,\n    altKey: e.altKey,\n    clientX,\n    clientY\n  };\n}\n\nfunction createEvent(target: FocusableElement, e: EventBase): EventBase {\n  let clientX = e.clientX;\n  let clientY = e.clientY;\n  return {\n    currentTarget: target,\n    shiftKey: e.shiftKey,\n    ctrlKey: e.ctrlKey,\n    metaKey: e.metaKey,\n    altKey: e.altKey,\n    clientX,\n    clientY\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 = 0;\n  let offsetY = 0;\n  if (point.width !== undefined) {\n    offsetX = (point.width / 2);\n  } else if (point.radiusX !== undefined) {\n    offsetX = point.radiusX;\n  }\n  if (point.height !== undefined) {\n    offsetY = (point.height / 2);\n  } else if (point.radiusY !== undefined) {\n    offsetY = point.radiusY;\n  }\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: Element) {\n  let rect = target.getBoundingClientRect();\n  let pointRect = getPointClientRect(point);\n  return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefaultUp(target: Element) {\n  if (target instanceof HTMLInputElement) {\n    return false;\n  }\n\n  if (target instanceof HTMLButtonElement) {\n    return target.type !== 'submit' && target.type !== 'reset';\n  }\n\n  if (isHTMLAnchorLink(target)) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction shouldPreventDefaultKeyboard(target: Element, key: string) {\n  if (target instanceof HTMLInputElement) {\n    return !isValidInputKey(target, key);\n  }\n\n  return shouldPreventDefaultUp(target);\n}\n\nconst nonTextInputTypes = new Set([\n  'checkbox',\n  'radio',\n  'range',\n  'color',\n  'file',\n  'image',\n  'button',\n  'submit',\n  'reset'\n]);\n\nfunction isValidInputKey(target: HTMLInputElement, key: string) {\n  // Only space should toggle checkboxes and radios, not enter.\n  return target.type === 'checkbox' || target.type === 'radio'\n    ? key === ' '\n    : nonTextInputTypes.has(target.type);\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, ScrollEvents} from '@react-types/shared';\nimport {useCallback} from 'react';\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 | null>): 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 ? undefined : onScrollHandler);\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 {DOMAttributes, FocusableElement, LongPressEvent} from '@react-types/shared';\nimport {focusWithoutScrolling, getOwnerDocument, mergeProps, useDescription, useGlobalListeners} from '@react-aria/utils';\nimport {usePress} from './usePress';\nimport {useRef} from 'react';\n\nexport interface LongPressProps {\n  /** Whether long press events should be disabled. */\n  isDisabled?: boolean,\n  /** Handler that is called when a long press interaction starts. */\n  onLongPressStart?: (e: LongPressEvent) => void,\n  /**\n   * Handler that is called when a long press interaction ends, either\n   * over the target or when the pointer leaves the target.\n   */\n  onLongPressEnd?: (e: LongPressEvent) => void,\n  /**\n   * Handler that is called when the threshold time is met while\n   * the press is over the target.\n   */\n  onLongPress?: (e: LongPressEvent) => void,\n  /**\n   * The amount of time in milliseconds to wait before triggering a long press.\n   * @default 500ms\n   */\n  threshold?: number,\n  /**\n   * A description for assistive techology users indicating that a long press\n   * action is available, e.g. \"Long press to open menu\".\n   */\n  accessibilityDescription?: string\n}\n\nexport interface LongPressResult {\n  /** Props to spread on the target element. */\n  longPressProps: DOMAttributes\n}\n\nconst DEFAULT_THRESHOLD = 500;\n\n/**\n * Handles long press interactions across mouse and touch devices. Supports a customizable time threshold,\n * accessibility description, and normalizes behavior across browsers and devices.\n */\nexport function useLongPress(props: LongPressProps): LongPressResult {\n  let {\n    isDisabled,\n    onLongPressStart,\n    onLongPressEnd,\n    onLongPress,\n    threshold = DEFAULT_THRESHOLD,\n    accessibilityDescription\n  } = props;\n\n  const timeRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n  let {addGlobalListener, removeGlobalListener} = useGlobalListeners();\n\n  let {pressProps} = usePress({\n    isDisabled,\n    onPressStart(e) {\n      e.continuePropagation();\n      if (e.pointerType === 'mouse' || e.pointerType === 'touch') {\n        if (onLongPressStart) {\n          onLongPressStart({\n            ...e,\n            type: 'longpressstart'\n          });\n        }\n\n        timeRef.current = setTimeout(() => {\n          // Prevent other usePress handlers from also handling this event.\n          e.target.dispatchEvent(new PointerEvent('pointercancel', {bubbles: true}));\n\n          // Ensure target is focused. On touch devices, browsers typically focus on pointer up.\n          if (getOwnerDocument(e.target).activeElement !== e.target) {\n            focusWithoutScrolling(e.target as FocusableElement);\n          }\n\n          if (onLongPress) {\n            onLongPress({\n              ...e,\n              type: 'longpress'\n            });\n          }\n          timeRef.current = undefined;\n        }, threshold);\n\n        // Prevent context menu, which may be opened on long press on touch devices\n        if (e.pointerType === 'touch') {\n          let onContextMenu = e => {\n            e.preventDefault();\n          };\n\n          addGlobalListener(e.target, 'contextmenu', onContextMenu, {once: true});\n          addGlobalListener(window, 'pointerup', () => {\n            // If no contextmenu event is fired quickly after pointerup, remove the handler\n            // so future context menu events outside a long press are not prevented.\n            setTimeout(() => {\n              removeGlobalListener(e.target, 'contextmenu', onContextMenu);\n            }, 30);\n          }, {once: true});\n        }\n      }\n    },\n    onPressEnd(e) {\n      if (timeRef.current) {\n        clearTimeout(timeRef.current);\n      }\n\n      if (onLongPressEnd && (e.pointerType === 'mouse' || e.pointerType === 'touch')) {\n        onLongPressEnd({\n          ...e,\n          type: 'longpressend'\n        });\n      }\n    }\n  });\n\n  let descriptionProps = useDescription(onLongPress && !isDisabled ? accessibilityDescription : undefined);\n\n  return {\n    longPressProps: mergeProps(pressProps, descriptionProps)\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 {DOMAttributes, FocusableDOMProps, FocusableElement, FocusableProps, RefObject} from '@react-types/shared';\nimport {focusSafely} from './';\nimport {getOwnerWindow, isFocusable, mergeProps, mergeRefs, useObjectRef, useSyncRef} from '@react-aria/utils';\nimport React, {ForwardedRef, forwardRef, MutableRefObject, ReactElement, ReactNode, useContext, useEffect, useRef} from 'react';\nimport {useFocus} from './useFocus';\nimport {useKeyboard} from './useKeyboard';\n\nexport interface FocusableOptions<T = FocusableElement> extends FocusableProps<T>, FocusableDOMProps {\n  /** Whether focus should be disabled. */\n  isDisabled?: boolean\n}\n\nexport interface FocusableProviderProps extends DOMAttributes {\n  /** The child element to provide DOM props to. */\n  children?: ReactNode\n}\n\ninterface FocusableContextValue extends FocusableProviderProps {\n  ref?: MutableRefObject<FocusableElement | null>\n}\n\n// Exported for @react-aria/collections, which forwards this context.\n/** @private */\nexport let FocusableContext = React.createContext<FocusableContextValue | null>(null);\n\nfunction useFocusableContext(ref: RefObject<FocusableElement | null>): FocusableContextValue {\n  let context = useContext(FocusableContext) || {};\n  useSyncRef(context, ref);\n\n  // eslint-disable-next-line\n  let {ref: _, ...otherProps} = context;\n  return otherProps;\n}\n\n/**\n * Provides DOM props to the nearest focusable child.\n */\nexport const FocusableProvider = React.forwardRef(function FocusableProvider(props: FocusableProviderProps, ref: ForwardedRef<FocusableElement>) {\n  let {children, ...otherProps} = props;\n  let objRef = useObjectRef(ref);\n  let context = {\n    ...otherProps,\n    ref: objRef\n  };\n\n  return (\n    <FocusableContext.Provider value={context}>\n      {children}\n    </FocusableContext.Provider>\n  );\n});\n\nexport interface FocusableAria {\n  /** Props for the focusable element. */\n  focusableProps: DOMAttributes\n}\n\n/**\n * Used to make an element focusable and capable of auto focus.\n */\nexport function useFocusable<T extends FocusableElement = FocusableElement>(props: FocusableOptions<T>, domRef: RefObject<FocusableElement | null>): FocusableAria {\n  let {focusProps} = useFocus(props);\n  let {keyboardProps} = useKeyboard(props);\n  let interactions = mergeProps(focusProps, keyboardProps);\n  let domProps = useFocusableContext(domRef);\n  let interactionProps = props.isDisabled ? {} : domProps;\n  let autoFocusRef = useRef(props.autoFocus);\n\n  useEffect(() => {\n    if (autoFocusRef.current && domRef.current) {\n      focusSafely(domRef.current);\n    }\n    autoFocusRef.current = false;\n  }, [domRef]);\n\n  // Always set a tabIndex so that Safari allows focusing native buttons and inputs.\n  let tabIndex: number | undefined = props.excludeFromTabOrder ? -1 : 0;\n  if (props.isDisabled) {\n    tabIndex = undefined;\n  }\n\n  return {\n    focusableProps: mergeProps(\n      {\n        ...interactions,\n        tabIndex\n      },\n      interactionProps\n    )\n  };\n}\n\nexport interface FocusableComponentProps extends FocusableOptions {\n  children: ReactElement<DOMAttributes, string>\n}\n\nexport const Focusable = forwardRef(({children, ...props}: FocusableComponentProps, ref: ForwardedRef<FocusableElement>) => {\n  ref = useObjectRef(ref);\n  let {focusableProps} = useFocusable(props, ref);\n  let child = React.Children.only(children);\n\n  useEffect(() => {\n    let el = ref.current;\n    if (!el || !(el instanceof getOwnerWindow(el).Element)) {\n      console.error('<Focusable> child must forward its ref to a DOM element.');\n      return;\n    }\n\n    if (!props.isDisabled && !isFocusable(el)) {\n      console.warn('<Focusable> child must be focusable. Please ensure the tabIndex prop is passed through.');\n      return;\n    }\n\n    if (\n      el.localName !== 'button' &&\n      el.localName !== 'input' &&\n      el.localName !== 'select' &&\n      el.localName !== 'textarea' &&\n      el.localName !== 'a' &&\n      el.localName !== 'area' &&\n      el.localName !== 'summary' &&\n      el.localName !== 'img' &&\n      el.localName !== 'svg'\n    ) {\n      let role = el.getAttribute('role');\n      if (!role) {\n        console.warn('<Focusable> child must have an interactive ARIA role.');\n      } else if (\n        // https://w3c.github.io/aria/#widget_roles\n        role !== 'application' &&\n        role !== 'button' &&\n        role !== 'checkbox' &&\n        role !== 'combobox' &&\n        role !== 'gridcell' &&\n        role !== 'link' &&\n        role !== 'menuitem' &&\n        role !== 'menuitemcheckbox' &&\n        role !== 'menuitemradio' &&\n        role !== 'option' &&\n        role !== 'radio' &&\n        role !== 'searchbox' &&\n        role !== 'separator' &&\n        role !== 'slider' &&\n        role !== 'spinbutton' &&\n        role !== 'switch' &&\n        role !== 'tab' &&\n        role !== 'tabpanel' &&\n        role !== 'textbox' &&\n        role !== 'treeitem' &&\n        // aria-describedby is also announced on these roles\n        role !== 'img' &&\n        role !== 'meter' &&\n        role !== 'progressbar'\n      ) {\n        console.warn(`<Focusable> child must have an interactive ARIA role. Got \"${role}\".`);\n      }\n    }\n  }, [ref, props.isDisabled]);\n\n  // @ts-ignore\n  let childRef = parseInt(React.version, 10) < 19 ? child.ref : child.props.ref;\n\n  return React.cloneElement(\n    child,\n    {\n      ...mergeProps(focusableProps, child.props),\n      // @ts-ignore\n      ref: mergeRefs(childRef, ref)\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 {FocusableElement} from '@react-types/shared';\nimport {\n  focusWithoutScrolling,\n  getActiveElement,\n  getOwnerDocument,\n  runAfterTransition\n} from '@react-aria/utils';\nimport {getInteractionModality} from './useFocusVisible';\n\n/**\n * A utility function that focuses an element while avoiding undesired side effects such\n * as page scrolling and screen reader issues with CSS transitions.\n */\nexport function focusSafely(element: FocusableElement): void {\n  // If the user is interacting with a virtual cursor, e.g. screen reader, then\n  // wait until after any animated transitions that are currently occurring on\n  // the page before shifting focus. This avoids issues with VoiceOver on iOS\n  // causing the page to scroll when moving focus if the element is transitioning\n  // from off the screen.\n  const ownerDocument = getOwnerDocument(element);\n  const activeElement = getActiveElement(ownerDocument);\n  if (getInteractionModality() === 'virtual') {\n    let lastFocusedElement = activeElement;\n    runAfterTransition(() => {\n      // If focus did not move and the element is still in the document, focus it.\n      if (getActiveElement(ownerDocument) === lastFocusedElement && element.isConnected) {\n        focusWithoutScrolling(element);\n      }\n    });\n  } else {\n    focusWithoutScrolling(element);\n  }\n}\n"],"names":["modules","entry","mainEntry","parcelRequireName","globalName","globalObject","globalThis","self","window","global","previousRequire","cache","nodeRequire","module","require","bind","newRequire","name","jumped","currentRequire","err","Error","code","localRequire","resolve","x","id","Module","call","exports","res","isParcelRequire","moduleName","bundle","parent","register","Object","defineProperty","get","i","length","__globalThis","parcelHelpers","defineInteropFlag","export","_pressable","Pressable","_pressResponder","PressResponder","ClearPressResponder","_useFocus","useFocus","_useFocusVisible","isFocusVisible","getInteractionModality","setInteractionModality","addWindowFocusTracking","useInteractionModality","useFocusVisible","useFocusVisibleListener","_useFocusWithin","useFocusWithin","_useHover","useHover","_useInteractOutside","useInteractOutside","_useKeyboard","useKeyboard","_useMove","useMove","_usePress","usePress","_useScrollWheel","useScrollWheel","_useLongPress","useLongPress","_useFocusable","useFocusable","FocusableProvider","Focusable","FocusableContext","_focusSafely","focusSafely","_utils","_context","_react","_reactDefault","interopDefault","default","forwardRef","children","props","ref","isRegistered","useRef","prevContext","useContext","PressResponderContext","useObjectRef","context","mergeProps","current","useSyncRef","useEffect","console","warn","createElement","Provider","value","useMemo","createContext","displayName","_utils1","isDisabled","onFocus","onFocusProp","onBlur","onBlurProp","onFocusChange","useCallback","e","target","currentTarget","onSyntheticFocus","useSyntheticBlurEvent","ownerDocument","getOwnerDocument","activeElement","getActiveElement","getEventTarget","nativeEvent","focusProps","undefined","SyntheticFocusEvent","ignoreFocusEvent","preventFocus","constructor","type","relatedTarget","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","timeStamp","isDefaultPrevented","preventDefault","stopPropagation","isPropagationStopped","persist","stateRef","isFocused","observer","useLayoutEffect","state","disconnect","dispatchBlur","useEffectEvent","HTMLButtonElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","addEventListener","disabled","once","MutationObserver","relatedTargetEl","document","dispatchEvent","FocusEvent","observe","attributes","attributeFilter","isFocusable","parentElement","getOwnerWindow","isRefocusing","stopImmediatePropagation","onFocusOut","focusWithoutScrolling","cleanup","onFocusIn","cancelAnimationFrame","raf","removeEventListener","requestAnimationFrame","hasSetupGlobalListeners","_ssr","currentModality","changeHandlers","Set","Map","hasEventBeforeFocus","hasBlurredWindowRecently","FOCUS_VISIBLE_INPUT_KEYS","Tab","Escape","triggerChangeHandlers","modality","handler","handleKeyboardEvent","metaKey","isMac","altKey","ctrlKey","key","handlePointerEvent","handleClickEvent","isVirtualClick","handleFocusEvent","handleWindowBlur","setupGlobalFocusEvents","element","windowObject","documentObject","focus","HTMLElement","prototype","apply","arguments","PointerEvent","tearDownWindowFocusTracking","set","loadListener","has","delete","readyState","setModality","useState","add","useIsSSR","nonTextInputTypes","isTextInput","autoFocus","isFocusVisibleState","setFocusVisible","fn","deps","opts","isKeyboardFocusEvent","document1","IHTMLInputElement","IHTMLTextAreaElement","IHTMLElement","IKeyboardEvent","KeyboardEvent","isContentEditable","onBlurWithin","onFocusWithin","onFocusWithinChange","isFocusWithin","addGlobalListener","removeAllGlobalListeners","useGlobalListeners","contains","nodeContains","event","defaultView","capture","focusWithinProps","globalIgnoreEmulatedMouseEvents","hoverCount","setGlobalIgnoreEmulatedMouseEvents","setTimeout","handleGlobalPointerEvent","pointerType","setupGlobalTouchEvents","onHoverStart","onHoverChange","onHoverEnd","isHovered","setHovered","ignoreEmulatedMouseEvents","hoverProps","triggerHoverEnd","triggerHoverStart","onPointerEnter","onPointerLeave","onTouchStart","onMouseEnter","onMouseLeave","onInteractOutside","onInteractOutsideStart","isPointerDown","onPointerDown","isValidEvent","triggerInteractOutside","onPointerUp","onMouseUp","onTouchEnd","button","documentElement","closest","composedPath","includes","_createEventHandler","keyboardProps","onKeyDown","createEventHandler","onKeyUp","shouldStopPropagation","error","continuePropagation","_textSelection","onMoveStart","onMove","onMoveEnd","didMove","lastPosition","removeGlobalListener","move","originalEvent","deltaX","deltaY","shiftKey","end","restoreTextSelection","moveProps","start","disableTextSelection","onMouseMove","pageX","pageY","onMouseDown","onTouchMove","touch","changedTouches","findIndex","identifier","onPointerMove","pointerId","triggerKeyboardMove","savedUserSelect","modifiedElementMap","WeakMap","isIOS","style","webkitUserSelect","SVGElement","property","runAfterTransition","targetOldUserSelect","getAttribute","removeAttribute","_reactDom","PressEvent","rect","getBoundingClientRect","y","clientX","clientY","left","top","width","height","LINK_CLICKED","Symbol","onPress","onPressChange","onPressStart","onPressEnd","onPressUp","isPressed","isPressedProp","preventFocusOnPress","shouldCancelOnPointerExit","allowTextSelectionOnPress","_","domProps","usePressResponderContext","contextProps","setPressed","didFirePressStart","isTriggeringEvent","activePointerId","isOverTarget","disposables","triggerPressStart","triggerPressEnd","wasPressed","triggerPressUp","cancel","dispose","createEvent","cancelOnPointerExit","pressProps","isValidKeyboardEvent","shouldPreventDefaultKeyboard","repeat","originalTarget","chain","metaKeyEvents","onClick","openLink","isOpening","stopPressStart","stopPressUp","stopPressEnd","isHTMLAnchorLink","size","events","values","isVirtualPointerEvent","releasePointerCapture","onPointerCancel","push","clicked","timeout","click","clearTimeout","onDragStart","flushSync","getTouchFromEvent","targetTouches","createTouchEvent","onScroll","getTouchById","onTouchCancel","tagName","hasAttribute","role","isValidInputKey","point","offsetX","offsetY","pointRect","radiusX","radiusY","right","bottom","a","b","onScrollHandler","useEvent","onLongPressStart","onLongPressEnd","onLongPress","threshold","accessibilityDescription","timeRef","onContextMenu","descriptionProps","useDescription","longPressProps","otherProps","objRef","domRef","interactions","useFocusableContext","interactionProps","autoFocusRef","tabIndex","excludeFromTabOrder","focusableProps","child","Children","only","el","Element","localName","childRef","parseInt","version","cloneElement","mergeRefs","isConnected"],"version":3,"file":"useButton.stories.8cdbf52d.js.map"}