@ethlete/core 0.2.0-next.19 → 0.2.0-next.20
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/esm2020/lib/services/public-api.mjs +2 -1
- package/esm2020/lib/services/router-state.service.mjs +81 -0
- package/fesm2015/ethlete-core.mjs +81 -2
- package/fesm2015/ethlete-core.mjs.map +1 -1
- package/fesm2020/ethlete-core.mjs +80 -2
- package/fesm2020/ethlete-core.mjs.map +1 -1
- package/lib/services/public-api.d.ts +1 -0
- package/lib/services/router-state.service.d.ts +34 -0
- package/package.json +3 -2
|
@@ -3,6 +3,7 @@ export * from './content-observer.service';
|
|
|
3
3
|
export * from './destroy.service';
|
|
4
4
|
export * from './focus-visible.service';
|
|
5
5
|
export * from './resize-observer.service';
|
|
6
|
+
export * from './router-state.service';
|
|
6
7
|
export * from './viewport.service';
|
|
7
8
|
export * from './viewport.types';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jbGljay1vYnNlcnZlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC1vYnNlcnZlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXMtdmlzaWJsZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXItc3RhdGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXdwb3J0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3cG9ydC50eXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { NavigationEnd, Router } from '@angular/router';
|
|
3
|
+
import { BehaviorSubject, distinctUntilChanged, filter, map, pairwise } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export const routerDisableScrollTop = (config = {}) => {
|
|
6
|
+
if (!config.asReturnRoute) {
|
|
7
|
+
return {
|
|
8
|
+
disableScrollTop: true,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
disableScrollTopAsReturnRoute: true,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export class RouterStateService {
|
|
16
|
+
get route$() {
|
|
17
|
+
return this._route$.asObservable();
|
|
18
|
+
}
|
|
19
|
+
get state$() {
|
|
20
|
+
return this._state$.asObservable();
|
|
21
|
+
}
|
|
22
|
+
constructor() {
|
|
23
|
+
this._isScrollTopOnNavigationEnabled = false;
|
|
24
|
+
this._router = inject(Router);
|
|
25
|
+
this._route$ = new BehaviorSubject('/');
|
|
26
|
+
this._state$ = new BehaviorSubject({
|
|
27
|
+
title: undefined,
|
|
28
|
+
data: {},
|
|
29
|
+
pathParams: {},
|
|
30
|
+
queryParams: {},
|
|
31
|
+
});
|
|
32
|
+
this._router.events
|
|
33
|
+
.pipe(filter((event) => event instanceof NavigationEnd), distinctUntilChanged((a, b) => a.url === b.url), map((event) => event.url))
|
|
34
|
+
.subscribe(this._route$);
|
|
35
|
+
this._route$
|
|
36
|
+
.pipe(map(() => {
|
|
37
|
+
let route = this._router.routerState.snapshot.root;
|
|
38
|
+
while (route.firstChild) {
|
|
39
|
+
route = route.firstChild;
|
|
40
|
+
}
|
|
41
|
+
const { data, params, queryParams, title } = route;
|
|
42
|
+
return {
|
|
43
|
+
data,
|
|
44
|
+
pathParams: params,
|
|
45
|
+
queryParams,
|
|
46
|
+
title,
|
|
47
|
+
};
|
|
48
|
+
}))
|
|
49
|
+
.subscribe(this._state$);
|
|
50
|
+
}
|
|
51
|
+
enableScrollTopOnNavigation(config = {}) {
|
|
52
|
+
if (this._isScrollTopOnNavigationEnabled) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this._isScrollTopOnNavigationEnabled = true;
|
|
56
|
+
this._state$.pipe(pairwise()).subscribe(([oldData, newData]) => {
|
|
57
|
+
if (!(newData.data['disableScrollTopAsReturnRoute'] && oldData.data['disableScrollTop']) &&
|
|
58
|
+
!newData.data['disableScrollTop']) {
|
|
59
|
+
(config.scrollElement ?? document.documentElement).scrollTop = 0;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
selectQueryParam(key) {
|
|
64
|
+
return this._state$.pipe(map((state) => state.queryParams[key]));
|
|
65
|
+
}
|
|
66
|
+
selectPathParam(key) {
|
|
67
|
+
return this._state$.pipe(map((state) => state.pathParams[key]));
|
|
68
|
+
}
|
|
69
|
+
selectData(key) {
|
|
70
|
+
return this._state$.pipe(map((state) => state.data[key]));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
RouterStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
74
|
+
RouterStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, providedIn: 'root' });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, decorators: [{
|
|
76
|
+
type: Injectable,
|
|
77
|
+
args: [{
|
|
78
|
+
providedIn: 'root',
|
|
79
|
+
}]
|
|
80
|
+
}], ctorParameters: function () { return []; } });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQVEsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRWhHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsU0FBc0MsRUFBRSxFQUFFLEVBQUU7SUFDakYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDekIsT0FBTztZQUNMLGdCQUFnQixFQUFFLElBQUk7U0FDdkIsQ0FBQztLQUNIO0lBRUQsT0FBTztRQUNMLDZCQUE2QixFQUFFLElBQUk7S0FDcEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUtGLE1BQU0sT0FBTyxrQkFBa0I7SUFrQjdCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDtRQXpCUSxvQ0FBK0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6QixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUszQztZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hC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QkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGEsIE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBwYWlyd2lzZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3Qgcm91dGVyRGlzYWJsZVNjcm9sbFRvcCA9IChjb25maWc6IHsgYXNSZXR1cm5Sb3V0ZT86IGJvb2xlYW4gfSA9IHt9KSA9PiB7XG4gIGlmICghY29uZmlnLmFzUmV0dXJuUm91dGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzYWJsZVNjcm9sbFRvcDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNhYmxlU2Nyb2xsVG9wQXNSZXR1cm5Sb3V0ZTogdHJ1ZSxcbiAgfTtcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIF9pc1Njcm9sbFRvcE9uTmF2aWdhdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm91dGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnLycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgIGRhdGE6IERhdGE7XG4gICAgcGF0aFBhcmFtczogUGFyYW1zO1xuICAgIHF1ZXJ5UGFyYW1zOiBQYXJhbXM7XG4gICAgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfT4oe1xuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgZGF0YToge30sXG4gICAgcGF0aFBhcmFtczoge30sXG4gICAgcXVlcnlQYXJhbXM6IHt9LFxuICB9KTtcblxuICBnZXQgcm91dGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25FbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGEudXJsID09PSBiLnVybCksXG4gICAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LnVybCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuX3JvdXRlJCk7XG5cbiAgICB0aGlzLl9yb3V0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGxldCByb3V0ZSA9IHRoaXMuX3JvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xuXG4gICAgICAgICAgd2hpbGUgKHJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHJvdXRlID0gcm91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRhdGEsIHBhcmFtcywgcXVlcnlQYXJhbXMsIHRpdGxlIH0gPSByb3V0ZTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGF0aFBhcmFtczogcGFyYW1zLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5fc3RhdGUkKTtcbiAgfVxuXG4gIGVuYWJsZVNjcm9sbFRvcE9uTmF2aWdhdGlvbihjb25maWc6IHsgc2Nyb2xsRWxlbWVudD86IEhUTUxFbGVtZW50IH0gPSB7fSkge1xuICAgIGlmICh0aGlzLl9pc1Njcm9sbFRvcE9uTmF2aWdhdGlvbkVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1Njcm9sbFRvcE9uTmF2aWdhdGlvbkVuYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5fc3RhdGUkLnBpcGUocGFpcndpc2UoKSkuc3Vic2NyaWJlKChbb2xkRGF0YSwgbmV3RGF0YV0pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIShuZXdEYXRhLmRhdGFbJ2Rpc2FibGVTY3JvbGxUb3BBc1JldHVyblJvdXRlJ10gJiYgb2xkRGF0YS5kYXRhWydkaXNhYmxlU2Nyb2xsVG9wJ10pICYmXG4gICAgICAgICFuZXdEYXRhLmRhdGFbJ2Rpc2FibGVTY3JvbGxUb3AnXVxuICAgICAgKSB7XG4gICAgICAgIChjb25maWcuc2Nyb2xsRWxlbWVudCA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLnNjcm9sbFRvcCA9IDA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3RRdWVyeVBhcmFtPFQgPSBzdHJpbmcgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKG1hcCgoc3RhdGUpID0+IHN0YXRlLnF1ZXJ5UGFyYW1zW2tleV0pKTtcbiAgfVxuXG4gIHNlbGVjdFBhdGhQYXJhbTxUID0gc3RyaW5nIHwgdW5kZWZpbmVkPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShtYXAoKHN0YXRlKSA9PiBzdGF0ZS5wYXRoUGFyYW1zW2tleV0pKTtcbiAgfVxuXG4gIHNlbGVjdERhdGE8VCA9IHVua25vd24+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKG1hcCgoc3RhdGUpID0+IHN0YXRlLmRhdGFba2V5XSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -2,8 +2,9 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, Inject, Optional, ElementRef, EventEmitter, Directive, Output, NgZone, Pipe, QueryList } from '@angular/core';
|
|
3
3
|
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
4
4
|
import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
5
|
-
import { fromEvent, Observable, Subject, BehaviorSubject,
|
|
5
|
+
import { fromEvent, Observable, Subject, BehaviorSubject, filter, distinctUntilChanged, map, pairwise, combineLatest, shareReplay, takeUntil, startWith, debounceTime, tap, take } from 'rxjs';
|
|
6
6
|
import { DOCUMENT } from '@angular/common';
|
|
7
|
+
import { Router, NavigationEnd } from '@angular/router';
|
|
7
8
|
import { __decorate, __metadata } from 'tslib';
|
|
8
9
|
import * as i1 from '@angular/cdk/layout';
|
|
9
10
|
import { debounceTime as debounceTime$1 } from 'rxjs/operators';
|
|
@@ -347,6 +348,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
347
348
|
args: [{ providedIn: 'root' }]
|
|
348
349
|
}], ctorParameters: function () { return [{ type: ResizeObserverFactory }]; } });
|
|
349
350
|
|
|
351
|
+
const routerDisableScrollTop = (config = {}) => {
|
|
352
|
+
if (!config.asReturnRoute) {
|
|
353
|
+
return {
|
|
354
|
+
disableScrollTop: true,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
disableScrollTopAsReturnRoute: true,
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
class RouterStateService {
|
|
362
|
+
get route$() {
|
|
363
|
+
return this._route$.asObservable();
|
|
364
|
+
}
|
|
365
|
+
get state$() {
|
|
366
|
+
return this._state$.asObservable();
|
|
367
|
+
}
|
|
368
|
+
constructor() {
|
|
369
|
+
this._isScrollTopOnNavigationEnabled = false;
|
|
370
|
+
this._router = inject(Router);
|
|
371
|
+
this._route$ = new BehaviorSubject('/');
|
|
372
|
+
this._state$ = new BehaviorSubject({
|
|
373
|
+
title: undefined,
|
|
374
|
+
data: {},
|
|
375
|
+
pathParams: {},
|
|
376
|
+
queryParams: {},
|
|
377
|
+
});
|
|
378
|
+
this._router.events
|
|
379
|
+
.pipe(filter((event) => event instanceof NavigationEnd), distinctUntilChanged((a, b) => a.url === b.url), map((event) => event.url))
|
|
380
|
+
.subscribe(this._route$);
|
|
381
|
+
this._route$
|
|
382
|
+
.pipe(map(() => {
|
|
383
|
+
let route = this._router.routerState.snapshot.root;
|
|
384
|
+
while (route.firstChild) {
|
|
385
|
+
route = route.firstChild;
|
|
386
|
+
}
|
|
387
|
+
const { data, params, queryParams, title } = route;
|
|
388
|
+
return {
|
|
389
|
+
data,
|
|
390
|
+
pathParams: params,
|
|
391
|
+
queryParams,
|
|
392
|
+
title,
|
|
393
|
+
};
|
|
394
|
+
}))
|
|
395
|
+
.subscribe(this._state$);
|
|
396
|
+
}
|
|
397
|
+
enableScrollTopOnNavigation(config = {}) {
|
|
398
|
+
if (this._isScrollTopOnNavigationEnabled) {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
this._isScrollTopOnNavigationEnabled = true;
|
|
402
|
+
this._state$.pipe(pairwise()).subscribe(([oldData, newData]) => {
|
|
403
|
+
var _a;
|
|
404
|
+
if (!(newData.data['disableScrollTopAsReturnRoute'] && oldData.data['disableScrollTop']) &&
|
|
405
|
+
!newData.data['disableScrollTop']) {
|
|
406
|
+
((_a = config.scrollElement) !== null && _a !== void 0 ? _a : document.documentElement).scrollTop = 0;
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
selectQueryParam(key) {
|
|
411
|
+
return this._state$.pipe(map((state) => state.queryParams[key]));
|
|
412
|
+
}
|
|
413
|
+
selectPathParam(key) {
|
|
414
|
+
return this._state$.pipe(map((state) => state.pathParams[key]));
|
|
415
|
+
}
|
|
416
|
+
selectData(key) {
|
|
417
|
+
return this._state$.pipe(map((state) => state.data[key]));
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
RouterStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
421
|
+
RouterStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, providedIn: 'root' });
|
|
422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, decorators: [{
|
|
423
|
+
type: Injectable,
|
|
424
|
+
args: [{
|
|
425
|
+
providedIn: 'root',
|
|
426
|
+
}]
|
|
427
|
+
}], ctorParameters: function () { return []; } });
|
|
428
|
+
|
|
350
429
|
class ViewportService {
|
|
351
430
|
get isXs$() {
|
|
352
431
|
return this._isXs$.asObservable();
|
|
@@ -2046,5 +2125,5 @@ _a = Symbol.iterator;
|
|
|
2046
2125
|
* Generated bundle index. Do not edit.
|
|
2047
2126
|
*/
|
|
2048
2127
|
|
|
2049
|
-
export { ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, LetContext, LetDirective, Memo, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ViewportService, clamp, clone, createReactiveBindings, deleteCookie, elementCanScroll, equal, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, setCookie, toArray, toArrayTrackByFn };
|
|
2128
|
+
export { ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, LetContext, LetDirective, Memo, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ViewportService, clamp, clone, createReactiveBindings, deleteCookie, elementCanScroll, equal, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, setCookie, toArray, toArrayTrackByFn };
|
|
2050
2129
|
//# sourceMappingURL=ethlete-core.mjs.map
|