"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Observable_1 = require("../Observable"); var isArray_1 = require("../util/isArray"); var isFunction_1 = require("../util/isFunction"); var map_1 = require("../operators/map"); function fromEventPattern(addHandler, removeHandler, resultSelector) { if (resultSelector) { return fromEventPattern(addHandler, removeHandler).pipe(map_1.map(function (args) { return isArray_1.isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); } return new Observable_1.Observable(function (subscriber) { var handler = function () { var e = []; for (var _i = 0; _i < arguments.length; _i++) { e[_i] = arguments[_i]; } return subscriber.next(e.length === 1 ? e[0] : e); }; var retValue; try { retValue = addHandler(handler); } catch (err) { subscriber.error(err); return undefined; } if (!isFunction_1.isFunction(removeHandler)) { return undefined; } return function () { return removeHandler(handler, retValue); }; }); } exports.fromEventPattern = fromEventPattern; //# sourceMappingURL=fromEventPattern.js.map