@ngutil/data 0.0.16 → 0.0.18
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/esm2022/query/executor.mjs +1 -1
- package/esm2022/query/query-property.mjs +89 -0
- package/esm2022/query/query.mjs +5 -1
- package/esm2022/query/sorter.mjs +15 -4
- package/esm2022/source/properties/abstract.mjs +3 -3
- package/esm2022/source/properties/sorter.mjs +3 -3
- package/esm2022/source/proxy.directive.mjs +11 -10
- package/esm2022/source/source.mjs +22 -22
- package/fesm2022/ngutil-data.mjs +48 -36
- package/fesm2022/ngutil-data.mjs.map +1 -1
- package/package.json +4 -4
- package/query/query-property.d.ts +26 -0
- package/query/query.d.ts +9 -0
- package/source/properties/sorter.d.ts +1 -1
- package/source/proxy.directive.d.ts +5 -5
- package/source/source.d.ts +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DataSource as CdkDataSource } from "@angular/cdk/collections";
|
|
2
2
|
import { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, finalize, map, Observable, of, ReplaySubject, shareReplay, Subject, switchMap, take, takeUntil, tap } from "rxjs";
|
|
3
|
-
import { isEqual
|
|
3
|
+
import { isEqual } from "lodash";
|
|
4
4
|
import { deepClone, deepFreeze } from "@ngutil/common";
|
|
5
5
|
import { MemoryStore } from "../store";
|
|
6
6
|
import { FilterCombined, GrouperCombined, SlimerCombined, SorterCombined } from "./properties";
|
|
@@ -26,26 +26,26 @@ export class DataSource extends CdkDataSource {
|
|
|
26
26
|
}).pipe(shareReplay(1));
|
|
27
27
|
this.#slice = new ReplaySubject(1);
|
|
28
28
|
this.slice$ = this.#slice.pipe(switchMap(slice => this.provider.clampSlice(slice)), distinctUntilChanged(isEqual), map(slice => deepFreeze(deepClone(slice))), shareReplay(1));
|
|
29
|
-
this.#reload = new
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}), finalize(() => this.#setBusy(false)), shareReplay(1));
|
|
29
|
+
this.#reload = new BehaviorSubject(undefined);
|
|
30
|
+
this.query$ = combineLatest({ base: this.#queryBase, reload: this.#reload }).pipe(tap(() => this.#setBusy(true)),
|
|
31
|
+
// TODO: maybe silent reset or prevent items$ chenges
|
|
32
|
+
// TODO: alternative solution use cacheId, and query item from store with this cacheId
|
|
33
|
+
switchMap(({ base }) => this.store.clear().pipe(map(() => base))), switchMap(queryBase => this.slice$.pipe(tap(() => this.#setBusy(true)), map(slice => {
|
|
34
|
+
return { ...queryBase, slice };
|
|
35
|
+
}))), shareReplay(1));
|
|
36
|
+
this.items$ = this.query$.pipe(tap(() => this.#setBusy(true)), debounceTime(DEBOUNCE_TIME), switchMap(query => this.store.hasSlice(query.slice).pipe(take(1), switchMap(hasSlice => {
|
|
37
|
+
if (hasSlice) {
|
|
38
|
+
return this.store.getSlice(query.slice).pipe(take(1));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return this.provider.queryList(query).pipe(switchMap(result => {
|
|
42
|
+
if (result.total != null) {
|
|
43
|
+
this.total$.next(result.total);
|
|
44
|
+
}
|
|
45
|
+
return this.store.insertSlice(query.slice, result.items);
|
|
46
|
+
}), take(1));
|
|
47
|
+
}
|
|
48
|
+
}))), finalize(() => this.#setBusy(false)), shareReplay(1));
|
|
49
49
|
this.#cvSubs = new Map();
|
|
50
50
|
if (store == null) {
|
|
51
51
|
store = new MemoryStore();
|
|
@@ -106,4 +106,4 @@ export class DataSource extends CdkDataSource {
|
|
|
106
106
|
this.#cvSubs.delete(collectionViewer);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUV4RixPQUFPLEVBQ0gsZUFBZSxFQUNmLGFBQWEsRUFFYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixHQUFHLEVBQ0gsVUFBVSxFQUNWLEVBQUUsRUFDRixhQUFhLEVBQ2IsV0FBVyxFQUNYLE9BQU8sRUFFUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUV2QyxPQUFPLEVBQW1CLFNBQVMsRUFBRSxVQUFVLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUE7QUFLckYsT0FBTyxFQUF3QixXQUFXLEVBQTBCLE1BQU0sVUFBVSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFOUYsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFBO0FBSXhCLE1BQU0sT0FBTyxVQUE0QixTQUFRLGFBQTRCO0lBU2hFLFVBQVUsQ0FLSTtJQUVkLE1BQU0sQ0FBOEI7SUFRcEMsT0FBTyxDQUFzQjtJQXlDdEMsWUFDb0IsUUFBeUIsRUFDekMsS0FBMEI7UUFFMUIsS0FBSyxFQUFFLENBQUE7UUFIUyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQWpFcEMsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBQzNDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBcUIsU0FBUyxDQUFDLENBQUE7UUFFM0QsV0FBTSxHQUFHLElBQUksY0FBYyxFQUFhLENBQUE7UUFDeEMsV0FBTSxHQUFHLElBQUksY0FBYyxFQUFhLENBQUE7UUFDeEMsV0FBTSxHQUFHLElBQUksY0FBYyxFQUFhLENBQUE7UUFDeEMsWUFBTyxHQUFHLElBQUksZUFBZSxFQUFjLENBQUE7UUFFM0MsZUFBVSxHQUFHLGFBQWEsQ0FBQztZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFZCxXQUFNLEdBQUcsSUFBSSxhQUFhLENBQVEsQ0FBQyxDQUFDLENBQUE7UUFDcEMsV0FBTSxHQUFzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDakQsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDbkQsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUMxQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7UUFFUSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUM3QixXQUFNLEdBQXdCLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQ25DLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQTtRQUVRLFdBQU0sR0FBMkIsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkcsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUE7UUFDN0IsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFBO1FBRVEsV0FBTSxHQUFxQyxhQUFhLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM5RyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUM5QixZQUFZLENBQUMsYUFBYSxDQUFDLEVBQzNCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDakIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN0QyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ2YsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDOzRCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7d0JBQ2xDLENBQUM7d0JBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDNUQsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUE7Z0JBQ0wsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNMLENBQUE7UUFDTCxDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNwQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUE7UUF3RUQsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFBO1FBaEVoRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQixLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQTtRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFZO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3ZCLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQWE7UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDbkIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDN0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ2hELENBQUE7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQWE7UUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDbkIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDekUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3BELENBQUE7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWEsRUFBRSxjQUF1QjtRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkIsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3hELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNiLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ3hHLEVBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUE7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUNQLE9BQTJDLEVBQzNDLE1BQTBDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FBQTtJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDekIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUE2QztJQUUzQyxPQUFPLENBQUMsZ0JBQWtDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFFakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUV6QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBa0QsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDekMsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUN0QixDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVRLFVBQVUsQ0FBQyxnQkFBa0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuXG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBjb21iaW5lTGF0ZXN0LFxuICAgIGNvbmNhdE1hcCxcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgUmVwbGF5U3ViamVjdCxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBTdWJqZWN0LFxuICAgIFN1YnNjcmliZXIsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVVudGlsLFxuICAgIHRhcFxufSBmcm9tIFwicnhqc1wiXG5cbmltcG9ydCB7IGlzRXF1YWwsIG1lcmdlIH0gZnJvbSBcImxvZGFzaFwiXG5cbmltcG9ydCB7IENvbm5lY3RQcm90b2NvbCwgZGVlcENsb25lLCBkZWVwRnJlZXplLCBEZWVwUmVhZG9ubHkgfSBmcm9tIFwiQG5ndXRpbC9jb21tb25cIlxuXG5pbXBvcnQgdHlwZSB7IE1vZGVsLCBNb2RlbFJlZiB9IGZyb20gXCIuLi9tb2RlbFwiXG5pbXBvcnQgdHlwZSB7IERhdGFQcm92aWRlciB9IGZyb20gXCIuLi9wcm92aWRlci9wcm92aWRlclwiXG5pbXBvcnQgdHlwZSB7IEZpbHRlciwgR3JvdXBlciwgUXVlcnksIFNsaWNlLCBTbGltZXIsIFNvcnRlciB9IGZyb20gXCIuLi9xdWVyeVwiXG5pbXBvcnQgeyB0eXBlIENvbGxlY3Rpb25TdG9yZSwgTWVtb3J5U3RvcmUsIHR5cGUgUGFydGlhbENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vc3RvcmVcIlxuaW1wb3J0IHsgRmlsdGVyQ29tYmluZWQsIEdyb3VwZXJDb21iaW5lZCwgU2xpbWVyQ29tYmluZWQsIFNvcnRlckNvbWJpbmVkIH0gZnJvbSBcIi4vcHJvcGVydGllc1wiXG5cbmNvbnN0IERFQk9VTkNFX1RJTUUgPSA1MFxuXG50eXBlIERTUXVlcnk8VCBleHRlbmRzIE1vZGVsPiA9IFF1ZXJ5PFQ+ICYgeyBzbGljZTogRGVlcFJlYWRvbmx5PFNsaWNlPiB9XG5cbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlPFQgZXh0ZW5kcyBNb2RlbD4gZXh0ZW5kcyBDZGtEYXRhU291cmNlPFQgfCB1bmRlZmluZWQ+IGltcGxlbWVudHMgQ29ubmVjdFByb3RvY29sIHtcbiAgICByZWFkb25seSBidXN5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG4gICAgcmVhZG9ubHkgdG90YWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICAgIHJlYWRvbmx5IGZpbHRlciA9IG5ldyBGaWx0ZXJDb21iaW5lZDxGaWx0ZXI8VD4+KClcbiAgICByZWFkb25seSBzb3J0ZXIgPSBuZXcgU29ydGVyQ29tYmluZWQ8U29ydGVyPFQ+PigpXG4gICAgcmVhZG9ubHkgc2xpbWVyID0gbmV3IFNsaW1lckNvbWJpbmVkPFNsaW1lcjxUPj4oKVxuICAgIHJlYWRvbmx5IGdyb3VwZXIgPSBuZXcgR3JvdXBlckNvbWJpbmVkPEdyb3VwZXI8VD4+KClcblxuICAgIHJlYWRvbmx5ICNxdWVyeUJhc2UgPSBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlci5tZXJnZWQkLFxuICAgICAgICBzb3J0ZXI6IHRoaXMuc29ydGVyLm1lcmdlZCQsXG4gICAgICAgIHNsaW1lcjogdGhpcy5zbGltZXIubWVyZ2VkJCxcbiAgICAgICAgZ3JvdXBlcjogdGhpcy5ncm91cGVyLm1lcmdlZCRcbiAgICB9KS5waXBlKHNoYXJlUmVwbGF5KDEpKVxuXG4gICAgcmVhZG9ubHkgI3NsaWNlID0gbmV3IFJlcGxheVN1YmplY3Q8U2xpY2U+KDEpXG4gICAgcmVhZG9ubHkgc2xpY2UkOiBPYnNlcnZhYmxlPFNsaWNlPiA9IHRoaXMuI3NsaWNlLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChzbGljZSA9PiB0aGlzLnByb3ZpZGVyLmNsYW1wU2xpY2Uoc2xpY2UpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaXNFcXVhbCksXG4gICAgICAgIG1hcChzbGljZSA9PiBkZWVwRnJlZXplKGRlZXBDbG9uZShzbGljZSkpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSAjcmVsb2FkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuICAgIHJlYWRvbmx5IHJlc2V0JDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IG1lcmdlKHRoaXMuI3F1ZXJ5QmFzZSwgdGhpcy4jcmVsb2FkKS5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy4jc2V0QnVzeSh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN0b3JlLmNsZWFyKCkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJlYWRvbmx5IHF1ZXJ5JDogT2JzZXJ2YWJsZTxEU1F1ZXJ5PFQ+PiA9IGNvbWJpbmVMYXRlc3QoeyBiYXNlOiB0aGlzLiNxdWVyeUJhc2UsIHNsaWNlOiB0aGlzLnNsaWNlJCB9KS5waXBlKFxuICAgICAgICBtYXAoKHsgYmFzZSwgc2xpY2UgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYmFzZSwgc2xpY2UgfVxuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8UGFydGlhbENvbGxlY3Rpb248VD4+ID0gY29tYmluZUxhdGVzdCh7IHF1ZXJ5OiB0aGlzLnF1ZXJ5JCwgcmVzZXQ6IHRoaXMucmVzZXQkIH0pLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLiNzZXRCdXN5KHRydWUpKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKERFQk9VTkNFX1RJTUUpLFxuICAgICAgICBzd2l0Y2hNYXAoKHsgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuaGFzU2xpY2UocXVlcnkuc2xpY2UpLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGhhc1NsaWNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1NsaWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRTbGljZShxdWVyeS5zbGljZSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnF1ZXJ5TGlzdChxdWVyeSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50b3RhbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsJC5uZXh0KHJlc3VsdC50b3RhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5pbnNlcnRTbGljZShxdWVyeS5zbGljZSwgcmVzdWx0Lml0ZW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLiNzZXRCdXN5KGZhbHNlKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgc3RvcmU6IENvbGxlY3Rpb25TdG9yZTxUPlxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlkZXI6IERhdGFQcm92aWRlcjxUPixcbiAgICAgICAgc3RvcmU/OiBDb2xsZWN0aW9uU3RvcmU8VD5cbiAgICApIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICBpZiAoc3RvcmUgPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RvcmUgPSBuZXcgTWVtb3J5U3RvcmUoKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RvcmUgPSBzdG9yZVxuICAgIH1cblxuICAgIHNldFNsaWNlKHNsaWNlOiBTbGljZSkge1xuICAgICAgICB0aGlzLiNzbGljZS5uZXh0KHNsaWNlKVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2xpY2Uoe3N0YXJ0OiAwLCBlbmQ6IEluZmluaXR5fSlcbiAgICB9XG5cbiAgICByZWFsb2QoKSB7XG4gICAgICAgIHRoaXMuI3JlbG9hZC5uZXh0KClcbiAgICB9XG5cbiAgICBnZXRJdGVtKHJlZjogTW9kZWxSZWYpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVmbiA9IHRoaXMucHJvdmlkZXIubWV0YS5ub3JtYWxpemVSZWYocmVmKVxuICAgICAgICByZXR1cm4gdGhpcy4jc3RvcmVGaXJzdChcbiAgICAgICAgICAgIHF1ZXJ5ID0+IHRoaXMuc3RvcmUuZ2V0KHJlZm4pLFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5wcm92aWRlci5xdWVyeUl0ZW0ocmVmbiwgcXVlcnkpXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBnZXRJdGVtUG9zaXRpb24ocmVmOiBNb2RlbFJlZik6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlZm4gPSB0aGlzLnByb3ZpZGVyLm1ldGEubm9ybWFsaXplUmVmKHJlZilcbiAgICAgICAgcmV0dXJuIHRoaXMuI3N0b3JlRmlyc3QoXG4gICAgICAgICAgICBxdWVyeSA9PiB0aGlzLnN0b3JlLmluZGV4T2YocmVmbikucGlwZShtYXAoaSA9PiAoaSA8IDAgPyB1bmRlZmluZWQgOiBpKSkpLFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5wcm92aWRlci5xdWVyeVBvc2l0aW9uKHJlZm4sIHF1ZXJ5KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcmVhbG9kSXRlbShyZWY6IE1vZGVsUmVmLCBpbnNlcnRQb3NpdGlvbj86IG51bWJlcik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZWZuID0gdGhpcy5wcm92aWRlci5tZXRhLm5vcm1hbGl6ZVJlZihyZWYpXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5JC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHF1ZXJ5ID0+IHRoaXMucHJvdmlkZXIucXVlcnlJdGVtKHJlZm4sIHF1ZXJ5KSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0gIT0gbnVsbCA/IHRoaXMuc3RvcmUudXBkYXRlT3JJbnNlcnQocmVmbiwgaXRlbSwgaW5zZXJ0UG9zaXRpb24pLnBpcGUobWFwKCgpID0+IGl0ZW0pKSA6IG9mKGl0ZW0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgI3N0b3JlRmlyc3Q8WD4oXG4gICAgICAgIHN0b3JlRm46IChxdWVyeTogUXVlcnk8VD4pID0+IE9ic2VydmFibGU8WD4sXG4gICAgICAgIHNlbGZGbjogKHF1ZXJ5OiBRdWVyeTxUPikgPT4gT2JzZXJ2YWJsZTxYPlxuICAgICk6IE9ic2VydmFibGU8WD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeSQucGlwZShcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAocXVlcnkgPT4gc3RvcmVGbihxdWVyeSkucGlwZShzd2l0Y2hNYXAocmVzdWx0ID0+IChyZXN1bHQgPT0gbnVsbCA/IHNlbGZGbihxdWVyeSkgOiBvZihyZXN1bHQpKSkpKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgI3NldEJ1c3koYnVzeTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5wcm92aWRlci5pc0FzeW5jKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5idXN5JC52YWx1ZSAhPT0gYnVzeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVzeSQubmV4dChidXN5KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2N2U3VicyA9IG5ldyBNYXA8Q29sbGVjdGlvblZpZXdlciwgU3ViamVjdDx2b2lkPj4oKVxuXG4gICAgb3ZlcnJpZGUgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxyZWFkb25seSAoVCB8IHVuZGVmaW5lZClbXT4ge1xuICAgICAgICBjb25zdCB1bnRpbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgICAgICB0aGlzLiNjdlN1YnMuZ2V0KGNvbGxlY3Rpb25WaWV3ZXIpPy5uZXh0KClcbiAgICAgICAgdGhpcy4jY3ZTdWJzLnNldChjb2xsZWN0aW9uVmlld2VyLCB1bnRpbClcblxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8cmVhZG9ubHkgKFQgfCB1bmRlZmluZWQpW10+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWIxID0gY29sbGVjdGlvblZpZXdlci52aWV3Q2hhbmdlLnN1YnNjcmliZSh0aGlzLiNzbGljZSlcbiAgICAgICAgICAgIGNvbnN0IHN1YjIgPSB0aGlzLml0ZW1zJC5zdWJzY3JpYmUoc3Vic2NyaWJlcilcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKSA9PT0gdW50aWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jY3ZTdWJzLmRlbGV0ZShjb2xsZWN0aW9uVmlld2VyKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdWIxLnVuc3Vic2NyaWJlKClcbiAgICAgICAgICAgICAgICBzdWIyLnVuc3Vic2NyaWJlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkucGlwZSh0YWtlVW50aWwodW50aWwpKVxuICAgIH1cblxuICAgIG92ZXJyaWRlIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IHZvaWQge1xuICAgICAgICB0aGlzLiNjdlN1YnMuZ2V0KGNvbGxlY3Rpb25WaWV3ZXIpPy5uZXh0KClcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmRlbGV0ZShjb2xsZWN0aW9uVmlld2VyKVxuICAgIH1cbn1cbiJdfQ==
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGF0YS9zcmMvc291cmNlL3NvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBb0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUV4RixPQUFPLEVBQ0gsZUFBZSxFQUNmLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixHQUFHLEVBQ0gsVUFBVSxFQUNWLEVBQUUsRUFDRixhQUFhLEVBQ2IsV0FBVyxFQUNYLE9BQU8sRUFFUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRWhDLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQTtBQUtyRixPQUFPLEVBQXdCLFdBQVcsRUFBMEIsTUFBTSxVQUFVLENBQUE7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU5RixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUE7QUFJeEIsTUFBTSxPQUFPLFVBQTRCLFNBQVEsYUFBNEI7SUFTaEUsVUFBVSxDQUtJO0lBRWQsTUFBTSxDQUE4QjtJQVFwQyxPQUFPLENBQXVDO0lBOEN2RCxZQUNvQixRQUF5QixFQUN6QyxLQUEwQjtRQUUxQixLQUFLLEVBQUUsQ0FBQTtRQUhTLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBdEVwQyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFDM0MsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFxQixTQUFTLENBQUMsQ0FBQTtRQUUzRCxXQUFNLEdBQUcsSUFBSSxjQUFjLEVBQWEsQ0FB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Q0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUV6QyxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsVUFBa0QsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sR0FBRyxFQUFFO2dCQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDekMsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUN0QixDQUFDLENBQUE7UUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVRLFVBQVUsQ0FBQyxnQkFBa0M7UUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgYXMgQ2RrRGF0YVNvdXJjZSwgQ29sbGVjdGlvblZpZXdlciB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIlxuXG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBjb21iaW5lTGF0ZXN0LFxuICAgIGRlYm91bmNlVGltZSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaW5hbGl6ZSxcbiAgICBtYXAsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBvZixcbiAgICBSZXBsYXlTdWJqZWN0LFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIFN1YmplY3QsXG4gICAgU3Vic2NyaWJlcixcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZSxcbiAgICB0YWtlVW50aWwsXG4gICAgdGFwXG59IGZyb20gXCJyeGpzXCJcblxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2hcIlxuXG5pbXBvcnQgeyBDb25uZWN0UHJvdG9jb2wsIGRlZXBDbG9uZSwgZGVlcEZyZWV6ZSwgRGVlcFJlYWRvbmx5IH0gZnJvbSBcIkBuZ3V0aWwvY29tbW9uXCJcblxuaW1wb3J0IHR5cGUgeyBNb2RlbCwgTW9kZWxSZWYgfSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHR5cGUgeyBEYXRhUHJvdmlkZXIgfSBmcm9tIFwiLi4vcHJvdmlkZXIvcHJvdmlkZXJcIlxuaW1wb3J0IHR5cGUgeyBGaWx0ZXIsIEdyb3VwZXIsIFF1ZXJ5LCBTbGljZSwgU2xpbWVyLCBTb3J0ZXIgfSBmcm9tIFwiLi4vcXVlcnlcIlxuaW1wb3J0IHsgdHlwZSBDb2xsZWN0aW9uU3RvcmUsIE1lbW9yeVN0b3JlLCB0eXBlIFBhcnRpYWxDb2xsZWN0aW9uIH0gZnJvbSBcIi4uL3N0b3JlXCJcbmltcG9ydCB7IEZpbHRlckNvbWJpbmVkLCBHcm91cGVyQ29tYmluZWQsIFNsaW1lckNvbWJpbmVkLCBTb3J0ZXJDb21iaW5lZCB9IGZyb20gXCIuL3Byb3BlcnRpZXNcIlxuXG5jb25zdCBERUJPVU5DRV9USU1FID0gNTBcblxudHlwZSBEU1F1ZXJ5PFQgZXh0ZW5kcyBNb2RlbD4gPSBRdWVyeTxUPiAmIHsgc2xpY2U6IERlZXBSZWFkb25seTxTbGljZT4gfVxuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZTxUIGV4dGVuZHMgTW9kZWw+IGV4dGVuZHMgQ2RrRGF0YVNvdXJjZTxUIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIENvbm5lY3RQcm90b2NvbCB7XG4gICAgcmVhZG9ubHkgYnVzeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICAgIHJlYWRvbmx5IHRvdGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgICByZWFkb25seSBmaWx0ZXIgPSBuZXcgRmlsdGVyQ29tYmluZWQ8RmlsdGVyPFQ+PigpXG4gICAgcmVhZG9ubHkgc29ydGVyID0gbmV3IFNvcnRlckNvbWJpbmVkPFNvcnRlcjxUPj4oKVxuICAgIHJlYWRvbmx5IHNsaW1lciA9IG5ldyBTbGltZXJDb21iaW5lZDxTbGltZXI8VD4+KClcbiAgICByZWFkb25seSBncm91cGVyID0gbmV3IEdyb3VwZXJDb21iaW5lZDxHcm91cGVyPFQ+PigpXG5cbiAgICByZWFkb25seSAjcXVlcnlCYXNlID0gY29tYmluZUxhdGVzdCh7XG4gICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXIubWVyZ2VkJCxcbiAgICAgICAgc29ydGVyOiB0aGlzLnNvcnRlci5tZXJnZWQkLFxuICAgICAgICBzbGltZXI6IHRoaXMuc2xpbWVyLm1lcmdlZCQsXG4gICAgICAgIGdyb3VwZXI6IHRoaXMuZ3JvdXBlci5tZXJnZWQkXG4gICAgfSkucGlwZShzaGFyZVJlcGxheSgxKSlcblxuICAgIHJlYWRvbmx5ICNzbGljZSA9IG5ldyBSZXBsYXlTdWJqZWN0PFNsaWNlPigxKVxuICAgIHJlYWRvbmx5IHNsaWNlJDogT2JzZXJ2YWJsZTxTbGljZT4gPSB0aGlzLiNzbGljZS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoc2xpY2UgPT4gdGhpcy5wcm92aWRlci5jbGFtcFNsaWNlKHNsaWNlKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzRXF1YWwpLFxuICAgICAgICBtYXAoc2xpY2UgPT4gZGVlcEZyZWV6ZShkZWVwQ2xvbmUoc2xpY2UpKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmVhZG9ubHkgI3JlbG9hZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKVxuXG4gICAgcmVhZG9ubHkgcXVlcnkkOiBPYnNlcnZhYmxlPERTUXVlcnk8VD4+ID0gY29tYmluZUxhdGVzdCh7IGJhc2U6IHRoaXMuI3F1ZXJ5QmFzZSwgcmVsb2FkOiB0aGlzLiNyZWxvYWQgfSkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuI3NldEJ1c3kodHJ1ZSkpLFxuICAgICAgICAvLyBUT0RPOiBtYXliZSBzaWxlbnQgcmVzZXQgb3IgcHJldmVudCBpdGVtcyQgY2hlbmdlc1xuICAgICAgICAvLyBUT0RPOiBhbHRlcm5hdGl2ZSBzb2x1dGlvbiB1c2UgY2FjaGVJZCwgYW5kIHF1ZXJ5IGl0ZW0gZnJvbSBzdG9yZSB3aXRoIHRoaXMgY2FjaGVJZFxuICAgICAgICBzd2l0Y2hNYXAoKHsgYmFzZSB9KSA9PiB0aGlzLnN0b3JlLmNsZWFyKCkucGlwZShtYXAoKCkgPT4gYmFzZSkpKSxcbiAgICAgICAgc3dpdGNoTWFwKHF1ZXJ5QmFzZSA9PlxuICAgICAgICAgICAgdGhpcy5zbGljZSQucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy4jc2V0QnVzeSh0cnVlKSksXG4gICAgICAgICAgICAgICAgbWFwKHNsaWNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucXVlcnlCYXNlLCBzbGljZSB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBpdGVtcyQ6IE9ic2VydmFibGU8UGFydGlhbENvbGxlY3Rpb248VD4+ID0gdGhpcy5xdWVyeSQucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuI3NldEJ1c3kodHJ1ZSkpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoREVCT1VOQ0VfVElNRSksXG4gICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PlxuICAgICAgICAgICAgdGhpcy5zdG9yZS5oYXNTbGljZShxdWVyeS5zbGljZSkucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChoYXNTbGljZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNTbGljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0U2xpY2UocXVlcnkuc2xpY2UpLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnF1ZXJ5TGlzdChxdWVyeSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50b3RhbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsJC5uZXh0KHJlc3VsdC50b3RhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5pbnNlcnRTbGljZShxdWVyeS5zbGljZSwgcmVzdWx0Lml0ZW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuI3NldEJ1c3koZmFsc2UpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZWFkb25seSBzdG9yZTogQ29sbGVjdGlvblN0b3JlPFQ+XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogRGF0YVByb3ZpZGVyPFQ+LFxuICAgICAgICBzdG9yZT86IENvbGxlY3Rpb25TdG9yZTxUPlxuICAgICkge1xuICAgICAgICBzdXBlcigpXG4gICAgICAgIGlmIChzdG9yZSA9PSBudWxsKSB7XG4gICAgICAgICAgICBzdG9yZSA9IG5ldyBNZW1vcnlTdG9yZSgpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yZSA9IHN0b3JlXG4gICAgfVxuXG4gICAgc2V0U2xpY2Uoc2xpY2U6IFNsaWNlKSB7XG4gICAgICAgIHRoaXMuI3NsaWNlLm5leHQoc2xpY2UpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgYWxsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRTbGljZSh7IHN0YXJ0OiAwLCBlbmQ6IEluZmluaXR5IH0pXG4gICAgfVxuXG4gICAgcmVhbG9kKCkge1xuICAgICAgICB0aGlzLiNyZWxvYWQubmV4dCgpXG4gICAgfVxuXG4gICAgZ2V0SXRlbShyZWY6IE1vZGVsUmVmKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlZm4gPSB0aGlzLnByb3ZpZGVyLm1ldGEubm9ybWFsaXplUmVmKHJlZilcbiAgICAgICAgcmV0dXJuIHRoaXMuI3N0b3JlRmlyc3QoXG4gICAgICAgICAgICBxdWVyeSA9PiB0aGlzLnN0b3JlLmdldChyZWZuKSxcbiAgICAgICAgICAgIHF1ZXJ5ID0+IHRoaXMucHJvdmlkZXIucXVlcnlJdGVtKHJlZm4sIHF1ZXJ5KVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZ2V0SXRlbVBvc2l0aW9uKHJlZjogTW9kZWxSZWYpOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZWZuID0gdGhpcy5wcm92aWRlci5tZXRhLm5vcm1hbGl6ZVJlZihyZWYpXG4gICAgICAgIHJldHVybiB0aGlzLiNzdG9yZUZpcnN0KFxuICAgICAgICAgICAgcXVlcnkgPT4gdGhpcy5zdG9yZS5pbmRleE9mKHJlZm4pLnBpcGUobWFwKGkgPT4gKGkgPCAwID8gdW5kZWZpbmVkIDogaSkpKSxcbiAgICAgICAgICAgIHF1ZXJ5ID0+IHRoaXMucHJvdmlkZXIucXVlcnlQb3NpdGlvbihyZWZuLCBxdWVyeSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJlYWxvZEl0ZW0ocmVmOiBNb2RlbFJlZiwgaW5zZXJ0UG9zaXRpb24/OiBudW1iZXIpOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVmbiA9IHRoaXMucHJvdmlkZXIubWV0YS5ub3JtYWxpemVSZWYocmVmKVxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeSQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChxdWVyeSA9PiB0aGlzLnByb3ZpZGVyLnF1ZXJ5SXRlbShyZWZuLCBxdWVyeSkpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKGl0ZW0gPT5cbiAgICAgICAgICAgICAgICBpdGVtICE9IG51bGwgPyB0aGlzLnN0b3JlLnVwZGF0ZU9ySW5zZXJ0KHJlZm4sIGl0ZW0sIGluc2VydFBvc2l0aW9uKS5waXBlKG1hcCgoKSA9PiBpdGVtKSkgOiBvZihpdGVtKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgICNzdG9yZUZpcnN0PFg+KFxuICAgICAgICBzdG9yZUZuOiAocXVlcnk6IFF1ZXJ5PFQ+KSA9PiBPYnNlcnZhYmxlPFg+LFxuICAgICAgICBzZWxmRm46IChxdWVyeTogUXVlcnk8VD4pID0+IE9ic2VydmFibGU8WD5cbiAgICApOiBPYnNlcnZhYmxlPFg+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnkkLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKHF1ZXJ5ID0+IHN0b3JlRm4ocXVlcnkpLnBpcGUoc3dpdGNoTWFwKHJlc3VsdCA9PiAocmVzdWx0ID09IG51bGwgPyBzZWxmRm4ocXVlcnkpIDogb2YocmVzdWx0KSkpKSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgICNzZXRCdXN5KGJ1c3k6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdmlkZXIuaXNBc3luYykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYnVzeSQudmFsdWUgIT09IGJ1c3kpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1c3kkLm5leHQoYnVzeSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICNjdlN1YnMgPSBuZXcgTWFwPENvbGxlY3Rpb25WaWV3ZXIsIFN1YmplY3Q8dm9pZD4+KClcblxuICAgIG92ZXJyaWRlIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8cmVhZG9ubHkgKFQgfCB1bmRlZmluZWQpW10+IHtcbiAgICAgICAgY29uc3QgdW50aWwgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5zZXQoY29sbGVjdGlvblZpZXdlciwgdW50aWwpXG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPHJlYWRvbmx5IChUIHwgdW5kZWZpbmVkKVtdPikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3ViMSA9IGNvbGxlY3Rpb25WaWV3ZXIudmlld0NoYW5nZS5zdWJzY3JpYmUodGhpcy4jc2xpY2UpXG4gICAgICAgICAgICBjb25zdCBzdWIyID0gdGhpcy5pdGVtcyQuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2N2U3Vicy5nZXQoY29sbGVjdGlvblZpZXdlcikgPT09IHVudGlsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3ViMS51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICAgICAgc3ViMi51bnN1YnNjcmliZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnBpcGUodGFrZVVudGlsKHVudGlsKSlcbiAgICB9XG5cbiAgICBvdmVycmlkZSBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy4jY3ZTdWJzLmdldChjb2xsZWN0aW9uVmlld2VyKT8ubmV4dCgpXG4gICAgICAgIHRoaXMuI2N2U3Vicy5kZWxldGUoY29sbGVjdGlvblZpZXdlcilcbiAgICB9XG59XG4iXX0=
|
package/fesm2022/ngutil-data.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { flattenDepth, intersection, flattenDeep, isEqual
|
|
1
|
+
import { flattenDepth, intersection, flattenDeep, isEqual } from 'lodash';
|
|
2
2
|
import * as i1 from '@ngutil/common';
|
|
3
3
|
import { isPlainObject, deepClone, toSorted, deepFreeze } from '@ngutil/common';
|
|
4
|
-
import { BehaviorSubject, map, combineLatest, take, of, shareReplay, ReplaySubject, switchMap, distinctUntilChanged,
|
|
4
|
+
import { BehaviorSubject, map, combineLatest, take, of, shareReplay, ReplaySubject, switchMap, distinctUntilChanged, tap, debounceTime, finalize, Subject, Observable, takeUntil, share, Subscription, throwError } from 'rxjs';
|
|
5
5
|
import { DataSource as DataSource$1 } from '@angular/cdk/collections';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
7
|
import { Directive, Optional, Input } from '@angular/core';
|
|
@@ -527,15 +527,26 @@ function sorterMerge(...sorters) {
|
|
|
527
527
|
for (const [k, v] of Object.entries(sentry)) {
|
|
528
528
|
const existing = result.find((value) => value[k] != null);
|
|
529
529
|
if (existing) {
|
|
530
|
-
|
|
531
|
-
|
|
530
|
+
if (v == null) {
|
|
531
|
+
delete existing[k];
|
|
532
|
+
if (Object.keys(existing).length === 0) {
|
|
533
|
+
result.splice(result.indexOf(existing), 1);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
;
|
|
538
|
+
existing[k] = deepClone(v);
|
|
539
|
+
}
|
|
532
540
|
}
|
|
533
|
-
else {
|
|
541
|
+
else if (v != null) {
|
|
534
542
|
result.push({ [k]: deepClone(v) });
|
|
535
543
|
}
|
|
536
544
|
}
|
|
537
545
|
}
|
|
538
546
|
}
|
|
547
|
+
if (result?.length === 0) {
|
|
548
|
+
return undefined;
|
|
549
|
+
}
|
|
539
550
|
return result;
|
|
540
551
|
}
|
|
541
552
|
function sorterFind(sorters, name) {
|
|
@@ -911,7 +922,7 @@ class PropertyCombined {
|
|
|
911
922
|
}
|
|
912
923
|
function mergedProperty(merger, ...props) {
|
|
913
924
|
if (props.length > 1) {
|
|
914
|
-
return combineLatest(props).pipe(map(values => deepFreeze(merger(...values))));
|
|
925
|
+
return combineLatest(props).pipe(map(values => deepFreeze(merger(...values))), shareReplay(1));
|
|
915
926
|
}
|
|
916
927
|
else {
|
|
917
928
|
return props[0];
|
|
@@ -946,7 +957,7 @@ class SorterCombined extends PropertyCombined {
|
|
|
946
957
|
this.merged$ = mergedProperty(sorterMerge, this.normal, this.forced);
|
|
947
958
|
}
|
|
948
959
|
of(name) {
|
|
949
|
-
return this.merged$.pipe(map((sorters) => sorters == null ? undefined : sorterFind(sorters, name)));
|
|
960
|
+
return this.merged$.pipe(map((sorters) => (sorters == null ? undefined : sorterFind(sorters, name))));
|
|
950
961
|
}
|
|
951
962
|
directionOf(name) {
|
|
952
963
|
return this.of(name).pipe(map(value => {
|
|
@@ -1022,26 +1033,26 @@ class DataSource extends DataSource$1 {
|
|
|
1022
1033
|
}).pipe(shareReplay(1));
|
|
1023
1034
|
this.#slice = new ReplaySubject(1);
|
|
1024
1035
|
this.slice$ = this.#slice.pipe(switchMap(slice => this.provider.clampSlice(slice)), distinctUntilChanged(isEqual), map(slice => deepFreeze(deepClone(slice))), shareReplay(1));
|
|
1025
|
-
this.#reload = new
|
|
1026
|
-
this.
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
}),
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
}), finalize(() => this.#setBusy(false)), shareReplay(1));
|
|
1036
|
+
this.#reload = new BehaviorSubject(undefined);
|
|
1037
|
+
this.query$ = combineLatest({ base: this.#queryBase, reload: this.#reload }).pipe(tap(() => this.#setBusy(true)),
|
|
1038
|
+
// TODO: maybe silent reset or prevent items$ chenges
|
|
1039
|
+
// TODO: alternative solution use cacheId, and query item from store with this cacheId
|
|
1040
|
+
switchMap(({ base }) => this.store.clear().pipe(map(() => base))), switchMap(queryBase => this.slice$.pipe(tap(() => this.#setBusy(true)), map(slice => {
|
|
1041
|
+
return { ...queryBase, slice };
|
|
1042
|
+
}))), shareReplay(1));
|
|
1043
|
+
this.items$ = this.query$.pipe(tap(() => this.#setBusy(true)), debounceTime(DEBOUNCE_TIME), switchMap(query => this.store.hasSlice(query.slice).pipe(take(1), switchMap(hasSlice => {
|
|
1044
|
+
if (hasSlice) {
|
|
1045
|
+
return this.store.getSlice(query.slice).pipe(take(1));
|
|
1046
|
+
}
|
|
1047
|
+
else {
|
|
1048
|
+
return this.provider.queryList(query).pipe(switchMap(result => {
|
|
1049
|
+
if (result.total != null) {
|
|
1050
|
+
this.total$.next(result.total);
|
|
1051
|
+
}
|
|
1052
|
+
return this.store.insertSlice(query.slice, result.items);
|
|
1053
|
+
}), take(1));
|
|
1054
|
+
}
|
|
1055
|
+
}))), finalize(() => this.#setBusy(false)), shareReplay(1));
|
|
1045
1056
|
this.#cvSubs = new Map();
|
|
1046
1057
|
if (store == null) {
|
|
1047
1058
|
store = new MemoryStore();
|
|
@@ -1150,19 +1161,20 @@ class DataSourceProxy extends DataSource$1 {
|
|
|
1150
1161
|
#valueSub;
|
|
1151
1162
|
#value;
|
|
1152
1163
|
#valueSig;
|
|
1153
|
-
set
|
|
1164
|
+
set forcedFilterInput(value) {
|
|
1165
|
+
// this.query.filter.forced.update(value)
|
|
1154
1166
|
this.#filter.next(value);
|
|
1155
1167
|
}
|
|
1156
1168
|
#filter;
|
|
1157
|
-
set
|
|
1169
|
+
set forcedSorterInput(value) {
|
|
1158
1170
|
this.#sorter.next(value);
|
|
1159
1171
|
}
|
|
1160
1172
|
#sorter;
|
|
1161
|
-
set
|
|
1173
|
+
set forcedGrouperInput(value) {
|
|
1162
1174
|
this.#grouper.next(value);
|
|
1163
1175
|
}
|
|
1164
1176
|
#grouper;
|
|
1165
|
-
set
|
|
1177
|
+
set forcedSlimerInput(value) {
|
|
1166
1178
|
this.#slimer.next(value);
|
|
1167
1179
|
}
|
|
1168
1180
|
#slimer;
|
|
@@ -1214,7 +1226,7 @@ class DataSourceProxy extends DataSource$1 {
|
|
|
1214
1226
|
this.#subs.unsubscribe();
|
|
1215
1227
|
}
|
|
1216
1228
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, deps: [{ token: i1.Busy, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1217
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxy, isStandalone: true, selector: "[nuDataSource]", inputs: { value: ["nuDataSource", "value"],
|
|
1229
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: DataSourceProxy, isStandalone: true, selector: "[nuDataSource]", inputs: { value: ["nuDataSource", "value"], forcedFilterInput: "forcedFilterInput", forcedSorterInput: "forcedSorterInput", forcedGrouperInput: "forcedGrouperInput", forcedSlimerInput: "forcedSlimerInput" }, exportAs: ["nuDataSource"], usesInheritance: true, ngImport: i0 }); }
|
|
1218
1230
|
}
|
|
1219
1231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: DataSourceProxy, decorators: [{
|
|
1220
1232
|
type: Directive,
|
|
@@ -1228,13 +1240,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
1228
1240
|
}] }], propDecorators: { value: [{
|
|
1229
1241
|
type: Input,
|
|
1230
1242
|
args: [{ required: true, alias: "nuDataSource" }]
|
|
1231
|
-
}],
|
|
1243
|
+
}], forcedFilterInput: [{
|
|
1232
1244
|
type: Input
|
|
1233
|
-
}],
|
|
1245
|
+
}], forcedSorterInput: [{
|
|
1234
1246
|
type: Input
|
|
1235
|
-
}],
|
|
1247
|
+
}], forcedGrouperInput: [{
|
|
1236
1248
|
type: Input
|
|
1237
|
-
}],
|
|
1249
|
+
}], forcedSlimerInput: [{
|
|
1238
1250
|
type: Input
|
|
1239
1251
|
}] } });
|
|
1240
1252
|
function coerceDataSource(value) {
|