2 Object.defineProperty(exports, "__esModule", { value: true });
3 var ConnectableObservable_1 = require("../observable/ConnectableObservable");
4 function multicast(subjectOrSubjectFactory, selector) {
5 return function multicastOperatorFunction(source) {
7 if (typeof subjectOrSubjectFactory === 'function') {
8 subjectFactory = subjectOrSubjectFactory;
11 subjectFactory = function subjectFactory() {
12 return subjectOrSubjectFactory;
15 if (typeof selector === 'function') {
16 return source.lift(new MulticastOperator(subjectFactory, selector));
18 var connectable = Object.create(source, ConnectableObservable_1.connectableObservableDescriptor);
19 connectable.source = source;
20 connectable.subjectFactory = subjectFactory;
24 exports.multicast = multicast;
25 var MulticastOperator = (function () {
26 function MulticastOperator(subjectFactory, selector) {
27 this.subjectFactory = subjectFactory;
28 this.selector = selector;
30 MulticastOperator.prototype.call = function (subscriber, source) {
31 var selector = this.selector;
32 var subject = this.subjectFactory();
33 var subscription = selector(subject).subscribe(subscriber);
34 subscription.add(source.subscribe(subject));
37 return MulticastOperator;
39 exports.MulticastOperator = MulticastOperator;
40 //# sourceMappingURL=multicast.js.map