overleaf/services/web/frontend/js/shared/hooks/use-callback-handlers.ts
Alf Eaton 0cde5be165 Merge pull request #14709 from overleaf/ae-context-typescript
Convert React context providers to TypeScript [don't squash!]

GitOrigin-RevId: d92a91798286978410956ab791d73c17c5086d86
2024-01-29 09:03:04 +00:00

21 lines
607 B
TypeScript

import { useCallback, useRef } from 'react'
export default function useCallbackHandlers() {
const handlersRef = useRef(new Set<(...arg: any[]) => void>())
const addHandler = useCallback((handler: (...args: any[]) => void) => {
handlersRef.current.add(handler)
}, [])
const deleteHandler = useCallback((handler: (...args: any[]) => void) => {
handlersRef.current.delete(handler)
}, [])
const callHandlers = useCallback((...args: any[]) => {
for (const handler of handlersRef.current) {
handler(...args)
}
}, [])
return { addHandler, deleteHandler, callHandlers }
}