| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });var Observable_1 = require("../Observable");var AsyncSubject_1 = require("../AsyncSubject");var map_1 = require("../operators/map");var canReportError_1 = require("../util/canReportError");var isArray_1 = require("../util/isArray");var isScheduler_1 = require("../util/isScheduler");function bindCallback(callbackFunc, resultSelector, scheduler) {    if (resultSelector) {        if (isScheduler_1.isScheduler(resultSelector)) {            scheduler = resultSelector;        }        else {            return function () {                var args = [];                for (var _i = 0; _i < arguments.length; _i++) {                    args[_i] = arguments[_i];                }                return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map_1.map(function (args) { return isArray_1.isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));            };        }    }    return function () {        var args = [];        for (var _i = 0; _i < arguments.length; _i++) {            args[_i] = arguments[_i];        }        var context = this;        var subject;        var params = {            context: context,            subject: subject,            callbackFunc: callbackFunc,            scheduler: scheduler,        };        return new Observable_1.Observable(function (subscriber) {            if (!scheduler) {                if (!subject) {                    subject = new AsyncSubject_1.AsyncSubject();                    var handler = function () {                        var innerArgs = [];                        for (var _i = 0; _i < arguments.length; _i++) {                            innerArgs[_i] = arguments[_i];                        }                        subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);                        subject.complete();                    };                    try {                        callbackFunc.apply(context, args.concat([handler]));                    }                    catch (err) {                        if (canReportError_1.canReportError(subject)) {                            subject.error(err);                        }                        else {                            console.warn(err);                        }                    }                }                return subject.subscribe(subscriber);            }            else {                var state = {                    args: args, subscriber: subscriber, params: params,                };                return scheduler.schedule(dispatch, 0, state);            }        });    };}exports.bindCallback = bindCallback;function dispatch(state) {    var _this = this;    var self = this;    var args = state.args, subscriber = state.subscriber, params = state.params;    var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;    var subject = params.subject;    if (!subject) {        subject = params.subject = new AsyncSubject_1.AsyncSubject();        var handler = function () {            var innerArgs = [];            for (var _i = 0; _i < arguments.length; _i++) {                innerArgs[_i] = arguments[_i];            }            var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;            _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));        };        try {            callbackFunc.apply(context, args.concat([handler]));        }        catch (err) {            subject.error(err);        }    }    this.add(subject.subscribe(subscriber));}function dispatchNext(state) {    var value = state.value, subject = state.subject;    subject.next(value);    subject.complete();}function dispatchError(state) {    var err = state.err, subject = state.subject;    subject.error(err);}//# sourceMappingURL=bindCallback.js.map
 |