{"mappings":";;;;;AAAA;;;;;;;;;;CAUC;;;;AAwBM,MAAM,0DAAU,CAAA,GAAA,YAAI,EAAE,UAAU,CAAC,SAAS,QAC/C,KAAmB,EACnB,GAA2B;IAE3B,IAAI,YACF,QAAQ,UACR,MAAM,0BACN,sBAAsB,sBACtB,kBAAkB,aAClB,SAAS,WACT,OAAO,cACP,UAAU,aACV,SAAS,UACT,MAAM,aACN,SAAS,YACT,QAAQ,WACR,OAAO,EACR,GAAG;IAEJ,IAAI,CAAC,QAAQ,UAAU,GAAG,CAAA,GAAA,eAAO,EAAE,CAAC;IAEpC,IAAI,gBAAgB,CAAA,GAAA,kBAAU,EAAE;QAC9B,UAAU;QACV,IAAI,WACF;IAEJ,GAAG;QAAC;KAAU;IAEd,IAAI,eAAe,CAAA,GAAA,kBAAU,EAAE;QAC7B,UAAU;QACV,IAAI,UACF;IAEJ,GAAG;QAAC;KAAS;IAEb,4DAA4D;IAC5D,IAAI,eAAe,UAAU,CAAC;IAC9B,IAAI,CAAC,cACH,qDAAqD;IACrD,OAAO;IAGT,qBACE,gCAAC,CAAA,GAAA,cAAe;QACd,iBAAiB;QACjB,wBAAwB;QACxB,oBAAoB;QACpB,WAAW,CAAC;qBACZ,gCAAC,CAAA,GAAA,yCAAO;QACN,KAAK;QACL,cAAc;YAAC,YAAY;YAAe,WAAW;QAAS;QAC9D,YAAY;qBACZ,gCAAC,CAAA,GAAA,yCAAa;QACZ,IAAI;QACJ,QAAA;QACA,QAAQ;QACR,WAAW;QACX,UAAU;QACV,SAAS;QACT,YAAY;QACZ,WAAW;QACX,SAAS;OACR;AAKX","sources":["packages/@adobe/react-spectrum/src/overlays/Overlay.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMRef} from '@react-types/shared';\nimport {OpenTransition} from './OpenTransition';\nimport {Provider} from '../provider/Provider';\nimport React, {MutableRefObject, ReactNode, useCallback, useState} from 'react';\nimport {Overlay as ReactAriaOverlay} from 'react-aria/Overlay';\n\nexport interface OverlayProps {\n  children: ReactNode;\n  isOpen?: boolean;\n  container?: Element;\n  isKeyboardDismissDisabled?: boolean;\n  onEnter?: () => void;\n  onEntering?: () => void;\n  onEntered?: () => void;\n  onExit?: () => void;\n  onExiting?: () => void;\n  onExited?: () => void;\n  nodeRef: MutableRefObject<HTMLElement | null>;\n  disableFocusManagement?: boolean;\n  shouldContainFocus?: boolean;\n}\n\nexport const Overlay = React.forwardRef(function Overlay(\n  props: OverlayProps,\n  ref: DOMRef<HTMLDivElement>\n) {\n  let {\n    children,\n    isOpen,\n    disableFocusManagement,\n    shouldContainFocus,\n    container,\n    onEnter,\n    onEntering,\n    onEntered,\n    onExit,\n    onExiting,\n    onExited,\n    nodeRef\n  } = props;\n\n  let [exited, setExited] = useState(!isOpen);\n\n  let handleEntered = useCallback(() => {\n    setExited(false);\n    if (onEntered) {\n      onEntered();\n    }\n  }, [onEntered]);\n\n  let handleExited = useCallback(() => {\n    setExited(true);\n    if (onExited) {\n      onExited();\n    }\n  }, [onExited]);\n\n  // Don't un-render the overlay while it's transitioning out.\n  let mountOverlay = isOpen || !exited;\n  if (!mountOverlay) {\n    // Don't bother showing anything if we don't have to.\n    return null;\n  }\n\n  return (\n    <ReactAriaOverlay\n      portalContainer={container}\n      disableFocusManagement={disableFocusManagement}\n      shouldContainFocus={shouldContainFocus}\n      isExiting={!isOpen}>\n      <Provider\n        ref={ref}\n        UNSAFE_style={{background: 'transparent', isolation: 'isolate'}}\n        isDisabled={false}>\n        <OpenTransition\n          in={isOpen}\n          appear\n          onExit={onExit}\n          onExiting={onExiting}\n          onExited={handleExited}\n          onEnter={onEnter}\n          onEntering={onEntering}\n          onEntered={handleEntered}\n          nodeRef={nodeRef}>\n          {children}\n        </OpenTransition>\n      </Provider>\n    </ReactAriaOverlay>\n  );\n});\n"],"names":[],"version":3,"file":"Overlay.mjs.map"}