UNPKG

beautiful-react-hooks

Version:

A collection of beautiful (and hopefully useful) React hooks to speed-up your components and hooks development

36 lines (35 loc) 1.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var createHandlerSetter_1 = __importDefault(require("./factory/createHandlerSetter")); var safeHasOwnProperty_1 = __importDefault(require("./shared/safeHasOwnProperty")); /** * Accepts the reference to an HTML Element and an event name then performs the necessary operations to listen to the event * when fired from that HTML Element. */ var useEvent = function (ref, eventName, options) { var _a = (0, createHandlerSetter_1.default)(), handler = _a[0], setHandler = _a[1]; if (!!ref && !(0, safeHasOwnProperty_1.default)(ref, 'current')) { throw new Error('Unable to assign any scroll event to the given ref'); } (0, react_1.useEffect)(function () { var cb = function (event) { if (handler.current) { handler.current(event); } }; if (ref.current && ref.current.addEventListener && handler.current) { ref.current.addEventListener(eventName, cb, options); } return function () { if (ref.current && ref.current.addEventListener && handler.current) { ref.current.removeEventListener(eventName, cb, options); } }; }, [eventName, ref.current, options]); return setHandler; }; exports.default = useEvent;