UNPKG

react-event-injector

Version:

React way to addEventListener

61 lines (60 loc) 2.15 kB
"use strict"; 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; }; Object.defineProperty(exports, "__esModule", { value: true }); var flags_1 = require("./flags"); var eventListeners_1 = require("./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 (!flags_1.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; }; function getEventNames(names) { return Object .keys(names) .filter(function (name) { return name.indexOf('on') === 0; }); } exports.getEventNames = getEventNames; ; exports.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); }); }; exports.attach = function (ref, events) { exports.forEventsIn(events, function (name, cb, options, settings) { return eventListeners_1.addEventListener(ref, name, cb, asOption(__assign({}, settings, options))); }); }; exports.detach = function (ref, events) { exports.forEventsIn(events, function (name, cb, options, settings) { return eventListeners_1.removeEventListener(ref, name, cb, asOption(__assign({}, settings, options))); }); };