| /** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ | 
| import * as tslib_1 from "tslib"; | 
| import { Subscriber } from '../Subscriber'; | 
| export function refCount() { | 
|     return function refCountOperatorFunction(source) { | 
|         return source.lift(new RefCountOperator(source)); | 
|     }; | 
| } | 
| var RefCountOperator = /*@__PURE__*/ (function () { | 
|     function RefCountOperator(connectable) { | 
|         this.connectable = connectable; | 
|     } | 
|     RefCountOperator.prototype.call = function (subscriber, source) { | 
|         var connectable = this.connectable; | 
|         connectable._refCount++; | 
|         var refCounter = new RefCountSubscriber(subscriber, connectable); | 
|         var subscription = source.subscribe(refCounter); | 
|         if (!refCounter.closed) { | 
|             refCounter.connection = connectable.connect(); | 
|         } | 
|         return subscription; | 
|     }; | 
|     return RefCountOperator; | 
| }()); | 
| var RefCountSubscriber = /*@__PURE__*/ (function (_super) { | 
|     tslib_1.__extends(RefCountSubscriber, _super); | 
|     function RefCountSubscriber(destination, connectable) { | 
|         var _this = _super.call(this, destination) || this; | 
|         _this.connectable = connectable; | 
|         return _this; | 
|     } | 
|     RefCountSubscriber.prototype._unsubscribe = function () { | 
|         var connectable = this.connectable; | 
|         if (!connectable) { | 
|             this.connection = null; | 
|             return; | 
|         } | 
|         this.connectable = null; | 
|         var refCount = connectable._refCount; | 
|         if (refCount <= 0) { | 
|             this.connection = null; | 
|             return; | 
|         } | 
|         connectable._refCount = refCount - 1; | 
|         if (refCount > 1) { | 
|             this.connection = null; | 
|             return; | 
|         } | 
|         var connection = this.connection; | 
|         var sharedConnection = connectable._connection; | 
|         this.connection = null; | 
|         if (sharedConnection && (!connection || sharedConnection === connection)) { | 
|             sharedConnection.unsubscribe(); | 
|         } | 
|     }; | 
|     return RefCountSubscriber; | 
| }(Subscriber)); | 
| //# sourceMappingURL=refCount.js.map |