@blockstack/ui
Version:
Blockstack UI components built using React and styled-components with styled-system.
32 lines (25 loc) • 881 B
JavaScript
import { useEffect } from 'react';
import { isBrowser } from '../utils/index.esm.js';
import { useLatestRef } from './use-latest-ref.esm.js';
function useEventListener(event, handler, doc, options) {
if (doc === void 0) {
doc = isBrowser ? document : null;
}
var savedHandler = useLatestRef(handler);
useEffect(function () {
if (!doc) return;
var listener = function listener(event) {
savedHandler.current(event);
};
doc.addEventListener(event, listener, options);
return function () {
doc.removeEventListener(event, listener, options);
};
}, [event, doc, options, savedHandler]);
return function () {
var _doc;
(_doc = doc) === null || _doc === void 0 ? void 0 : _doc.removeEventListener(event, savedHandler.current, options);
};
}
export { useEventListener };
//# sourceMappingURL=use-event-listener.esm.js.map