Files
excalidraw/packages/excalidraw/hooks/useEmitter.ts
T
2025-05-06 19:23:02 +02:00

23 lines
456 B
TypeScript

import { useEffect, useState } from "react";
import type { Emitter } from "@excalidraw/common";
export const useEmitter = <TEvent extends unknown>(
emitter: Emitter<[TEvent]>,
initialState: TEvent,
) => {
const [event, setEvent] = useState<TEvent>(initialState);
useEffect(() => {
const unsubscribe = emitter.on((event) => {
setEvent(event);
});
return () => {
unsubscribe();
};
}, [emitter]);
return event;
};