123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { __extends } from "tslib";
- import { Observable } from '../Observable';
- import { Subscription } from '../Subscription';
- import { refCount as higherOrderRefCount } from '../operators/refCount';
- import { createOperatorSubscriber } from '../operators/OperatorSubscriber';
- import { hasLift } from '../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 (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();
- var subject_1 = this.getSubject();
- connection.add(this.source.subscribe(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.EMPTY;
- }
- }
- return connection;
- };
- ConnectableObservable.prototype.refCount = function () {
- return higherOrderRefCount()(this);
- };
- return ConnectableObservable;
- }(Observable));
- export { ConnectableObservable };
- //# sourceMappingURL=ConnectableObservable.js.map
|