{"version":3,"file":"useSnackbar.mjs","sources":["../../../../../../../../node_modules/@mui/material/Snackbar/useSnackbar.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { unstable_useEventCallback as useEventCallback, unstable_useTimeout as useTimeout } from '@mui/utils';\nimport extractEventHandlers from '@mui/utils/extractEventHandlers';\n/**\n * The basic building block for creating custom snackbar.\n *\n * Demos:\n *\n * - [Snackbar](https://mui.com/base-ui/react-snackbar/#hook)\n *\n * API:\n *\n * - [useSnackbar API](https://mui.com/base-ui/react-snackbar/hooks-api/#use-snackbar)\n */\nfunction useSnackbar(parameters = {}) {\n  const {\n    autoHideDuration = null,\n    disableWindowBlurListener = false,\n    onClose,\n    open,\n    resumeHideDuration\n  } = parameters;\n  const timerAutoHide = useTimeout();\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n\n    /**\n     * @param {KeyboardEvent} nativeEvent\n     */\n    function handleKeyDown(nativeEvent) {\n      if (!nativeEvent.defaultPrevented) {\n        if (nativeEvent.key === 'Escape') {\n          // not calling `preventDefault` since we don't know if people may ignore this event e.g. a permanently open snackbar\n          onClose?.(nativeEvent, 'escapeKeyDown');\n        }\n      }\n    }\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [open, onClose]);\n  const handleClose = useEventCallback((event, reason) => {\n    onClose?.(event, reason);\n  });\n  const setAutoHideTimer = useEventCallback(autoHideDurationParam => {\n    if (!onClose || autoHideDurationParam == null) {\n      return;\n    }\n    timerAutoHide.start(autoHideDurationParam, () => {\n      handleClose(null, 'timeout');\n    });\n  });\n  React.useEffect(() => {\n    if (open) {\n      setAutoHideTimer(autoHideDuration);\n    }\n    return timerAutoHide.clear;\n  }, [open, autoHideDuration, setAutoHideTimer, timerAutoHide]);\n  const handleClickAway = event => {\n    onClose?.(event, 'clickaway');\n  };\n\n  // Pause the timer when the user is interacting with the Snackbar\n  // or when the user hide the window.\n  const handlePause = timerAutoHide.clear;\n\n  // Restart the timer when the user is no longer interacting with the Snackbar\n  // or when the window is shown back.\n  const handleResume = React.useCallback(() => {\n    if (autoHideDuration != null) {\n      setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n    }\n  }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n  const createHandleBlur = otherHandlers => event => {\n    const onBlurCallback = otherHandlers.onBlur;\n    onBlurCallback?.(event);\n    handleResume();\n  };\n  const createHandleFocus = otherHandlers => event => {\n    const onFocusCallback = otherHandlers.onFocus;\n    onFocusCallback?.(event);\n    handlePause();\n  };\n  const createMouseEnter = otherHandlers => event => {\n    const onMouseEnterCallback = otherHandlers.onMouseEnter;\n    onMouseEnterCallback?.(event);\n    handlePause();\n  };\n  const createMouseLeave = otherHandlers => event => {\n    const onMouseLeaveCallback = otherHandlers.onMouseLeave;\n    onMouseLeaveCallback?.(event);\n    handleResume();\n  };\n  React.useEffect(() => {\n    // TODO: window global should be refactored here\n    if (!disableWindowBlurListener && open) {\n      window.addEventListener('focus', handleResume);\n      window.addEventListener('blur', handlePause);\n      return () => {\n        window.removeEventListener('focus', handleResume);\n        window.removeEventListener('blur', handlePause);\n      };\n    }\n    return undefined;\n  }, [disableWindowBlurListener, open, handleResume, handlePause]);\n  const getRootProps = (externalProps = {}) => {\n    const externalEventHandlers = {\n      ...extractEventHandlers(parameters),\n      ...extractEventHandlers(externalProps)\n    };\n    return {\n      // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.\n      // See https://github.com/mui/material-ui/issues/29080\n      role: 'presentation',\n      ...externalProps,\n      ...externalEventHandlers,\n      onBlur: createHandleBlur(externalEventHandlers),\n      onFocus: createHandleFocus(externalEventHandlers),\n      onMouseEnter: createMouseEnter(externalEventHandlers),\n      onMouseLeave: createMouseLeave(externalEventHandlers)\n    };\n  };\n  return {\n    getRootProps,\n    onClickAway: handleClickAway\n  };\n}\nexport default useSnackbar;"],"names":["React.useEffect","React.useCallback"],"mappings":"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","x_google_ignoreList":[0]}