use-scope-event-emitter.ts 579 B

123456789101112131415161718
  1. import { useCallback } from 'react'
  2. import { useIdeContext } from '../context/ide-context'
  3. import { ScopeEventName } from '../../../../types/ide/scope-event-emitter'
  4. import { IdeEvents } from '@/features/ide-react/create-ide-event-emitter'
  5. export default function useScopeEventEmitter<T extends ScopeEventName>(
  6. eventName: T,
  7. broadcast = true
  8. ) {
  9. const { scopeEventEmitter } = useIdeContext()
  10. return useCallback(
  11. (...detail: IdeEvents[T]) => {
  12. scopeEventEmitter.emit(eventName, broadcast, ...detail)
  13. },
  14. [scopeEventEmitter, eventName, broadcast]
  15. )
  16. }