"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var react_1 = require("react"); var util_1 = require("./misc/util"); var defaultTarget = util_1.isBrowser ? window : null; var isListenerType1 = function (target) { return !!target.addEventListener; }; var isListenerType2 = function (target) { return !!target.on; }; var useEvent = function (name, handler, target, options) { if (target === void 0) { target = defaultTarget; } react_1.useEffect(function () { if (!handler) { return; } if (!target) { return; } if (isListenerType1(target)) { util_1.on(target, name, handler, options); } else if (isListenerType2(target)) { target.on(name, handler, options); } return function () { if (isListenerType1(target)) { util_1.off(target, name, handler, options); } else if (isListenerType2(target)) { target.off(name, handler, options); } }; }, [name, handler, target, JSON.stringify(options)]); }; exports.default = useEvent;