|  | "use strict"; | 
|  | Object.defineProperty(exports, "__esModule", { value: true }); | 
|  | var ConnectableObservable_1 = require("../observable/ConnectableObservable"); | 
|  | function multicast(subjectOrSubjectFactory, selector) { | 
|  | return function multicastOperatorFunction(source) { | 
|  | var subjectFactory; | 
|  | if (typeof subjectOrSubjectFactory === 'function') { | 
|  | subjectFactory = subjectOrSubjectFactory; | 
|  | } | 
|  | else { | 
|  | subjectFactory = function subjectFactory() { | 
|  | return subjectOrSubjectFactory; | 
|  | }; | 
|  | } | 
|  | if (typeof selector === 'function') { | 
|  | return source.lift(new MulticastOperator(subjectFactory, selector)); | 
|  | } | 
|  | var connectable = Object.create(source, ConnectableObservable_1.connectableObservableDescriptor); | 
|  | connectable.source = source; | 
|  | connectable.subjectFactory = subjectFactory; | 
|  | return connectable; | 
|  | }; | 
|  | } | 
|  | exports.multicast = multicast; | 
|  | var MulticastOperator = (function () { | 
|  | function MulticastOperator(subjectFactory, selector) { | 
|  | this.subjectFactory = subjectFactory; | 
|  | this.selector = selector; | 
|  | } | 
|  | MulticastOperator.prototype.call = function (subscriber, source) { | 
|  | var selector = this.selector; | 
|  | var subject = this.subjectFactory(); | 
|  | var subscription = selector(subject).subscribe(subscriber); | 
|  | subscription.add(source.subscribe(subject)); | 
|  | return subscription; | 
|  | }; | 
|  | return MulticastOperator; | 
|  | }()); | 
|  | exports.MulticastOperator = MulticastOperator; | 
|  | //# sourceMappingURL=multicast.js.map |