import { useEffect } from 'react';

/**
 * A hook for creating event handlers.
 */
export default function useEvent(
  event: string,
  handler: (e: KeyboardEvent | MouseEvent) => void,
  passive = false,
): void {
  useEffect(() => {
    // initiate the event handler
    window.addEventListener(event, handler, passive);

    // this will clean up the event every time the component is re-rendered
    return function cleanup() {
      window.removeEventListener(event, handler);
    };
  });
}