import type { UseCallbackStateReturnType, UseCallbackStateSetter } from 'mixlea-hooks-react'; import { useCallbackState, useMemoFn } from 'mixlea-hooks-react'; import type { PropsWithChildren } from 'react'; import { createContext, useContext } from 'react'; import type { MlModalStatusEnum } from '../types'; // State const StateContext = createContext>([ 'inactive', () => Promise.resolve('inactive'), ]); function StateProvider({ children }: PropsWithChildren) { const callbackState = useCallbackState('inactive'); return {children}; } // SetState const SetStateContext = createContext>(() => Promise.resolve('inactive')); function SetStateProvider({ children }: PropsWithChildren) { const [, setState] = useContext(StateContext); return {children}; } // Provider function StatusProvider({ children }: PropsWithChildren) { return ( {children} ); } // Hooks const useStatusState = () => { const [animationStatus] = useContext>(StateContext); return animationStatus; }; const useSetStatus = () => { const setStatus = useContext(SetStateContext); return setStatus; }; const useSetStatusInactivating = () => { const setState = useContext(SetStateContext); const setStatusOut = useMemoFn(() => { setState('inactivating'); }); return setStatusOut; }; export { StatusProvider, useStatusState, useSetStatus, useSetStatusInactivating };