UNPKG

@byndyusoft-ui/use-event-listener

Version:
23 lines (22 loc) 1.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); const use_latest_ref_1 = __importDefault(require("@byndyusoft-ui/use-latest-ref")); function useEventListener(eventName, handler, target, options) { const savedHandler = (0, use_latest_ref_1.default)(handler); (0, react_1.useEffect)(() => { var _a; const targetElement = (_a = target === null || target === void 0 ? void 0 : target.current) !== null && _a !== void 0 ? _a : window; if (!(targetElement && targetElement.addEventListener)) return; const listener = event => savedHandler.current(event); targetElement.addEventListener(eventName, listener, options); return () => { targetElement.removeEventListener(eventName, listener, options); }; }, [eventName, target, options, savedHandler]); } exports.default = useEventListener;