@dereekb/rxjs 0.0.1 → 1.0.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/CHANGELOG.md +21 -0
- package/README.md +4 -5
- package/package.json +3 -2
- package/src/lib/filter/filter.d.ts +44 -0
- package/src/lib/filter/filter.js +22 -0
- package/src/lib/filter/filter.js.map +1 -0
- package/src/lib/filter/filter.map.d.ts +25 -0
- package/src/lib/filter/filter.map.js +81 -0
- package/src/lib/filter/filter.map.js.map +1 -0
- package/src/lib/filter/filter.preset.d.ts +5 -0
- package/src/lib/filter/filter.preset.js +22 -0
- package/src/lib/filter/filter.preset.js.map +1 -0
- package/src/lib/filter/filter.source.d.ts +26 -0
- package/src/lib/filter/filter.source.js +49 -0
- package/src/lib/filter/filter.source.js.map +1 -0
- package/src/lib/filter/index.d.ts +4 -0
- package/src/lib/filter/index.js +8 -0
- package/src/lib/filter/index.js.map +1 -0
- package/src/lib/index.d.ts +1 -0
- package/src/lib/index.js +1 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/iterator/iteration.accumulator.js +2 -2
- package/src/lib/iterator/iteration.accumulator.rxjs.js +1 -1
- package/src/lib/iterator/iterator.page.js +4 -4
- package/src/lib/loading/index.d.ts +3 -2
- package/src/lib/loading/index.js +3 -2
- package/src/lib/loading/index.js.map +1 -1
- package/src/lib/loading/loading.context.state.d.ts +19 -7
- package/src/lib/loading/loading.context.state.js +19 -17
- package/src/lib/loading/loading.context.state.js.map +1 -1
- package/src/lib/loading/loading.context.state.list.d.ts +25 -0
- package/src/lib/loading/loading.context.state.list.js +51 -0
- package/src/lib/loading/loading.context.state.list.js.map +1 -0
- package/src/lib/loading/loading.context.state.value.d.ts +24 -0
- package/src/lib/loading/loading.context.state.value.js +41 -0
- package/src/lib/loading/loading.context.state.value.js.map +1 -0
- package/src/lib/loading/loading.state.d.ts +21 -10
- package/src/lib/loading/loading.state.js +34 -23
- package/src/lib/loading/loading.state.js.map +1 -1
- package/src/lib/loading/loading.state.list.d.ts +4 -0
- package/src/lib/loading/loading.state.list.js +17 -0
- package/src/lib/loading/loading.state.list.js.map +1 -0
- package/src/lib/rxjs/getter.d.ts +17 -0
- package/src/lib/rxjs/getter.js +30 -0
- package/src/lib/rxjs/getter.js.map +1 -0
- package/src/lib/rxjs/index.d.ts +2 -0
- package/src/lib/rxjs/index.js +2 -0
- package/src/lib/rxjs/index.js.map +1 -1
- package/src/lib/rxjs/loading.d.ts +5 -3
- package/src/lib/rxjs/loading.js +9 -5
- package/src/lib/rxjs/loading.js.map +1 -1
- package/src/lib/rxjs/misc.d.ts +18 -0
- package/src/lib/rxjs/misc.js +32 -0
- package/src/lib/rxjs/misc.js.map +1 -0
- package/src/lib/rxjs/rxjs.d.ts +17 -3
- package/src/lib/rxjs/rxjs.js +27 -10
- package/src/lib/rxjs/rxjs.js.map +1 -1
- package/src/lib/rxjs/value.d.ts +13 -4
- package/src/lib/rxjs/value.js +27 -6
- package/src/lib/rxjs/value.js.map +1 -1
- package/src/lib/loading/loading.context.state.model.d.ts +0 -18
- package/src/lib/loading/loading.context.state.model.js +0 -37
- package/src/lib/loading/loading.context.state.model.js.map +0 -1
- package/src/lib/loading/loading.context.state.page.d.ts +0 -21
- package/src/lib/loading/loading.context.state.page.js +0 -46
- package/src/lib/loading/loading.context.state.page.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
|
+
|
|
5
|
+
# 1.0.0 (2022-02-23)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* added dbxList ([83ddb00](https://github.com/dereekb/dbcomponents/commit/83ddb006548602640ec312594b9bb9f26f3417de))
|
|
11
|
+
* added dbxPickableChipListFieldComponent ([285b492](https://github.com/dereekb/dbcomponents/commit/285b492a2669ce1d2ba6d4f6cbf1570cb0cb4ee7))
|
|
12
|
+
* added dbxSearchableTextFieldComponent ([42ae14c](https://github.com/dereekb/dbcomponents/commit/42ae14c7709f6603db676c94f1df2017fdad59ca))
|
|
13
|
+
* added dbxSelectionListView ([1b34c02](https://github.com/dereekb/dbcomponents/commit/1b34c0203a8ce798f83c404189f7c7fdb0555e95))
|
|
14
|
+
* added dbxSidenav ([867ab31](https://github.com/dereekb/dbcomponents/commit/867ab3189e1f7356d7b8f6202f0df70a45549d1f))
|
|
15
|
+
* added FilterMap ([6ffefce](https://github.com/dereekb/dbcomponents/commit/6ffefce8e13efd36adb79ea6f95fb0edafe22f16))
|
|
16
|
+
* added tapLog() ([1d2fd64](https://github.com/dereekb/dbcomponents/commit/1d2fd640b7b87052dd006697fab71a5adf7701da))
|
|
17
|
+
* segment analytics ([b81d5a6](https://github.com/dereekb/dbcomponents/commit/b81d5a6a70ecf3bc35852d441cfd79e91e5dcb51))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# 0.1.0 (2022-01-29)
|
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
@dereekb/rxjs
|
|
2
|
+
=======
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
The sources for this package are in the main [@dereekb/dbcomponents](https://github.com/dereekb/dbcomponents) repo. Please file issues and pull requests against that repo.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Run `nx test rxjs` to execute the unit tests via [Jest](https://jestjs.io).
|
|
6
|
+
License: MIT
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/rxjs",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "commonjs",
|
|
4
5
|
"main": "./src/index.js",
|
|
5
6
|
"typings": "./src/index.d.ts",
|
|
6
7
|
"dependencies": {
|
|
7
8
|
"rxjs": "^7.5.2",
|
|
8
|
-
"@dereekb/util": "0.0
|
|
9
|
+
"@dereekb/util": "1.0.0",
|
|
9
10
|
"extra-set": "^2.2.11",
|
|
10
11
|
"ms": "^3.0.0-canary.1"
|
|
11
12
|
},
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* Source that provides a filter observable.
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class FilterSource<F = any> {
|
|
6
|
+
/**
|
|
7
|
+
* Provided filter.
|
|
8
|
+
*/
|
|
9
|
+
abstract readonly filter$: Observable<F>;
|
|
10
|
+
/**
|
|
11
|
+
* (Optional) Function that allows initializing a filter source from an observable.
|
|
12
|
+
*
|
|
13
|
+
* This lets the filter set its initial value, etc.
|
|
14
|
+
*/
|
|
15
|
+
abstract initWithFilter?(filterObs: Observable<F>): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* An object that contains a preset identifier for the filter.
|
|
19
|
+
*/
|
|
20
|
+
export interface FilterPreset<P = string> {
|
|
21
|
+
preset?: P;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A FilterPreset with only the preset.
|
|
25
|
+
*/
|
|
26
|
+
export declare type FilterOnlyWithPreset<F extends FilterPreset> = Pick<F, 'preset'>;
|
|
27
|
+
/**
|
|
28
|
+
* A FilterPreset without a preset value available.
|
|
29
|
+
*/
|
|
30
|
+
export declare type FilterWithoutPreset<F extends FilterPreset> = Omit<F, 'preset'>;
|
|
31
|
+
/**
|
|
32
|
+
* A FilterSource that has a filter with a FilterPreset potentially available.
|
|
33
|
+
*/
|
|
34
|
+
export declare abstract class PresetFilterSource<F extends FilterPreset> extends FilterSource<F> {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A FilterSourceConnector connects with a Source for a function.
|
|
38
|
+
*/
|
|
39
|
+
export declare abstract class FilterSourceConnector<F = any> {
|
|
40
|
+
/**
|
|
41
|
+
* Coonnects with the input source.
|
|
42
|
+
*/
|
|
43
|
+
abstract connectWithSource(filterSource: FilterSource<F>): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterSourceConnector = exports.PresetFilterSource = exports.FilterSource = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Source that provides a filter observable.
|
|
6
|
+
*/
|
|
7
|
+
class FilterSource {
|
|
8
|
+
}
|
|
9
|
+
exports.FilterSource = FilterSource;
|
|
10
|
+
/**
|
|
11
|
+
* A FilterSource that has a filter with a FilterPreset potentially available.
|
|
12
|
+
*/
|
|
13
|
+
class PresetFilterSource extends FilterSource {
|
|
14
|
+
}
|
|
15
|
+
exports.PresetFilterSource = PresetFilterSource;
|
|
16
|
+
/**
|
|
17
|
+
* A FilterSourceConnector connects with a Source for a function.
|
|
18
|
+
*/
|
|
19
|
+
class FilterSourceConnector {
|
|
20
|
+
}
|
|
21
|
+
exports.FilterSourceConnector = FilterSourceConnector;
|
|
22
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/filter/filter.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAsB,YAAY;CAWjC;AAXD,oCAWC;AAmBD;;GAEG;AACH,MAAsB,kBAA2C,SAAQ,YAAe;CAAI;AAA5F,gDAA4F;AAE5F;;GAEG;AACH,MAAsB,qBAAqB;CAK1C;AALD,sDAKC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ObservableGetter } from '../rxjs/getter';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { FilterSource, FilterSourceConnector } from './filter';
|
|
4
|
+
export declare type FilterMapKey = string;
|
|
5
|
+
/**
|
|
6
|
+
* Class used to keep track of filters keyed by a specific string identifier.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FilterMap<F> {
|
|
9
|
+
private readonly _map;
|
|
10
|
+
filterForKey(key: FilterMapKey): Observable<F>;
|
|
11
|
+
addDefaultFilterObs(key: FilterMapKey, obs: ObservableGetter<F>): void;
|
|
12
|
+
addFilterObs(key: FilterMapKey, obs: Observable<F>): void;
|
|
13
|
+
makeInstance(key: FilterMapKey): FilterMapKeyInstance<F>;
|
|
14
|
+
instanceObsForKeyObs(keyObs: Observable<FilterMapKey>): Observable<FilterMapKeyInstance<F>>;
|
|
15
|
+
private _itemForKey;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare class FilterMapKeyInstance<F> implements FilterSourceConnector<F>, FilterSource<F> {
|
|
19
|
+
readonly dbxFilterMap: FilterMap<F>;
|
|
20
|
+
readonly key: FilterMapKey;
|
|
21
|
+
readonly filter$: Observable<F>;
|
|
22
|
+
constructor(dbxFilterMap: FilterMap<F>, key: FilterMapKey);
|
|
23
|
+
initWithFilter(filterObs: Observable<F>): void;
|
|
24
|
+
connectWithSource(filterSource: FilterSource<F>): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterMapKeyInstance = exports.FilterMap = void 0;
|
|
4
|
+
const value_1 = require("../rxjs/value");
|
|
5
|
+
const filter_source_1 = require("./filter.source");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
/**
|
|
8
|
+
* Class used to keep track of filters keyed by a specific string identifier.
|
|
9
|
+
*/
|
|
10
|
+
class FilterMap {
|
|
11
|
+
constructor() {
|
|
12
|
+
this._map = new rxjs_1.BehaviorSubject(new Map());
|
|
13
|
+
}
|
|
14
|
+
filterForKey(key) {
|
|
15
|
+
return this._map.pipe((0, rxjs_1.map)(x => x.get(key)), (0, value_1.filterMaybe)(), (0, rxjs_1.first)(), // take first since the item never changes.
|
|
16
|
+
(0, rxjs_1.switchMap)(x => x.filter$), (0, value_1.filterMaybe)());
|
|
17
|
+
}
|
|
18
|
+
addDefaultFilterObs(key, obs) {
|
|
19
|
+
this._itemForKey(key).setDefaultFilterObs(obs);
|
|
20
|
+
}
|
|
21
|
+
addFilterObs(key, obs) {
|
|
22
|
+
this._itemForKey(key).setFilterObs(obs);
|
|
23
|
+
}
|
|
24
|
+
makeInstance(key) {
|
|
25
|
+
return new FilterMapKeyInstance(this, key);
|
|
26
|
+
}
|
|
27
|
+
instanceObsForKeyObs(keyObs) {
|
|
28
|
+
return keyObs.pipe((0, rxjs_1.distinctUntilChanged)(), (0, rxjs_1.map)(x => this.makeInstance(x)), (0, rxjs_1.shareReplay)(1));
|
|
29
|
+
}
|
|
30
|
+
// MARK: Internal
|
|
31
|
+
_itemForKey(key) {
|
|
32
|
+
let item = this._map.value.get(key);
|
|
33
|
+
if (!item) {
|
|
34
|
+
item = new FilterMapItem(this, key);
|
|
35
|
+
this._map.value.set(key, item);
|
|
36
|
+
this._map.next(this._map.value);
|
|
37
|
+
}
|
|
38
|
+
return item;
|
|
39
|
+
}
|
|
40
|
+
// MARK: Cleanup
|
|
41
|
+
destroy() {
|
|
42
|
+
this._map.value.forEach((x) => x.destroy());
|
|
43
|
+
this._map.complete();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.FilterMap = FilterMap;
|
|
47
|
+
class FilterMapKeyInstance {
|
|
48
|
+
constructor(dbxFilterMap, key) {
|
|
49
|
+
this.dbxFilterMap = dbxFilterMap;
|
|
50
|
+
this.key = key;
|
|
51
|
+
this.filter$ = this.dbxFilterMap.filterForKey(this.key);
|
|
52
|
+
}
|
|
53
|
+
initWithFilter(filterObs) {
|
|
54
|
+
this.dbxFilterMap.addDefaultFilterObs(this.key, filterObs);
|
|
55
|
+
}
|
|
56
|
+
connectWithSource(filterSource) {
|
|
57
|
+
this.dbxFilterMap.addFilterObs(this.key, filterSource.filter$);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.FilterMapKeyInstance = FilterMapKeyInstance;
|
|
61
|
+
class FilterMapItem {
|
|
62
|
+
constructor(dbxFilterMap, key) {
|
|
63
|
+
this.dbxFilterMap = dbxFilterMap;
|
|
64
|
+
this.key = key;
|
|
65
|
+
this._source = new filter_source_1.FilterSourceInstance();
|
|
66
|
+
this.filter$ = this._source.initialFilter$;
|
|
67
|
+
}
|
|
68
|
+
setDefaultFilterObs(obs) {
|
|
69
|
+
this._source.setDefaultFilter(obs);
|
|
70
|
+
}
|
|
71
|
+
setFilterObs(obs) {
|
|
72
|
+
/**
|
|
73
|
+
* MapItem uses the behavior of the DefaultFilterSource to provide a default filter value.
|
|
74
|
+
*/
|
|
75
|
+
this._source.initWithFilter(obs);
|
|
76
|
+
}
|
|
77
|
+
destroy() {
|
|
78
|
+
this._source.destroy();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=filter.map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.map.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/filter/filter.map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FilterPreset, FilterWithoutPreset } from "./filter";
|
|
2
|
+
import { OperatorFunction } from 'rxjs';
|
|
3
|
+
export declare type MapFilterWithPresetFn<F extends FilterPreset> = (filter: F) => FilterWithoutPreset<F>;
|
|
4
|
+
export declare function makeMapFilterWithPresetFn<F extends FilterPreset>(fn: MapFilterWithPresetFn<F>): MapFilterWithPresetFn<F>;
|
|
5
|
+
export declare function mapFilterWithPreset<F extends FilterPreset>(fn: MapFilterWithPresetFn<F>): OperatorFunction<F, FilterWithoutPreset<F>>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapFilterWithPreset = exports.makeMapFilterWithPresetFn = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
function makeMapFilterWithPresetFn(fn) {
|
|
6
|
+
return (filter) => {
|
|
7
|
+
if (filter.preset) {
|
|
8
|
+
const result = fn(filter);
|
|
9
|
+
delete result.preset;
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return filter;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.makeMapFilterWithPresetFn = makeMapFilterWithPresetFn;
|
|
18
|
+
function mapFilterWithPreset(fn) {
|
|
19
|
+
return (0, rxjs_1.map)(makeMapFilterWithPresetFn(fn));
|
|
20
|
+
}
|
|
21
|
+
exports.mapFilterWithPreset = mapFilterWithPreset;
|
|
22
|
+
//# sourceMappingURL=filter.preset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.preset.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/filter/filter.preset.ts"],"names":[],"mappings":";;;AACA,+BAA6C;AAI7C,SAAgB,yBAAyB,CAAyB,EAA4B;IAC5F,OAAO,CAAC,MAAS,EAAE,EAAE;QACnB,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAM,CAAC;YAC/B,OAAO,MAAM,CAAC,MAAM,CAAC;YACrB,OAAO,MAAM,CAAC;SACf;aAAM;YACL,OAAO,MAAM,CAAC;SACf;IACH,CAAC,CAAA;AACH,CAAC;AAVD,8DAUC;AAED,SAAgB,mBAAmB,CAAyB,EAA4B;IACtF,OAAO,IAAA,UAAG,EAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAFD,kDAEC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { FilterSource } from './filter';
|
|
3
|
+
import { ObservableGetter } from '../rxjs/getter';
|
|
4
|
+
import { Maybe } from '@dereekb/util';
|
|
5
|
+
/**
|
|
6
|
+
* A basic FilterSource implementation.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FilterSourceInstance<F> implements FilterSource<F> {
|
|
9
|
+
private _filter;
|
|
10
|
+
private _initialFilter;
|
|
11
|
+
private _defaultFilter;
|
|
12
|
+
readonly defaultFilter$: Observable<Maybe<F>>;
|
|
13
|
+
readonly initialFilter$: Observable<Maybe<F>>;
|
|
14
|
+
/**
|
|
15
|
+
* filter$ uses the latest value from any filter.
|
|
16
|
+
*/
|
|
17
|
+
readonly filter$: Observable<F>;
|
|
18
|
+
initWithFilter(filterObs: Observable<F>): void;
|
|
19
|
+
setDefaultFilter(filter: Maybe<ObservableGetter<Maybe<F>>>): void;
|
|
20
|
+
setFilter(filter: F): void;
|
|
21
|
+
/**
|
|
22
|
+
* Resets the current filter to be the default filter.
|
|
23
|
+
*/
|
|
24
|
+
resetFilter(): void;
|
|
25
|
+
destroy(): void;
|
|
26
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterSourceInstance = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const object_1 = require("../object");
|
|
6
|
+
const getter_1 = require("../rxjs/getter");
|
|
7
|
+
const value_1 = require("../rxjs/value");
|
|
8
|
+
/**
|
|
9
|
+
* A basic FilterSource implementation.
|
|
10
|
+
*/
|
|
11
|
+
class FilterSourceInstance {
|
|
12
|
+
constructor() {
|
|
13
|
+
this._filter = new rxjs_1.BehaviorSubject(undefined);
|
|
14
|
+
this._initialFilter = new rxjs_1.BehaviorSubject(undefined);
|
|
15
|
+
this._defaultFilter = new rxjs_1.BehaviorSubject(undefined);
|
|
16
|
+
this.defaultFilter$ = this._defaultFilter.pipe((0, value_1.switchMapMaybeObs)());
|
|
17
|
+
this.initialFilter$ = (0, rxjs_1.combineLatest)([this._initialFilter, this._defaultFilter]).pipe((0, rxjs_1.map)(([a, b]) => a !== null && a !== void 0 ? a : b), (0, value_1.switchMapMaybeObs)(), (0, rxjs_1.distinctUntilChanged)(), (0, rxjs_1.shareReplay)(1));
|
|
18
|
+
/**
|
|
19
|
+
* filter$ uses the latest value from any filter.
|
|
20
|
+
*/
|
|
21
|
+
this.filter$ = this._filter.pipe((0, rxjs_1.switchMap)(x => (x != null) ? (0, rxjs_1.of)(x) : this.initialFilter$), (0, value_1.filterMaybe)(), // Only provided non-maybe filter values.
|
|
22
|
+
(0, object_1.distinctUntilObjectValuesChanged)(), (0, rxjs_1.shareReplay)(1));
|
|
23
|
+
}
|
|
24
|
+
initWithFilter(filterObs) {
|
|
25
|
+
this._initialFilter.next(filterObs);
|
|
26
|
+
}
|
|
27
|
+
setDefaultFilter(filter) {
|
|
28
|
+
this._defaultFilter.next((0, getter_1.asObservable)(filter));
|
|
29
|
+
}
|
|
30
|
+
setFilter(filter) {
|
|
31
|
+
this._filter.next(filter);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Resets the current filter to be the default filter.
|
|
35
|
+
*/
|
|
36
|
+
resetFilter() {
|
|
37
|
+
this.defaultFilter$.pipe((0, rxjs_1.first)()).subscribe((x) => {
|
|
38
|
+
this._filter.next(x);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// MARK: Cleanup
|
|
42
|
+
destroy() {
|
|
43
|
+
this._filter.complete();
|
|
44
|
+
this._initialFilter.complete();
|
|
45
|
+
this._defaultFilter.complete();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.FilterSourceInstance = FilterSourceInstance;
|
|
49
|
+
//# sourceMappingURL=filter.source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.source.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/filter/filter.source.ts"],"names":[],"mappings":";;;AAAA,+BAAgI;AAEhI,sCAA6D;AAC7D,2CAAgE;AAChE,yCAA+D;AAG/D;;GAEG;AACH,MAAa,oBAAoB;IAAjC;QAEU,YAAO,GAAG,IAAI,sBAAe,CAAW,SAAS,CAAC,CAAC;QACnD,mBAAc,GAAG,IAAI,sBAAe,CAAuB,SAAS,CAAC,CAAC;QACtE,mBAAc,GAAG,IAAI,sBAAe,CAA8B,SAAS,CAAC,CAAC;QAE5E,mBAAc,GAAyB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,yBAAiB,GAAE,CAAC,CAAC;QACrF,mBAAc,GAAyB,IAAA,oBAAa,EAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAC5G,IAAA,UAAG,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAD,CAAC,cAAD,CAAC,GAAI,CAAC,CAAC,EACvB,IAAA,yBAAiB,GAAE,EACnB,IAAA,2BAAoB,GAAE,EACtB,IAAA,kBAAW,EAAC,CAAC,CAAC,CACf,CAAC;QAEF;;WAEG;QACM,YAAO,GAAkB,IAAI,CAAC,OAAO,CAAC,IAAI,CACjD,IAAA,gBAAS,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EACzD,IAAA,mBAAW,GAAE,EAAG,yCAAyC;QACzD,IAAA,yCAAgC,GAAE,EAClC,IAAA,kBAAW,EAAC,CAAC,CAAC,CACf,CAAC;IA8BJ,CAAC;IA5BC,cAAc,CAAC,SAAwB;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB,CAAC,MAAyC;QACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,MAAS;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,YAAK,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CAEF;AApDD,oDAoDC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./filter.map"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./filter.preset"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./filter.source"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./filter"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/filter/index.ts"],"names":[],"mappings":";;;AAAA,4DAA6B;AAC7B,+DAAgC;AAChC,+DAAgC;AAChC,wDAAyB"}
|
package/src/lib/index.d.ts
CHANGED
package/src/lib/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./filter"), exports);
|
|
4
5
|
(0, tslib_1.__exportStar)(require("./iterator"), exports);
|
|
5
6
|
(0, tslib_1.__exportStar)(require("./loading"), exports);
|
|
6
7
|
(0, tslib_1.__exportStar)(require("./lock"), exports);
|
package/src/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,0DAA2B;AAC3B,yDAA0B;AAC1B,sDAAuB;AACvB,wDAAyB;AACzB,sDAAuB;AACvB,8DAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,0DAA2B;AAC3B,yDAA0B;AAC1B,sDAAuB;AACvB,wDAAyB;AACzB,sDAAuB;AACvB,8DAA+B"}
|
|
@@ -24,8 +24,8 @@ class ItemAccumulatorInstance {
|
|
|
24
24
|
this.allItems$ = this.allSuccessfulStates$.pipe((0, rxjs_1.scanBuildArray)((allSuccessfulStates) => {
|
|
25
25
|
const mapStateToItem = (state) => {
|
|
26
26
|
let result;
|
|
27
|
-
if (state.
|
|
28
|
-
result = this.mapItemFunction(state.
|
|
27
|
+
if (state.value != null) {
|
|
28
|
+
result = this.mapItemFunction(state.value, state);
|
|
29
29
|
}
|
|
30
30
|
return result;
|
|
31
31
|
};
|
|
@@ -15,7 +15,7 @@ function flattenIterationResultItemArray(iteration) {
|
|
|
15
15
|
return iteration.allItems$.pipe((0, rxjs_1.scanBuildArray)((allItems) => {
|
|
16
16
|
const seed = (0, util_1.flattenArray)(allItems);
|
|
17
17
|
const latestItem = (0, util_1.lastValue)(allItems);
|
|
18
|
-
const accumulatorObs = iteration.itemIteration.latestState$.pipe((0, rxjs_2.skipWhile)(x => x.
|
|
18
|
+
const accumulatorObs = iteration.itemIteration.latestState$.pipe((0, rxjs_2.skipWhile)(x => x.value === latestItem), (0, rxjs_2.map)(x => x.value), (0, rxjs_1.filterMaybe)());
|
|
19
19
|
return {
|
|
20
20
|
seed,
|
|
21
21
|
accumulatorObs
|
|
@@ -64,7 +64,7 @@ class ItemPageIterationInstance {
|
|
|
64
64
|
loading: false,
|
|
65
65
|
page: nextPageNumber,
|
|
66
66
|
error: result.error,
|
|
67
|
-
|
|
67
|
+
value: result
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
else {
|
|
@@ -125,7 +125,7 @@ class ItemPageIterationInstance {
|
|
|
125
125
|
*
|
|
126
126
|
* Will emit every time the latest page has finished loading.
|
|
127
127
|
*/
|
|
128
|
-
this.hasReachedEndResult$ = this.latestPageResultState$.pipe((0, operators_1.map)(x => isItemPageIteratorResultEndResult(x.
|
|
128
|
+
this.hasReachedEndResult$ = this.latestPageResultState$.pipe((0, operators_1.map)(x => isItemPageIteratorResultEndResult(x.value)), (0, operators_1.startWith)(false), // Has not reached the end
|
|
129
129
|
(0, rxjs_2.shareReplay)(1));
|
|
130
130
|
this._currentPageResultState$ = this.currentPageResultState$.pipe((0, operators_1.startWith)(undefined), (0, rxjs_2.shareReplay)(1));
|
|
131
131
|
/**
|
|
@@ -133,7 +133,7 @@ class ItemPageIterationInstance {
|
|
|
133
133
|
*/
|
|
134
134
|
this.isLoading$ = this._currentPageResultState$.pipe((0, operators_1.map)(x => (0, loading_1.loadingStateIsLoading)(x)), (0, operators_1.distinctUntilChanged)(), (0, rxjs_2.shareReplay)(1));
|
|
135
135
|
this._lastFinishedPageResultState$ = this.latestPageResultState$.pipe((0, operators_1.startWith)(undefined), (0, rxjs_2.shareReplay)(1));
|
|
136
|
-
this._lastFinishedPageResult$ = this._lastFinishedPageResultState$.pipe((0, operators_1.map)(x => x === null || x === void 0 ? void 0 : x.
|
|
136
|
+
this._lastFinishedPageResult$ = this._lastFinishedPageResultState$.pipe((0, operators_1.map)(x => x === null || x === void 0 ? void 0 : x.value));
|
|
137
137
|
this._lastFinishedPageResultItem$ = this._lastFinishedPageResult$.pipe((0, operators_1.map)(x => x === null || x === void 0 ? void 0 : x.value));
|
|
138
138
|
/**
|
|
139
139
|
* The latest page results that has finished loading without an error.
|
|
@@ -156,7 +156,7 @@ class ItemPageIterationInstance {
|
|
|
156
156
|
*/
|
|
157
157
|
this.hasNextAndCanLoadMore$ = (0, iteration_next_1.iterationHasNextAndCanLoadMore)(this);
|
|
158
158
|
this.latestState$ = this.latestPageResultState$.pipe(mapItemPageLoadingStateFromResultPageLoadingState(), (0, rxjs_2.shareReplay)(1));
|
|
159
|
-
this.latestItems$ = this.latestState$.pipe((0, operators_1.distinctUntilChanged)(), (0, operators_1.map)(x => x.
|
|
159
|
+
this.latestItems$ = this.latestState$.pipe((0, operators_1.distinctUntilChanged)(), (0, operators_1.map)(x => x.value), (0, rxjs_2.shareReplay)(1));
|
|
160
160
|
}
|
|
161
161
|
// MARK: PageItemIteration
|
|
162
162
|
get maxPageLoadLimit() {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './loading.context.state';
|
|
2
|
-
export * from './loading.context.state.
|
|
3
|
-
export * from './loading.context.state.
|
|
2
|
+
export * from './loading.context.state.list';
|
|
3
|
+
export * from './loading.context.state.value';
|
|
4
4
|
export * from './loading.context.simple';
|
|
5
5
|
export * from './loading.context';
|
|
6
6
|
export * from './loading.context.value';
|
|
7
|
+
export * from './loading.state.list';
|
|
7
8
|
export * from './loading.state';
|
package/src/lib/loading/index.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
(0, tslib_1.__exportStar)(require("./loading.context.state"), exports);
|
|
5
|
-
(0, tslib_1.__exportStar)(require("./loading.context.state.
|
|
6
|
-
(0, tslib_1.__exportStar)(require("./loading.context.state.
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./loading.context.state.list"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./loading.context.state.value"), exports);
|
|
7
7
|
(0, tslib_1.__exportStar)(require("./loading.context.simple"), exports);
|
|
8
8
|
(0, tslib_1.__exportStar)(require("./loading.context"), exports);
|
|
9
9
|
(0, tslib_1.__exportStar)(require("./loading.context.value"), exports);
|
|
10
|
+
(0, tslib_1.__exportStar)(require("./loading.state.list"), exports);
|
|
10
11
|
(0, tslib_1.__exportStar)(require("./loading.state"), exports);
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/loading/index.ts"],"names":[],"mappings":";;;AAAA,uEAAwC;AACxC,4EAA6C;AAC7C,6EAA8C;AAC9C,wEAAyC;AACzC,iEAAkC;AAClC,uEAAwC;AACxC,+DAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/loading/index.ts"],"names":[],"mappings":";;;AAAA,uEAAwC;AACxC,4EAA6C;AAC7C,6EAA8C;AAC9C,wEAAyC;AACzC,iEAAkC;AAClC,uEAAwC;AACxC,oEAAqC;AACrC,+DAAgC"}
|
|
@@ -2,8 +2,8 @@ import { Maybe, Destroyable } from '@dereekb/util';
|
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { LoadingContext, LoadingContextEvent } from './loading.context';
|
|
4
4
|
import { LoadingState } from './loading.state';
|
|
5
|
-
export interface
|
|
6
|
-
|
|
5
|
+
export interface AbstractLoadingStateEvent<T = any> extends LoadingContextEvent {
|
|
6
|
+
value?: Maybe<T>;
|
|
7
7
|
}
|
|
8
8
|
export interface AbstractLoadingEventForLoadingPairConfig<S extends LoadingState = LoadingState> {
|
|
9
9
|
/**
|
|
@@ -11,23 +11,35 @@ export interface AbstractLoadingEventForLoadingPairConfig<S extends LoadingState
|
|
|
11
11
|
*/
|
|
12
12
|
obs?: Observable<S>;
|
|
13
13
|
/**
|
|
14
|
-
* Whether or not to show loading if a
|
|
14
|
+
* Whether or not to show loading if a value is defined.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
showLoadingOnNoValue?: boolean;
|
|
17
17
|
}
|
|
18
|
+
export interface AbstractLoadingStateContext<T = any, S extends LoadingState<T> = LoadingState<T>, E extends LoadingContextEvent = LoadingContextEvent> {
|
|
19
|
+
readonly stateObs$: Observable<Maybe<Observable<S>>>;
|
|
20
|
+
readonly stateSubject$: Observable<Observable<S>>;
|
|
21
|
+
readonly state$: Observable<S>;
|
|
22
|
+
readonly stream$: Observable<E>;
|
|
23
|
+
readonly loading$: Observable<boolean>;
|
|
24
|
+
}
|
|
25
|
+
export declare type LoadingStateContextInstanceInputConfig<S, C> = Observable<S> | C;
|
|
18
26
|
/**
|
|
19
27
|
* Abstract LoadingContext implementation using LoadingState.
|
|
20
28
|
*/
|
|
21
|
-
export declare abstract class
|
|
29
|
+
export declare abstract class AbstractLoadingStateContextInstance<T = any, S extends LoadingState<T> = LoadingState<T>, E extends AbstractLoadingStateEvent<T> = AbstractLoadingStateEvent<T>, C extends AbstractLoadingEventForLoadingPairConfig<S> = AbstractLoadingEventForLoadingPairConfig<S>> implements AbstractLoadingStateContext<T, S, E>, LoadingContext, Destroyable {
|
|
22
30
|
private _stateSubject$;
|
|
23
31
|
private _config;
|
|
24
32
|
readonly stateSubject$: Observable<Observable<S>>;
|
|
25
33
|
readonly state$: Observable<S>;
|
|
26
34
|
readonly stateObs$: Observable<Maybe<Observable<S>>>;
|
|
27
35
|
readonly stream$: Observable<E>;
|
|
36
|
+
/**
|
|
37
|
+
* Emits when the input state has changed.
|
|
38
|
+
*/
|
|
39
|
+
readonly stateChange$: Observable<void>;
|
|
28
40
|
readonly loading$: Observable<boolean>;
|
|
29
|
-
constructor(config?:
|
|
41
|
+
constructor(config?: LoadingStateContextInstanceInputConfig<S, C>);
|
|
30
42
|
protected abstract loadingEventForLoadingPair(state: S, config: C): E;
|
|
31
|
-
setStateObs(state: Observable<S
|
|
43
|
+
setStateObs(state: Maybe<Observable<S>>): void;
|
|
32
44
|
destroy(): void;
|
|
33
45
|
}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AbstractLoadingStateContextInstance = void 0;
|
|
4
4
|
const rxjs_1 = require("@dereekb/rxjs");
|
|
5
5
|
const rxjs_2 = require("rxjs");
|
|
6
|
-
const operators_1 = require("rxjs/operators");
|
|
7
6
|
/**
|
|
8
7
|
* Abstract LoadingContext implementation using LoadingState.
|
|
9
8
|
*/
|
|
10
|
-
class
|
|
9
|
+
class AbstractLoadingStateContextInstance {
|
|
11
10
|
constructor(config) {
|
|
12
11
|
this._stateSubject$ = new rxjs_2.BehaviorSubject(undefined);
|
|
13
|
-
this.stateSubject$ = this._stateSubject$.pipe((0, rxjs_1.filterMaybe)(), (0,
|
|
14
|
-
this.state$ = this.stateSubject$.pipe((0,
|
|
12
|
+
this.stateSubject$ = this._stateSubject$.pipe((0, rxjs_1.filterMaybe)(), (0, rxjs_2.distinctUntilChanged)(), (0, rxjs_2.shareReplay)(1));
|
|
13
|
+
this.state$ = this.stateSubject$.pipe((0, rxjs_2.switchMap)(x => x), (0, rxjs_2.shareReplay)(1));
|
|
15
14
|
this.stateObs$ = this._stateSubject$.asObservable();
|
|
16
|
-
this.stream$ = this._stateSubject$.pipe((0,
|
|
17
|
-
const start = {
|
|
18
|
-
loading: true
|
|
19
|
-
};
|
|
15
|
+
this.stream$ = this._stateSubject$.pipe((0, rxjs_2.mergeMap)((obs) => {
|
|
20
16
|
if (obs) {
|
|
21
|
-
return obs.pipe(
|
|
22
|
-
|
|
17
|
+
return obs.pipe(
|
|
18
|
+
// If the observable did not pass a value immediately, we start with the start value.
|
|
19
|
+
(0, rxjs_1.timeoutStartWith)((0, rxjs_1.beginLoading)()), (0, rxjs_2.map)((x) => this.loadingEventForLoadingPair(x, this._config)));
|
|
23
20
|
}
|
|
24
21
|
else {
|
|
25
|
-
return (0, rxjs_2.of)(
|
|
22
|
+
return (0, rxjs_2.of)((0, rxjs_1.beginLoading)());
|
|
26
23
|
}
|
|
27
|
-
}), (0,
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
}), (0, rxjs_2.distinctUntilChanged)((a, b) => {
|
|
25
|
+
return a.loading === b.loading && a.error === b.error && a.value === b.value;
|
|
26
|
+
}), (0, rxjs_2.shareReplay)(1));
|
|
27
|
+
/**
|
|
28
|
+
* Emits when the input state has changed.
|
|
29
|
+
*/
|
|
30
|
+
this.stateChange$ = this._stateSubject$.pipe((0, rxjs_2.map)(() => undefined));
|
|
31
|
+
this.loading$ = this.stream$.pipe((0, rxjs_2.map)(x => x.loading), (0, rxjs_2.shareReplay)(1));
|
|
30
32
|
if ((0, rxjs_2.isObservable)(config)) {
|
|
31
33
|
this._config = {
|
|
32
34
|
obs: config
|
|
@@ -34,7 +36,7 @@ class AbstractLoadingStateLoadingContext {
|
|
|
34
36
|
}
|
|
35
37
|
else {
|
|
36
38
|
this._config = config !== null && config !== void 0 ? config : {
|
|
37
|
-
|
|
39
|
+
showLoadingOnNoValue: false
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
if (this._config.obs) {
|
|
@@ -48,5 +50,5 @@ class AbstractLoadingStateLoadingContext {
|
|
|
48
50
|
this._stateSubject$.complete();
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
|
-
exports.
|
|
53
|
+
exports.AbstractLoadingStateContextInstance = AbstractLoadingStateContextInstance;
|
|
52
54
|
//# sourceMappingURL=loading.context.state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading.context.state.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/loading/loading.context.state.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"loading.context.state.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/loading/loading.context.state.ts"],"names":[],"mappings":";;;AACA,wCAAoF;AACpF,+BAAkI;AA6BlI;;GAEG;AACH,MAAsB,mCAAmC;IAkCvD,YAAY,MAAqD;QA/BzD,mBAAc,GAAG,IAAI,sBAAe,CAAuB,SAAS,CAAC,CAAC;QAGrE,kBAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,kBAAW,GAAE,EAAE,IAAA,2BAAoB,GAAE,EAAE,IAAA,kBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;QAChG,WAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAA,kBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;QACpE,cAAS,GAAqC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QAEjF,YAAO,GAAkB,IAAI,CAAC,cAAc,CAAC,IAAI,CACxD,IAAA,eAAQ,EAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,GAAG,EAAE;gBACP,OAAO,GAAG,CAAC,IAAI;gBACb,qFAAqF;gBACrF,IAAA,uBAAgB,EAAI,IAAA,mBAAY,GAAO,CAAC,EACxC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAC7D,CAAC;aACH;iBAAM;gBACL,OAAO,IAAA,SAAE,EAAC,IAAA,mBAAY,GAAO,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,EACF,IAAA,2BAAoB,EAAC,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE;YAClC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;QAC/E,CAAC,CAAC,EACF,IAAA,kBAAW,EAAC,CAAC,CAAC,CACf,CAAC;QAEF;;WAEG;QACM,iBAAY,GAAqB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,aAAQ,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAA,kBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;QAG9F,IAAI,IAAA,mBAAY,EAAC,MAAM,CAAC,EAAE;YACxB,IAAI,CAAC,OAAO,GAAG;gBACb,GAAG,EAAE,MAAM;aACP,CAAC;SACR;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI;gBACvB,oBAAoB,EAAE,KAAK;aACvB,CAAC;SACR;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACpC;IACH,CAAC;IAID,WAAW,CAAC,KAA2B;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CAEF;AA5DD,kFA4DC"}
|