Sha256: 7f3922124448dfe278131d4462ffe66fcc51554e166f30af924c746b3c5cea8d

Contents?: true

Size: 1.27 KB

Versions: 126

Compression:

Stored size: 1.27 KB

Contents

import { useRef, useEffect } from 'react';

// Hook to use event listener with appropiate checks
// Borrowed from https://usehooks.com/useEventListener/
const useEventListener = (eventName, handler, element = window) => {
  // Create a ref that stores handler
  const savedHandler = useRef();

  // Update ref.current value if handler changes.
  // This allows our effect below to always get latest handler ...
  // ... without us needing to pass it in effect deps array ...
  // ... and potentially cause effect to re-run every render.
  useEffect(() => {
    savedHandler.current = handler;
  }, [handler]);

  useEffect(
    () => {
      // Make sure element supports addEventListener
      const isSupported = element && element.addEventListener;
      if (!isSupported) return;

      // Create event listener that calls handler function stored in ref
      const eventListener = event => savedHandler.current(event);

      // Add event listener
      element.addEventListener(eventName, eventListener);

      // Remove event listener on cleanup
      /* eslint-disable-next-line consistent-return */
      return () => element.removeEventListener(eventName, eventListener);
    },
    [eventName, element], // Re-run if eventName or element changes
  );
};

export default useEventListener;

Version data entries

126 entries across 126 versions & 1 rubygems

Version Path
katello-4.16.0 webpack/utils/useEventListener.js
katello-4.15.1 webpack/utils/useEventListener.js
katello-4.16.0.rc2 webpack/utils/useEventListener.js
katello-4.16.0.rc1 webpack/utils/useEventListener.js
katello-4.14.3 webpack/utils/useEventListener.js
katello-4.14.2 webpack/utils/useEventListener.js
katello-4.15.0 webpack/utils/useEventListener.js
katello-4.15.0.rc2 webpack/utils/useEventListener.js
katello-4.15.0.rc1 webpack/utils/useEventListener.js
katello-4.14.1 webpack/utils/useEventListener.js
katello-4.14.0 webpack/utils/useEventListener.js
katello-4.14.0.rc3 webpack/utils/useEventListener.js
katello-4.14.0.rc2 webpack/utils/useEventListener.js
katello-4.14.0.rc1.1 webpack/utils/useEventListener.js
katello-4.14.0.rc1 webpack/utils/useEventListener.js
katello-4.13.1 webpack/utils/useEventListener.js
katello-4.13.0 webpack/utils/useEventListener.js
katello-4.12.1 webpack/utils/useEventListener.js
katello-4.13.0.rc1 webpack/utils/useEventListener.js
katello-4.12.0 webpack/utils/useEventListener.js