UNPKG

@geezee/react-ui

Version:

Modern and minimalist React UI library.

76 lines (65 loc) 2.86 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import React, { useMemo, useState } from 'react'; import { CfxUIContent } from '../utils/use-cfx-ui-context'; import ThemeProvider from '../styles/theme-provider'; import useCurrentState from '../utils/use-current-state'; import ToastContainer from '../use-toasts/toast-container'; import MessageContainer from '../use-messages/message-container'; import NotificationContainer from '../use-notifications/notification-container'; var CfxProvider = function CfxProvider(_ref) { var theme = _ref.theme, children = _ref.children; var _useCurrentState = useCurrentState([]), _useCurrentState2 = _slicedToArray(_useCurrentState, 3), toasts = _useCurrentState2[0], setToasts = _useCurrentState2[1], toastsRef = _useCurrentState2[2]; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), toastHovering = _useState2[0], setToastHovering = _useState2[1]; var updateToasts = function updateToasts(fn) { var nextToasts = fn(toastsRef.current); setToasts(nextToasts); }; var updateToastHoverStatus = function updateToastHoverStatus(fn) { var nextHoverStatus = fn(); setToastHovering(nextHoverStatus); }; var _useCurrentState3 = useCurrentState([]), _useCurrentState4 = _slicedToArray(_useCurrentState3, 3), messages = _useCurrentState4[0], setMessages = _useCurrentState4[1], messagesRef = _useCurrentState4[2]; var updateMessages = function updateMessages(fn) { var nextMessages = fn(messagesRef.current); setMessages(nextMessages); }; var _useCurrentState5 = useCurrentState([]), _useCurrentState6 = _slicedToArray(_useCurrentState5, 3), notifications = _useCurrentState6[0], setNotifications = _useCurrentState6[1], notificationsRef = _useCurrentState6[2]; var updateNotifications = function updateNotifications(fn) { var nextNotifications = fn(notificationsRef.current); setNotifications(nextNotifications); }; var initialValue = useMemo(function () { return { messages: messages, updateMessages: updateMessages, notifications: notifications, updateNotifications: updateNotifications, toasts: toasts, toastHovering: toastHovering, updateToasts: updateToasts, updateToastHoverStatus: updateToastHoverStatus }; }, [toasts, toastHovering, messages, notifications]); return /*#__PURE__*/React.createElement(CfxUIContent.Provider, { value: initialValue }, /*#__PURE__*/React.createElement(ThemeProvider, { theme: theme }, children, /*#__PURE__*/React.createElement(ToastContainer, null), /*#__PURE__*/React.createElement(MessageContainer, null), /*#__PURE__*/React.createElement(NotificationContainer, null))); }; export default CfxProvider;