react-say
Version:
[](https://badge.fury.io/js/react-say) [](https://travis-ci.org/compulim/react-say)
27 lines (22 loc) • 2.63 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = useEvent;
var _useImmediateEffect = _interopRequireDefault(require("./useImmediateEffect"));
function useEvent(target, name, listener, options) {
(0, _useImmediateEffect["default"])(function () {
var handler = function handler(event) {
return listener && listener(event);
};
target.addEventListener(name, handler, options);
return function () {
// It seems speechSynthesis.onvoiceschanged still fire after we called removeEventListener.
// We are protecting this scenario by setting listener to falsy.
listener = null;
target.removeEventListener(name, handler, options);
};
}, [listener, name, options, target]);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VFdmVudC5qcyJdLCJuYW1lcyI6WyJ1c2VFdmVudCIsInRhcmdldCIsIm5hbWUiLCJsaXN0ZW5lciIsIm9wdGlvbnMiLCJoYW5kbGVyIiwiZXZlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRWUsU0FBU0EsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEJDLElBQTFCLEVBQWdDQyxRQUFoQyxFQUEwQ0MsT0FBMUMsRUFBbUQ7QUFDaEUsc0NBQW1CLFlBQU07QUFDdkIsUUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQUMsS0FBSztBQUFBLGFBQUlILFFBQVEsSUFBSUEsUUFBUSxDQUFDRyxLQUFELENBQXhCO0FBQUEsS0FBckI7O0FBRUFMLElBQUFBLE1BQU0sQ0FBQ00sZ0JBQVAsQ0FBd0JMLElBQXhCLEVBQThCRyxPQUE5QixFQUF1Q0QsT0FBdkM7QUFFQSxXQUFPLFlBQU07QUFDWDtBQUNBO0FBQ0FELE1BQUFBLFFBQVEsR0FBRyxJQUFYO0FBQ0FGLE1BQUFBLE1BQU0sQ0FBQ08sbUJBQVAsQ0FBMkJOLElBQTNCLEVBQWlDRyxPQUFqQyxFQUEwQ0QsT0FBMUM7QUFDRCxLQUxEO0FBTUQsR0FYRCxFQVdHLENBQUNELFFBQUQsRUFBV0QsSUFBWCxFQUFpQkUsT0FBakIsRUFBMEJILE1BQTFCLENBWEg7QUFZRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1c2VJbW1lZGlhdGVFZmZlY3QgZnJvbSAnLi91c2VJbW1lZGlhdGVFZmZlY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VFdmVudCh0YXJnZXQsIG5hbWUsIGxpc3RlbmVyLCBvcHRpb25zKSB7XG4gIHVzZUltbWVkaWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlciA9IGV2ZW50ID0+IGxpc3RlbmVyICYmIGxpc3RlbmVyKGV2ZW50KTtcblxuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIEl0IHNlZW1zIHNwZWVjaFN5bnRoZXNpcy5vbnZvaWNlc2NoYW5nZWQgc3RpbGwgZmlyZSBhZnRlciB3ZSBjYWxsZWQgcmVtb3ZlRXZlbnRMaXN0ZW5lci5cbiAgICAgIC8vIFdlIGFyZSBwcm90ZWN0aW5nIHRoaXMgc2NlbmFyaW8gYnkgc2V0dGluZyBsaXN0ZW5lciB0byBmYWxzeS5cbiAgICAgIGxpc3RlbmVyID0gbnVsbDtcbiAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIH07XG4gIH0sIFtsaXN0ZW5lciwgbmFtZSwgb3B0aW9ucywgdGFyZ2V0XSk7XG59XG4iXX0=