| "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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; |
| return extendStatics(d, b); |
| }; |
| return function (d, b) { |
| if (typeof b !== "function" && b !== null) |
| throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); |
| extendStatics(d, b); |
| function __() { this.constructor = d; } |
| d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
| }; |
| })(); |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.ConnectableObservable = void 0; |
| var Observable_1 = require("../Observable"); |
| var Subscription_1 = require("../Subscription"); |
| var refCount_1 = require("../operators/refCount"); |
| var OperatorSubscriber_1 = require("../operators/OperatorSubscriber"); |
| var lift_1 = require("../util/lift"); |
| var ConnectableObservable = (function (_super) { |
| __extends(ConnectableObservable, _super); |
| function ConnectableObservable(source, subjectFactory) { |
| var _this = _super.call(this) || this; |
| _this.source = source; |
| _this.subjectFactory = subjectFactory; |
| _this._subject = null; |
| _this._refCount = 0; |
| _this._connection = null; |
| if (lift_1.hasLift(source)) { |
| _this.lift = source.lift; |
| } |
| return _this; |
| } |
| ConnectableObservable.prototype._subscribe = function (subscriber) { |
| return this.getSubject().subscribe(subscriber); |
| }; |
| ConnectableObservable.prototype.getSubject = function () { |
| var subject = this._subject; |
| if (!subject || subject.isStopped) { |
| this._subject = this.subjectFactory(); |
| } |
| return this._subject; |
| }; |
| ConnectableObservable.prototype._teardown = function () { |
| this._refCount = 0; |
| var _connection = this._connection; |
| this._subject = this._connection = null; |
| _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); |
| }; |
| ConnectableObservable.prototype.connect = function () { |
| var _this = this; |
| var connection = this._connection; |
| if (!connection) { |
| connection = this._connection = new Subscription_1.Subscription(); |
| var subject_1 = this.getSubject(); |
| connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, undefined, function () { |
| _this._teardown(); |
| subject_1.complete(); |
| }, function (err) { |
| _this._teardown(); |
| subject_1.error(err); |
| }, function () { return _this._teardown(); }))); |
| if (connection.closed) { |
| this._connection = null; |
| connection = Subscription_1.Subscription.EMPTY; |
| } |
| } |
| return connection; |
| }; |
| ConnectableObservable.prototype.refCount = function () { |
| return refCount_1.refCount()(this); |
| }; |
| return ConnectableObservable; |
| }(Observable_1.Observable)); |
| exports.ConnectableObservable = ConnectableObservable; |
| //# sourceMappingURL=ConnectableObservable.js.map |