1 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6 | };
|
7 | import { computed, observable, action, runInAction, observe, makeObservable } from "mobx";
|
8 | function observableSymbol() {
|
9 | return (typeof Symbol === "function" && Symbol.observable) || "@@observable";
|
10 | }
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | export function toStream(expression, fireImmediately) {
|
35 | var _a;
|
36 | if (fireImmediately === void 0) { fireImmediately = false; }
|
37 | var computedValue = computed(expression);
|
38 | return _a = {
|
39 | subscribe: function (observer) {
|
40 | if ("function" === typeof observer) {
|
41 | return {
|
42 | unsubscribe: observe(computedValue, function (_a) {
|
43 | var newValue = _a.newValue;
|
44 | return observer(newValue);
|
45 | }, fireImmediately),
|
46 | };
|
47 | }
|
48 | if (observer && "object" === typeof observer && observer.next) {
|
49 | return {
|
50 | unsubscribe: observe(computedValue, function (_a) {
|
51 | var newValue = _a.newValue;
|
52 | return observer.next(newValue);
|
53 | }, fireImmediately),
|
54 | };
|
55 | }
|
56 | return {
|
57 | unsubscribe: function () { },
|
58 | };
|
59 | }
|
60 | },
|
61 | _a[observableSymbol()] = function () {
|
62 | return this;
|
63 | },
|
64 | _a;
|
65 | }
|
66 | var StreamListener = (function () {
|
67 | function StreamListener(observable, initialValue) {
|
68 | var _this = this;
|
69 | Object.defineProperty(this, "current", {
|
70 | enumerable: true,
|
71 | configurable: true,
|
72 | writable: true,
|
73 | value: void 0
|
74 | });
|
75 | Object.defineProperty(this, "subscription", {
|
76 | enumerable: true,
|
77 | configurable: true,
|
78 | writable: true,
|
79 | value: void 0
|
80 | });
|
81 | makeObservable(this);
|
82 | runInAction(function () {
|
83 | _this.current = initialValue;
|
84 | _this.subscription = observable.subscribe(_this);
|
85 | });
|
86 | }
|
87 | Object.defineProperty(StreamListener.prototype, "dispose", {
|
88 | enumerable: false,
|
89 | configurable: true,
|
90 | writable: true,
|
91 | value: function () {
|
92 | if (this.subscription) {
|
93 | this.subscription.unsubscribe();
|
94 | }
|
95 | }
|
96 | });
|
97 | Object.defineProperty(StreamListener.prototype, "next", {
|
98 | enumerable: false,
|
99 | configurable: true,
|
100 | writable: true,
|
101 | value: function (value) {
|
102 | this.current = value;
|
103 | }
|
104 | });
|
105 | Object.defineProperty(StreamListener.prototype, "complete", {
|
106 | enumerable: false,
|
107 | configurable: true,
|
108 | writable: true,
|
109 | value: function () {
|
110 | this.dispose();
|
111 | }
|
112 | });
|
113 | Object.defineProperty(StreamListener.prototype, "error", {
|
114 | enumerable: false,
|
115 | configurable: true,
|
116 | writable: true,
|
117 | value: function (value) {
|
118 | this.current = value;
|
119 | this.dispose();
|
120 | }
|
121 | });
|
122 | __decorate([
|
123 | observable.ref
|
124 | ], StreamListener.prototype, "current", void 0);
|
125 | __decorate([
|
126 | action.bound
|
127 | ], StreamListener.prototype, "next", null);
|
128 | __decorate([
|
129 | action.bound
|
130 | ], StreamListener.prototype, "complete", null);
|
131 | __decorate([
|
132 | action.bound
|
133 | ], StreamListener.prototype, "error", null);
|
134 | return StreamListener;
|
135 | }());
|
136 | export function fromStream(observable, initialValue) {
|
137 | if (initialValue === void 0) { initialValue = undefined; }
|
138 | return new StreamListener(observable, initialValue);
|
139 | }
|