UNPKG

react-event-injector

Version:

React way to addEventListener

58 lines (57 loc) 2.02 kB
var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; import { isPassiveSupported } from "./flags"; import { addEventListener, removeEventListener } from "./eventListeners"; ; var EMPTY = {}; var WITH_CAPTURE = { capture: true }; var FLAG_PC = { capture: true, passive: true }; var FLAG_P = { passive: true }; var FLAG_C = { capture: true, passive: false }; var asOption = function (_a) { var passive = _a.passive, capture = _a.capture; if (!isPassiveSupported) { return !!capture; } if (!passive && !capture) { return false; } if (passive && capture) { return FLAG_PC; } if (passive) { return FLAG_P; } if (passive === false) { return FLAG_C; } return true; }; export function getEventNames(names) { return Object .keys(names) .filter(function (name) { return name.indexOf('on') === 0; }); } ; export var forEventsIn = function (events, cb) { events.forEach(function (event) { var name = event.name; var lowerName = name.toLowerCase(); var capture = lowerName.substr(-7) === 'capture'; var eventName = lowerName.substring(2); eventName = capture ? eventName.substring(0, eventName.length - 7) : eventName; cb(eventName, event.cb, capture ? WITH_CAPTURE : {}, event.options === true ? WITH_CAPTURE : event.options || EMPTY); }); }; export var attach = function (ref, events) { forEventsIn(events, function (name, cb, options, settings) { return addEventListener(ref, name, cb, asOption(__assign({}, settings, options))); }); }; export var detach = function (ref, events) { forEventsIn(events, function (name, cb, options, settings) { return removeEventListener(ref, name, cb, asOption(__assign({}, settings, options))); }); };