@ethlete/query 4.1.0 → 4.2.1

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.
Files changed (70) hide show
  1. package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +55 -0
  2. package/esm2022/lib/directives/infinity-query.directive.mjs +176 -0
  3. package/esm2022/lib/directives/query.directive.mjs +113 -0
  4. package/esm2022/lib/entity/entity-store.mjs +101 -0
  5. package/esm2022/lib/query-form/query-form.mjs +173 -0
  6. package/{esm2020 → esm2022}/lib/query-form/query-form.types.mjs +1 -1
  7. package/{fesm2020 → fesm2022}/ethlete-query.mjs +39 -17
  8. package/fesm2022/ethlete-query.mjs.map +1 -0
  9. package/lib/auth/bearer-auth-provider.d.ts +3 -3
  10. package/lib/directives/infinity-query-trigger.directive.d.ts +1 -1
  11. package/lib/directives/infinity-query.directive.d.ts +1 -1
  12. package/lib/directives/query.directive.d.ts +1 -1
  13. package/lib/entity/entity-store.d.ts +4 -0
  14. package/lib/query/query.utils.d.ts +12 -8
  15. package/lib/query-form/query-form.d.ts +11 -8
  16. package/lib/query-form/query-form.types.d.ts +4 -0
  17. package/package.json +8 -14
  18. package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +0 -54
  19. package/esm2020/lib/directives/infinity-query.directive.mjs +0 -175
  20. package/esm2020/lib/directives/query.directive.mjs +0 -112
  21. package/esm2020/lib/entity/entity-store.mjs +0 -95
  22. package/esm2020/lib/query-form/query-form.mjs +0 -157
  23. package/fesm2015/ethlete-query.mjs +0 -2267
  24. package/fesm2015/ethlete-query.mjs.map +0 -1
  25. package/fesm2020/ethlete-query.mjs.map +0 -1
  26. /package/{esm2020 → esm2022}/ethlete-query.mjs +0 -0
  27. /package/{esm2020 → esm2022}/index.mjs +0 -0
  28. /package/{esm2020 → esm2022}/lib/auth/auth-provider.types.mjs +0 -0
  29. /package/{esm2020 → esm2022}/lib/auth/auth-provider.utils.mjs +0 -0
  30. /package/{esm2020 → esm2022}/lib/auth/basic-auth-provider.mjs +0 -0
  31. /package/{esm2020 → esm2022}/lib/auth/bearer-auth-provider.mjs +0 -0
  32. /package/{esm2020 → esm2022}/lib/auth/custom-header-auth-provider.mjs +0 -0
  33. /package/{esm2020 → esm2022}/lib/auth/index.mjs +0 -0
  34. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  35. /package/{esm2020 → esm2022}/lib/entity/entity.types.mjs +0 -0
  36. /package/{esm2020 → esm2022}/lib/entity/entity.utils.mjs +0 -0
  37. /package/{esm2020 → esm2022}/lib/entity/index.mjs +0 -0
  38. /package/{esm2020 → esm2022}/lib/gql/gql.mjs +0 -0
  39. /package/{esm2020 → esm2022}/lib/gql/index.mjs +0 -0
  40. /package/{esm2020 → esm2022}/lib/infinite-query/index.mjs +0 -0
  41. /package/{esm2020 → esm2022}/lib/infinite-query/infinity-query.mjs +0 -0
  42. /package/{esm2020 → esm2022}/lib/infinite-query/infinity-query.types.mjs +0 -0
  43. /package/{esm2020 → esm2022}/lib/infinite-query/infinity-query.utils.mjs +0 -0
  44. /package/{esm2020 → esm2022}/lib/logger/index.mjs +0 -0
  45. /package/{esm2020 → esm2022}/lib/logger/logger.mjs +0 -0
  46. /package/{esm2020 → esm2022}/lib/query/index.mjs +0 -0
  47. /package/{esm2020 → esm2022}/lib/query/query.mjs +0 -0
  48. /package/{esm2020 → esm2022}/lib/query/query.types.mjs +0 -0
  49. /package/{esm2020 → esm2022}/lib/query/query.utils.mjs +0 -0
  50. /package/{esm2020 → esm2022}/lib/query-client/index.mjs +0 -0
  51. /package/{esm2020 → esm2022}/lib/query-client/query-client.mjs +0 -0
  52. /package/{esm2020 → esm2022}/lib/query-client/query-client.types.mjs +0 -0
  53. /package/{esm2020 → esm2022}/lib/query-client/query-client.utils.mjs +0 -0
  54. /package/{esm2020 → esm2022}/lib/query-creator/index.mjs +0 -0
  55. /package/{esm2020 → esm2022}/lib/query-creator/query-creator.mjs +0 -0
  56. /package/{esm2020 → esm2022}/lib/query-creator/query-creator.types.mjs +0 -0
  57. /package/{esm2020 → esm2022}/lib/query-form/index.mjs +0 -0
  58. /package/{esm2020 → esm2022}/lib/query-form/query-form.utils.mjs +0 -0
  59. /package/{esm2020 → esm2022}/lib/query-store/index.mjs +0 -0
  60. /package/{esm2020 → esm2022}/lib/query-store/query-store.mjs +0 -0
  61. /package/{esm2020 → esm2022}/lib/request/index.mjs +0 -0
  62. /package/{esm2020 → esm2022}/lib/request/request.mjs +0 -0
  63. /package/{esm2020 → esm2022}/lib/request/request.types.mjs +0 -0
  64. /package/{esm2020 → esm2022}/lib/request/request.util.mjs +0 -0
  65. /package/{esm2020 → esm2022}/lib/symfony/index.mjs +0 -0
  66. /package/{esm2020 → esm2022}/lib/symfony/symfony.types.mjs +0 -0
  67. /package/{esm2020 → esm2022}/lib/symfony/symfony.utils.mjs +0 -0
  68. /package/{esm2020 → esm2022}/lib/utils/deep-freeze.util.mjs +0 -0
  69. /package/{esm2020 → esm2022}/lib/utils/def.util.mjs +0 -0
  70. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
@@ -0,0 +1,55 @@
1
+ import { Directive, ElementRef, inject, Input } from '@angular/core';
2
+ import { fromEvent, Subject, takeUntil } from 'rxjs';
3
+ import { INFINITY_QUERY_TOKEN } from './infinity-query.directive';
4
+ import * as i0 from "@angular/core";
5
+ class InfinityQueryTriggerDirective {
6
+ constructor() {
7
+ this._elementRef = inject((ElementRef));
8
+ this._infinityQuery = inject(INFINITY_QUERY_TOKEN);
9
+ this._destroy = new Subject();
10
+ this._observer = null;
11
+ this.click$ = fromEvent(this._elementRef.nativeElement, 'click');
12
+ this.scrollContainerSelector = null;
13
+ }
14
+ ngOnInit() {
15
+ const isInteractive = this._elementRef.nativeElement.hasAttribute('etInfinityQueryTrigger');
16
+ if (isInteractive) {
17
+ this.click$.pipe(takeUntil(this._destroy)).subscribe(() => this._infinityQuery.loadNextPage());
18
+ }
19
+ else {
20
+ this._setupIntersectionObserver();
21
+ }
22
+ }
23
+ ngOnDestroy() {
24
+ this._destroy.next(true);
25
+ this._destroy.unsubscribe();
26
+ this._observer?.disconnect();
27
+ }
28
+ _setupIntersectionObserver() {
29
+ this._observer = new IntersectionObserver((entries) => {
30
+ const entry = entries[0];
31
+ if (entry.isIntersecting && !this._infinityQuery.context.loading) {
32
+ this._infinityQuery.loadNextPage();
33
+ }
34
+ }, {
35
+ root: this.scrollContainerSelector ? document.querySelector(this.scrollContainerSelector) : null,
36
+ rootMargin: '0px',
37
+ threshold: [0.25, 0.5, 0.75, 1],
38
+ });
39
+ this._observer.observe(this._elementRef.nativeElement);
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: InfinityQueryTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
42
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: InfinityQueryTriggerDirective, isStandalone: true, selector: "[etInfinityQueryTrigger], et-infinity-query-trigger", inputs: { scrollContainerSelector: "scrollContainerSelector" }, ngImport: i0 }); }
43
+ }
44
+ export { InfinityQueryTriggerDirective };
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: InfinityQueryTriggerDirective, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ // eslint-disable-next-line @angular-eslint/directive-selector
49
+ selector: '[etInfinityQueryTrigger], et-infinity-query-trigger',
50
+ standalone: true,
51
+ }]
52
+ }], propDecorators: { scrollContainerSelector: [{
53
+ type: Input
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnktdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvZGlyZWN0aXZlcy9pbmZpbml0eS1xdWVyeS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWxFLE1BS2EsNkJBQTZCO0lBTDFDO1FBTVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQUM5QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ2xDLGNBQVMsR0FBZ0MsSUFBSSxDQUFDO1FBRXRELFdBQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFHNUQsNEJBQXVCLEdBQWtCLElBQUksQ0FBQztLQW9DL0M7SUFsQ0MsUUFBUTtRQUNOLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRTVGLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1NBQ2hHO2FBQU07WUFDTCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLG9CQUFvQixDQUN2QyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXpCLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDaEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNwQztRQUNILENBQUMsRUFDRDtZQUNFLElBQUksRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDaEcsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0E3Q1UsNkJBQTZCO2tHQUE3Qiw2QkFBNkI7O1NBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHFEQUFxRDtvQkFDL0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQVdDLHVCQUF1QjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTkZJTklUWV9RVUVSWV9UT0tFTiB9IGZyb20gJy4vaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW2V0SW5maW5pdHlRdWVyeVRyaWdnZXJdLCBldC1pbmZpbml0eS1xdWVyeS10cmlnZ2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSW5maW5pdHlRdWVyeVRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIF9pbmZpbml0eVF1ZXJ5ID0gaW5qZWN0KElORklOSVRZX1FVRVJZX1RPS0VOKTtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY2xpY2skID0gZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJyk7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzSW50ZXJhY3RpdmUgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdldEluZmluaXR5UXVlcnlUcmlnZ2VyJyk7XG5cbiAgICBpZiAoaXNJbnRlcmFjdGl2ZSkge1xuICAgICAgdGhpcy5jbGljayQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9pbmZpbml0eVF1ZXJ5LmxvYWROZXh0UGFnZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCh0cnVlKTtcbiAgICB0aGlzLl9kZXN0cm95LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fb2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nICYmICF0aGlzLl9pbmZpbml0eVF1ZXJ5LmNvbnRleHQubG9hZGluZykge1xuICAgICAgICAgIHRoaXMuX2luZmluaXR5UXVlcnkubG9hZE5leHRQYWdlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3Q6IHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IpIDogbnVsbCxcbiAgICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgICAgIHRocmVzaG9sZDogWzAuMjUsIDAuNSwgMC43NSwgMV0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,176 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { ChangeDetectorRef, Directive, ErrorHandler, inject, InjectionToken, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
3
+ import { DelayableDirective, DestroyService } from '@ethlete/core';
4
+ import { BehaviorSubject, combineLatest, skip, Subject, takeUntil, tap, withLatestFrom } from 'rxjs';
5
+ import { InfinityQuery } from '../infinite-query';
6
+ import { isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, switchQueryState, } from '../query';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ethlete/core";
9
+ export const INFINITY_QUERY_TOKEN = new InjectionToken('INFINITY_QUERY_TOKEN');
10
+ class InfinityQueryDirective {
11
+ constructor() {
12
+ this._queryConfigChanged$ = new Subject();
13
+ this._viewContext = {
14
+ $implicit: null,
15
+ etInfinityQuery: null,
16
+ loading: false,
17
+ error: null,
18
+ isFirstLoad: false,
19
+ canLoadMore: false,
20
+ currentPage: null,
21
+ currentCalculatedPage: null,
22
+ totalPages: null,
23
+ itemsPerPage: null,
24
+ currentQuery: null,
25
+ };
26
+ this._infinityQueryInstance = null;
27
+ this._destroy$ = inject(DestroyService, { host: true }).destroy$;
28
+ this._cdr = inject(ChangeDetectorRef);
29
+ this._viewContainerRef = inject(ViewContainerRef);
30
+ this._mainTemplateRef = inject((TemplateRef));
31
+ this._errorHandler = inject(ErrorHandler);
32
+ this._delayable = inject(DelayableDirective, { host: true });
33
+ this._data$ = new BehaviorSubject([]);
34
+ this._didReceiveFirstData$ = new BehaviorSubject(false);
35
+ this._isMainViewCreated = false;
36
+ }
37
+ get infinityQuery() {
38
+ return this._infinityQuery;
39
+ }
40
+ set infinityQuery(v) {
41
+ this._cleanup();
42
+ this._infinityQuery = v;
43
+ this._infinityQueryInstance = this._setupInfinityQuery(v);
44
+ this.loadNextPage();
45
+ }
46
+ get context() {
47
+ return this._viewContext;
48
+ }
49
+ get instance() {
50
+ return this._infinityQueryInstance;
51
+ }
52
+ get data$() {
53
+ return this._data$.asObservable();
54
+ }
55
+ get data() {
56
+ return this._data$.getValue();
57
+ }
58
+ static ngTemplateContextGuard(dir, ctx) {
59
+ return true;
60
+ }
61
+ ngOnInit() {
62
+ this._renderMainView();
63
+ }
64
+ _setupInfinityQuery(config) {
65
+ const instance = new InfinityQuery(config);
66
+ combineLatest([
67
+ instance.currentQuery$.pipe(switchQueryState(), withLatestFrom(instance.currentQuery$)),
68
+ this._delayable.isDelayed$,
69
+ this._didReceiveFirstData$,
70
+ ])
71
+ .pipe(tap(([[state, currentQuery], isDelayed, didReceiveFirstData]) => {
72
+ this._viewContext.currentPage = instance.currentPage;
73
+ this._viewContext.totalPages = instance.totalPages;
74
+ this._viewContext.itemsPerPage = instance.itemsPerPage;
75
+ this._viewContext.canLoadMore =
76
+ (instance.totalPages && instance.currentPage && instance.totalPages > instance.currentPage) || false;
77
+ this._viewContext.currentCalculatedPage = instance.currentCalculatedPage;
78
+ this._viewContext.currentQuery = currentQuery;
79
+ if (isQueryStateLoading(state) || isDelayed || (!didReceiveFirstData && isQueryStateSuccess(state))) {
80
+ this._viewContext.loading = true;
81
+ this._viewContext.error = null;
82
+ this._viewContext.isFirstLoad = this.context.etInfinityQuery === null;
83
+ }
84
+ else if (isQueryStateFailure(state)) {
85
+ this._viewContext.loading = false;
86
+ this._viewContext.error = state.error;
87
+ this._viewContext.isFirstLoad = false;
88
+ this._errorHandler.handleError(state.error);
89
+ }
90
+ else if (isQueryStateSuccess(state)) {
91
+ this._viewContext.loading = false;
92
+ this._viewContext.error = null;
93
+ this._viewContext.isFirstLoad = false;
94
+ }
95
+ else {
96
+ this._viewContext.loading = false;
97
+ this._viewContext.error = null;
98
+ this._viewContext.etInfinityQuery = null;
99
+ this._viewContext.$implicit = null;
100
+ this._viewContext.isFirstLoad = false;
101
+ this._viewContext.canLoadMore = false;
102
+ this._viewContext.currentPage = null;
103
+ this._viewContext.itemsPerPage = null;
104
+ this._viewContext.totalPages = null;
105
+ this._viewContext.currentQuery = null;
106
+ this._data$.next([]);
107
+ }
108
+ this._cdr.markForCheck();
109
+ }), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))
110
+ .subscribe();
111
+ instance.data$
112
+ .pipe(skip(1), tap((data) => {
113
+ this._viewContext.etInfinityQuery = this._viewContext.$implicit = data;
114
+ this._data$.next(data);
115
+ if (!this._didReceiveFirstData$.getValue()) {
116
+ this._didReceiveFirstData$.next(true);
117
+ }
118
+ this._cdr.markForCheck();
119
+ }), takeUntil(this._destroy$), takeUntil(this._queryConfigChanged$))
120
+ .subscribe();
121
+ return instance;
122
+ }
123
+ loadNextPage() {
124
+ if (!this._infinityQueryInstance) {
125
+ return;
126
+ }
127
+ if (this._viewContext.loading) {
128
+ return;
129
+ }
130
+ this._infinityQueryInstance.nextPage();
131
+ }
132
+ reset(newConfig) {
133
+ if (!this._infinityQueryInstance) {
134
+ return;
135
+ }
136
+ this._infinityQueryInstance.reset(newConfig);
137
+ }
138
+ _renderMainView() {
139
+ if (!this._isMainViewCreated) {
140
+ this._isMainViewCreated = true;
141
+ this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
142
+ }
143
+ }
144
+ _cleanup() {
145
+ this._queryConfigChanged$.next(true);
146
+ this._viewContext.loading = false;
147
+ this._viewContext.error = null;
148
+ this._viewContext.etInfinityQuery = null;
149
+ this._viewContext.$implicit = null;
150
+ this._viewContext.isFirstLoad = false;
151
+ this._viewContext.canLoadMore = false;
152
+ this._viewContext.currentPage = null;
153
+ this._viewContext.itemsPerPage = null;
154
+ this._viewContext.totalPages = null;
155
+ this._viewContext.currentQuery = null;
156
+ this._data$.next([]);
157
+ }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: InfinityQueryDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
159
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: InfinityQueryDirective, isStandalone: true, selector: "[etInfinityQuery]", inputs: { infinityQuery: ["etInfinityQuery", "infinityQuery"] }, providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService], exportAs: ["etInfinityQuery"], hostDirectives: [{ directive: i1.DelayableDirective }], ngImport: i0 }); }
160
+ }
161
+ export { InfinityQueryDirective };
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: InfinityQueryDirective, decorators: [{
163
+ type: Directive,
164
+ args: [{
165
+ // eslint-disable-next-line @angular-eslint/directive-selector
166
+ selector: '[etInfinityQuery]',
167
+ exportAs: 'etInfinityQuery',
168
+ standalone: true,
169
+ providers: [{ provide: INFINITY_QUERY_TOKEN, useExisting: InfinityQueryDirective }, DestroyService],
170
+ hostDirectives: [DelayableDirective],
171
+ }]
172
+ }], propDecorators: { infinityQuery: [{
173
+ type: Input,
174
+ args: ['etInfinityQuery']
175
+ }] } });
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvaW5maW5pdHktcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBRUwsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLGFBQWEsRUFBd0MsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RixPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDOzs7QUFzQmxCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUE4QixzQkFBc0IsQ0FBQyxDQUFDO0FBRTVHLE1BUWEsc0JBQXNCO0lBUm5DO1FBWW1CLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDOUMsaUJBQVksR0FBNEI7WUFDdkQsU0FBUyxFQUFFLElBQUk7WUFDZixlQUFlLEVBQUUsSUFBSTtZQUNyQixPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxJQUFJO1lBRVgsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtZQUVsQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBQ00sMkJBQXNCLEdBQThCLElBQUksQ0FBQztRQUVoRCxjQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUEsV0FBb0MsQ0FBQSxDQUFDLENBQUM7UUFDaEUsa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBNkIsRUFBRSxDQUFDLENBQUM7UUFFdEUsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO0tBbUtwQztJQWpLQyxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLENBQUk7UUFDcEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFHRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUUzQixHQUE4QixFQUFFLEdBQVk7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBUztRQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQXVCLENBQUM7UUFFakUsYUFBYSxDQUFDO1lBQ1osUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTtZQUMxQixJQUFJLENBQUMscUJBQXFCO1NBQzNCLENBQUM7YUFDQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVztnQkFDM0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixDQUFDO1lBRXpFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUU5QyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbkcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQzthQUN2RTtpQkFBTSxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdDO2lCQUFNLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUVuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFFcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUV0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QjtZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUNyQzthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsUUFBUSxDQUFDLEtBQUs7YUFDWCxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBeUMsQ0FBQztZQUM1RyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV2QixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFnRDtRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsU0FBZ0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNyRjtJQUNILENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQzs4R0FsTVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsaUlBSHRCLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLEVBQUUsY0FBYyxDQUFDOztTQUd4RixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFSbEMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLHdCQUF3QixFQUFFLEVBQUUsY0FBYyxDQUFDO29CQUNuRyxjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDckM7OEJBb0NLLGFBQWE7c0JBRGhCLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRXJyb3JIYW5kbGVyLFxuICBpbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWxheWFibGVEaXJlY3RpdmUsIERlc3Ryb3lTZXJ2aWNlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHNraXAsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5maW5pdHlRdWVyeSwgSW5maW5pdHlRdWVyeUNvbmZpZywgSW5maW5pdHlRdWVyeU9mIH0gZnJvbSAnLi4vaW5maW5pdGUtcXVlcnknO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgaXNRdWVyeVN0YXRlRmFpbHVyZSxcbiAgaXNRdWVyeVN0YXRlTG9hZGluZyxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgc3dpdGNoUXVlcnlTdGF0ZSxcbn0gZnJvbSAnLi4vcXVlcnknO1xuaW1wb3J0IHsgQW55UXVlcnlDcmVhdG9yLCBDb25zdHJ1Y3RRdWVyeSB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHsgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5cbmludGVyZmFjZSBJbmZpbml0eVF1ZXJ5Q29udGV4dDxcbiAgUSBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLCBhbnksIHVua25vd25bXT4sXG4+IHtcbiAgJGltcGxpY2l0OiBRWydyZXNwb25zZSddWydhcnJheVR5cGUnXSB8IG51bGw7XG4gIGV0SW5maW5pdHlRdWVyeTogUVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10gfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogUmVxdWVzdEVycm9yPHVua25vd24+IHwgbnVsbDtcblxuICBpc0ZpcnN0TG9hZDogYm9vbGVhbjtcbiAgY2FuTG9hZE1vcmU6IGJvb2xlYW47XG4gIGN1cnJlbnRQYWdlOiBudW1iZXIgfCBudWxsO1xuICBjdXJyZW50Q2FsY3VsYXRlZFBhZ2U6IG51bWJlciB8IG51bGw7XG4gIHRvdGFsUGFnZXM6IG51bWJlciB8IG51bGw7XG4gIGl0ZW1zUGVyUGFnZTogbnVtYmVyIHwgbnVsbDtcblxuICBjdXJyZW50UXVlcnk6IENvbnN0cnVjdFF1ZXJ5PFFbJ3F1ZXJ5Q3JlYXRvciddPiB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBJTkZJTklUWV9RVUVSWV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPGFueT4+KCdJTkZJTklUWV9RVUVSWV9UT0tFTicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbZXRJbmZpbml0eVF1ZXJ5XScsXG4gIGV4cG9ydEFzOiAnZXRJbmZpbml0eVF1ZXJ5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJTkZJTklUWV9RVUVSWV9UT0tFTiwgdXNlRXhpc3Rpbmc6IEluZmluaXR5UXVlcnlEaXJlY3RpdmUgfSwgRGVzdHJveVNlcnZpY2VdLFxuICBob3N0RGlyZWN0aXZlczogW0RlbGF5YWJsZURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEluZmluaXR5UXVlcnlEaXJlY3RpdmU8XG4gIFEgZXh0ZW5kcyBJbmZpbml0eVF1ZXJ5Q29uZmlnPEFueVF1ZXJ5Q3JlYXRvciwgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCwgYW55LCB1bmtub3duW10+LFxuPiBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyeUNvbmZpZ0NoYW5nZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRleHQ6IEluZmluaXR5UXVlcnlDb250ZXh0PFE+ID0ge1xuICAgICRpbXBsaWNpdDogbnVsbCxcbiAgICBldEluZmluaXR5UXVlcnk6IG51bGwsXG4gICAgbG9hZGluZzogZmFsc2UsXG4gICAgZXJyb3I6IG51bGwsXG5cbiAgICBpc0ZpcnN0TG9hZDogZmFsc2UsXG4gICAgY2FuTG9hZE1vcmU6IGZhbHNlLFxuICAgIGN1cnJlbnRQYWdlOiBudWxsLFxuICAgIGN1cnJlbnRDYWxjdWxhdGVkUGFnZTogbnVsbCxcbiAgICB0b3RhbFBhZ2VzOiBudWxsLFxuICAgIGl0ZW1zUGVyUGFnZTogbnVsbCxcblxuICAgIGN1cnJlbnRRdWVyeTogbnVsbCxcbiAgfTtcbiAgcHJpdmF0ZSBfaW5maW5pdHlRdWVyeUluc3RhbmNlOiBJbmZpbml0eVF1ZXJ5T2Y8UT4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95U2VydmljZSwgeyBob3N0OiB0cnVlIH0pLmRlc3Ryb3kkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYWluVGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8SW5maW5pdHlRdWVyeUNvbnRleHQ8UT4+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXJyb3JIYW5kbGVyID0gaW5qZWN0KEVycm9ySGFuZGxlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGF5YWJsZSA9IGluamVjdChEZWxheWFibGVEaXJlY3RpdmUsIHsgaG9zdDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UVsncmVzcG9uc2UnXVsnYXJyYXlUeXBlJ10+KFtdKTtcblxuICBwcml2YXRlIF9kaWRSZWNlaXZlRmlyc3REYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pc01haW5WaWV3Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZXRJbmZpbml0eVF1ZXJ5JylcbiAgZ2V0IGluZmluaXR5UXVlcnkoKTogUSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZmluaXR5UXVlcnk7XG4gIH1cbiAgc2V0IGluZmluaXR5UXVlcnkodjogUSkge1xuICAgIHRoaXMuX2NsZWFudXAoKTtcblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnkgPSB2O1xuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZSA9IHRoaXMuX3NldHVwSW5maW5pdHlRdWVyeSh2KTtcbiAgICB0aGlzLmxvYWROZXh0UGFnZSgpO1xuICB9XG4gIHByaXZhdGUgX2luZmluaXR5UXVlcnkhOiBRO1xuXG4gIGdldCBjb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl92aWV3Q29udGV4dDtcbiAgfVxuXG4gIGdldCBpbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5maW5pdHlRdWVyeUluc3RhbmNlO1xuICB9XG5cbiAgZ2V0IGRhdGEkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8XG4gICAgUSBleHRlbmRzIEluZmluaXR5UXVlcnlDb25maWc8QW55UXVlcnlDcmVhdG9yLCBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLCBhbnksIHVua25vd25bXT4sXG4gID4oZGlyOiBJbmZpbml0eVF1ZXJ5RGlyZWN0aXZlPFE+LCBjdHg6IHVua25vd24pOiBjdHggaXMgSW5maW5pdHlRdWVyeUNvbnRleHQ8UT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyTWFpblZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwSW5maW5pdHlRdWVyeShjb25maWc6IFEpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBJbmZpbml0eVF1ZXJ5KGNvbmZpZykgYXMgSW5maW5pdHlRdWVyeU9mPFE+O1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICBpbnN0YW5jZS5jdXJyZW50UXVlcnkkLnBpcGUoc3dpdGNoUXVlcnlTdGF0ZSgpLCB3aXRoTGF0ZXN0RnJvbShpbnN0YW5jZS5jdXJyZW50UXVlcnkkKSksXG4gICAgICB0aGlzLl9kZWxheWFibGUuaXNEZWxheWVkJCxcbiAgICAgIHRoaXMuX2RpZFJlY2VpdmVGaXJzdERhdGEkLFxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbW3N0YXRlLCBjdXJyZW50UXVlcnldLCBpc0RlbGF5ZWQsIGRpZFJlY2VpdmVGaXJzdERhdGFdKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFBhZ2UgPSBpbnN0YW5jZS5jdXJyZW50UGFnZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC50b3RhbFBhZ2VzID0gaW5zdGFuY2UudG90YWxQYWdlcztcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pdGVtc1BlclBhZ2UgPSBpbnN0YW5jZS5pdGVtc1BlclBhZ2U7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuY2FuTG9hZE1vcmUgPVxuICAgICAgICAgICAgKGluc3RhbmNlLnRvdGFsUGFnZXMgJiYgaW5zdGFuY2UuY3VycmVudFBhZ2UgJiYgaW5zdGFuY2UudG90YWxQYWdlcyA+IGluc3RhbmNlLmN1cnJlbnRQYWdlKSB8fCBmYWxzZTtcbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50Q2FsY3VsYXRlZFBhZ2UgPSBpbnN0YW5jZS5jdXJyZW50Q2FsY3VsYXRlZFBhZ2U7XG5cbiAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UXVlcnkgPSBjdXJyZW50UXVlcnk7XG5cbiAgICAgICAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyhzdGF0ZSkgfHwgaXNEZWxheWVkIHx8ICghZGlkUmVjZWl2ZUZpcnN0RGF0YSAmJiBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSB0aGlzLmNvbnRleHQuZXRJbmZpbml0eVF1ZXJ5ID09PSBudWxsO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmVycm9yID0gc3RhdGUuZXJyb3I7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKHN0YXRlLmVycm9yKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5ldEluZmluaXR5UXVlcnkgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gbnVsbDtcblxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmNhbkxvYWRNb3JlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5jdXJyZW50UGFnZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl92aWV3Q29udGV4dC5pdGVtc1BlclBhZ2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQudG90YWxQYWdlcyA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRRdWVyeSA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGEkLm5leHQoW10pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9xdWVyeUNvbmZpZ0NoYW5nZWQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGluc3RhbmNlLmRhdGEkXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgdGFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXRJbmZpbml0eVF1ZXJ5ID0gdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gZGF0YSBhcyBRWydyZXNwb25zZSddWydhcnJheVR5cGUnXSB8IG51bGw7XG4gICAgICAgICAgdGhpcy5fZGF0YSQubmV4dChkYXRhKTtcblxuICAgICAgICAgIGlmICghdGhpcy5fZGlkUmVjZWl2ZUZpcnN0RGF0YSQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgdGhpcy5fZGlkUmVjZWl2ZUZpcnN0RGF0YSQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fcXVlcnlDb25maWdDaGFuZ2VkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBsb2FkTmV4dFBhZ2UoKSB7XG4gICAgaWYgKCF0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdmlld0NvbnRleHQubG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2luZmluaXR5UXVlcnlJbnN0YW5jZS5uZXh0UGFnZSgpO1xuICB9XG5cbiAgcmVzZXQobmV3Q29uZmlnPzogT21pdDxRLCAncXVlcnlDcmVhdG9yJyB8ICdyZXNwb25zZSc+KSB7XG4gICAgaWYgKCF0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmZpbml0eVF1ZXJ5SW5zdGFuY2UucmVzZXQobmV3Q29uZmlnIGFzIGFueSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJNYWluVmlldygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzTWFpblZpZXdDcmVhdGVkKSB7XG4gICAgICB0aGlzLl9pc01haW5WaWV3Q3JlYXRlZCA9IHRydWU7XG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9tYWluVGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbnVwKCkge1xuICAgIHRoaXMuX3F1ZXJ5Q29uZmlnQ2hhbmdlZCQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5fdmlld0NvbnRleHQuZXRJbmZpbml0eVF1ZXJ5ID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuaXNGaXJzdExvYWQgPSBmYWxzZTtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5jYW5Mb2FkTW9yZSA9IGZhbHNlO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LmN1cnJlbnRQYWdlID0gbnVsbDtcbiAgICB0aGlzLl92aWV3Q29udGV4dC5pdGVtc1BlclBhZ2UgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250ZXh0LnRvdGFsUGFnZXMgPSBudWxsO1xuXG4gICAgdGhpcy5fdmlld0NvbnRleHQuY3VycmVudFF1ZXJ5ID0gbnVsbDtcblxuICAgIHRoaXMuX2RhdGEkLm5leHQoW10pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,113 @@
1
+ import { ChangeDetectorRef, Directive, ErrorHandler, Input, TemplateRef, ViewContainerRef, } from '@angular/core';
2
+ import { tap } from 'rxjs';
3
+ import { isQuery, isQueryStateFailure, isQueryStateLoading, isQueryStateSuccess, } from '../query';
4
+ import * as i0 from "@angular/core";
5
+ class QueryDirective {
6
+ get query() {
7
+ return this._query;
8
+ }
9
+ set query(v) {
10
+ this._query = v;
11
+ this._subscribeToQuery();
12
+ }
13
+ get cache() {
14
+ return this._cache;
15
+ }
16
+ set cache(v) {
17
+ this._cache = v;
18
+ }
19
+ constructor(_mainTemplateRef, _viewContainerRef, _errorHandler, _cdr) {
20
+ this._mainTemplateRef = _mainTemplateRef;
21
+ this._viewContainerRef = _viewContainerRef;
22
+ this._errorHandler = _errorHandler;
23
+ this._cdr = _cdr;
24
+ this._isMainViewCreated = false;
25
+ this._subscription = null;
26
+ this._viewContext = {
27
+ $implicit: null,
28
+ etQuery: null,
29
+ loading: false,
30
+ refreshing: false,
31
+ error: null,
32
+ progress: null,
33
+ };
34
+ this._cache = false;
35
+ }
36
+ static ngTemplateContextGuard(dir, ctx) {
37
+ return true;
38
+ }
39
+ ngOnInit() {
40
+ this._renderMainView();
41
+ }
42
+ ngOnDestroy() {
43
+ this._subscription?.unsubscribe();
44
+ }
45
+ _subscribeToQuery() {
46
+ this._subscription?.unsubscribe();
47
+ this._subscription = null;
48
+ if (!this.query) {
49
+ this._viewContext.$implicit = null;
50
+ this._viewContext.etQuery = null;
51
+ this._viewContext.loading = false;
52
+ this._viewContext.refreshing = false;
53
+ this._viewContext.error = null;
54
+ this._viewContext.progress = null;
55
+ return;
56
+ }
57
+ const query = isQuery(this.query) ? this.query : this.query.query;
58
+ const sub = query.state$.pipe(tap((state) => this._updateView(state))).subscribe();
59
+ this._subscription = sub;
60
+ }
61
+ _updateView(state) {
62
+ if (isQueryStateLoading(state)) {
63
+ this._viewContext.loading = true;
64
+ this._viewContext.progress = state.progress ?? null;
65
+ this._viewContext.refreshing = state.meta.triggeredVia === 'auto' || state.meta.triggeredVia === 'poll';
66
+ }
67
+ else {
68
+ this._viewContext.loading = false;
69
+ this._viewContext.refreshing = false;
70
+ this._viewContext.progress = null;
71
+ }
72
+ if (isQueryStateSuccess(state)) {
73
+ this._viewContext.etQuery = state.response;
74
+ this._viewContext.$implicit = state.response;
75
+ }
76
+ else if (!this.cache) {
77
+ this._viewContext.etQuery = null;
78
+ this._viewContext.$implicit = null;
79
+ }
80
+ if (isQueryStateFailure(state)) {
81
+ this._viewContext.error = state.error;
82
+ this._errorHandler.handleError(state.error);
83
+ }
84
+ else {
85
+ this._viewContext.error = null;
86
+ }
87
+ this._cdr.markForCheck();
88
+ }
89
+ _renderMainView() {
90
+ if (!this._isMainViewCreated) {
91
+ this._isMainViewCreated = true;
92
+ this._viewContainerRef.createEmbeddedView(this._mainTemplateRef, this._viewContext);
93
+ }
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: QueryDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ErrorHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
96
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: QueryDirective, isStandalone: true, selector: "[etQuery]", inputs: { query: ["etQuery", "query"], cache: ["etQueryCache", "cache"] }, ngImport: i0 }); }
97
+ }
98
+ export { QueryDirective };
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: QueryDirective, decorators: [{
100
+ type: Directive,
101
+ args: [{
102
+ // eslint-disable-next-line @angular-eslint/directive-selector
103
+ selector: '[etQuery]',
104
+ standalone: true,
105
+ }]
106
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ErrorHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { query: [{
107
+ type: Input,
108
+ args: ['etQuery']
109
+ }], cache: [{
110
+ type: Input,
111
+ args: ['etQueryCache']
112
+ }] } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RpcmVjdGl2ZXMvcXVlcnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBS0wsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsbUJBQW1CLEdBQ3BCLE1BQU0sVUFBVSxDQUFDOztBQWFsQixNQUthLGNBQWM7SUFhekIsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFJO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUdELElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsQ0FBVTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBR0QsWUFDVSxnQkFBdUQsRUFDdkQsaUJBQW1DLEVBQ25DLGFBQTJCLEVBQzNCLElBQXVCO1FBSHZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUM7UUFDdkQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXBDekIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGtCQUFhLEdB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O1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUNwQztRQUVELElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUV0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQzs4R0EvR1UsY0FBYztrR0FBZCxjQUFjOztTQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFMMUIsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7NExBZUssS0FBSztzQkFEUixLQUFLO3VCQUFDLFNBQVM7Z0JBWVosS0FBSztzQkFEUixLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFcnJvckhhbmRsZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFueVF1ZXJ5LFxuICBBbnlRdWVyeUNvbGxlY3Rpb24sXG4gIFF1ZXJ5T2YsXG4gIFF1ZXJ5U3RhdGUsXG4gIGlzUXVlcnksXG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5RGF0YU9mIH0gZnJvbSAnLi4vcXVlcnktY3JlYXRvcic7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IsIFJlcXVlc3RQcm9ncmVzcyB9IGZyb20gJy4uL3JlcXVlc3QnO1xuXG5pbnRlcmZhY2UgUXVlcnlDb250ZXh0PFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+IHtcbiAgJGltcGxpY2l0OiBRdWVyeURhdGFPZjxRPiB8IG51bGw7XG4gIGV0UXVlcnk6IFF1ZXJ5RGF0YU9mPFE+IHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgcmVmcmVzaGluZzogYm9vbGVhbjtcbiAgcHJvZ3Jlc3M6IFJlcXVlc3RQcm9ncmVzcyB8IG51bGw7XG4gIGVycm9yOiBSZXF1ZXN0RXJyb3I8dW5rbm93bj4gfCBudWxsO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbZXRRdWVyeV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeURpcmVjdGl2ZTxRIGV4dGVuZHMgQW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfaXNNYWluVmlld0NyZWF0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGV4dDogUXVlcnlDb250ZXh0PFF1ZXJ5T2Y8UT4+ID0ge1xuICAgICRpbXBsaWNpdDogbnVsbCxcbiAgICBldFF1ZXJ5OiBudWxsLFxuICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIHJlZnJlc2hpbmc6IGZhbHNlLFxuICAgIGVycm9yOiBudWxsLFxuICAgIHByb2dyZXNzOiBudWxsLFxuICB9O1xuXG4gIEBJbnB1dCgnZXRRdWVyeScpXG4gIGdldCBxdWVyeSgpOiBRIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnk7XG4gIH1cbiAgc2V0IHF1ZXJ5KHY6IFEpIHtcbiAgICB0aGlzLl9xdWVyeSA9IHY7XG5cbiAgICB0aGlzLl9zdWJzY3JpYmVUb1F1ZXJ5KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcXVlcnkhOiBRO1xuXG4gIEBJbnB1dCgnZXRRdWVyeUNhY2hlJylcbiAgZ2V0IGNhY2hlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZTtcbiAgfVxuICBzZXQgY2FjaGUodjogYm9vbGVhbikge1xuICAgIHRoaXMuX2NhY2hlID0gdjtcbiAgfVxuICBwcml2YXRlIF9jYWNoZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX21haW5UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8UXVlcnlDb250ZXh0PFF1ZXJ5T2Y8UT4+PixcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgX2Vycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxRIGV4dGVuZHMgQW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPihcbiAgICBkaXI6IFF1ZXJ5RGlyZWN0aXZlPFE+LFxuICAgIGN0eDogdW5rbm93bixcbiAgKTogY3R4IGlzIFF1ZXJ5Q29udGV4dDxRdWVyeU9mPFE+PiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW5kZXJNYWluVmlldygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9RdWVyeSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICAgIGlmICghdGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gbnVsbDtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmV0UXVlcnkgPSBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQucmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQucHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gaXNRdWVyeSh0aGlzLnF1ZXJ5KSA/IHRoaXMucXVlcnkgOiB0aGlzLnF1ZXJ5LnF1ZXJ5O1xuXG4gICAgY29uc3Qgc3ViID0gcXVlcnkuc3RhdGUkLnBpcGUodGFwKChzdGF0ZSkgPT4gdGhpcy5fdXBkYXRlVmlldyhzdGF0ZSkpKS5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHN1YjtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZpZXcoc3RhdGU6IFF1ZXJ5U3RhdGUpIHtcbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250ZXh0LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQucHJvZ3Jlc3MgPSBzdGF0ZS5wcm9ncmVzcyA/PyBudWxsO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQucmVmcmVzaGluZyA9IHN0YXRlLm1ldGEudHJpZ2dlcmVkVmlhID09PSAnYXV0bycgfHwgc3RhdGUubWV0YS50cmlnZ2VyZWRWaWEgPT09ICdwb2xsJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQucmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQucHJvZ3Jlc3MgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXRRdWVyeSA9IHN0YXRlLnJlc3BvbnNlIGFzIFF1ZXJ5RGF0YU9mPFF1ZXJ5T2Y8UT4+O1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuJGltcGxpY2l0ID0gc3RhdGUucmVzcG9uc2UgYXMgUXVlcnlEYXRhT2Y8UXVlcnlPZjxRPj47XG4gICAgfSBlbHNlIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXRRdWVyeSA9IG51bGw7XG4gICAgICB0aGlzLl92aWV3Q29udGV4dC4kaW1wbGljaXQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChpc1F1ZXJ5U3RhdGVGYWlsdXJlKHN0YXRlKSkge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBzdGF0ZS5lcnJvcjtcblxuICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKHN0YXRlLmVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmlld0NvbnRleHQuZXJyb3IgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck1haW5WaWV3KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNNYWluVmlld0NyZWF0ZWQpIHtcbiAgICAgIHRoaXMuX2lzTWFpblZpZXdDcmVhdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX21haW5UZW1wbGF0ZVJlZiwgdGhpcy5fdmlld0NvbnRleHQpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,101 @@
1
+ import { Subject, debounceTime, filter, map, shareReplay, startWith } from 'rxjs';
2
+ class EntityStoreError extends Error {
3
+ constructor(message, detail) {
4
+ super(message);
5
+ this.detail = detail;
6
+ this.name = 'EntityStoreError';
7
+ }
8
+ }
9
+ export class EntityStore {
10
+ constructor(_config) {
11
+ this._config = _config;
12
+ this._dictionary = new Map();
13
+ this._change$ = new Subject();
14
+ }
15
+ select(keyOrKeys) {
16
+ if (Array.isArray(keyOrKeys)) {
17
+ return this._selectMany(keyOrKeys);
18
+ }
19
+ return this._select(keyOrKeys);
20
+ }
21
+ /**
22
+ * **Note:** Prefer `select` over `selectWhere` when possible.
23
+ */
24
+ selectWhere(predicate) {
25
+ return this._change$.pipe(startWith(null), debounceTime(0), map(() => Array.from(this._dictionary.values()).filter(predicate)), shareReplay({ bufferSize: 1, refCount: true }));
26
+ }
27
+ set(keyOrKeys, valueOrValues) {
28
+ if (Array.isArray(keyOrKeys)) {
29
+ if (!Array.isArray(valueOrValues)) {
30
+ throw new EntityStoreError('When setting multiple keys, values must be an array', {
31
+ keyOrValues: keyOrKeys,
32
+ valueOrValues,
33
+ });
34
+ }
35
+ for (let i = 0; i < keyOrKeys.length; i++) {
36
+ this._set(keyOrKeys[i], valueOrValues[i]);
37
+ }
38
+ }
39
+ else {
40
+ this._set(keyOrKeys, valueOrValues);
41
+ }
42
+ this._change$.next(keyOrKeys);
43
+ }
44
+ remove(keyOrKeys) {
45
+ if (Array.isArray(keyOrKeys)) {
46
+ for (const key of keyOrKeys) {
47
+ this._remove(key);
48
+ }
49
+ }
50
+ else {
51
+ this._remove(keyOrKeys);
52
+ }
53
+ this._change$.next(keyOrKeys);
54
+ }
55
+ logState() {
56
+ console.log('EntityStore:', this._config.name, {
57
+ dictionary: this._dictionary,
58
+ });
59
+ }
60
+ _select(key) {
61
+ if (this._config.logActions) {
62
+ console.log('EntityStore: select', this._config.name, key);
63
+ }
64
+ return this._change$.pipe(startWith(null), filter((v) => {
65
+ if (v === null) {
66
+ return true;
67
+ }
68
+ if (Array.isArray(v)) {
69
+ return v.includes(key);
70
+ }
71
+ return v === key;
72
+ }), map(() => this._dictionary.get(key) ?? null));
73
+ }
74
+ _selectMany(keys) {
75
+ if (this._config.logActions) {
76
+ console.log('EntityStore: selectMany', this._config.name, keys);
77
+ }
78
+ return this._change$.pipe(startWith(null), filter((v) => {
79
+ if (v === null) {
80
+ return true;
81
+ }
82
+ if (Array.isArray(v)) {
83
+ return keys.some((key) => v.includes(key));
84
+ }
85
+ return keys.includes(v);
86
+ }), map(() => keys.map((key) => this._dictionary.get(key)).filter((value) => value !== undefined)));
87
+ }
88
+ _set(key, value) {
89
+ if (this._config.logActions) {
90
+ console.log('EntityStore: set', this._config.name, key, value);
91
+ }
92
+ this._dictionary.set(key, value);
93
+ }
94
+ _remove(key) {
95
+ if (this._config.logActions) {
96
+ console.log('EntityStore: remove', this._config.name, key);
97
+ }
98
+ this._dictionary.delete(key);
99
+ }
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2VudGl0eS9lbnRpdHktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzlGLE1BQU0sZ0JBQWlCLFNBQVEsS0FBSztJQUNsQyxZQUFZLE9BQWUsRUFBUyxNQUFnQjtRQUNsRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFEbUIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUVsRCxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQTZCLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBSnRDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7UUFFdEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO0lBRVQsQ0FBQztJQUkzRCxNQUFNLENBQUMsU0FBa0M7UUFDdkMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsU0FBZ0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FB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Q0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUQ7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHlLZXksIEVudGl0eVN0b3JlQ29uZmlnIH0gZnJvbSAnLi9lbnRpdHkudHlwZXMnO1xuXG5jbGFzcyBFbnRpdHlTdG9yZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBkZXRhaWw/OiB1bmtub3duKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0VudGl0eVN0b3JlRXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlTdG9yZTxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpY3Rpb25hcnkgPSBuZXcgTWFwPEVudGl0eUtleSwgVD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2UkID0gbmV3IFN1YmplY3Q8RW50aXR5S2V5IHwgRW50aXR5S2V5W10+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBFbnRpdHlTdG9yZUNvbmZpZykge31cblxuICBzZWxlY3Qoa2V5OiBFbnRpdHlLZXkpOiBPYnNlcnZhYmxlPFQgfCBudWxsPjtcbiAgc2VsZWN0KGtleXM6IEVudGl0eUtleVtdKTogT2JzZXJ2YWJsZTxUW10+O1xuICBzZWxlY3Qoa2V5T3JLZXlzOiBFbnRpdHlLZXkgfCBFbnRpdHlLZXlbXSk6IE9ic2VydmFibGU8VCB8IG51bGw+IHwgT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShrZXlPcktleXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0TWFueShrZXlPcktleXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Qoa2V5T3JLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAqKk5vdGU6KiogUHJlZmVyIGBzZWxlY3RgIG92ZXIgYHNlbGVjdFdoZXJlYCB3aGVuIHBvc3NpYmxlLlxuICAgKi9cbiAgc2VsZWN0V2hlcmUocHJlZGljYXRlOiAodmFsdWU6IFQpID0+IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9jaGFuZ2UkLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICBtYXAoKCkgPT4gQXJyYXkuZnJvbSh0aGlzLl9kaWN0aW9uYXJ5LnZhbHVlcygpKS5maWx0ZXIocHJlZGljYXRlKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICk7XG4gIH1cblxuICBzZXQoa2V5OiBFbnRpdHlLZXksIHZhbHVlOiBUKTogdm9pZDtcbiAgc2V0KGtleXM6IEVudGl0eUtleVtdLCB2YWx1ZXM6IFRbXSk6IHZvaWQ7XG4gIHNldChrZXlPcktleXM6IEVudGl0eUtleSB8IEVudGl0eUtleVtdLCB2YWx1ZU9yVmFsdWVzOiBUIHwgVFtdKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5T3JLZXlzKSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlT3JWYWx1ZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFbnRpdHlTdG9yZUVycm9yKCdXaGVuIHNldHRpbmcgbXVsdGlwbGUga2V5cywgdmFsdWVzIG11c3QgYmUgYW4gYXJyYXknLCB7XG4gICAgICAgICAga2V5T3JWYWx1ZXM6IGtleU9yS2V5cyxcbiAgICAgICAgICB2YWx1ZU9yVmFsdWVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlPcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5fc2V0KGtleU9yS2V5c1tpXSwgdmFsdWVPclZhbHVlc1tpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldChrZXlPcktleXMsIHZhbHVlT3JWYWx1ZXMgYXMgVCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KGtleU9yS2V5cyk7XG4gIH1cblxuICByZW1vdmUoa2V5OiBFbnRpdHlLZXkpOiB2b2lkO1xuICByZW1vdmUoa2V5czogRW50aXR5S2V5W10pOiB2b2lkO1xuICByZW1vdmUoa2V5T3JLZXlzOiBFbnRpdHlLZXkgfCBFbnRpdHlLZXlbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGtleU9yS2V5cykpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleU9yS2V5cykge1xuICAgICAgICB0aGlzLl9yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVtb3ZlKGtleU9yS2V5cyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KGtleU9yS2V5cyk7XG4gIH1cblxuICBsb2dTdGF0ZSgpIHtcbiAgICBjb25zb2xlLmxvZygnRW50aXR5U3RvcmU6JywgdGhpcy5fY29uZmlnLm5hbWUsIHtcbiAgICAgIGRpY3Rpb25hcnk6IHRoaXMuX2RpY3Rpb25hcnksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3Qoa2V5OiBFbnRpdHlLZXkpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2dBY3Rpb25zKSB7XG4gICAgICBjb25zb2xlLmxvZygnRW50aXR5U3RvcmU6IHNlbGVjdCcsIHRoaXMuX2NvbmZpZy5uYW1lLCBrZXkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jaGFuZ2UkLnBpcGUoXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBmaWx0ZXIoKHYpID0+IHtcbiAgICAgICAgaWYgKHYgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgcmV0dXJuIHYuaW5jbHVkZXMoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2ID09PSBrZXk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLl9kaWN0aW9uYXJ5LmdldChrZXkpID8/IG51bGwpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RNYW55KGtleXM6IEVudGl0eUtleVtdKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmxvZ0FjdGlvbnMpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFbnRpdHlTdG9yZTogc2VsZWN0TWFueScsIHRoaXMuX2NvbmZpZy5uYW1lLCBrZXlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlJC5waXBlKFxuICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgZmlsdGVyKCh2KSA9PiB7XG4gICAgICAgIGlmICh2ID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICAgIHJldHVybiBrZXlzLnNvbWUoKGtleSkgPT4gdi5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXlzLmluY2x1ZGVzKHYpO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4ga2V5cy5tYXAoKGtleSkgPT4gdGhpcy5fZGljdGlvbmFyeS5nZXQoa2V5KSkuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIFQgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9zZXQoa2V5OiBFbnRpdHlLZXksIHZhbHVlOiBUKSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sb2dBY3Rpb25zKSB7XG4gICAgICBjb25zb2xlLmxvZygnRW50aXR5U3RvcmU6IHNldCcsIHRoaXMuX2NvbmZpZy5uYW1lLCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kaWN0aW9uYXJ5LnNldChrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZShrZXk6IEVudGl0eUtleSkge1xuICAgIGlmICh0aGlzLl9jb25maWcubG9nQWN0aW9ucykge1xuICAgICAgY29uc29sZS5sb2coJ0VudGl0eVN0b3JlOiByZW1vdmUnLCB0aGlzLl9jb25maWcubmFtZSwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLl9kaWN0aW9uYXJ5LmRlbGV0ZShrZXkpO1xuICB9XG59XG4iXX0=