react-obsidian 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/src/observable/mediator/MediatorObservable.d.ts +2 -1
- package/dist/src/observable/mediator/MediatorObservable.d.ts.map +1 -1
- package/dist/src/observable/mediator/MediatorObservable.js +21 -2
- package/dist/src/observable/mediator/MediatorObservable.js.map +1 -1
- package/dist/src/observable/types.d.ts +1 -0
- package/dist/src/observable/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/observable/mediator/MediatorObservable.ts +27 -2
- package/src/observable/types.ts +2 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[](https://vshymanskyy.github.io/StandWithUkraine)
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
</br><img width="300px" src=".github/logo.svg"></br>
|
|
4
|
+
</br><img width="300px" src=".github/logo.svg"></br></br>
|
|
5
5
|
<a href="https://npmjs.com/package/react-obsidian"><img src="https://img.shields.io/npm/v/react-obsidian.svg" alt="npm package"></a>
|
|
6
6
|
<a href="https://www.npmjs.com/package/react-obsidian"><img src="https://img.shields.io/npm/dm/react-obsidian.svg" alt="NPM downloads"></a>
|
|
7
7
|
<a href="https://github.com/wix-incubator/react-obsidian/actions/workflows/ci.yml"><img src="https://github.com/wix-incubator/react-obsidian/actions/workflows/ci.yml/badge.svg?branch=master" alt="build status"></a>
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Observable } from '../Observable';
|
|
2
|
-
import { Mapper, MultiMapper, Observables, OnNext, Observable as IObservable } from '../types';
|
|
2
|
+
import { Mapper, MultiMapper, Observables, OnNext, Observable as IObservable, OnMultiNext } from '../types';
|
|
3
3
|
export declare class MediatorObservable<T> extends Observable<T> {
|
|
4
4
|
mapSource<Source, Result extends T>(source: Observable<Source>, mapNext: Mapper<Source, Result>): this;
|
|
5
5
|
addSource<S>(source: IObservable<S>, onNext: OnNext<S>): this;
|
|
6
|
+
addSources<S1, S2, S3, S4, S5>(sources: Observables<S1, S2, S3, S4, S5>, onNext: OnMultiNext<S1, S2, S3, S4, S5>): this;
|
|
6
7
|
mapSources<S1, S2, S3, S4, S5>(sources: Observables<S1, S2, S3, S4, S5>, mapNext: MultiMapper<T, S1, S2, S3, S4, S5>): this;
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=MediatorObservable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"MediatorObservable.d.ts","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,IAAI,WAAW,EAEzB,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACtD,SAAS,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAO/F,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAQtD,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC3B,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAuBzC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC3B,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAsB9C"}
|
|
@@ -6,8 +6,7 @@ const Observable_1 = require("../Observable");
|
|
|
6
6
|
class MediatorObservable extends Observable_1.Observable {
|
|
7
7
|
mapSource(source, mapNext) {
|
|
8
8
|
this.addSource(source, (next) => {
|
|
9
|
-
|
|
10
|
-
this.value = mapped;
|
|
9
|
+
this.value = mapNext(next, this.value);
|
|
11
10
|
});
|
|
12
11
|
return this;
|
|
13
12
|
}
|
|
@@ -18,6 +17,26 @@ class MediatorObservable extends Observable_1.Observable {
|
|
|
18
17
|
}
|
|
19
18
|
return this;
|
|
20
19
|
}
|
|
20
|
+
addSources(sources, onNext) {
|
|
21
|
+
const values = new Array(sources.length);
|
|
22
|
+
sources
|
|
23
|
+
.filter(notNull_1.notNull)
|
|
24
|
+
.forEach((source, index) => {
|
|
25
|
+
this.addSource(source, (next) => {
|
|
26
|
+
if (values[index] === next)
|
|
27
|
+
return;
|
|
28
|
+
if (values[index] === undefined) {
|
|
29
|
+
values[index] = next;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
values[index] = next;
|
|
33
|
+
onNext(values);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
onNext(values);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
21
40
|
mapSources(sources, mapNext) {
|
|
22
41
|
const values = new Array(sources.length);
|
|
23
42
|
sources
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,8CAA2C;
|
|
1
|
+
{"version":3,"file":"MediatorObservable.js","sourceRoot":"","sources":["../../../../src/observable/mediator/MediatorObservable.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,8CAA2C;AAW3C,MAAa,kBAAsB,SAAQ,uBAAa;IACtD,SAAS,CAA2B,MAA0B,EAAE,OAA+B;QAC7F,IAAI,CAAC,SAAS,CAAS,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAe,CAAW,CAAC;QAC7D,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAI,MAAsB,EAAE,MAAiB;QACpD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CACR,OAAwC,EACxC,MAAuC;QAEvC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAA6B,CAAC;QAErE,OAAO;aACJ,MAAM,CAAC,iBAAO,CAAC;aACf,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,MAA0B,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAEnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;oBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBACtB;qBAAM;oBACL,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACrB,MAAM,CAAC,MAAM,CAAC,CAAC;iBAChB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,MAAM,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CACR,OAAwC,EACxC,OAA2C;QAE3C,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAA6B,CAAC;QAErE,OAAO;aACJ,MAAM,CAAC,iBAAO,CAAC;aACf,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,MAA0B,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAEnC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;oBAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBACtB;qBAAM;oBACL,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAM,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjED,gDAiEC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type OnNext<T> = (value: T) => void | undefined;
|
|
2
|
+
export type OnMultiNext<S1, S2, S3, S4, S5> = ([S1, S2, S3, S4, S5]: Args<S1, S2, S3, S4, S5>) => void | undefined;
|
|
2
3
|
export type Mapper<Other, Mine> = (next: Other, currentValue: Mine) => Mine extends void ? 'A map function must return a value. Check your map function and ensure it has a valid return statement.' : Mine;
|
|
3
4
|
export type Unsubscribe = () => void;
|
|
4
5
|
export interface Observable<T> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,KAAK,IAAI,SAAS,IAAI,GACtF,yGAAyG,GACzG,IAAI,CAAC;AACP,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC;AAEjG,MAAM,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAClD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,YAAY,EAAE,IAAI,KACf,IAAI,CAAC;AAEV,MAAM,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACxC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChD;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChE;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,CAAC;AAEnF,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACjC;IAAC,EAAE;IAAE,EAAE;CAAC,GACR;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GACZ;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GAChB;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/observable/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,SAAS,CAAC;AAEnH,MAAM,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,KAAK,IAAI,SAAS,IAAI,GACtF,yGAAyG,GACzG,IAAI,CAAC;AACP,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC3C;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAAE,CAAC;AAEjG,MAAM,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAClD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,YAAY,EAAE,IAAI,KACf,IAAI,CAAC;AAEV,MAAM,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACxC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChC;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChD;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,GAChE;IAAC,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;IAAE,UAAU,CAAC,EAAE,CAAC;CAAC,CAAC;AAEnF,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IACjC;IAAC,EAAE;IAAE,EAAE;CAAC,GACR;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GACZ;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,GAChB;IAAC,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;IAAE,EAAE;CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
OnNext,
|
|
8
8
|
Observable as IObservable,
|
|
9
9
|
Args,
|
|
10
|
+
OnMultiNext,
|
|
10
11
|
} from '../types';
|
|
11
12
|
|
|
12
13
|
export class MediatorObservable<T> extends Observable<T> {
|
|
13
14
|
mapSource<Source, Result extends T>(source: Observable<Source>, mapNext: Mapper<Source, Result>) {
|
|
14
15
|
this.addSource<Source>(source, (next) => {
|
|
15
|
-
|
|
16
|
-
this.value = mapped;
|
|
16
|
+
this.value = mapNext(next, this.value as Result) as Result;
|
|
17
17
|
});
|
|
18
18
|
return this;
|
|
19
19
|
}
|
|
@@ -26,6 +26,31 @@ export class MediatorObservable<T> extends Observable<T> {
|
|
|
26
26
|
return this;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
addSources<S1, S2, S3, S4, S5>(
|
|
30
|
+
sources: Observables<S1, S2, S3, S4, S5>,
|
|
31
|
+
onNext: OnMultiNext<S1, S2, S3, S4, S5>,
|
|
32
|
+
) {
|
|
33
|
+
const values = new Array(sources.length) as Args<S1, S2, S3, S4, S5>;
|
|
34
|
+
|
|
35
|
+
sources
|
|
36
|
+
.filter(notNull)
|
|
37
|
+
.forEach((source, index) => {
|
|
38
|
+
this.addSource(source as IObservable<any>, (next) => {
|
|
39
|
+
if (values[index] === next) return;
|
|
40
|
+
|
|
41
|
+
if (values[index] === undefined) {
|
|
42
|
+
values[index] = next;
|
|
43
|
+
} else {
|
|
44
|
+
values[index] = next;
|
|
45
|
+
onNext(values);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
onNext(values);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
|
|
29
54
|
mapSources<S1, S2, S3, S4, S5>(
|
|
30
55
|
sources: Observables<S1, S2, S3, S4, S5>,
|
|
31
56
|
mapNext: MultiMapper<T, S1, S2, S3, S4, S5>,
|
package/src/observable/types.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export type OnNext<T> = (value: T) => void | undefined; // OnNext callbacks should never return a value
|
|
2
2
|
|
|
3
|
+
export type OnMultiNext<S1, S2, S3, S4, S5> = ([S1, S2, S3, S4, S5]: Args<S1, S2, S3, S4, S5>) => void | undefined;
|
|
4
|
+
|
|
3
5
|
export type Mapper<Other, Mine> = (next: Other, currentValue: Mine) => Mine extends void ?
|
|
4
6
|
'A map function must return a value. Check your map function and ensure it has a valid return statement.' :
|
|
5
7
|
Mine;
|