Files

38 lines
1.1 KiB
JavaScript

"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;