1 | "use strict";
|
---|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
3 | var ConnectableObservable_1 = require("../observable/ConnectableObservable");
|
---|
4 | function multicast(subjectOrSubjectFactory, selector) {
|
---|
5 | return function multicastOperatorFunction(source) {
|
---|
6 | var subjectFactory;
|
---|
7 | if (typeof subjectOrSubjectFactory === 'function') {
|
---|
8 | subjectFactory = subjectOrSubjectFactory;
|
---|
9 | }
|
---|
10 | else {
|
---|
11 | subjectFactory = function subjectFactory() {
|
---|
12 | return subjectOrSubjectFactory;
|
---|
13 | };
|
---|
14 | }
|
---|
15 | if (typeof selector === 'function') {
|
---|
16 | return source.lift(new MulticastOperator(subjectFactory, selector));
|
---|
17 | }
|
---|
18 | var connectable = Object.create(source, ConnectableObservable_1.connectableObservableDescriptor);
|
---|
19 | connectable.source = source;
|
---|
20 | connectable.subjectFactory = subjectFactory;
|
---|
21 | return connectable;
|
---|
22 | };
|
---|
23 | }
|
---|
24 | exports.multicast = multicast;
|
---|
25 | var MulticastOperator = (function () {
|
---|
26 | function MulticastOperator(subjectFactory, selector) {
|
---|
27 | this.subjectFactory = subjectFactory;
|
---|
28 | this.selector = selector;
|
---|
29 | }
|
---|
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));
|
---|
35 | return subscription;
|
---|
36 | };
|
---|
37 | return MulticastOperator;
|
---|
38 | }());
|
---|
39 | exports.MulticastOperator = MulticastOperator;
|
---|
40 | //# sourceMappingURL=multicast.js.map |
---|