| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | "use strict";var __extends = (this && this.__extends) || (function () {    var extendStatics = function (d, b) {        extendStatics = Object.setPrototypeOf ||            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };        return extendStatics(d, b);    }    return function (d, b) {        extendStatics(d, b);        function __() { this.constructor = d; }        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());    };})();Object.defineProperty(exports, "__esModule", { value: true });var isScheduler_1 = require("../util/isScheduler");var isArray_1 = require("../util/isArray");var OuterSubscriber_1 = require("../OuterSubscriber");var subscribeToResult_1 = require("../util/subscribeToResult");var fromArray_1 = require("./fromArray");var NONE = {};function combineLatest() {    var observables = [];    for (var _i = 0; _i < arguments.length; _i++) {        observables[_i] = arguments[_i];    }    var resultSelector = undefined;    var scheduler = undefined;    if (isScheduler_1.isScheduler(observables[observables.length - 1])) {        scheduler = observables.pop();    }    if (typeof observables[observables.length - 1] === 'function') {        resultSelector = observables.pop();    }    if (observables.length === 1 && isArray_1.isArray(observables[0])) {        observables = observables[0];    }    return fromArray_1.fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));}exports.combineLatest = combineLatest;var CombineLatestOperator = (function () {    function CombineLatestOperator(resultSelector) {        this.resultSelector = resultSelector;    }    CombineLatestOperator.prototype.call = function (subscriber, source) {        return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));    };    return CombineLatestOperator;}());exports.CombineLatestOperator = CombineLatestOperator;var CombineLatestSubscriber = (function (_super) {    __extends(CombineLatestSubscriber, _super);    function CombineLatestSubscriber(destination, resultSelector) {        var _this = _super.call(this, destination) || this;        _this.resultSelector = resultSelector;        _this.active = 0;        _this.values = [];        _this.observables = [];        return _this;    }    CombineLatestSubscriber.prototype._next = function (observable) {        this.values.push(NONE);        this.observables.push(observable);    };    CombineLatestSubscriber.prototype._complete = function () {        var observables = this.observables;        var len = observables.length;        if (len === 0) {            this.destination.complete();        }        else {            this.active = len;            this.toRespond = len;            for (var i = 0; i < len; i++) {                var observable = observables[i];                this.add(subscribeToResult_1.subscribeToResult(this, observable, undefined, i));            }        }    };    CombineLatestSubscriber.prototype.notifyComplete = function (unused) {        if ((this.active -= 1) === 0) {            this.destination.complete();        }    };    CombineLatestSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {        var values = this.values;        var oldVal = values[outerIndex];        var toRespond = !this.toRespond            ? 0            : oldVal === NONE ? --this.toRespond : this.toRespond;        values[outerIndex] = innerValue;        if (toRespond === 0) {            if (this.resultSelector) {                this._tryResultSelector(values);            }            else {                this.destination.next(values.slice());            }        }    };    CombineLatestSubscriber.prototype._tryResultSelector = function (values) {        var result;        try {            result = this.resultSelector.apply(this, values);        }        catch (err) {            this.destination.error(err);            return;        }        this.destination.next(result);    };    return CombineLatestSubscriber;}(OuterSubscriber_1.OuterSubscriber));exports.CombineLatestSubscriber = CombineLatestSubscriber;//# sourceMappingURL=combineLatest.js.map
 |