@abp/ng.core 5.0.0-rc.1 → 5.0.2
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/abp-ng.core.d.ts +5 -5
- package/bundles/abp-ng.core-locale.umd.js +361 -361
- package/bundles/abp-ng.core-locale.umd.js.map +1 -1
- package/bundles/abp-ng.core-testing.umd.js +442 -442
- package/bundles/abp-ng.core.umd.js +4873 -4860
- package/bundles/abp-ng.core.umd.js.map +1 -1
- package/esm2015/abp-ng.core.js +4 -4
- package/esm2015/lib/abstracts/index.js +1 -1
- package/esm2015/lib/abstracts/ng-model.component.js +58 -58
- package/esm2015/lib/components/dynamic-layout.component.js +89 -99
- package/esm2015/lib/components/index.js +3 -3
- package/esm2015/lib/components/replaceable-route-container.component.js +37 -37
- package/esm2015/lib/components/router-outlet.component.js +14 -14
- package/esm2015/lib/constants/different-locales.js +336 -336
- package/esm2015/lib/constants/index.js +1 -1
- package/esm2015/lib/core.module.js +280 -280
- package/esm2015/lib/directives/autofocus.directive.js +29 -29
- package/esm2015/lib/directives/debounce.directive.js +35 -35
- package/esm2015/lib/directives/for.directive.js +150 -150
- package/esm2015/lib/directives/form-submit.directive.js +68 -68
- package/esm2015/lib/directives/index.js +8 -8
- package/esm2015/lib/directives/init.directive.js +20 -20
- package/esm2015/lib/directives/permission.directive.js +47 -47
- package/esm2015/lib/directives/replaceable-template.directive.js +120 -120
- package/esm2015/lib/directives/stop-propagation.directive.js +31 -31
- package/esm2015/lib/enums/common.js +1 -1
- package/esm2015/lib/enums/index.js +1 -1
- package/esm2015/lib/guards/auth.guard.js +28 -28
- package/esm2015/lib/guards/index.js +2 -2
- package/esm2015/lib/guards/permission.guard.js +43 -43
- package/esm2015/lib/handlers/oauth-configuration.handler.js +36 -36
- package/esm2015/lib/handlers/routes.handler.js +46 -46
- package/esm2015/lib/interceptors/api.interceptor.js +53 -53
- package/esm2015/lib/interceptors/index.js +1 -1
- package/esm2015/lib/localization.module.js +15 -15
- package/esm2015/lib/models/auth.js +1 -1
- package/esm2015/lib/models/common.js +1 -1
- package/esm2015/lib/models/dtos.js +118 -118
- package/esm2015/lib/models/environment.js +1 -1
- package/esm2015/lib/models/index.js +9 -9
- package/esm2015/lib/models/localization.js +1 -1
- package/esm2015/lib/models/replaceable-components.js +1 -1
- package/esm2015/lib/models/rest.js +2 -2
- package/esm2015/lib/models/session.js +1 -1
- package/esm2015/lib/models/utility.js +1 -1
- package/esm2015/lib/pipes/index.js +2 -2
- package/esm2015/lib/pipes/localization.pipe.js +32 -32
- package/esm2015/lib/pipes/sort.pipe.js +48 -48
- package/esm2015/lib/providers/cookie-language.provider.js +21 -21
- package/esm2015/lib/providers/locale.provider.js +21 -21
- package/esm2015/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.js +28 -28
- package/esm2015/lib/proxy/pages/abp/multi-tenancy/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.js +23 -23
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.js +24 -24
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.js +4 -4
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.js +2 -2
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/http/modeling/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/http/modeling/models.js +2 -2
- package/esm2015/lib/proxy/volo/abp/localization/index.js +1 -1
- package/esm2015/lib/proxy/volo/abp/localization/models.js +1 -1
- package/esm2015/lib/proxy/volo/abp/models.js +1 -1
- package/esm2015/lib/services/auth.service.js +46 -46
- package/esm2015/lib/services/config-state.service.js +129 -129
- package/esm2015/lib/services/content-projection.service.js +16 -16
- package/esm2015/lib/services/dom-insertion.service.js +31 -31
- package/esm2015/lib/services/environment.service.js +34 -34
- package/esm2015/lib/services/http-error-reporter.service.js +28 -28
- package/esm2015/lib/services/http-wait.service.js +71 -71
- package/esm2015/lib/services/index.js +21 -21
- package/esm2015/lib/services/lazy-load.service.js +37 -37
- package/esm2015/lib/services/list.service.js +102 -102
- package/esm2015/lib/services/localization.service.js +181 -181
- package/esm2015/lib/services/multi-tenancy.service.js +47 -47
- package/esm2015/lib/services/permission.service.js +63 -63
- package/esm2015/lib/services/replaceable-components.service.js +48 -48
- package/esm2015/lib/services/resource-wait.service.js +38 -38
- package/esm2015/lib/services/rest.service.js +63 -59
- package/esm2015/lib/services/router-events.service.js +37 -37
- package/esm2015/lib/services/router-wait.service.js +50 -50
- package/esm2015/lib/services/routes.service.js +146 -146
- package/esm2015/lib/services/session-state.service.js +75 -75
- package/esm2015/lib/services/subscription.service.js +40 -40
- package/esm2015/lib/services/track-by.service.js +20 -20
- package/esm2015/lib/strategies/auth-flow.strategy.js +201 -201
- package/esm2015/lib/strategies/container.strategy.js +37 -37
- package/esm2015/lib/strategies/content-security.strategy.js +27 -27
- package/esm2015/lib/strategies/content.strategy.js +47 -47
- package/esm2015/lib/strategies/context.strategy.js +36 -36
- package/esm2015/lib/strategies/cross-origin.strategy.js +25 -25
- package/esm2015/lib/strategies/dom.strategy.js +26 -26
- package/esm2015/lib/strategies/index.js +8 -8
- package/esm2015/lib/strategies/loading.strategy.js +57 -57
- package/esm2015/lib/strategies/projection.strategy.js +79 -79
- package/esm2015/lib/tokens/app-config.token.js +2 -2
- package/esm2015/lib/tokens/cookie-language-key.token.js +4 -4
- package/esm2015/lib/tokens/index.js +8 -8
- package/esm2015/lib/tokens/list.token.js +2 -2
- package/esm2015/lib/tokens/localization.token.js +9 -9
- package/esm2015/lib/tokens/lodaer-delay.token.js +2 -2
- package/esm2015/lib/tokens/manage-profile.token.js +11 -11
- package/esm2015/lib/tokens/options.token.js +7 -7
- package/esm2015/lib/tokens/tenant-key.token.js +2 -2
- package/esm2015/lib/utils/array-utils.js +6 -6
- package/esm2015/lib/utils/auth-utils.js +41 -41
- package/esm2015/lib/utils/common-utils.js +28 -28
- package/esm2015/lib/utils/date-extensions.js +5 -5
- package/esm2015/lib/utils/date-utils.js +12 -12
- package/esm2015/lib/utils/environment-utils.js +35 -35
- package/esm2015/lib/utils/factory-utils.js +23 -23
- package/esm2015/lib/utils/file-utils.js +13 -13
- package/esm2015/lib/utils/form-utils.js +11 -11
- package/esm2015/lib/utils/generator-utils.js +33 -33
- package/esm2015/lib/utils/http-utils.js +18 -18
- package/esm2015/lib/utils/index.js +20 -20
- package/esm2015/lib/utils/initial-utils.js +63 -63
- package/esm2015/lib/utils/internal-store-utils.js +35 -35
- package/esm2015/lib/utils/lazy-load-utils.js +39 -39
- package/esm2015/lib/utils/localization-utils.js +49 -49
- package/esm2015/lib/utils/multi-tenancy-utils.js +82 -82
- package/esm2015/lib/utils/number-utils.js +3 -3
- package/esm2015/lib/utils/object-utils.js +36 -36
- package/esm2015/lib/utils/route-utils.js +26 -26
- package/esm2015/lib/utils/string-utils.js +25 -21
- package/esm2015/lib/utils/tree-utils.js +53 -53
- package/esm2015/lib/validators/age.validator.js +13 -13
- package/esm2015/lib/validators/credit-card.validator.js +20 -20
- package/esm2015/lib/validators/index.js +22 -22
- package/esm2015/lib/validators/range.validator.js +14 -14
- package/esm2015/lib/validators/required.validator.js +12 -12
- package/esm2015/lib/validators/string-length.validator.js +14 -14
- package/esm2015/lib/validators/url.validator.js +15 -15
- package/esm2015/locale/abp-ng.core-locale.js +4 -4
- package/esm2015/locale/public-api.js +1 -1
- package/esm2015/locale/utils/register-locale.js +43 -43
- package/esm2015/public-api.js +25 -25
- package/esm2015/testing/abp-ng.core-testing.js +4 -4
- package/esm2015/testing/lib/core-testing.module.js +61 -61
- package/esm2015/testing/lib/services/index.js +2 -2
- package/esm2015/testing/lib/services/mock-permission.service.js +34 -34
- package/esm2015/testing/lib/services/mock-rest.service.js +29 -29
- package/esm2015/testing/lib/utils/clear-page.util.js +9 -9
- package/esm2015/testing/lib/utils/index.js +2 -2
- package/esm2015/testing/lib/utils/wait.util.js +4 -4
- package/esm2015/testing/public-api.js +3 -3
- package/fesm2015/abp-ng.core-locale.js +40 -40
- package/fesm2015/abp-ng.core-locale.js.map +1 -1
- package/fesm2015/abp-ng.core-testing.js +113 -113
- package/fesm2015/abp-ng.core.js +3976 -3977
- package/fesm2015/abp-ng.core.js.map +1 -1
- package/lib/abstracts/index.d.ts +1 -1
- package/lib/abstracts/ng-model.component.d.ts +25 -25
- package/lib/components/dynamic-layout.component.d.ts +27 -27
- package/lib/components/index.d.ts +3 -3
- package/lib/components/replaceable-route-container.component.d.ts +17 -17
- package/lib/components/router-outlet.component.d.ts +5 -5
- package/lib/constants/different-locales.d.ts +334 -334
- package/lib/constants/index.d.ts +1 -1
- package/lib/core.module.d.ts +56 -56
- package/lib/directives/autofocus.directive.d.ts +12 -12
- package/lib/directives/debounce.directive.d.ts +13 -13
- package/lib/directives/for.directive.d.ts +36 -36
- package/lib/directives/form-submit.directive.d.ts +19 -19
- package/lib/directives/index.d.ts +8 -8
- package/lib/directives/init.directive.d.ts +10 -10
- package/lib/directives/permission.directive.d.ts +18 -18
- package/lib/directives/replaceable-template.directive.d.ts +30 -30
- package/lib/directives/stop-propagation.directive.d.ts +12 -12
- package/lib/enums/common.d.ts +5 -5
- package/lib/enums/index.d.ts +1 -1
- package/lib/guards/auth.guard.d.ts +13 -13
- package/lib/guards/index.d.ts +2 -2
- package/lib/guards/permission.guard.d.ts +16 -16
- package/lib/handlers/oauth-configuration.handler.d.ts +13 -13
- package/lib/handlers/routes.handler.d.ts +11 -11
- package/lib/interceptors/api.interceptor.d.ts +16 -16
- package/lib/interceptors/index.d.ts +1 -1
- package/lib/localization.module.d.ts +7 -7
- package/lib/models/auth.d.ts +6 -6
- package/lib/models/common.d.ts +77 -77
- package/lib/models/dtos.d.ts +95 -95
- package/lib/models/environment.d.ts +35 -35
- package/lib/models/index.d.ts +9 -9
- package/lib/models/localization.d.ts +5 -5
- package/lib/models/replaceable-components.d.ts +45 -45
- package/lib/models/rest.d.ts +35 -33
- package/lib/models/session.d.ts +7 -7
- package/lib/models/utility.d.ts +14 -14
- package/lib/pipes/index.d.ts +2 -2
- package/lib/pipes/localization.pipe.d.ts +12 -12
- package/lib/pipes/sort.pipe.d.ts +9 -9
- package/lib/providers/cookie-language.provider.d.ts +3 -3
- package/lib/providers/locale.provider.d.ts +9 -9
- package/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.d.ts +12 -12
- package/lib/proxy/pages/abp/multi-tenancy/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.d.ts +11 -11
- package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.d.ts +11 -11
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.d.ts +4 -4
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.d.ts +85 -85
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.d.ts +71 -71
- package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.d.ts +1 -1
- package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.d.ts +14 -14
- package/lib/proxy/volo/abp/http/modeling/index.d.ts +1 -1
- package/lib/proxy/volo/abp/http/modeling/models.d.ts +70 -70
- package/lib/proxy/volo/abp/localization/index.d.ts +1 -1
- package/lib/proxy/volo/abp/localization/models.d.ts +6 -6
- package/lib/proxy/volo/abp/models.d.ts +4 -4
- package/lib/services/auth.service.d.ts +17 -17
- package/lib/services/config-state.service.d.ts +339 -339
- package/lib/services/content-projection.service.d.ts +10 -10
- package/lib/services/dom-insertion.service.d.ts +10 -10
- package/lib/services/environment.service.d.ts +96 -96
- package/lib/services/http-error-reporter.service.d.ts +12 -12
- package/lib/services/http-wait.service.d.ts +30 -30
- package/lib/services/index.d.ts +21 -21
- package/lib/services/lazy-load.service.d.ts +13 -13
- package/lib/services/list.service.d.ts +39 -39
- package/lib/services/localization.service.d.ts +47 -47
- package/lib/services/multi-tenancy.service.d.ts +22 -22
- package/lib/services/permission.service.d.ts +19 -19
- package/lib/services/replaceable-components.service.d.ts +19 -19
- package/lib/services/resource-wait.service.d.ts +15 -15
- package/lib/services/rest.service.d.ts +20 -19
- package/lib/services/router-events.service.d.ts +29 -29
- package/lib/services/router-wait.service.d.ts +20 -20
- package/lib/services/routes.service.d.ts +50 -50
- package/lib/services/session-state.service.d.ts +25 -25
- package/lib/services/subscription.service.d.ts +17 -17
- package/lib/services/track-by.service.d.ts +11 -11
- package/lib/strategies/auth-flow.strategy.d.ts +367 -367
- package/lib/strategies/container.strategy.d.ts +22 -22
- package/lib/strategies/content-security.strategy.d.ts +17 -17
- package/lib/strategies/content.strategy.d.ts +26 -26
- package/lib/strategies/context.strategy.d.ts +23 -23
- package/lib/strategies/cross-origin.strategy.d.ts +14 -14
- package/lib/strategies/dom.strategy.d.ts +13 -13
- package/lib/strategies/index.d.ts +8 -8
- package/lib/strategies/loading.strategy.d.ts +28 -28
- package/lib/strategies/projection.strategy.d.ts +39 -39
- package/lib/tokens/app-config.token.d.ts +3 -3
- package/lib/tokens/cookie-language-key.token.d.ts +2 -2
- package/lib/tokens/index.d.ts +8 -8
- package/lib/tokens/list.token.d.ts +2 -2
- package/lib/tokens/localization.token.d.ts +6 -6
- package/lib/tokens/lodaer-delay.token.d.ts +2 -2
- package/lib/tokens/manage-profile.token.d.ts +2 -2
- package/lib/tokens/options.token.d.ts +4 -4
- package/lib/tokens/tenant-key.token.d.ts +2 -2
- package/lib/utils/array-utils.d.ts +1 -1
- package/lib/utils/auth-utils.d.ts +162 -162
- package/lib/utils/common-utils.d.ts +9 -9
- package/lib/utils/date-extensions.d.ts +6 -6
- package/lib/utils/date-utils.d.ts +4 -4
- package/lib/utils/environment-utils.d.ts +3 -3
- package/lib/utils/factory-utils.d.ts +9 -9
- package/lib/utils/file-utils.d.ts +1 -1
- package/lib/utils/form-utils.d.ts +2 -2
- package/lib/utils/generator-utils.d.ts +3 -3
- package/lib/utils/http-utils.d.ts +8 -8
- package/lib/utils/index.d.ts +20 -20
- package/lib/utils/initial-utils.d.ts +159 -159
- package/lib/utils/internal-store-utils.d.ts +14 -14
- package/lib/utils/lazy-load-utils.d.ts +4 -4
- package/lib/utils/localization-utils.d.ts +5 -5
- package/lib/utils/multi-tenancy-utils.d.ts +3 -3
- package/lib/utils/number-utils.d.ts +1 -1
- package/lib/utils/object-utils.d.ts +1 -1
- package/lib/utils/route-utils.d.ts +8 -8
- package/lib/utils/string-utils.d.ts +3 -2
- package/lib/utils/tree-utils.d.ts +19 -19
- package/lib/validators/age.validator.d.ts +10 -10
- package/lib/validators/credit-card.validator.d.ts +5 -5
- package/lib/validators/index.d.ts +22 -22
- package/lib/validators/range.validator.d.ts +12 -12
- package/lib/validators/required.validator.d.ts +8 -8
- package/lib/validators/string-length.validator.d.ts +14 -14
- package/lib/validators/url.validator.d.ts +5 -5
- package/locale/abp-ng.core-locale.d.ts +5 -5
- package/locale/public-api.d.ts +1 -1
- package/locale/utils/register-locale.d.ts +13 -13
- package/package.json +2 -2
- package/public-api.d.ts +24 -24
- package/testing/abp-ng.core-testing.d.ts +5 -5
- package/testing/lib/core-testing.module.d.ts +16 -16
- package/testing/lib/services/index.d.ts +2 -2
- package/testing/lib/services/mock-permission.service.d.ts +10 -10
- package/testing/lib/services/mock-rest.service.d.ts +13 -13
- package/testing/lib/utils/clear-page.util.d.ts +2 -2
- package/testing/lib/utils/index.d.ts +2 -2
- package/testing/lib/utils/wait.util.d.ts +2 -2
- package/testing/public-api.d.ts +3 -3
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { Injectable, Injector } from '@angular/core';
|
|
2
|
-
import { NavigationStart } from '@angular/router';
|
|
3
|
-
import { of, Subject, timer } from 'rxjs';
|
|
4
|
-
import { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
5
|
-
import { LOADER_DELAY } from '../tokens/lodaer-delay.token';
|
|
6
|
-
import { InternalStore } from '../utils/internal-store-utils';
|
|
7
|
-
import { RouterEvents } from './router-events.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./router-events.service";
|
|
10
|
-
export class RouterWaitService {
|
|
11
|
-
constructor(routerEvents, injector) {
|
|
12
|
-
this.routerEvents = routerEvents;
|
|
13
|
-
this.store = new InternalStore({ loading: false });
|
|
14
|
-
this.destroy$ = new Subject();
|
|
15
|
-
this.delay = injector.get(LOADER_DELAY, 500);
|
|
16
|
-
this.updateLoadingStatusOnNavigationEvents();
|
|
17
|
-
}
|
|
18
|
-
updateLoadingStatusOnNavigationEvents() {
|
|
19
|
-
this.routerEvents
|
|
20
|
-
.getAllNavigationEvents()
|
|
21
|
-
.pipe(map(event => event instanceof NavigationStart), switchMap(condition => condition
|
|
22
|
-
? this.delay === 0
|
|
23
|
-
? of(true)
|
|
24
|
-
: timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))
|
|
25
|
-
: of(false)), tap(() => this.destroy$.next()))
|
|
26
|
-
.subscribe(status => {
|
|
27
|
-
this.setLoading(status);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
getLoading() {
|
|
31
|
-
return this.store.state.loading;
|
|
32
|
-
}
|
|
33
|
-
getLoading$() {
|
|
34
|
-
return this.store.sliceState(({ loading }) => loading);
|
|
35
|
-
}
|
|
36
|
-
updateLoading$() {
|
|
37
|
-
return this.store.sliceUpdate(({ loading }) => loading);
|
|
38
|
-
}
|
|
39
|
-
setLoading(loading) {
|
|
40
|
-
this.store.patch({ loading });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
RouterWaitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RouterWaitService, deps: [{ token: i1.RouterEvents }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
-
RouterWaitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RouterWaitService, providedIn: 'root' });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RouterWaitService, decorators: [{
|
|
46
|
-
type: Injectable,
|
|
47
|
-
args: [{
|
|
48
|
-
providedIn: 'root',
|
|
49
|
-
}]
|
|
50
|
-
}], ctorParameters: function () { return [{ type: i1.RouterEvents }, { type: i0.Injector }]; } });
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { NavigationStart } from '@angular/router';
|
|
3
|
+
import { of, Subject, timer } from 'rxjs';
|
|
4
|
+
import { map, mapTo, switchMap, takeUntil, tap } from 'rxjs/operators';
|
|
5
|
+
import { LOADER_DELAY } from '../tokens/lodaer-delay.token';
|
|
6
|
+
import { InternalStore } from '../utils/internal-store-utils';
|
|
7
|
+
import { RouterEvents } from './router-events.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./router-events.service";
|
|
10
|
+
export class RouterWaitService {
|
|
11
|
+
constructor(routerEvents, injector) {
|
|
12
|
+
this.routerEvents = routerEvents;
|
|
13
|
+
this.store = new InternalStore({ loading: false });
|
|
14
|
+
this.destroy$ = new Subject();
|
|
15
|
+
this.delay = injector.get(LOADER_DELAY, 500);
|
|
16
|
+
this.updateLoadingStatusOnNavigationEvents();
|
|
17
|
+
}
|
|
18
|
+
updateLoadingStatusOnNavigationEvents() {
|
|
19
|
+
this.routerEvents
|
|
20
|
+
.getAllNavigationEvents()
|
|
21
|
+
.pipe(map(event => event instanceof NavigationStart), switchMap(condition => condition
|
|
22
|
+
? this.delay === 0
|
|
23
|
+
? of(true)
|
|
24
|
+
: timer(this.delay || 0).pipe(mapTo(true), takeUntil(this.destroy$))
|
|
25
|
+
: of(false)), tap(() => this.destroy$.next()))
|
|
26
|
+
.subscribe(status => {
|
|
27
|
+
this.setLoading(status);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
getLoading() {
|
|
31
|
+
return this.store.state.loading;
|
|
32
|
+
}
|
|
33
|
+
getLoading$() {
|
|
34
|
+
return this.store.sliceState(({ loading }) => loading);
|
|
35
|
+
}
|
|
36
|
+
updateLoading$() {
|
|
37
|
+
return this.store.sliceUpdate(({ loading }) => loading);
|
|
38
|
+
}
|
|
39
|
+
setLoading(loading) {
|
|
40
|
+
this.store.patch({ loading });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
RouterWaitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RouterWaitService, deps: [{ token: i1.RouterEvents }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
RouterWaitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RouterWaitService, providedIn: 'root' });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RouterWaitService, decorators: [{
|
|
46
|
+
type: Injectable,
|
|
47
|
+
args: [{
|
|
48
|
+
providedIn: 'root',
|
|
49
|
+
}]
|
|
50
|
+
}], ctorParameters: function () { return [{ type: i1.RouterEvents }, { type: i0.Injector }]; } });
|
|
51
51
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXdhaXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9yb3V0ZXItd2FpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBU3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBb0IsWUFBMEIsRUFBRSxRQUFrQjtRQUE5QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUh0QyxVQUFLLEdBQUcsSUFBSSxhQUFhLENBQWtCLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFHL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8scUNBQXFDO1FBQzNDLElBQUksQ0FBQyxZQUFZO2FBQ2Qsc0JBQXNCLEVBQUU7YUFDeEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsRUFDOUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3BCLFNBQVM7WUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO2dCQUNoQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDVixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ2QsRUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUNoQzthQUNBLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDOzsrR0ExQ1UsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBvZiwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWFwVG8sIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMT0FERVJfREVMQVkgfSBmcm9tICcuLi90b2tlbnMvbG9kYWVyLWRlbGF5LnRva2VuJztcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XG5pbXBvcnQgeyBSb3V0ZXJFdmVudHMgfSBmcm9tICcuL3JvdXRlci1ldmVudHMuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVyV2FpdFN0YXRlIHtcbiAgbG9hZGluZzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlcldhaXRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlPFJvdXRlcldhaXRTdGF0ZT4oeyBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgZGVsYXk6IG51bWJlcjtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXJFdmVudHM6IFJvdXRlckV2ZW50cywgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5kZWxheSA9IGluamVjdG9yLmdldChMT0FERVJfREVMQVksIDUwMCk7XG4gICAgdGhpcy51cGRhdGVMb2FkaW5nU3RhdHVzT25OYXZpZ2F0aW9uRXZlbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxvYWRpbmdTdGF0dXNPbk5hdmlnYXRpb25FdmVudHMoKSB7XG4gICAgdGhpcy5yb3V0ZXJFdmVudHNcbiAgICAgIC5nZXRBbGxOYXZpZ2F0aW9uRXZlbnRzKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgICAgICBzd2l0Y2hNYXAoY29uZGl0aW9uID0+XG4gICAgICAgICAgY29uZGl0aW9uXG4gICAgICAgICAgICA/IHRoaXMuZGVsYXkgPT09IDBcbiAgICAgICAgICAgICAgPyBvZih0cnVlKVxuICAgICAgICAgICAgICA6IHRpbWVyKHRoaXMuZGVsYXkgfHwgMCkucGlwZShtYXBUbyh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgOiBvZihmYWxzZSksXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmRlc3Ryb3kkLm5leHQoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyhzdGF0dXMpO1xuICAgICAgfSk7XG4gIH1cblxuICBnZXRMb2FkaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLmxvYWRpbmc7XG4gIH1cblxuICBnZXRMb2FkaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKCh7IGxvYWRpbmcgfSkgPT4gbG9hZGluZyk7XG4gIH1cblxuICB1cGRhdGVMb2FkaW5nJCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVVwZGF0ZSgoeyBsb2FkaW5nIH0pID0+IGxvYWRpbmcpO1xuICB9XG5cbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IGxvYWRpbmcgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
import { Injectable, Injector } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { pushValueTo } from '../utils/array-utils';
|
|
4
|
-
import { BaseTreeNode, createTreeFromList } from '../utils/tree-utils';
|
|
5
|
-
import { ConfigStateService } from './config-state.service';
|
|
6
|
-
import { PermissionService } from './permission.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
9
|
-
export class AbstractTreeService {
|
|
10
|
-
constructor() {
|
|
11
|
-
this._flat$ = new BehaviorSubject([]);
|
|
12
|
-
this._tree$ = new BehaviorSubject([]);
|
|
13
|
-
this._visible$ = new BehaviorSubject([]);
|
|
14
|
-
}
|
|
15
|
-
get flat() {
|
|
16
|
-
return this._flat$.value;
|
|
17
|
-
}
|
|
18
|
-
get flat$() {
|
|
19
|
-
return this._flat$.asObservable();
|
|
20
|
-
}
|
|
21
|
-
get tree() {
|
|
22
|
-
return this._tree$.value;
|
|
23
|
-
}
|
|
24
|
-
get tree$() {
|
|
25
|
-
return this._tree$.asObservable();
|
|
26
|
-
}
|
|
27
|
-
get visible() {
|
|
28
|
-
return this._visible$.value;
|
|
29
|
-
}
|
|
30
|
-
get visible$() {
|
|
31
|
-
return this._visible$.asObservable();
|
|
32
|
-
}
|
|
33
|
-
createTree(items) {
|
|
34
|
-
return createTreeFromList(items, item => item[this.id], item => item[this.parentId], item => BaseTreeNode.create(item));
|
|
35
|
-
}
|
|
36
|
-
filterWith(setOrMap) {
|
|
37
|
-
return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));
|
|
38
|
-
}
|
|
39
|
-
findItemsToRemove(set) {
|
|
40
|
-
return this._flat$.value.reduce((acc, item) => {
|
|
41
|
-
if (!acc.has(item[this.parentId]))
|
|
42
|
-
return acc;
|
|
43
|
-
const childSet = new Set([item[this.id]]);
|
|
44
|
-
const children = this.findItemsToRemove(childSet);
|
|
45
|
-
return new Set([...acc, ...children]);
|
|
46
|
-
}, set);
|
|
47
|
-
}
|
|
48
|
-
publish(flatItems, visibleItems) {
|
|
49
|
-
this._flat$.next(flatItems);
|
|
50
|
-
this._tree$.next(this.createTree(flatItems));
|
|
51
|
-
this._visible$.next(this.createTree(visibleItems));
|
|
52
|
-
return flatItems;
|
|
53
|
-
}
|
|
54
|
-
add(items) {
|
|
55
|
-
const map = new Map();
|
|
56
|
-
items.forEach(item => map.set(item[this.id], item));
|
|
57
|
-
const flatItems = this.filterWith(map);
|
|
58
|
-
map.forEach(pushValueTo(flatItems));
|
|
59
|
-
flatItems.sort(this.sort);
|
|
60
|
-
const visibleItems = flatItems.filter(item => !this.hide(item));
|
|
61
|
-
return this.publish(flatItems, visibleItems);
|
|
62
|
-
}
|
|
63
|
-
find(predicate, tree = this.tree) {
|
|
64
|
-
return tree.reduce((acc, node) => (acc ? acc : predicate(node) ? node : this.find(predicate, node.children)), null);
|
|
65
|
-
}
|
|
66
|
-
patch(identifier, props) {
|
|
67
|
-
const flatItems = this._flat$.value;
|
|
68
|
-
const index = flatItems.findIndex(item => item[this.id] === identifier);
|
|
69
|
-
if (index < 0)
|
|
70
|
-
return false;
|
|
71
|
-
flatItems[index] = Object.assign(Object.assign({}, flatItems[index]), props);
|
|
72
|
-
flatItems.sort(this.sort);
|
|
73
|
-
const visibleItems = flatItems.filter(item => !this.hide(item));
|
|
74
|
-
return this.publish(flatItems, visibleItems);
|
|
75
|
-
}
|
|
76
|
-
refresh() {
|
|
77
|
-
return this.add([]);
|
|
78
|
-
}
|
|
79
|
-
remove(identifiers) {
|
|
80
|
-
const set = new Set();
|
|
81
|
-
identifiers.forEach(id => set.add(id));
|
|
82
|
-
const setToRemove = this.findItemsToRemove(set);
|
|
83
|
-
const flatItems = this.filterWith(setToRemove);
|
|
84
|
-
const visibleItems = flatItems.filter(item => !this.hide(item));
|
|
85
|
-
return this.publish(flatItems, visibleItems);
|
|
86
|
-
}
|
|
87
|
-
search(params, tree = this.tree) {
|
|
88
|
-
const searchKeys = Object.keys(params);
|
|
89
|
-
return tree.reduce((acc, node) => acc
|
|
90
|
-
? acc
|
|
91
|
-
: searchKeys.every(key => node[key] === params[key])
|
|
92
|
-
? node
|
|
93
|
-
: this.search(params, node.children), null);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
export class AbstractNavTreeService extends AbstractTreeService {
|
|
97
|
-
constructor(injector) {
|
|
98
|
-
super();
|
|
99
|
-
this.injector = injector;
|
|
100
|
-
this.id = 'name';
|
|
101
|
-
this.parentId = 'parentName';
|
|
102
|
-
this.hide = (item) => item.invisible || !this.isGranted(item);
|
|
103
|
-
this.sort = (a, b) => {
|
|
104
|
-
if (!Number.isInteger(a.order))
|
|
105
|
-
return 1;
|
|
106
|
-
if (!Number.isInteger(b.order))
|
|
107
|
-
return -1;
|
|
108
|
-
return a.order - b.order;
|
|
109
|
-
};
|
|
110
|
-
const configState = this.injector.get(ConfigStateService);
|
|
111
|
-
this.subscription = configState
|
|
112
|
-
.createOnUpdateStream(state => state)
|
|
113
|
-
.subscribe(() => this.refresh());
|
|
114
|
-
this.permissionService = injector.get(PermissionService);
|
|
115
|
-
}
|
|
116
|
-
isGranted({ requiredPolicy }) {
|
|
117
|
-
return this.permissionService.getGrantedPolicy(requiredPolicy);
|
|
118
|
-
}
|
|
119
|
-
hasChildren(identifier) {
|
|
120
|
-
var _a;
|
|
121
|
-
const node = this.find(item => item[this.id] === identifier);
|
|
122
|
-
return Boolean((_a = node === null || node === void 0 ? void 0 : node.children) === null || _a === void 0 ? void 0 : _a.length);
|
|
123
|
-
}
|
|
124
|
-
hasInvisibleChild(identifier) {
|
|
125
|
-
var _a;
|
|
126
|
-
const node = this.find(item => item[this.id] === identifier);
|
|
127
|
-
return (_a = node === null || node === void 0 ? void 0 : node.children) === null || _a === void 0 ? void 0 : _a.some(child => child.invisible);
|
|
128
|
-
}
|
|
129
|
-
/* istanbul ignore next */
|
|
130
|
-
ngOnDestroy() {
|
|
131
|
-
this.subscription.unsubscribe();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
AbstractNavTreeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AbstractNavTreeService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
135
|
-
AbstractNavTreeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AbstractNavTreeService });
|
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AbstractNavTreeService, decorators: [{
|
|
137
|
-
type: Injectable
|
|
138
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
139
|
-
export class RoutesService extends AbstractNavTreeService {
|
|
140
|
-
}
|
|
141
|
-
RoutesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
142
|
-
RoutesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesService, providedIn: 'root' });
|
|
143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesService, decorators: [{
|
|
144
|
-
type: Injectable,
|
|
145
|
-
args: [{ providedIn: 'root' }]
|
|
146
|
-
}] });
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { pushValueTo } from '../utils/array-utils';
|
|
4
|
+
import { BaseTreeNode, createTreeFromList } from '../utils/tree-utils';
|
|
5
|
+
import { ConfigStateService } from './config-state.service';
|
|
6
|
+
import { PermissionService } from './permission.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
9
|
+
export class AbstractTreeService {
|
|
10
|
+
constructor() {
|
|
11
|
+
this._flat$ = new BehaviorSubject([]);
|
|
12
|
+
this._tree$ = new BehaviorSubject([]);
|
|
13
|
+
this._visible$ = new BehaviorSubject([]);
|
|
14
|
+
}
|
|
15
|
+
get flat() {
|
|
16
|
+
return this._flat$.value;
|
|
17
|
+
}
|
|
18
|
+
get flat$() {
|
|
19
|
+
return this._flat$.asObservable();
|
|
20
|
+
}
|
|
21
|
+
get tree() {
|
|
22
|
+
return this._tree$.value;
|
|
23
|
+
}
|
|
24
|
+
get tree$() {
|
|
25
|
+
return this._tree$.asObservable();
|
|
26
|
+
}
|
|
27
|
+
get visible() {
|
|
28
|
+
return this._visible$.value;
|
|
29
|
+
}
|
|
30
|
+
get visible$() {
|
|
31
|
+
return this._visible$.asObservable();
|
|
32
|
+
}
|
|
33
|
+
createTree(items) {
|
|
34
|
+
return createTreeFromList(items, item => item[this.id], item => item[this.parentId], item => BaseTreeNode.create(item));
|
|
35
|
+
}
|
|
36
|
+
filterWith(setOrMap) {
|
|
37
|
+
return this._flat$.value.filter(item => !setOrMap.has(item[this.id]));
|
|
38
|
+
}
|
|
39
|
+
findItemsToRemove(set) {
|
|
40
|
+
return this._flat$.value.reduce((acc, item) => {
|
|
41
|
+
if (!acc.has(item[this.parentId]))
|
|
42
|
+
return acc;
|
|
43
|
+
const childSet = new Set([item[this.id]]);
|
|
44
|
+
const children = this.findItemsToRemove(childSet);
|
|
45
|
+
return new Set([...acc, ...children]);
|
|
46
|
+
}, set);
|
|
47
|
+
}
|
|
48
|
+
publish(flatItems, visibleItems) {
|
|
49
|
+
this._flat$.next(flatItems);
|
|
50
|
+
this._tree$.next(this.createTree(flatItems));
|
|
51
|
+
this._visible$.next(this.createTree(visibleItems));
|
|
52
|
+
return flatItems;
|
|
53
|
+
}
|
|
54
|
+
add(items) {
|
|
55
|
+
const map = new Map();
|
|
56
|
+
items.forEach(item => map.set(item[this.id], item));
|
|
57
|
+
const flatItems = this.filterWith(map);
|
|
58
|
+
map.forEach(pushValueTo(flatItems));
|
|
59
|
+
flatItems.sort(this.sort);
|
|
60
|
+
const visibleItems = flatItems.filter(item => !this.hide(item));
|
|
61
|
+
return this.publish(flatItems, visibleItems);
|
|
62
|
+
}
|
|
63
|
+
find(predicate, tree = this.tree) {
|
|
64
|
+
return tree.reduce((acc, node) => (acc ? acc : predicate(node) ? node : this.find(predicate, node.children)), null);
|
|
65
|
+
}
|
|
66
|
+
patch(identifier, props) {
|
|
67
|
+
const flatItems = this._flat$.value;
|
|
68
|
+
const index = flatItems.findIndex(item => item[this.id] === identifier);
|
|
69
|
+
if (index < 0)
|
|
70
|
+
return false;
|
|
71
|
+
flatItems[index] = Object.assign(Object.assign({}, flatItems[index]), props);
|
|
72
|
+
flatItems.sort(this.sort);
|
|
73
|
+
const visibleItems = flatItems.filter(item => !this.hide(item));
|
|
74
|
+
return this.publish(flatItems, visibleItems);
|
|
75
|
+
}
|
|
76
|
+
refresh() {
|
|
77
|
+
return this.add([]);
|
|
78
|
+
}
|
|
79
|
+
remove(identifiers) {
|
|
80
|
+
const set = new Set();
|
|
81
|
+
identifiers.forEach(id => set.add(id));
|
|
82
|
+
const setToRemove = this.findItemsToRemove(set);
|
|
83
|
+
const flatItems = this.filterWith(setToRemove);
|
|
84
|
+
const visibleItems = flatItems.filter(item => !this.hide(item));
|
|
85
|
+
return this.publish(flatItems, visibleItems);
|
|
86
|
+
}
|
|
87
|
+
search(params, tree = this.tree) {
|
|
88
|
+
const searchKeys = Object.keys(params);
|
|
89
|
+
return tree.reduce((acc, node) => acc
|
|
90
|
+
? acc
|
|
91
|
+
: searchKeys.every(key => node[key] === params[key])
|
|
92
|
+
? node
|
|
93
|
+
: this.search(params, node.children), null);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export class AbstractNavTreeService extends AbstractTreeService {
|
|
97
|
+
constructor(injector) {
|
|
98
|
+
super();
|
|
99
|
+
this.injector = injector;
|
|
100
|
+
this.id = 'name';
|
|
101
|
+
this.parentId = 'parentName';
|
|
102
|
+
this.hide = (item) => item.invisible || !this.isGranted(item);
|
|
103
|
+
this.sort = (a, b) => {
|
|
104
|
+
if (!Number.isInteger(a.order))
|
|
105
|
+
return 1;
|
|
106
|
+
if (!Number.isInteger(b.order))
|
|
107
|
+
return -1;
|
|
108
|
+
return a.order - b.order;
|
|
109
|
+
};
|
|
110
|
+
const configState = this.injector.get(ConfigStateService);
|
|
111
|
+
this.subscription = configState
|
|
112
|
+
.createOnUpdateStream(state => state)
|
|
113
|
+
.subscribe(() => this.refresh());
|
|
114
|
+
this.permissionService = injector.get(PermissionService);
|
|
115
|
+
}
|
|
116
|
+
isGranted({ requiredPolicy }) {
|
|
117
|
+
return this.permissionService.getGrantedPolicy(requiredPolicy);
|
|
118
|
+
}
|
|
119
|
+
hasChildren(identifier) {
|
|
120
|
+
var _a;
|
|
121
|
+
const node = this.find(item => item[this.id] === identifier);
|
|
122
|
+
return Boolean((_a = node === null || node === void 0 ? void 0 : node.children) === null || _a === void 0 ? void 0 : _a.length);
|
|
123
|
+
}
|
|
124
|
+
hasInvisibleChild(identifier) {
|
|
125
|
+
var _a;
|
|
126
|
+
const node = this.find(item => item[this.id] === identifier);
|
|
127
|
+
return (_a = node === null || node === void 0 ? void 0 : node.children) === null || _a === void 0 ? void 0 : _a.some(child => child.invisible);
|
|
128
|
+
}
|
|
129
|
+
/* istanbul ignore next */
|
|
130
|
+
ngOnDestroy() {
|
|
131
|
+
this.subscription.unsubscribe();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
AbstractNavTreeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AbstractNavTreeService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
135
|
+
AbstractNavTreeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AbstractNavTreeService });
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AbstractNavTreeService, decorators: [{
|
|
137
|
+
type: Injectable
|
|
138
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
139
|
+
export class RoutesService extends AbstractNavTreeService {
|
|
140
|
+
}
|
|
141
|
+
RoutesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
142
|
+
RoutesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesService, providedIn: 'root' });
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: RoutesService, decorators: [{
|
|
144
|
+
type: Injectable,
|
|
145
|
+
args: [{ providedIn: 'root' }]
|
|
146
|
+
}] });
|
|
147
147
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvcm91dGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQVksTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFekQsd0RBQXdEO0FBQ3hELE1BQU0sT0FBZ0IsbUJBQW1CO0lBQXpDO1FBTVUsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDaEQsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFnQixFQUFFLENBQUMsQ0FBQztJQW9IN0QsQ0FBQztJQWxIQyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFUyxVQUFVLENBQUMsS0FBVTtRQUM3QixPQUFPLGtCQUFrQixDQUN2QixLQUFLLEVBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTyxVQUFVLENBQUMsUUFBc0M7UUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQWdCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRU8sT0FBTyxDQUFDLFNBQWMsRUFBRSxZQUFpQjtRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBVTtRQUNaLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFhLENBQUM7UUFDakMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXBELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVwQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQXlDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBQzlELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FDaEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ3pGLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFrQixFQUFFLEtBQWlCO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUU1QixTQUFTLENBQUMsS0FBSyxDQUFDLG1DQUFRLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBSyxLQUFLLENBQUUsQ0FBQztRQUVyRCxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQXFCO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDOUIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWtCLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNaLEdBQUc7WUFDRCxDQUFDLENBQUMsR0FBRztZQUNMLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEMsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFHRCxNQUFNLE9BQWdCLHNCQUNwQixTQUFRLG1CQUFzQjtJQWU5QixZQUFzQixRQUFrQjtRQUN0QyxLQUFLLEVBQUUsQ0FBQztRQURZLGFBQVEsR0FBUixRQUFRLENBQVU7UUFWL0IsT0FBRSxHQUFHLE1BQU0sQ0FBQztRQUNaLGFBQVEsR0FBRyxZQUFZLENBQUM7UUFDeEIsU0FBSSxHQUFHLENBQUMsSUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxTQUFJLEdBQUcsQ0FBQyxDQUFJLEVBQUUsQ0FBSSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFMUMsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBSUEsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVc7YUFDNUIsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVTLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBSztRQUN2QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQWtCOztRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztRQUM3RCxPQUFPLE9BQU8sQ0FBQyxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxVQUFrQjs7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDN0QsT0FBTyxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLDBDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O29IQTFDbUIsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEM0MsVUFBVTs7QUErQ1gsTUFBTSxPQUFPLGFBQWMsU0FBUSxzQkFBaUM7OzJHQUF2RCxhQUFhOytHQUFiLGFBQWEsY0FEQSxNQUFNOzRGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQlAgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcbmltcG9ydCB7IHB1c2hWYWx1ZVRvIH0gZnJvbSAnLi4vdXRpbHMvYXJyYXktdXRpbHMnO1xuaW1wb3J0IHsgQmFzZVRyZWVOb2RlLCBjcmVhdGVUcmVlRnJvbUxpc3QsIFRyZWVOb2RlIH0gZnJvbSAnLi4vdXRpbHMvdHJlZS11dGlscyc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VHJlZVNlcnZpY2U8VCBleHRlbmRzIG9iamVjdD4ge1xuICBhYnN0cmFjdCBpZDogc3RyaW5nO1xuICBhYnN0cmFjdCBwYXJlbnRJZDogc3RyaW5nO1xuICBhYnN0cmFjdCBoaWRlOiAoaXRlbTogVCkgPT4gYm9vbGVhbjtcbiAgYWJzdHJhY3Qgc29ydDogKGE6IFQsIGI6IFQpID0+IG51bWJlcjtcblxuICBwcml2YXRlIF9mbGF0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG4gIHByaXZhdGUgX3RyZWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmVlTm9kZTxUPltdPihbXSk7XG4gIHByaXZhdGUgX3Zpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmVlTm9kZTxUPltdPihbXSk7XG5cbiAgZ2V0IGZsYXQoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQudmFsdWU7XG4gIH1cblxuICBnZXQgZmxhdCQoKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdHJlZSgpOiBUcmVlTm9kZTxUPltdIHtcbiAgICByZXR1cm4gdGhpcy5fdHJlZSQudmFsdWU7XG4gIH1cblxuICBnZXQgdHJlZSQoKTogT2JzZXJ2YWJsZTxUcmVlTm9kZTxUPltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyZWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHZpc2libGUoKTogVHJlZU5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGUkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IHZpc2libGUkKCk6IE9ic2VydmFibGU8VHJlZU5vZGU8VD5bXT4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVUcmVlKGl0ZW1zOiBUW10pOiBUcmVlTm9kZTxUPltdIHtcbiAgICByZXR1cm4gY3JlYXRlVHJlZUZyb21MaXN0PFQsIFRyZWVOb2RlPFQ+PihcbiAgICAgIGl0ZW1zLFxuICAgICAgaXRlbSA9PiBpdGVtW3RoaXMuaWRdLFxuICAgICAgaXRlbSA9PiBpdGVtW3RoaXMucGFyZW50SWRdLFxuICAgICAgaXRlbSA9PiBCYXNlVHJlZU5vZGUuY3JlYXRlKGl0ZW0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlcldpdGgoc2V0T3JNYXA6IFNldDxzdHJpbmc+IHwgTWFwPHN0cmluZywgVD4pOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9mbGF0JC52YWx1ZS5maWx0ZXIoaXRlbSA9PiAhc2V0T3JNYXAuaGFzKGl0ZW1bdGhpcy5pZF0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEl0ZW1zVG9SZW1vdmUoc2V0OiBTZXQ8c3RyaW5nPik6IFNldDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZmxhdCQudmFsdWUucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghYWNjLmhhcyhpdGVtW3RoaXMucGFyZW50SWRdKSkgcmV0dXJuIGFjYztcbiAgICAgIGNvbnN0IGNoaWxkU2V0ID0gbmV3IFNldChbaXRlbVt0aGlzLmlkXV0pO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmZpbmRJdGVtc1RvUmVtb3ZlKGNoaWxkU2V0KTtcbiAgICAgIHJldHVybiBuZXcgU2V0KFsuLi5hY2MsIC4uLmNoaWxkcmVuXSk7XG4gICAgfSwgc2V0KTtcbiAgfVxuXG4gIHByaXZhdGUgcHVibGlzaChmbGF0SXRlbXM6IFRbXSwgdmlzaWJsZUl0ZW1zOiBUW10pOiBUW10ge1xuICAgIHRoaXMuX2ZsYXQkLm5leHQoZmxhdEl0ZW1zKTtcbiAgICB0aGlzLl90cmVlJC5uZXh0KHRoaXMuY3JlYXRlVHJlZShmbGF0SXRlbXMpKTtcbiAgICB0aGlzLl92aXNpYmxlJC5uZXh0KHRoaXMuY3JlYXRlVHJlZSh2aXNpYmxlSXRlbXMpKTtcbiAgICByZXR1cm4gZmxhdEl0ZW1zO1xuICB9XG5cbiAgYWRkKGl0ZW1zOiBUW10pOiBUW10ge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBUPigpO1xuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiBtYXAuc2V0KGl0ZW1bdGhpcy5pZF0sIGl0ZW0pKTtcblxuICAgIGNvbnN0IGZsYXRJdGVtcyA9IHRoaXMuZmlsdGVyV2l0aChtYXApO1xuICAgIG1hcC5mb3JFYWNoKHB1c2hWYWx1ZVRvKGZsYXRJdGVtcykpO1xuXG4gICAgZmxhdEl0ZW1zLnNvcnQodGhpcy5zb3J0KTtcbiAgICBjb25zdCB2aXNpYmxlSXRlbXMgPSBmbGF0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaGlkZShpdGVtKSk7XG5cbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoKGZsYXRJdGVtcywgdmlzaWJsZUl0ZW1zKTtcbiAgfVxuXG4gIGZpbmQocHJlZGljYXRlOiAoaXRlbTogVHJlZU5vZGU8VD4pID0+IGJvb2xlYW4sIHRyZWUgPSB0aGlzLnRyZWUpOiBUcmVlTm9kZTxUPiB8IG51bGwge1xuICAgIHJldHVybiB0cmVlLnJlZHVjZShcbiAgICAgIChhY2MsIG5vZGUpID0+IChhY2MgPyBhY2MgOiBwcmVkaWNhdGUobm9kZSkgPyBub2RlIDogdGhpcy5maW5kKHByZWRpY2F0ZSwgbm9kZS5jaGlsZHJlbikpLFxuICAgICAgbnVsbCxcbiAgICApO1xuICB9XG5cbiAgcGF0Y2goaWRlbnRpZmllcjogc3RyaW5nLCBwcm9wczogUGFydGlhbDxUPik6IFRbXSB8IGZhbHNlIHtcbiAgICBjb25zdCBmbGF0SXRlbXMgPSB0aGlzLl9mbGF0JC52YWx1ZTtcbiAgICBjb25zdCBpbmRleCA9IGZsYXRJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtW3RoaXMuaWRdID09PSBpZGVudGlmaWVyKTtcbiAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmbGF0SXRlbXNbaW5kZXhdID0geyAuLi5mbGF0SXRlbXNbaW5kZXhdLCAuLi5wcm9wcyB9O1xuXG4gICAgZmxhdEl0ZW1zLnNvcnQodGhpcy5zb3J0KTtcbiAgICBjb25zdCB2aXNpYmxlSXRlbXMgPSBmbGF0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaGlkZShpdGVtKSk7XG5cbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoKGZsYXRJdGVtcywgdmlzaWJsZUl0ZW1zKTtcbiAgfVxuXG4gIHJlZnJlc2goKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5hZGQoW10pO1xuICB9XG5cbiAgcmVtb3ZlKGlkZW50aWZpZXJzOiBzdHJpbmdbXSk6IFRbXSB7XG4gICAgY29uc3Qgc2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgaWRlbnRpZmllcnMuZm9yRWFjaChpZCA9PiBzZXQuYWRkKGlkKSk7XG5cbiAgICBjb25zdCBzZXRUb1JlbW92ZSA9IHRoaXMuZmluZEl0ZW1zVG9SZW1vdmUoc2V0KTtcbiAgICBjb25zdCBmbGF0SXRlbXMgPSB0aGlzLmZpbHRlcldpdGgoc2V0VG9SZW1vdmUpO1xuICAgIGNvbnN0IHZpc2libGVJdGVtcyA9IGZsYXRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhdGhpcy5oaWRlKGl0ZW0pKTtcblxuICAgIHJldHVybiB0aGlzLnB1Ymxpc2goZmxhdEl0ZW1zLCB2aXNpYmxlSXRlbXMpO1xuICB9XG5cbiAgc2VhcmNoKHBhcmFtczogUGFydGlhbDxUPiwgdHJlZSA9IHRoaXMudHJlZSk6IFRyZWVOb2RlPFQ+IHwgbnVsbCB7XG4gICAgY29uc3Qgc2VhcmNoS2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcyk7XG5cbiAgICByZXR1cm4gdHJlZS5yZWR1Y2UoXG4gICAgICAoYWNjLCBub2RlKSA9PlxuICAgICAgICBhY2NcbiAgICAgICAgICA/IGFjY1xuICAgICAgICAgIDogc2VhcmNoS2V5cy5ldmVyeShrZXkgPT4gbm9kZVtrZXldID09PSBwYXJhbXNba2V5XSlcbiAgICAgICAgICA/IG5vZGVcbiAgICAgICAgICA6IHRoaXMuc2VhcmNoKHBhcmFtcywgbm9kZS5jaGlsZHJlbiksXG4gICAgICBudWxsLFxuICAgICk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmF2VHJlZVNlcnZpY2U8VCBleHRlbmRzIEFCUC5OYXY+XG4gIGV4dGVuZHMgQWJzdHJhY3RUcmVlU2VydmljZTxUPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZTtcbiAgcmVhZG9ubHkgaWQgPSAnbmFtZSc7XG4gIHJlYWRvbmx5IHBhcmVudElkID0gJ3BhcmVudE5hbWUnO1xuICByZWFkb25seSBoaWRlID0gKGl0ZW06IFQpID0+IGl0ZW0uaW52aXNpYmxlIHx8ICF0aGlzLmlzR3JhbnRlZChpdGVtKTtcbiAgcmVhZG9ubHkgc29ydCA9IChhOiBULCBiOiBUKSA9PiB7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGEub3JkZXIpKSByZXR1cm4gMTtcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoYi5vcmRlcikpIHJldHVybiAtMTtcblxuICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCBjb25maWdTdGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSBjb25maWdTdGF0ZVxuICAgICAgLmNyZWF0ZU9uVXBkYXRlU3RyZWFtKHN0YXRlID0+IHN0YXRlKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2goKSk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZSA9IGluamVjdG9yLmdldChQZXJtaXNzaW9uU2VydmljZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNHcmFudGVkKHsgcmVxdWlyZWRQb2xpY3kgfTogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmdldEdyYW50ZWRQb2xpY3kocmVxdWlyZWRQb2xpY3kpO1xuICB9XG5cbiAgaGFzQ2hpbGRyZW4oaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZChpdGVtID0+IGl0ZW1bdGhpcy5pZF0gPT09IGlkZW50aWZpZXIpO1xuICAgIHJldHVybiBCb29sZWFuKG5vZGU/LmNoaWxkcmVuPy5sZW5ndGgpO1xuICB9XG5cbiAgaGFzSW52aXNpYmxlQ2hpbGQoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmluZChpdGVtID0+IGl0ZW1bdGhpcy5pZF0gPT09IGlkZW50aWZpZXIpO1xuICAgIHJldHVybiBub2RlPy5jaGlsZHJlbj8uc29tZShjaGlsZCA9PiBjaGlsZC5pbnZpc2libGUpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJvdXRlc1NlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdE5hdlRyZWVTZXJ2aWNlPEFCUC5Sb3V0ZT4ge31cbiJdfQ==
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import compare from 'just-compare';
|
|
3
|
-
import { filter, take } from 'rxjs/operators';
|
|
4
|
-
import { InternalStore } from '../utils/internal-store-utils';
|
|
5
|
-
import { ConfigStateService } from './config-state.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./config-state.service";
|
|
8
|
-
export class SessionStateService {
|
|
9
|
-
constructor(configState) {
|
|
10
|
-
this.configState = configState;
|
|
11
|
-
this.store = new InternalStore({});
|
|
12
|
-
this.updateLocalStorage = () => {
|
|
13
|
-
localStorage.setItem('abpSession', JSON.stringify(this.store.state));
|
|
14
|
-
};
|
|
15
|
-
this.init();
|
|
16
|
-
this.setInitialLanguage();
|
|
17
|
-
}
|
|
18
|
-
init() {
|
|
19
|
-
const session = localStorage.getItem('abpSession');
|
|
20
|
-
if (session) {
|
|
21
|
-
this.store.set(JSON.parse(session));
|
|
22
|
-
}
|
|
23
|
-
this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);
|
|
24
|
-
}
|
|
25
|
-
setInitialLanguage() {
|
|
26
|
-
if (this.getLanguage())
|
|
27
|
-
return;
|
|
28
|
-
this.configState
|
|
29
|
-
.getDeep$('localization.currentCulture.cultureName')
|
|
30
|
-
.pipe(filter(cultureName => !!cultureName), take(1))
|
|
31
|
-
.subscribe(lang => {
|
|
32
|
-
if (lang.includes(';')) {
|
|
33
|
-
lang = lang.split(';')[0];
|
|
34
|
-
}
|
|
35
|
-
this.setLanguage(lang);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
onLanguageChange$() {
|
|
39
|
-
return this.store.sliceUpdate(state => state.language);
|
|
40
|
-
}
|
|
41
|
-
onTenantChange$() {
|
|
42
|
-
return this.store.sliceUpdate(state => state.tenant);
|
|
43
|
-
}
|
|
44
|
-
getLanguage() {
|
|
45
|
-
return this.store.state.language;
|
|
46
|
-
}
|
|
47
|
-
getLanguage$() {
|
|
48
|
-
return this.store.sliceState(state => state.language);
|
|
49
|
-
}
|
|
50
|
-
getTenant() {
|
|
51
|
-
return this.store.state.tenant;
|
|
52
|
-
}
|
|
53
|
-
getTenant$() {
|
|
54
|
-
return this.store.sliceState(state => state.tenant);
|
|
55
|
-
}
|
|
56
|
-
setTenant(tenant) {
|
|
57
|
-
if (compare(tenant, this.store.state.tenant))
|
|
58
|
-
return;
|
|
59
|
-
this.store.set(Object.assign(Object.assign({}, this.store.state), { tenant }));
|
|
60
|
-
}
|
|
61
|
-
setLanguage(language) {
|
|
62
|
-
if (language === this.store.state.language)
|
|
63
|
-
return;
|
|
64
|
-
this.store.patch({ language });
|
|
65
|
-
document.documentElement.setAttribute('lang', language);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
SessionStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SessionStateService, deps: [{ token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
-
SessionStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SessionStateService, providedIn: 'root' });
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SessionStateService, decorators: [{
|
|
71
|
-
type: Injectable,
|
|
72
|
-
args: [{
|
|
73
|
-
providedIn: 'root',
|
|
74
|
-
}]
|
|
75
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigStateService }]; } });
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import compare from 'just-compare';
|
|
3
|
+
import { filter, take } from 'rxjs/operators';
|
|
4
|
+
import { InternalStore } from '../utils/internal-store-utils';
|
|
5
|
+
import { ConfigStateService } from './config-state.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./config-state.service";
|
|
8
|
+
export class SessionStateService {
|
|
9
|
+
constructor(configState) {
|
|
10
|
+
this.configState = configState;
|
|
11
|
+
this.store = new InternalStore({});
|
|
12
|
+
this.updateLocalStorage = () => {
|
|
13
|
+
localStorage.setItem('abpSession', JSON.stringify(this.store.state));
|
|
14
|
+
};
|
|
15
|
+
this.init();
|
|
16
|
+
this.setInitialLanguage();
|
|
17
|
+
}
|
|
18
|
+
init() {
|
|
19
|
+
const session = localStorage.getItem('abpSession');
|
|
20
|
+
if (session) {
|
|
21
|
+
this.store.set(JSON.parse(session));
|
|
22
|
+
}
|
|
23
|
+
this.store.sliceUpdate(state => state).subscribe(this.updateLocalStorage);
|
|
24
|
+
}
|
|
25
|
+
setInitialLanguage() {
|
|
26
|
+
if (this.getLanguage())
|
|
27
|
+
return;
|
|
28
|
+
this.configState
|
|
29
|
+
.getDeep$('localization.currentCulture.cultureName')
|
|
30
|
+
.pipe(filter(cultureName => !!cultureName), take(1))
|
|
31
|
+
.subscribe(lang => {
|
|
32
|
+
if (lang.includes(';')) {
|
|
33
|
+
lang = lang.split(';')[0];
|
|
34
|
+
}
|
|
35
|
+
this.setLanguage(lang);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
onLanguageChange$() {
|
|
39
|
+
return this.store.sliceUpdate(state => state.language);
|
|
40
|
+
}
|
|
41
|
+
onTenantChange$() {
|
|
42
|
+
return this.store.sliceUpdate(state => state.tenant);
|
|
43
|
+
}
|
|
44
|
+
getLanguage() {
|
|
45
|
+
return this.store.state.language;
|
|
46
|
+
}
|
|
47
|
+
getLanguage$() {
|
|
48
|
+
return this.store.sliceState(state => state.language);
|
|
49
|
+
}
|
|
50
|
+
getTenant() {
|
|
51
|
+
return this.store.state.tenant;
|
|
52
|
+
}
|
|
53
|
+
getTenant$() {
|
|
54
|
+
return this.store.sliceState(state => state.tenant);
|
|
55
|
+
}
|
|
56
|
+
setTenant(tenant) {
|
|
57
|
+
if (compare(tenant, this.store.state.tenant))
|
|
58
|
+
return;
|
|
59
|
+
this.store.set(Object.assign(Object.assign({}, this.store.state), { tenant }));
|
|
60
|
+
}
|
|
61
|
+
setLanguage(language) {
|
|
62
|
+
if (language === this.store.state.language)
|
|
63
|
+
return;
|
|
64
|
+
this.store.patch({ language });
|
|
65
|
+
document.documentElement.setAttribute('lang', language);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
SessionStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SessionStateService, deps: [{ token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
+
SessionStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SessionStateService, providedIn: 'root' });
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SessionStateService, decorators: [{
|
|
71
|
+
type: Injectable,
|
|
72
|
+
args: [{
|
|
73
|
+
providedIn: 'root',
|
|
74
|
+
}]
|
|
75
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigStateService }]; } });
|
|
76
76
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3Nlc3Npb24tc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBSzVELE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBTmxDLFVBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFtQixDQUFDLENBQUM7UUFFeEQsdUJBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztRQUdBLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxJQUFJO1FBQ1YsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTztRQUUvQixJQUFJLENBQUMsV0FBVzthQUNiLFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQzthQUNuRCxJQUFJLENBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7YUFDQSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQjtZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUF3QjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTztRQUVyRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsaUNBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUUsTUFBTSxJQUFHLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUVuRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0IsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7O2lIQTFFVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJy4uL21vZGVscy9zZXNzaW9uJztcbmltcG9ydCB7IEN1cnJlbnRUZW5hbnREdG8gfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL211bHRpLXRlbmFuY3kvbW9kZWxzJztcbmltcG9ydCB7IEludGVybmFsU3RvcmUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC1zdG9yZS11dGlscyc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gbmV3IEludGVybmFsU3RvcmUoe30gYXMgU2Vzc2lvbi5TdGF0ZSk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVMb2NhbFN0b3JhZ2UgPSAoKSA9PiB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FicFNlc3Npb24nLCBKU09OLnN0cmluZ2lmeSh0aGlzLnN0b3JlLnN0YXRlKSk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5zZXRJbml0aWFsTGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FicFNlc3Npb24nKTtcbiAgICBpZiAoc2Vzc2lvbikge1xuICAgICAgdGhpcy5zdG9yZS5zZXQoSlNPTi5wYXJzZShzZXNzaW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdG9yZS5zbGljZVVwZGF0ZShzdGF0ZSA9PiBzdGF0ZSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlTG9jYWxTdG9yYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbExhbmd1YWdlKCkge1xuICAgIGlmICh0aGlzLmdldExhbmd1YWdlKCkpIHJldHVybjtcblxuICAgIHRoaXMuY29uZmlnU3RhdGVcbiAgICAgIC5nZXREZWVwJCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmN1bHR1cmVOYW1lJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoY3VsdHVyZU5hbWUgPT4gISFjdWx0dXJlTmFtZSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGxhbmcgPT4ge1xuICAgICAgICBpZiAobGFuZy5pbmNsdWRlcygnOycpKSB7XG4gICAgICAgICAgbGFuZyA9IGxhbmcuc3BsaXQoJzsnKVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0TGFuZ3VhZ2UobGFuZyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlKHN0YXRlID0+IHN0YXRlLmxhbmd1YWdlKTtcbiAgfVxuXG4gIG9uVGVuYW50Q2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVVwZGF0ZShzdGF0ZSA9PiBzdGF0ZS50ZW5hbnQpO1xuICB9XG5cbiAgZ2V0TGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUubGFuZ3VhZ2U7XG4gIH1cblxuICBnZXRMYW5ndWFnZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZS5sYW5ndWFnZSk7XG4gIH1cblxuICBnZXRUZW5hbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUudGVuYW50O1xuICB9XG5cbiAgZ2V0VGVuYW50JCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKHN0YXRlID0+IHN0YXRlLnRlbmFudCk7XG4gIH1cblxuICBzZXRUZW5hbnQodGVuYW50OiBDdXJyZW50VGVuYW50RHRvKSB7XG4gICAgaWYgKGNvbXBhcmUodGVuYW50LCB0aGlzLnN0b3JlLnN0YXRlLnRlbmFudCkpIHJldHVybjtcblxuICAgIHRoaXMuc3RvcmUuc2V0KHsgLi4udGhpcy5zdG9yZS5zdGF0ZSwgdGVuYW50IH0pO1xuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIGlmIChsYW5ndWFnZSA9PT0gdGhpcy5zdG9yZS5zdGF0ZS5sYW5ndWFnZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zdG9yZS5wYXRjaCh7IGxhbmd1YWdlIH0pO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2xhbmcnLCBsYW5ndWFnZSk7XG4gIH1cbn1cbiJdfQ==
|