text: "use strict";
  var __extends = (this && this.__extends) || function (d, b) {
      for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
      function __() { this.constructor = d; }
      d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  };
  var OuterSubscriber_1 = require('../OuterSubscriber');
  var subscribeToResult_1 = require('../util/subscribeToResult');
  /**
   * @param observable
   * @param resultSelector
   * @return {Observable<R>|WebSocketSubject<T>|Observable<T>}
   * @method switchMapTo
   * @owner Observable
   */
  function switchMapTo(observable, resultSelector) {
      return this.lift(new SwitchMapToOperator(observable, resultSelector));
  }
  exports.switchMapTo = switchMapTo;
  var SwitchMapToOperator = (function () {
      function SwitchMapToOperator(observable, resultSelector) {
          this.observable = observable;
          this.resultSelector = resultSelector;
      }
      SwitchMapToOperator.prototype.call = function (subscriber) {
          return new SwitchMapToSubscriber(subscriber, this.observable, this.resultSelector);
      };
      return SwitchMapToOperator;
  }());
  var SwitchMapToSubscriber = (function (_super) {
      __extends(SwitchMapToSubscriber, _super);
      function SwitchMapToSubscriber(destination, inner, resultSelector) {
          _super.call(this, destination);
          this.inner = inner;
          this.resultSelector = resultSelector;
          this.index = 0;
      }
      SwitchMapToSubscriber.prototype._next = function (value) {
          var innerSubscription = this.innerSubscription;
          if (innerSubscription) {
              innerSubscription.unsubscribe();
          }
          this.add(this.innerSubscription = subscribeToResult_1.subscribeToResult(this, this.inner, value, this.index++));
      };
      SwitchMapToSubscriber.prototype._complete = function () {
          var innerSubscription = this.innerSubscription;
          if (!innerSubscription || innerSubscription.isUnsubscribed) {
              _super.prototype._complete.call(this);
          }
      };
      SwitchMapToSubscriber.prototype._unsubscribe = function () {
          this.innerSubscription = null;
      };
      SwitchMapToSubscriber.prototype.notifyComplete = function (innerSub) {
          this.remove(innerSub);
          this.innerSubscription = null;
          if (this.isStopped) {
              _super.prototype._complete.call(this);
          }
      };
      SwitchMapToSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
          var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;
          if (resultSelector) {
              this.tryResultSelector(outerValue, innerValue, outerIndex, innerIndex);
          }
          else {
              destination.next(innerValue);
          }
      };
      SwitchMapToSubscriber.prototype.tryResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {
          var _a = this, resultSelector = _a.resultSelector, destination = _a.destination;
          var result;
          try {
              result = resultSelector(outerValue, innerValue, outerIndex, innerIndex);
          }
          catch (err) {
              destination.error(err);
              return;
          }
          destination.next(result);
      };
      return SwitchMapToSubscriber;
  }(OuterSubscriber_1.OuterSubscriber));
  //# sourceMappingURL=switchMapTo.js.map