@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
26 lines (25 loc) • 977 B
JavaScript
"use client";
let react = require("react");
//#region packages/@mantine/hooks/src/use-event-listener/use-event-listener.ts
function useEventListener(type, listener, options) {
const previousListener = (0, react.useRef)(null);
const previousNode = (0, react.useRef)(null);
const callbackRef = (0, react.useCallback)((node) => {
if (!node) return;
if (previousNode.current && previousListener.current) previousNode.current.removeEventListener(type, previousListener.current, options);
node.addEventListener(type, listener, options);
previousNode.current = node;
previousListener.current = listener;
}, [
type,
listener,
options
]);
(0, react.useEffect)(() => () => {
if (previousNode.current && previousListener.current) previousNode.current.removeEventListener(type, previousListener.current, options);
}, [type, options]);
return callbackRef;
}
//#endregion
exports.useEventListener = useEventListener;
//# sourceMappingURL=use-event-listener.cjs.map