Merge pull request #23284 from overleaf/ae-scope-event-types

Improve scope event types

GitOrigin-RevId: 5327c56a14244a2513748d3bcbac04413d104e12
This commit is contained in:
Alf Eaton
2025-02-05 09:04:58 +00:00
committed by Copybot
parent 4b1babd4ea
commit 797686939f
9 changed files with 68 additions and 52 deletions
@@ -1,15 +1,16 @@
import { useCallback } from 'react'
import { useIdeContext } from '../context/ide-context'
import { ScopeEventName } from '../../../../types/ide/scope-event-emitter'
import { IdeEvents } from '@/features/ide-react/create-ide-event-emitter'
export default function useScopeEventEmitter(
eventName: ScopeEventName,
export default function useScopeEventEmitter<T extends ScopeEventName>(
eventName: T,
broadcast = true
) {
const { scopeEventEmitter } = useIdeContext()
return useCallback(
(...detail: unknown[]) => {
(...detail: IdeEvents[T]) => {
scopeEventEmitter.emit(eventName, broadcast, ...detail)
},
[scopeEventEmitter, eventName, broadcast]
@@ -1,10 +1,11 @@
import { useEffect } from 'react'
import { useIdeContext } from '../context/ide-context'
import { ScopeEventName } from '../../../../types/ide/scope-event-emitter'
import { IdeEvents } from '@/features/ide-react/create-ide-event-emitter'
export default function useScopeEventListener(
eventName: ScopeEventName,
listener: (...args: unknown[]) => void
export default function useScopeEventListener<T extends ScopeEventName>(
eventName: T,
listener: (event: Event, ...args: IdeEvents[T]) => void
) {
const { scopeEventEmitter } = useIdeContext()