1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const rxjs_1 = require("rxjs");
|
4 | const index_1 = require("./index");
|
5 | const _ = require("lodash");
|
6 | class ReactiveCollection {
|
7 | constructor(value = []) {
|
8 | this.pushed = new rxjs_1.ReplaySubject(1);
|
9 | this.popped = new rxjs_1.ReplaySubject(1);
|
10 | this.shifted = new rxjs_1.ReplaySubject(1);
|
11 | this.unshifted = new rxjs_1.ReplaySubject(1);
|
12 | this.removed = new rxjs_1.ReplaySubject(1);
|
13 | this.rotated = new rxjs_1.ReplaySubject(1);
|
14 | this.array = new index_1.ReactiveProperty(value);
|
15 | this.subs = [
|
16 | this.subscribeToPush(pushed => {
|
17 | const v = this.value;
|
18 | v.push(pushed);
|
19 | this.value = v;
|
20 | }),
|
21 | this.subscribeToUnshift(unshifted => {
|
22 | const v = this.value;
|
23 | v.unshift(unshifted);
|
24 | this.value = v;
|
25 | }),
|
26 | ];
|
27 | }
|
28 | get value() {
|
29 | return this.array.value;
|
30 | }
|
31 | set value(value) {
|
32 | this.array.value = value;
|
33 | }
|
34 | dispose() {
|
35 | this.subs.forEach(sub => sub.unsubscribe());
|
36 | }
|
37 | subscribeToPush(observer) {
|
38 | return this.pushed
|
39 | .observeOn(rxjs_1.Scheduler.asap)
|
40 | .subscribeOn(rxjs_1.Scheduler.asap)
|
41 | .subscribe(observer);
|
42 | }
|
43 | subscribeToPop(observer) {
|
44 | return this.popped
|
45 | .observeOn(rxjs_1.Scheduler.asap)
|
46 | .subscribeOn(rxjs_1.Scheduler.asap)
|
47 | .subscribe(observer);
|
48 | }
|
49 | subscribeToShift(observer) {
|
50 | return this.shifted
|
51 | .observeOn(rxjs_1.Scheduler.asap)
|
52 | .subscribeOn(rxjs_1.Scheduler.asap)
|
53 | .subscribe(observer);
|
54 | }
|
55 | subscribeToUnshift(observer) {
|
56 | return this.unshifted
|
57 | .observeOn(rxjs_1.Scheduler.asap)
|
58 | .subscribeOn(rxjs_1.Scheduler.asap)
|
59 | .subscribe(observer);
|
60 | }
|
61 | subscribeToRemove(observer) {
|
62 | return this.removed
|
63 | .observeOn(rxjs_1.Scheduler.asap)
|
64 | .subscribeOn(rxjs_1.Scheduler.asap)
|
65 | .subscribe(observer);
|
66 | }
|
67 | subscribeToRotate(observer) {
|
68 | return this.rotated
|
69 | .observeOn(rxjs_1.Scheduler.asap)
|
70 | .subscribeOn(rxjs_1.Scheduler.asap)
|
71 | .subscribe(observer);
|
72 | }
|
73 | push(value) {
|
74 | this.pushed.next(value);
|
75 | return this;
|
76 | }
|
77 | pop(value) {
|
78 | const v = this.value;
|
79 | const popped = v.pop();
|
80 | this.popped.next(popped);
|
81 | this.value = v;
|
82 | return popped;
|
83 | }
|
84 | shift() {
|
85 | const v = this.value;
|
86 | const shifted = v.shift();
|
87 | this.shifted.next(shifted);
|
88 | this.value = v;
|
89 | return shifted;
|
90 | }
|
91 | unshift(value) {
|
92 | this.unshifted.next(value);
|
93 | return this;
|
94 | }
|
95 | remove(value) {
|
96 | const v = this.value;
|
97 | const removed = v.splice(v.indexOf(value));
|
98 | this.value = v;
|
99 | this.removed.next(removed[0]);
|
100 | return this;
|
101 | }
|
102 | rotate() {
|
103 | const value = this.value;
|
104 | const shifted = value.shift();
|
105 | value.push(shifted);
|
106 | this.rotated.next(shifted);
|
107 | this.value = value;
|
108 | return shifted;
|
109 | }
|
110 | rotateEach(action) {
|
111 | _.range(this.value.length).forEach(i => {
|
112 | action(this.rotate());
|
113 | });
|
114 | }
|
115 | mapCollection(selector) {
|
116 | return new ReactiveCollection(this.value.map(selector));
|
117 | }
|
118 | filterCollection(selector) {
|
119 | return new ReactiveCollection(this.value.filter(selector));
|
120 | }
|
121 | forEach(action) {
|
122 | this.value.forEach(action);
|
123 | return this;
|
124 | }
|
125 | subscribe(observer) {
|
126 | return this.array.subscribe(observer);
|
127 | }
|
128 | filter(selector) {
|
129 | return this.array.filter(selector);
|
130 | }
|
131 | map(selector) {
|
132 | return this.array.map(selector);
|
133 | }
|
134 | debounceWithTimeout(dueTime, scheduler) {
|
135 | return this.array.throttleTime(dueTime, scheduler);
|
136 | }
|
137 | debounceWithSelector(selector) {
|
138 | return this.array.throttle(selector);
|
139 | }
|
140 | bufferTime(timeSpan, scheduler) {
|
141 | return this.array.bufferTime(timeSpan, scheduler);
|
142 | }
|
143 | bufferCount(count, skip) {
|
144 | return this.array.bufferCount(count, skip);
|
145 | }
|
146 | bufferTimeCount(timeSpan, count, skip, scheduler) {
|
147 | return this.array.bufferTimeCount(timeSpan, count, skip, scheduler);
|
148 | }
|
149 | zip(other) {
|
150 | return this.array.zip(other);
|
151 | }
|
152 | asObservable() {
|
153 | return this.array.asObservable();
|
154 | }
|
155 | asObserver() {
|
156 | return this.array.asObserver();
|
157 | }
|
158 | asSubject() {
|
159 | return this.array.asSubject();
|
160 | }
|
161 | asBehaviourSubject() {
|
162 | return this.array.asBehaviourSubject();
|
163 | }
|
164 | }
|
165 | exports.ReactiveCollection = ReactiveCollection;
|
166 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWFjdGl2ZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBUWM7QUFHZCxtQ0FBMkM7QUFFM0MsNEJBQTRCO0FBRTVCO0lBb0JFLFlBQVksUUFBYSxFQUFFO1FBbkJuQixXQUFNLEdBQXFCLElBQUksb0JBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxXQUFNLEdBQXFCLElBQUksb0JBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQXFCLElBQUksb0JBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUNwRCxjQUFTLEdBQXFCLElBQUksb0JBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUN0RCxZQUFPLEdBQXFCLElBQUksb0JBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQUNwRCxZQUFPLEdBQXFCLElBQUksb0JBQWEsQ0FBSSxDQUFDLENBQUMsQ0FBQztRQWUxRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksd0JBQWdCLENBQU0sS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLElBQUksR0FBRztZQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTTtnQkFDekIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUztnQkFDL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFD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 |
\ | No newline at end of file |