| "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 |