{"version":3,"file":"useModal.mjs","sources":["../../../../../../../../node_modules/@mui/material/Modal/useModal.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\nimport { ModalManager, ariaHidden } from \"./ModalManager.js\";\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n  return children ? children.props.hasOwnProperty('in') : false;\n}\nconst noop = () => {};\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst manager = new ModalManager();\n/**\n *\n * Demos:\n *\n * - [Modal](https://mui.com/base-ui/react-modal/#hook)\n *\n * API:\n *\n * - [useModal API](https://mui.com/base-ui/react-modal/hooks-api/#use-modal)\n */\nfunction useModal(parameters) {\n  const {\n    container,\n    disableEscapeKeyDown = false,\n    disableScrollLock = false,\n    closeAfterTransition = false,\n    onTransitionEnter,\n    onTransitionExited,\n    children,\n    onClose,\n    open,\n    rootRef\n  } = parameters;\n\n  // @ts-ignore internal logic\n  const modal = React.useRef({});\n  const mountNodeRef = React.useRef(null);\n  const modalRef = React.useRef(null);\n  const handleRef = useForkRef(modalRef, rootRef);\n  const [exited, setExited] = React.useState(!open);\n  const hasTransition = getHasTransition(children);\n  let ariaHiddenProp = true;\n  if (parameters['aria-hidden'] === 'false' || parameters['aria-hidden'] === false) {\n    ariaHiddenProp = false;\n  }\n  const getDoc = () => ownerDocument(mountNodeRef.current);\n  const getModal = () => {\n    modal.current.modalRef = modalRef.current;\n    modal.current.mount = mountNodeRef.current;\n    return modal.current;\n  };\n  const handleMounted = () => {\n    manager.mount(getModal(), {\n      disableScrollLock\n    });\n\n    // Fix a bug on Chrome where the scroll isn't initially 0.\n    if (modalRef.current) {\n      modalRef.current.scrollTop = 0;\n    }\n  };\n  const handleOpen = useEventCallback(() => {\n    const resolvedContainer = getContainer(container) || getDoc().body;\n    manager.add(getModal(), resolvedContainer);\n\n    // The element was already mounted.\n    if (modalRef.current) {\n      handleMounted();\n    }\n  });\n  const isTopModal = () => manager.isTopModal(getModal());\n  const handlePortalRef = useEventCallback(node => {\n    mountNodeRef.current = node;\n    if (!node) {\n      return;\n    }\n    if (open && isTopModal()) {\n      handleMounted();\n    } else if (modalRef.current) {\n      ariaHidden(modalRef.current, ariaHiddenProp);\n    }\n  });\n  const handleClose = React.useCallback(() => {\n    manager.remove(getModal(), ariaHiddenProp);\n  }, [ariaHiddenProp]);\n  React.useEffect(() => {\n    return () => {\n      handleClose();\n    };\n  }, [handleClose]);\n  React.useEffect(() => {\n    if (open) {\n      handleOpen();\n    } else if (!hasTransition || !closeAfterTransition) {\n      handleClose();\n    }\n  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n  const createHandleKeyDown = otherHandlers => event => {\n    otherHandlers.onKeyDown?.(event);\n\n    // The handler doesn't take event.defaultPrevented into account:\n    //\n    // event.preventDefault() is meant to stop default behaviors like\n    // clicking a checkbox to check it, hitting a button to submit a form,\n    // and hitting left arrow to move the cursor in a text input etc.\n    // Only special HTML elements have these default behaviors.\n    if (event.key !== 'Escape' || event.which === 229 ||\n    // Wait until IME is settled.\n    !isTopModal()) {\n      return;\n    }\n    if (!disableEscapeKeyDown) {\n      // Swallow the event, in case someone is listening for the escape key on the body.\n      event.stopPropagation();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n    }\n  };\n  const createHandleBackdropClick = otherHandlers => event => {\n    otherHandlers.onClick?.(event);\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const getRootProps = (otherHandlers = {}) => {\n    const propsEventHandlers = extractEventHandlers(parameters);\n\n    // The custom event handlers shouldn't be spread on the root element\n    delete propsEventHandlers.onTransitionEnter;\n    delete propsEventHandlers.onTransitionExited;\n    const externalEventHandlers = {\n      ...propsEventHandlers,\n      ...otherHandlers\n    };\n    return {\n      /*\n       * Marking an element with the role presentation indicates to assistive technology\n       * that this element should be ignored; it exists to support the web application and\n       * is not meant for humans to interact with directly.\n       * https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-static-element-interactions.md\n       */\n      role: 'presentation',\n      ...externalEventHandlers,\n      onKeyDown: createHandleKeyDown(externalEventHandlers),\n      ref: handleRef\n    };\n  };\n  const getBackdropProps = (otherHandlers = {}) => {\n    const externalEventHandlers = otherHandlers;\n    return {\n      'aria-hidden': true,\n      ...externalEventHandlers,\n      onClick: createHandleBackdropClick(externalEventHandlers),\n      open\n    };\n  };\n  const getTransitionProps = () => {\n    const handleEnter = () => {\n      setExited(false);\n      if (onTransitionEnter) {\n        onTransitionEnter();\n      }\n    };\n    const handleExited = () => {\n      setExited(true);\n      if (onTransitionExited) {\n        onTransitionExited();\n      }\n      if (closeAfterTransition) {\n        handleClose();\n      }\n    };\n    return {\n      onEnter: createChainedFunction(handleEnter, children?.props.onEnter ?? noop),\n      onExited: createChainedFunction(handleExited, children?.props.onExited ?? noop)\n    };\n  };\n  return {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    rootRef: handleRef,\n    portalRef: handlePortalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  };\n}\nexport default useModal;"],"names":["noop","React.useRef","React.useState","React.useCallback","React.useEffect"],"mappings":"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","x_google_ignoreList":[0]}