|
'use client' |
|
|
|
import { createContext, useContext } from 'use-context-selector' |
|
import { useEventEmitter } from 'ahooks' |
|
import type { EventEmitter } from 'ahooks/lib/useEventEmitter' |
|
|
|
const EventEmitterContext = createContext<{ eventEmitter: EventEmitter<string> | null }>({ |
|
eventEmitter: null, |
|
}) |
|
|
|
export const useEventEmitterContextContext = () => useContext(EventEmitterContext) |
|
|
|
type EventEmitterContextProviderProps = { |
|
children: React.ReactNode |
|
} |
|
export const EventEmitterContextProvider = ({ |
|
children, |
|
}: EventEmitterContextProviderProps) => { |
|
const eventEmitter = useEventEmitter<string>() |
|
|
|
return ( |
|
<EventEmitterContext.Provider value={{ eventEmitter }}> |
|
{children} |
|
</EventEmitterContext.Provider> |
|
) |
|
} |
|
|
|
export default EventEmitterContext |
|
|