diff options
Diffstat (limited to 'node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js')
| -rw-r--r-- | node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js b/node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js new file mode 100644 index 0000000..f43351a --- /dev/null +++ b/node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js @@ -0,0 +1,78 @@ +"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
\ No newline at end of file |
