1 line
2.5 KiB
JSON
1 line
2.5 KiB
JSON
|
{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React, { useEffect, useRef, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport Fade from './Fade';\nimport Header from './ToastHeader';\nimport Body from './ToastBody';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport ToastContext from './ToastContext';\nvar defaultProps = {\n animation: true,\n autohide: false,\n delay: 3000,\n show: true,\n transition: Fade\n};\nvar Toast = React.forwardRef(function (_ref, ref) {\n var bsPrefix = _ref.bsPrefix,\n className = _ref.className,\n children = _ref.children,\n Transition = _ref.transition,\n show = _ref.show,\n animation = _ref.animation,\n delay = _ref.delay,\n autohide = _ref.autohide,\n onClose = _ref.onClose,\n props = _objectWithoutPropertiesLoose(_ref, [\"bsPrefix\", \"className\", \"children\", \"transition\", \"show\", \"animation\", \"delay\", \"autohide\", \"onClose\"]);\n\n bsPrefix = useBootstrapPrefix('toast');\n var delayRef = useRef(delay);\n var onCloseRef = useRef(onClose);\n useEffect(function () {\n // We use refs for these, because we don't want to restart the autohide\n // timer in case these values change.\n delayRef.current = delay;\n onCloseRef.current = onClose;\n }, [delay, onClose]);\n var autohideTimeout = useTimeout();\n var autohideFunc = useCallback(function () {\n if (!(autohide && show)) {\n return;\n }\n\n onCloseRef.current();\n }, [autohide, show]);\n autohideTimeout.set(autohideFunc, delayRef.current);\n var useAnimation = useMemo(function () {\n return Transition && animation;\n }, [Transition, animation]);\n var toast = React.createElement(\"div\", _extends({}, props, {\n ref: ref,\n className: classNames(bsPrefix, className, !useAnimation && show && 'show'),\n role: \"alert\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\"\n }), children);\n var toastContext = {\n onClose: onClose\n };\n return React.createElement(ToastContext.Provider, {\n value: toastContext\n }, useAnimation ? React.createElement(Transition, {\n in: show\n }, toast) : toast);\n});\nToast.defaultProps = defaultProps;\nToast.displayName = 'Toast';\nToast.Body = Body;\nToast.Header = Header;\nexport default Toast;","map":null,"metadata":{},"sourceType":"module"}
|