123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- "use strict";
- var __read = (this && this.__read) || function (o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.fromEvent = void 0;
- var innerFrom_1 = require("../observable/innerFrom");
- var Observable_1 = require("../Observable");
- var mergeMap_1 = require("../operators/mergeMap");
- var isArrayLike_1 = require("../util/isArrayLike");
- var isFunction_1 = require("../util/isFunction");
- var mapOneOrManyArgs_1 = require("../util/mapOneOrManyArgs");
- var nodeEventEmitterMethods = ['addListener', 'removeListener'];
- var eventTargetMethods = ['addEventListener', 'removeEventListener'];
- var jqueryMethods = ['on', 'off'];
- function fromEvent(target, eventName, options, resultSelector) {
- if (isFunction_1.isFunction(options)) {
- resultSelector = options;
- options = undefined;
- }
- if (resultSelector) {
- return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));
- }
- var _a = __read(isEventTarget(target)
- ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })
- :
- isNodeStyleEventEmitter(target)
- ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))
- : isJQueryStyleEventEmitter(target)
- ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))
- : [], 2), add = _a[0], remove = _a[1];
- if (!add) {
- if (isArrayLike_1.isArrayLike(target)) {
- return mergeMap_1.mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom_1.innerFrom(target));
- }
- }
- if (!add) {
- throw new TypeError('Invalid event target');
- }
- return new Observable_1.Observable(function (subscriber) {
- var handler = function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return subscriber.next(1 < args.length ? args : args[0]);
- };
- add(handler);
- return function () { return remove(handler); };
- });
- }
- exports.fromEvent = fromEvent;
- function toCommonHandlerRegistry(target, eventName) {
- return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };
- }
- function isNodeStyleEventEmitter(target) {
- return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener);
- }
- function isJQueryStyleEventEmitter(target) {
- return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off);
- }
- function isEventTarget(target) {
- return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener);
- }
- //# sourceMappingURL=fromEvent.js.map
|