@abp/ng.core 9.3.5 → 10.0.0-rc.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.
@@ -1,13 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectorRef, Input, Component, Injectable, InjectionToken, NgModuleFactory, Injector, Compiler, Inject, signal, computed, effect, LOCALE_ID, Optional, isDevMode, SkipSelf, Directive, EventEmitter, Output, Self, ElementRef, HostListener, provideAppInitializer, makeEnvironmentProviders, Pipe, SecurityContext, NgModule, ComponentFactoryResolver, ApplicationRef } from '@angular/core';
3
- import { of, BehaviorSubject, Subject, throwError, firstValueFrom, lastValueFrom, Observable, timer, pipe, concat, ReplaySubject, EMPTY, map as map$1, Subscription, combineLatest, from, fromEvent, filter as filter$1, take as take$1, switchMap as switchMap$1, startWith, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs';
4
- import * as i1$1 from '@angular/router';
5
- import { PRIMARY_OUTLET, NavigationStart, NavigationError, NavigationEnd, NavigationCancel, Router, TitleStrategy, ActivatedRoute, RouterModule } from '@angular/router';
6
- import * as i1$2 from '@angular/common';
7
- import { DOCUMENT, registerLocaleData, CommonModule, DatePipe, DATE_PIPE_DEFAULT_TIMEZONE } from '@angular/common';
2
+ import { inject, ChangeDetectorRef, Input, Component, Injectable, InjectionToken, Injector, NgModuleFactory, Compiler, PLATFORM_ID, makeStateKey, TransferState, REQUEST, NgZone, signal, computed, effect, LOCALE_ID, ComponentFactoryResolver, ApplicationRef, isDevMode, ElementRef, Directive, EventEmitter, Output, TemplateRef, ViewContainerRef, IterableDiffers, HostListener, provideAppInitializer, makeEnvironmentProviders, Pipe, SecurityContext, NgModule } from '@angular/core';
3
+ import { of, BehaviorSubject, Subject, firstValueFrom, throwError, Observable, timer, pipe, concat, ReplaySubject, EMPTY, map as map$1, Subscription, combineLatest, from, take as take$1, filter as filter$1, fromEvent, switchMap as switchMap$1, startWith, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs';
4
+ import { PRIMARY_OUTLET, Router, NavigationStart, NavigationError, NavigationEnd, NavigationCancel, TitleStrategy, ActivatedRoute, RouterOutlet, RouterModule } from '@angular/router';
5
+ import { isPlatformBrowser, DOCUMENT, registerLocaleData, NgComponentOutlet, isPlatformServer, DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, CommonModule } from '@angular/common';
8
6
  import { map, distinctUntilChanged, filter, catchError, tap, take, switchMap, mapTo, takeUntil, delay, retryWhen, shareReplay, debounceTime, finalize } from 'rxjs/operators';
9
- import * as i1 from '@angular/common/http';
10
- import { HttpClient, HttpContextToken, HttpContext, HttpParams, HttpErrorResponse, HttpHeaders, provideHttpClient, HTTP_INTERCEPTORS, withInterceptorsFromDi, withXsrfConfiguration } from '@angular/common/http';
7
+ import { HttpClient, HttpContextToken, HttpErrorResponse, HttpContext, HttpParams, HttpHeaders, HttpResponse, provideHttpClient, withInterceptorsFromDi, withXsrfConfiguration, withFetch, withInterceptors } from '@angular/common/http';
11
8
  import compare from 'just-compare';
12
9
  import clone from 'just-clone';
13
10
  import { NgxValidateCoreModule } from '@ngx-validate/core';
@@ -15,8 +12,7 @@ export { NgxValidateCoreModule } from '@ngx-validate/core';
15
12
  import { toSignal } from '@angular/core/rxjs-interop';
16
13
  import { Title, DomSanitizer } from '@angular/platform-browser';
17
14
  import { DateTime } from 'luxon';
18
- import * as i1$3 from '@angular/forms';
19
- import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
15
+ import { FormGroupDirective, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
20
16
 
21
17
  // Not an abstract class on purpose. Do not change!
22
18
  class AbstractNgModelComponent {
@@ -97,6 +93,10 @@ const authGuard = () => {
97
93
  console.error('You should add @abp/ng-oauth packages or create your own auth packages.');
98
94
  return false;
99
95
  };
96
+ const asyncAuthGuard = () => {
97
+ console.error('You should add @abp/ng-oauth packages or create your own auth packages.');
98
+ return false;
99
+ };
100
100
 
101
101
  /**
102
102
  * Abstract service for Authentication.
@@ -282,19 +282,19 @@ function escapeHtmlChars(value) {
282
282
  }
283
283
 
284
284
  class ContentProjectionService {
285
- constructor(injector) {
286
- this.injector = injector;
285
+ constructor() {
286
+ this.injector = inject(Injector);
287
287
  }
288
288
  projectContent(projectionStrategy, injector = this.injector) {
289
289
  return projectionStrategy.injectContent(injector);
290
290
  }
291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ContentProjectionService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
291
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ContentProjectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
292
292
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ContentProjectionService, providedIn: 'root' }); }
293
293
  }
294
294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ContentProjectionService, decorators: [{
295
295
  type: Injectable,
296
296
  args: [{ providedIn: 'root' }]
297
- }], ctorParameters: () => [{ type: i0.Injector }] });
297
+ }] });
298
298
 
299
299
  function pushValueTo(array) {
300
300
  return (element) => {
@@ -640,24 +640,38 @@ class WebHttpUrlEncodingCodec {
640
640
  }
641
641
 
642
642
  class AbpLocalStorageService {
643
- constructor() { }
643
+ constructor() {
644
+ this.platformId = inject(PLATFORM_ID);
645
+ }
644
646
  get length() {
645
- return localStorage.length;
647
+ return isPlatformBrowser(this.platformId) ? localStorage.length : 0;
646
648
  }
647
649
  clear() {
648
- localStorage.clear();
650
+ if (isPlatformBrowser(this.platformId)) {
651
+ localStorage.clear();
652
+ }
649
653
  }
650
654
  getItem(key) {
655
+ if (!isPlatformBrowser(this.platformId)) {
656
+ return null;
657
+ }
651
658
  return localStorage.getItem(key);
652
659
  }
653
660
  key(index) {
661
+ if (!isPlatformBrowser(this.platformId)) {
662
+ return null;
663
+ }
654
664
  return localStorage.key(index);
655
665
  }
656
666
  removeItem(key) {
657
- localStorage.removeItem(key);
667
+ if (isPlatformBrowser(this.platformId)) {
668
+ localStorage.removeItem(key);
669
+ }
658
670
  }
659
671
  setItem(key, value) {
660
- localStorage.setItem(key, value);
672
+ if (isPlatformBrowser(this.platformId)) {
673
+ localStorage.setItem(key, value);
674
+ }
661
675
  }
662
676
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
663
677
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpLocalStorageService, providedIn: 'root' }); }
@@ -669,20 +683,208 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
669
683
  }]
670
684
  }], ctorParameters: () => [] });
671
685
 
686
+ const APP_INIT_ERROR_HANDLERS = new InjectionToken('APP_INIT_ERROR_HANDLERS');
687
+
688
+ const COOKIE_LANGUAGE_KEY = new InjectionToken('COOKIE_LANGUAGE_KEY', {
689
+ factory: () => '.AspNetCore.Culture',
690
+ });
691
+
692
+ const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken('LIST_QUERY_DEBOUNCE_TIME');
693
+
694
+ const LOADER_DELAY = new InjectionToken('LOADER_DELAY');
695
+
696
+ const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFILE');
697
+
698
+ const QUEUE_MANAGER = new InjectionToken("QUEUE_MANAGER");
699
+
700
+ const TENANT_KEY = new InjectionToken('TENANT_KEY');
701
+
702
+ const INCUDE_LOCALIZATION_RESOURCES_TOKEN = new InjectionToken('INCUDE_LOCALIZATION_RESOURCES_TOKEN');
703
+
704
+ const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');
705
+
706
+ /**
707
+ * @deprecated The token should not be used anymore.
708
+ */
709
+ const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');
710
+
711
+ const CHECK_AUTHENTICATION_STATE_FN_KEY = new InjectionToken('CHECK_AUTHENTICATION_STATE_FN_KEY');
712
+
713
+ const IS_EXTERNAL_REQUEST = new HttpContextToken(() => false);
714
+
715
+ const OTHERS_GROUP = new InjectionToken('OTHERS_GROUP');
716
+
717
+ const TENANT_NOT_FOUND_BY_NAME = new InjectionToken('TENANT_NOT_FOUND_BY_NAME');
718
+
719
+ const SORT_COMPARE_FUNC = new InjectionToken('SORT_COMPARE_FUNC');
720
+ function compareFuncFactory() {
721
+ const localizationService = inject(LocalizationService);
722
+ const fn = (a, b) => {
723
+ const aNumber = a.order;
724
+ const bNumber = b.order;
725
+ if (aNumber > bNumber)
726
+ return 1;
727
+ if (aNumber < bNumber)
728
+ return -1;
729
+ if (a.id > b.id)
730
+ return 1;
731
+ if (a.id < b.id)
732
+ return -1;
733
+ if (!Number.isInteger(aNumber))
734
+ return 1;
735
+ if (!Number.isInteger(bNumber))
736
+ return -1;
737
+ const aName = localizationService.instant(a.name);
738
+ const bName = localizationService.instant(b.name);
739
+ if (aName > bName)
740
+ return 1;
741
+ if (aName < bName)
742
+ return -1;
743
+ return 0;
744
+ };
745
+ return fn;
746
+ }
747
+
748
+ const DYNAMIC_LAYOUTS_TOKEN = new InjectionToken('DYNAMIC_LAYOUTS');
749
+
750
+ const DISABLE_PROJECT_NAME = new InjectionToken('DISABLE_APP_NAME');
751
+
752
+ const SSR_FLAG = makeStateKey('SSR_FLAG');
753
+ const APP_STARTED_WITH_SSR = new InjectionToken('APP_STARTED_WITH_SSR', {
754
+ providedIn: 'root',
755
+ factory: () => {
756
+ const platformId = inject(PLATFORM_ID);
757
+ const cookieService = inject(AbpCookieStorageService);
758
+ if (!isPlatformBrowser(platformId))
759
+ return true;
760
+ const ts = inject(TransferState);
761
+ const ssrEnabled = cookieService.getItem('ssr-init');
762
+ // Remove the cookie after reading its value because it's only needed once
763
+ cookieService.removeItem('ssr-init');
764
+ return ts.get(SSR_FLAG, false) || ssrEnabled === 'true';
765
+ },
766
+ });
767
+
768
+ class AbpCookieStorageService {
769
+ constructor() {
770
+ this.platformId = inject(PLATFORM_ID);
771
+ this.document = inject(DOCUMENT);
772
+ this.request = inject(REQUEST);
773
+ }
774
+ get length() {
775
+ return isPlatformBrowser(this.platformId) ? this.keys().length : this.getCookiesFromRequest()?.size ?? 0;
776
+ }
777
+ clear() {
778
+ if (!isPlatformBrowser(this.platformId))
779
+ return;
780
+ this.keys().forEach(k => this.removeItem(k));
781
+ }
782
+ getItem(key) {
783
+ if (!isPlatformBrowser(this.platformId)) {
784
+ return this.getCookiesFromRequest()?.get(key) ?? null;
785
+ }
786
+ const name = key + '=';
787
+ const parts = (this.document.cookie || '').split('; ');
788
+ for (const p of parts) {
789
+ if (p.startsWith(name)) {
790
+ return decodeURIComponent(p.slice(name.length));
791
+ }
792
+ }
793
+ return null;
794
+ }
795
+ key(index) {
796
+ if (!isPlatformBrowser(this.platformId))
797
+ return null;
798
+ return this.keys()[index] ?? null;
799
+ }
800
+ removeItem(key) {
801
+ if (!isPlatformBrowser(this.platformId))
802
+ return;
803
+ this.setCookie(key, '', { 'max-age': -1, path: '/' });
804
+ }
805
+ setItem(key, value) {
806
+ if (!isPlatformBrowser(this.platformId))
807
+ return;
808
+ this.setCookie(key, encodeURIComponent(value), {
809
+ path: '/',
810
+ sameSite: 'Lax',
811
+ secure: true,
812
+ });
813
+ }
814
+ setItemWithExpiry(key, value, seconds) {
815
+ if (!isPlatformBrowser(this.platformId))
816
+ return;
817
+ this.setCookie(key, encodeURIComponent(value), {
818
+ path: '/',
819
+ sameSite: 'Lax',
820
+ secure: true,
821
+ 'max-age': Math.max(0, Math.floor(seconds)),
822
+ });
823
+ }
824
+ keys() {
825
+ const raw = (this.document.cookie || '').split('; ').filter(Boolean);
826
+ return raw
827
+ .map(c => decodeURIComponent(c.split('=')[0]));
828
+ }
829
+ setCookie(name, value, opts) {
830
+ let s = `${name}=${value}`;
831
+ if (opts.path)
832
+ s += `; Path=${opts.path}`;
833
+ if (opts.domain)
834
+ s += `; Domain=${opts.domain}`;
835
+ if (opts.sameSite)
836
+ s += `; SameSite=${opts.sameSite}`;
837
+ if (opts.secure)
838
+ s += `; Secure`;
839
+ if (opts.expires)
840
+ s += `; Expires=${opts.expires.toUTCString()}`;
841
+ if (typeof opts['max-age'] === 'number')
842
+ s += `; Max-Age=${opts['max-age']}`;
843
+ this.document.cookie = s;
844
+ }
845
+ getCookiesFromRequest() {
846
+ const cookies = new Map();
847
+ const cookieHeader = this.request?.headers.get('cookie') ?? '';
848
+ for (const part of cookieHeader.split(';')) {
849
+ const i = part.indexOf('=');
850
+ if (i > -1) {
851
+ const k = part.slice(0, i).trim();
852
+ const v = decodeURIComponent(part.slice(i + 1).trim());
853
+ cookies.set(k, v);
854
+ }
855
+ }
856
+ return cookies;
857
+ }
858
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpCookieStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
859
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpCookieStorageService, providedIn: 'root' }); }
860
+ }
861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpCookieStorageService, decorators: [{
862
+ type: Injectable,
863
+ args: [{ providedIn: 'root' }]
864
+ }] });
865
+
672
866
  class SessionStateService {
673
- constructor(configState, localStorageService) {
674
- this.configState = configState;
675
- this.localStorageService = localStorageService;
867
+ constructor() {
868
+ this.configState = inject(ConfigStateService);
869
+ this.localStorageService = inject(AbpLocalStorageService);
870
+ this.appStartedWithSSR = inject(APP_STARTED_WITH_SSR, { optional: true });
871
+ this.cookieStorageService = inject(AbpCookieStorageService);
676
872
  this.store = new InternalStore({});
677
873
  this.document = inject(DOCUMENT);
678
874
  this.updateLocalStorage = () => {
679
- this.localStorageService.setItem('abpSession', JSON.stringify(this.store.state));
875
+ if (this.appStartedWithSSR) {
876
+ this.cookieStorageService.setItem('abpSession', JSON.stringify(this.store.state));
877
+ }
878
+ else {
879
+ this.localStorageService.setItem('abpSession', JSON.stringify(this.store.state));
880
+ }
680
881
  };
681
882
  this.init();
682
883
  this.setInitialLanguage();
683
884
  }
684
885
  init() {
685
- const session = this.localStorageService.getItem('abpSession');
886
+ const storageService = this.appStartedWithSSR ? this.cookieStorageService : this.localStorageService;
887
+ const session = storageService.getItem('abpSession');
686
888
  if (session) {
687
889
  this.store.set(JSON.parse(session));
688
890
  }
@@ -733,7 +935,7 @@ class SessionStateService {
733
935
  this.document.documentElement.setAttribute('lang', language);
734
936
  }
735
937
  }
736
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: SessionStateService, deps: [{ token: ConfigStateService }, { token: AbpLocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
938
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: SessionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
737
939
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: SessionStateService, providedIn: 'root' }); }
738
940
  }
739
941
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: SessionStateService, decorators: [{
@@ -741,13 +943,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
741
943
  args: [{
742
944
  providedIn: 'root',
743
945
  }]
744
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: AbpLocalStorageService }] });
745
-
746
- const APP_INIT_ERROR_HANDLERS = new InjectionToken('APP_INIT_ERROR_HANDLERS');
946
+ }], ctorParameters: () => [] });
747
947
 
748
948
  class AbpTenantService {
749
- constructor(restService) {
750
- this.restService = restService;
949
+ constructor() {
950
+ this.restService = inject(RestService);
751
951
  this.apiName = 'abp';
752
952
  this.findTenantById = (id, config) => this.restService.request({
753
953
  method: 'GET',
@@ -758,7 +958,7 @@ class AbpTenantService {
758
958
  url: `/api/abp/multi-tenancy/tenants/by-name/${name}`,
759
959
  }, { apiName: this.apiName, ...config });
760
960
  }
761
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpTenantService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
961
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpTenantService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
762
962
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpTenantService, providedIn: 'root' }); }
763
963
  }
764
964
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpTenantService, decorators: [{
@@ -766,107 +966,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
766
966
  args: [{
767
967
  providedIn: 'root',
768
968
  }]
769
- }], ctorParameters: () => [{ type: RestService }] });
770
-
771
- const TENANT_KEY = new InjectionToken('TENANT_KEY');
772
-
773
- const IS_EXTERNAL_REQUEST = new HttpContextToken(() => false);
774
-
775
- // source : https://github.com/armanozak/demo-angular-server-specific-interceptors
776
- class ExternalHttpClient extends HttpClient {
777
- request(first, url, options = {}) {
778
- if (typeof first === 'string') {
779
- this.#setPlaceholderContext(options);
780
- return super.request(first, url || '', options);
781
- }
782
- this.#setPlaceholderContext(first);
783
- return super.request(first);
784
- }
785
- #setPlaceholderContext(optionsOrRequest) {
786
- optionsOrRequest.context ??= new HttpContext();
787
- optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);
788
- }
789
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
790
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, providedIn: 'root' }); }
791
- }
792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, decorators: [{
793
- type: Injectable,
794
- args: [{
795
- providedIn: 'root',
796
- }]
797
969
  }] });
798
970
 
799
- class RestService {
800
- constructor(options, http, externalHttp, environment, httpErrorReporter) {
801
- this.options = options;
802
- this.http = http;
803
- this.externalHttp = externalHttp;
804
- this.environment = environment;
805
- this.httpErrorReporter = httpErrorReporter;
806
- }
807
- getApiFromStore(apiName) {
808
- return this.environment.getApiUrl(apiName);
809
- }
810
- handleError(err) {
811
- this.httpErrorReporter.reportError(err);
812
- return throwError(() => err);
813
- }
814
- request(request, config, api) {
815
- config = config || {};
816
- api = api || this.getApiFromStore(config.apiName);
817
- const { method, params, ...options } = request;
818
- const { observe = "body" /* Rest.Observe.Body */, skipHandleError } = config;
819
- const url = this.removeDuplicateSlashes(api + request.url);
820
- const httpClient = this.getHttpClient(config.skipAddingHeader);
821
- return httpClient
822
- .request(method, url, {
823
- observe,
824
- ...(params && {
825
- params: this.getParams(params, config.httpParamEncoder),
826
- }),
827
- ...options,
828
- })
829
- .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));
830
- }
831
- getHttpClient(isExternal) {
832
- return isExternal ? this.externalHttp : this.http;
833
- }
834
- getParams(params, encoder) {
835
- const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
836
- if (isUndefinedOrEmptyString(value))
837
- return acc;
838
- if (value === null && !this.options.sendNullsAsQueryParam)
839
- return acc;
840
- acc[key] = value;
841
- return acc;
842
- }, {});
843
- return encoder
844
- ? new HttpParams({ encoder, fromObject: filteredParams })
845
- : new HttpParams({ fromObject: filteredParams });
846
- }
847
- removeDuplicateSlashes(url) {
848
- return url.replace(/([^:]\/)\/+/g, '$1');
849
- }
850
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, deps: [{ token: CORE_OPTIONS }, { token: i1.HttpClient }, { token: ExternalHttpClient }, { token: EnvironmentService }, { token: HttpErrorReporterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
851
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, providedIn: 'root' }); }
852
- }
853
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, decorators: [{
854
- type: Injectable,
855
- args: [{
856
- providedIn: 'root',
857
- }]
858
- }], ctorParameters: () => [{ type: undefined, decorators: [{
859
- type: Inject,
860
- args: [CORE_OPTIONS]
861
- }] }, { type: i1.HttpClient }, { type: ExternalHttpClient }, { type: EnvironmentService }, { type: HttpErrorReporterService }] });
862
-
863
971
  class MultiTenancyService {
864
- constructor(restService, sessionState, tenantService, configStateService, tenantKey) {
865
- this.restService = restService;
866
- this.sessionState = sessionState;
867
- this.tenantService = tenantService;
868
- this.configStateService = configStateService;
869
- this.tenantKey = tenantKey;
972
+ constructor() {
973
+ this.sessionState = inject(SessionStateService);
974
+ this.tenantService = inject(AbpTenantService);
975
+ this.configStateService = inject(ConfigStateService);
976
+ this.tenantKey = inject(TENANT_KEY);
870
977
  this.domainTenant = null;
871
978
  this.isTenantBoxVisible = true;
872
979
  this.apiName = 'abp';
@@ -885,29 +992,35 @@ class MultiTenancyService {
885
992
  .findTenantById(tenantId)
886
993
  .pipe(switchMap(this.setTenantToState));
887
994
  }
888
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: MultiTenancyService, deps: [{ token: RestService }, { token: SessionStateService }, { token: AbpTenantService }, { token: ConfigStateService }, { token: TENANT_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
995
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: MultiTenancyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
889
996
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: MultiTenancyService, providedIn: 'root' }); }
890
997
  }
891
998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: MultiTenancyService, decorators: [{
892
999
  type: Injectable,
893
1000
  args: [{ providedIn: 'root' }]
894
- }], ctorParameters: () => [{ type: RestService }, { type: SessionStateService }, { type: AbpTenantService }, { type: ConfigStateService }, { type: undefined, decorators: [{
895
- type: Inject,
896
- args: [TENANT_KEY]
897
- }] }] });
898
-
899
- const TENANT_NOT_FOUND_BY_NAME = new InjectionToken('TENANT_NOT_FOUND_BY_NAME');
1001
+ }] });
900
1002
 
901
1003
  const tenancyPlaceholder = '{0}';
902
- function getCurrentTenancyName(appBaseUrl) {
1004
+ function getCurrentTenancyName(appBaseUrl, injector) {
1005
+ const platformId = injector.get(PLATFORM_ID);
1006
+ const document = injector.get(DOCUMENT);
903
1007
  if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/')
904
1008
  appBaseUrl += '/';
905
1009
  const parseTokens = createTokenParser(appBaseUrl);
906
1010
  const token = tenancyPlaceholder.replace(/[}{]/g, '');
907
- return parseTokens(window.location.href)[token]?.[0];
1011
+ const tokenValue = isPlatformBrowser(platformId)
1012
+ ? parseTokens(document.defaultView?.location.href)[token]?.[0]
1013
+ : undefined;
1014
+ return tokenValue;
908
1015
  }
909
- function getCurrentTenancyNameFromUrl(tenantKey) {
910
- const urlParams = new URLSearchParams(window.location.search);
1016
+ function getCurrentTenancyNameFromUrl(tenantKey, injector) {
1017
+ const platformId = injector.get(PLATFORM_ID);
1018
+ const document = injector.get(DOCUMENT);
1019
+ if (!isPlatformBrowser(platformId)) {
1020
+ return null;
1021
+ }
1022
+ const search = document.defaultView?.location.search;
1023
+ const urlParams = new URLSearchParams(search);
911
1024
  return urlParams.get(tenantKey);
912
1025
  }
913
1026
  async function parseTenantFromUrl(injector) {
@@ -915,7 +1028,7 @@ async function parseTenantFromUrl(injector) {
915
1028
  const multiTenancyService = injector.get(MultiTenancyService);
916
1029
  const tenantNotFoundHandler = injector.get(TENANT_NOT_FOUND_BY_NAME, null);
917
1030
  const baseUrl = environmentService.getEnvironment()?.application?.baseUrl || '';
918
- const tenancyName = getCurrentTenancyName(baseUrl);
1031
+ const tenancyName = getCurrentTenancyName(baseUrl, injector);
919
1032
  const hideTenantBox = () => {
920
1033
  multiTenancyService.isTenantBoxVisible = false;
921
1034
  };
@@ -956,7 +1069,7 @@ async function parseTenantFromUrl(injector) {
956
1069
  * If there is no tenant, we still have to clean up {0}. from baseUrl to avoid incorrect http requests.
957
1070
  */
958
1071
  replaceTenantNameWithinEnvironment(injector, '', tenancyPlaceholder + '.');
959
- const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey);
1072
+ const tenantIdFromQueryParams = getCurrentTenancyNameFromUrl(multiTenancyService.tenantKey, injector);
960
1073
  if (tenantIdFromQueryParams) {
961
1074
  const tenantById$ = multiTenancyService.setTenantById(tenantIdFromQueryParams);
962
1075
  return firstValueFrom(tenantById$);
@@ -984,8 +1097,6 @@ function replaceTenantNameWithinEnvironment(injector, tenancyName, placeholder =
984
1097
  return environmentService.setState(environment);
985
1098
  }
986
1099
 
987
- const CHECK_AUTHENTICATION_STATE_FN_KEY = new InjectionToken('CHECK_AUTHENTICATION_STATE_FN_KEY');
988
-
989
1100
  async function getInitialData() {
990
1101
  const injector = inject(Injector);
991
1102
  const environmentService = injector.get(EnvironmentService);
@@ -1013,7 +1124,8 @@ async function getInitialData() {
1013
1124
  }
1014
1125
  return throwError(() => error);
1015
1126
  }));
1016
- await lastValueFrom(result$);
1127
+ // TODO: Not working with SSR
1128
+ // await lastValueFrom(result$);
1017
1129
  await localeInitializer(injector);
1018
1130
  }
1019
1131
  function localeInitializer(injector) {
@@ -1059,29 +1171,32 @@ const CROSS_ORIGIN_STRATEGY = {
1059
1171
  };
1060
1172
 
1061
1173
  class DomStrategy {
1062
- constructor(target = document.head, position = 'beforeend') {
1063
- this.target = target;
1174
+ constructor(getTarget, position = 'beforeend') {
1175
+ this.getTarget = getTarget;
1064
1176
  this.position = position;
1065
1177
  }
1066
1178
  insertElement(element) {
1067
- this.target.insertAdjacentElement(this.position, element);
1179
+ if (typeof document !== 'undefined') {
1180
+ const target = this.getTarget();
1181
+ target.insertAdjacentElement(this.position, element);
1182
+ }
1068
1183
  }
1069
1184
  }
1070
1185
  const DOM_STRATEGY = {
1071
1186
  AfterElement(element) {
1072
- return new DomStrategy(element, 'afterend');
1187
+ return new DomStrategy(() => element, 'afterend');
1073
1188
  },
1074
1189
  AppendToBody() {
1075
- return new DomStrategy(document.body, 'beforeend');
1190
+ return new DomStrategy(() => document?.body, 'beforeend');
1076
1191
  },
1077
1192
  AppendToHead() {
1078
- return new DomStrategy(document.head, 'beforeend');
1193
+ return new DomStrategy(() => document?.head, 'beforeend');
1079
1194
  },
1080
1195
  BeforeElement(element) {
1081
- return new DomStrategy(element, 'beforebegin');
1196
+ return new DomStrategy(() => element, 'beforebegin');
1082
1197
  },
1083
1198
  PrependToHead() {
1084
- return new DomStrategy(document.head, 'afterbegin');
1199
+ return new DomStrategy(() => document?.head, 'afterbegin');
1085
1200
  },
1086
1201
  };
1087
1202
 
@@ -1256,6 +1371,48 @@ function createGroupMap(list, othersGroupKey) {
1256
1371
  return mapGroup;
1257
1372
  }
1258
1373
 
1374
+ class ServerCookieParser {
1375
+ static parse(cookieHeader) {
1376
+ const cookies = {};
1377
+ if (!cookieHeader)
1378
+ return cookies;
1379
+ try {
1380
+ cookieHeader.split(';').forEach(cookie => {
1381
+ const parts = cookie.trim().split('=');
1382
+ if (parts.length >= 2) {
1383
+ const name = parts[0].trim();
1384
+ const value = parts.slice(1).join('=');
1385
+ if (name) {
1386
+ try {
1387
+ cookies[name] = decodeURIComponent(value);
1388
+ }
1389
+ catch (e) {
1390
+ cookies[name] = value;
1391
+ }
1392
+ }
1393
+ }
1394
+ });
1395
+ }
1396
+ catch (error) {
1397
+ console.error('Error parsing cookies:', error);
1398
+ }
1399
+ return cookies;
1400
+ }
1401
+ static middleware() {
1402
+ return (req, res, next) => {
1403
+ req.cookies = ServerCookieParser.parse(req.headers.cookie || '');
1404
+ next();
1405
+ };
1406
+ }
1407
+ static getCookie(req, name) {
1408
+ const cookieHeader = req.headers.cookie;
1409
+ if (!cookieHeader)
1410
+ return undefined;
1411
+ const cookies = ServerCookieParser.parse(cookieHeader);
1412
+ return cookies[name];
1413
+ }
1414
+ }
1415
+
1259
1416
  class DomInsertionService {
1260
1417
  constructor() {
1261
1418
  this.inserted = new Set();
@@ -1287,15 +1444,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1287
1444
  args: [{ providedIn: 'root' }]
1288
1445
  }] });
1289
1446
 
1290
- const LOADER_DELAY = new InjectionToken('LOADER_DELAY');
1291
-
1292
1447
  class HttpWaitService {
1293
- constructor(injector) {
1448
+ constructor() {
1294
1449
  this.store = new InternalStore({
1295
1450
  requests: [],
1296
1451
  filteredRequests: [],
1297
1452
  });
1298
1453
  this.destroy$ = new Subject();
1454
+ const injector = inject(Injector);
1299
1455
  this.delay = injector.get(LOADER_DELAY, 500);
1300
1456
  }
1301
1457
  getLoading() {
@@ -1347,7 +1503,7 @@ class HttpWaitService {
1347
1503
  const { method, endpoint } = filteredRequest;
1348
1504
  return endpoint === request.endpoint && method === request.method;
1349
1505
  }
1350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1506
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1351
1507
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, providedIn: 'root' }); }
1352
1508
  }
1353
1509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, decorators: [{
@@ -1355,7 +1511,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1355
1511
  args: [{
1356
1512
  providedIn: 'root',
1357
1513
  }]
1358
- }], ctorParameters: () => [{ type: i0.Injector }] });
1514
+ }], ctorParameters: () => [] });
1359
1515
 
1360
1516
  class ResourceWaitService {
1361
1517
  constructor() {
@@ -1394,8 +1550,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1394
1550
  }] });
1395
1551
 
1396
1552
  class LazyLoadService {
1397
- constructor(resourceWaitService) {
1398
- this.resourceWaitService = resourceWaitService;
1553
+ constructor() {
1554
+ this.resourceWaitService = inject(ResourceWaitService);
1399
1555
  this.loaded = new Map();
1400
1556
  }
1401
1557
  load(strategy, retryTimes, retryDelay) {
@@ -1417,7 +1573,7 @@ class LazyLoadService {
1417
1573
  this.loaded.delete(path);
1418
1574
  return true;
1419
1575
  }
1420
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, deps: [{ token: ResourceWaitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1576
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1421
1577
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, providedIn: 'root' }); }
1422
1578
  }
1423
1579
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, decorators: [{
@@ -1425,9 +1581,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1425
1581
  args: [{
1426
1582
  providedIn: 'root',
1427
1583
  }]
1428
- }], ctorParameters: () => [{ type: ResourceWaitService }] });
1429
-
1430
- const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken('LIST_QUERY_DEBOUNCE_TIME');
1584
+ }] });
1431
1585
 
1432
1586
  class ListService {
1433
1587
  set filter(value) {
@@ -1490,7 +1644,7 @@ class ListService {
1490
1644
  get requestStatus$() {
1491
1645
  return this._requestStatus.asObservable().pipe(takeUntil(this.destroy$));
1492
1646
  }
1493
- constructor(injector) {
1647
+ constructor() {
1494
1648
  this._filter = '';
1495
1649
  this._maxResultCount = 10;
1496
1650
  this._page = 0;
@@ -1508,6 +1662,7 @@ class ListService {
1508
1662
  this.getWithoutPageReset = () => {
1509
1663
  this.next();
1510
1664
  };
1665
+ const injector = inject(Injector);
1511
1666
  const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);
1512
1667
  this.delay = delay ? debounceTime(delay) : tap();
1513
1668
  this.get();
@@ -1542,16 +1697,16 @@ class ListService {
1542
1697
  sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,
1543
1698
  });
1544
1699
  }
1545
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1700
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1546
1701
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService }); }
1547
1702
  }
1548
1703
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService, decorators: [{
1549
1704
  type: Injectable
1550
- }], ctorParameters: () => [{ type: i0.Injector }] });
1705
+ }], ctorParameters: () => [] });
1551
1706
 
1552
1707
  class PermissionService {
1553
- constructor(configState) {
1554
- this.configState = configState;
1708
+ constructor() {
1709
+ this.configState = inject(ConfigStateService);
1555
1710
  }
1556
1711
  getGrantedPolicy$(key) {
1557
1712
  return this.getStream().pipe(map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)));
@@ -1599,13 +1754,13 @@ class PermissionService {
1599
1754
  getPolicy(key, grantedPolicies) {
1600
1755
  return grantedPolicies[key] || false;
1601
1756
  }
1602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, deps: [{ token: ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1757
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1603
1758
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, providedIn: 'root' }); }
1604
1759
  }
1605
1760
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, decorators: [{
1606
1761
  type: Injectable,
1607
1762
  args: [{ providedIn: 'root' }]
1608
- }], ctorParameters: () => [{ type: ConfigStateService }] });
1763
+ }] });
1609
1764
 
1610
1765
  class ReplaceableComponentsService {
1611
1766
  get replaceableComponents$() {
@@ -1617,9 +1772,9 @@ class ReplaceableComponentsService {
1617
1772
  get onUpdate$() {
1618
1773
  return this.store.sliceUpdate(state => state);
1619
1774
  }
1620
- constructor(ngZone, router) {
1621
- this.ngZone = ngZone;
1622
- this.router = router;
1775
+ constructor() {
1776
+ this.ngZone = inject(NgZone);
1777
+ this.router = inject(Router);
1623
1778
  this.store = new InternalStore([]);
1624
1779
  }
1625
1780
  add(replaceableComponent, reload) {
@@ -1641,23 +1796,109 @@ class ReplaceableComponentsService {
1641
1796
  get$(replaceableComponentKey) {
1642
1797
  return this.replaceableComponents$.pipe(map(components => components.find(component => component.key === replaceableComponentKey)));
1643
1798
  }
1644
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, deps: [{ token: i0.NgZone }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1799
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1645
1800
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, providedIn: 'root' }); }
1646
1801
  }
1647
1802
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, decorators: [{
1648
1803
  type: Injectable,
1649
1804
  args: [{ providedIn: 'root' }]
1650
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$1.Router }] });
1805
+ }], ctorParameters: () => [] });
1651
1806
 
1652
- const NavigationEvent = {
1653
- Cancel: NavigationCancel,
1654
- End: NavigationEnd,
1655
- Error: NavigationError,
1656
- Start: NavigationStart,
1657
- };
1658
- class RouterEvents {
1659
- #previousNavigation;
1660
- #currentNavigation;
1807
+ // source : https://github.com/armanozak/demo-angular-server-specific-interceptors
1808
+ class ExternalHttpClient extends HttpClient {
1809
+ request(first, url, options = {}) {
1810
+ if (typeof first === 'string') {
1811
+ this.#setPlaceholderContext(options);
1812
+ return super.request(first, url || '', options);
1813
+ }
1814
+ this.#setPlaceholderContext(first);
1815
+ return super.request(first);
1816
+ }
1817
+ #setPlaceholderContext(optionsOrRequest) {
1818
+ optionsOrRequest.context ??= new HttpContext();
1819
+ optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);
1820
+ }
1821
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1822
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, providedIn: 'root' }); }
1823
+ }
1824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, decorators: [{
1825
+ type: Injectable,
1826
+ args: [{
1827
+ providedIn: 'root',
1828
+ }]
1829
+ }] });
1830
+
1831
+ class RestService {
1832
+ constructor() {
1833
+ this.options = inject(CORE_OPTIONS);
1834
+ this.http = inject(HttpClient);
1835
+ this.externalHttp = inject(ExternalHttpClient);
1836
+ this.environment = inject(EnvironmentService);
1837
+ this.httpErrorReporter = inject(HttpErrorReporterService);
1838
+ }
1839
+ getApiFromStore(apiName) {
1840
+ return this.environment.getApiUrl(apiName);
1841
+ }
1842
+ handleError(err) {
1843
+ this.httpErrorReporter.reportError(err);
1844
+ return throwError(() => err);
1845
+ }
1846
+ request(request, config, api) {
1847
+ config = config || {};
1848
+ api = api || this.getApiFromStore(config.apiName);
1849
+ const { method, params, ...options } = request;
1850
+ const { observe = "body" /* Rest.Observe.Body */, skipHandleError, responseType = "json" /* Rest.ResponseType.JSON */ } = config;
1851
+ const url = this.removeDuplicateSlashes(api + request.url);
1852
+ const httpClient = this.getHttpClient(config.skipAddingHeader);
1853
+ return httpClient
1854
+ .request(method, url, {
1855
+ observe,
1856
+ responseType: responseType,
1857
+ ...(params && {
1858
+ params: this.getParams(params, config.httpParamEncoder),
1859
+ }),
1860
+ ...options,
1861
+ })
1862
+ .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));
1863
+ }
1864
+ getHttpClient(isExternal) {
1865
+ return isExternal ? this.externalHttp : this.http;
1866
+ }
1867
+ getParams(params, encoder) {
1868
+ const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
1869
+ if (isUndefinedOrEmptyString(value))
1870
+ return acc;
1871
+ if (value === null && !this.options.sendNullsAsQueryParam)
1872
+ return acc;
1873
+ acc[key] = value;
1874
+ return acc;
1875
+ }, {});
1876
+ return encoder
1877
+ ? new HttpParams({ encoder, fromObject: filteredParams })
1878
+ : new HttpParams({ fromObject: filteredParams });
1879
+ }
1880
+ removeDuplicateSlashes(url) {
1881
+ return url.replace(/([^:]\/)\/+/g, '$1');
1882
+ }
1883
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1884
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, providedIn: 'root' }); }
1885
+ }
1886
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, decorators: [{
1887
+ type: Injectable,
1888
+ args: [{
1889
+ providedIn: 'root',
1890
+ }]
1891
+ }] });
1892
+
1893
+ const NavigationEvent = {
1894
+ Cancel: NavigationCancel,
1895
+ End: NavigationEnd,
1896
+ Error: NavigationError,
1897
+ Start: NavigationStart,
1898
+ };
1899
+ class RouterEvents {
1900
+ #previousNavigation;
1901
+ #currentNavigation;
1661
1902
  constructor() {
1662
1903
  this.router = inject(Router);
1663
1904
  this.#previousNavigation = signal(undefined);
@@ -1697,10 +1938,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1697
1938
  }], ctorParameters: () => [] });
1698
1939
 
1699
1940
  class RouterWaitService {
1700
- constructor(routerEvents, injector) {
1701
- this.routerEvents = routerEvents;
1941
+ constructor() {
1942
+ this.routerEvents = inject(RouterEvents);
1702
1943
  this.store = new InternalStore({ loading: false });
1703
1944
  this.destroy$ = new Subject();
1945
+ const injector = inject(Injector);
1704
1946
  this.delay = injector.get(LOADER_DELAY, 500);
1705
1947
  this.updateLoadingStatusOnNavigationEvents();
1706
1948
  }
@@ -1728,7 +1970,7 @@ class RouterWaitService {
1728
1970
  setLoading(loading) {
1729
1971
  this.store.patch({ loading });
1730
1972
  }
1731
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, deps: [{ token: RouterEvents }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1973
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1732
1974
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, providedIn: 'root' }); }
1733
1975
  }
1734
1976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, decorators: [{
@@ -1736,59 +1978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1736
1978
  args: [{
1737
1979
  providedIn: 'root',
1738
1980
  }]
1739
- }], ctorParameters: () => [{ type: RouterEvents }, { type: i0.Injector }] });
1740
-
1741
- const COOKIE_LANGUAGE_KEY = new InjectionToken('COOKIE_LANGUAGE_KEY', {
1742
- factory: () => '.AspNetCore.Culture',
1743
- });
1744
-
1745
- const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFILE');
1746
-
1747
- const QUEUE_MANAGER = new InjectionToken("QUEUE_MANAGER");
1748
-
1749
- const INCUDE_LOCALIZATION_RESOURCES_TOKEN = new InjectionToken('INCUDE_LOCALIZATION_RESOURCES_TOKEN');
1750
-
1751
- const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');
1752
-
1753
- /**
1754
- * @deprecated The token should not be used anymore.
1755
- */
1756
- const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');
1757
-
1758
- const OTHERS_GROUP = new InjectionToken('OTHERS_GROUP');
1759
-
1760
- const SORT_COMPARE_FUNC = new InjectionToken('SORT_COMPARE_FUNC');
1761
- function compareFuncFactory() {
1762
- const localizationService = inject(LocalizationService);
1763
- const fn = (a, b) => {
1764
- const aNumber = a.order;
1765
- const bNumber = b.order;
1766
- if (aNumber > bNumber)
1767
- return 1;
1768
- if (aNumber < bNumber)
1769
- return -1;
1770
- if (a.id > b.id)
1771
- return 1;
1772
- if (a.id < b.id)
1773
- return -1;
1774
- if (!Number.isInteger(aNumber))
1775
- return 1;
1776
- if (!Number.isInteger(bNumber))
1777
- return -1;
1778
- const aName = localizationService.instant(a.name);
1779
- const bName = localizationService.instant(b.name);
1780
- if (aName > bName)
1781
- return 1;
1782
- if (aName < bName)
1783
- return -1;
1784
- return 0;
1785
- };
1786
- return fn;
1787
- }
1788
-
1789
- const DYNAMIC_LAYOUTS_TOKEN = new InjectionToken('DYNAMIC_LAYOUTS');
1790
-
1791
- const DISABLE_PROJECT_NAME = new InjectionToken('DISABLE_APP_NAME');
1981
+ }], ctorParameters: () => [] });
1792
1982
 
1793
1983
  // eslint-disable-next-line @typescript-eslint/ban-types
1794
1984
  class AbstractTreeService {
@@ -1925,15 +2115,16 @@ class AbstractTreeService {
1925
2115
  }
1926
2116
  }
1927
2117
  class AbstractNavTreeService extends AbstractTreeService {
1928
- constructor(injector) {
2118
+ constructor() {
1929
2119
  super();
1930
- this.injector = injector;
2120
+ this.injector = inject(Injector);
1931
2121
  this.id = 'name';
1932
2122
  this.parentId = 'parentName';
1933
2123
  this.hide = (item) => item.invisible || !this.isGranted(item);
1934
2124
  this.sort = (a, b) => {
1935
2125
  return this.compareFunc(a, b);
1936
2126
  };
2127
+ const injector = this.injector;
1937
2128
  const configState = this.injector.get(ConfigStateService);
1938
2129
  this.subscription = configState
1939
2130
  .createOnUpdateStream(state => state)
@@ -1957,12 +2148,12 @@ class AbstractNavTreeService extends AbstractTreeService {
1957
2148
  ngOnDestroy() {
1958
2149
  this.subscription.unsubscribe();
1959
2150
  }
1960
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1961
2152
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService }); }
1962
2153
  }
1963
2154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService, decorators: [{
1964
2155
  type: Injectable
1965
- }], ctorParameters: () => [{ type: i0.Injector }] });
2156
+ }], ctorParameters: () => [] });
1966
2157
  class RoutesService extends AbstractNavTreeService {
1967
2158
  hasPathOrChild(item) {
1968
2159
  return Boolean(item.path) || this.hasChildren(item.name);
@@ -2326,93 +2517,404 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2326
2517
  }]
2327
2518
  }] });
2328
2519
 
2329
- class AbpApplicationConfigurationService {
2330
- constructor(restService) {
2331
- this.restService = restService;
2332
- this.apiName = 'abp';
2333
- this.get = (options, config) => this.restService.request({
2334
- method: 'GET',
2335
- url: '/api/abp/application-configuration',
2336
- params: { includeLocalizationResources: options.includeLocalizationResources },
2337
- }, { apiName: this.apiName, ...config });
2520
+ class ContainerStrategy {
2521
+ constructor(containerRef) {
2522
+ this.containerRef = containerRef;
2338
2523
  }
2339
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2340
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, providedIn: 'root' }); }
2524
+ prepare() { }
2341
2525
  }
2342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, decorators: [{
2343
- type: Injectable,
2344
- args: [{
2345
- providedIn: 'root',
2346
- }]
2347
- }], ctorParameters: () => [{ type: RestService }] });
2348
-
2349
- class AbpApplicationLocalizationService {
2350
- constructor(restService) {
2351
- this.restService = restService;
2352
- this.apiName = 'abp';
2353
- this.get = (input, config) => this.restService.request({
2354
- method: 'GET',
2355
- url: '/api/abp/application-localization',
2356
- params: { cultureName: input.cultureName, onlyDynamics: input.onlyDynamics },
2357
- }, { apiName: this.apiName, ...config });
2526
+ class ClearContainerStrategy extends ContainerStrategy {
2527
+ getIndex() {
2528
+ return 0;
2529
+ }
2530
+ prepare() {
2531
+ this.containerRef.clear();
2358
2532
  }
2359
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2360
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, providedIn: 'root' }); }
2361
2533
  }
2362
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, decorators: [{
2363
- type: Injectable,
2364
- args: [{
2365
- providedIn: 'root',
2366
- }]
2367
- }], ctorParameters: () => [{ type: RestService }] });
2368
-
2369
- class ConfigStateService {
2370
- setState(config) {
2371
- this.store.set(config);
2534
+ class InsertIntoContainerStrategy extends ContainerStrategy {
2535
+ constructor(containerRef, index) {
2536
+ super(containerRef);
2537
+ this.index = index;
2372
2538
  }
2373
- get createOnUpdateStream() {
2374
- return this.store.sliceUpdate;
2539
+ getIndex() {
2540
+ return Math.min(Math.max(0, this.index), this.containerRef.length);
2375
2541
  }
2376
- constructor(abpConfigService, abpApplicationLocalizationService, includeLocalizationResources) {
2377
- this.abpConfigService = abpConfigService;
2378
- this.abpApplicationLocalizationService = abpApplicationLocalizationService;
2379
- this.includeLocalizationResources = includeLocalizationResources;
2380
- this.updateSubject = new Subject();
2381
- this.store = new InternalStore({});
2382
- this.initUpdateStream();
2542
+ }
2543
+ const CONTAINER_STRATEGY = {
2544
+ Clear(containerRef) {
2545
+ return new ClearContainerStrategy(containerRef);
2546
+ },
2547
+ Append(containerRef) {
2548
+ return new InsertIntoContainerStrategy(containerRef, containerRef.length);
2549
+ },
2550
+ Prepend(containerRef) {
2551
+ return new InsertIntoContainerStrategy(containerRef, 0);
2552
+ },
2553
+ Insert(containerRef, index) {
2554
+ return new InsertIntoContainerStrategy(containerRef, index);
2555
+ },
2556
+ };
2557
+
2558
+ class ContentSecurityStrategy {
2559
+ constructor(nonce) {
2560
+ this.nonce = nonce;
2383
2561
  }
2384
- initUpdateStream() {
2385
- this.updateSubject
2386
- .pipe(switchMap(() => this.abpConfigService.get({
2387
- includeLocalizationResources: !!this.includeLocalizationResources,
2388
- })))
2389
- .pipe(switchMap(appState => this.getLocalizationAndCombineWithAppState(appState)))
2390
- .subscribe(res => this.store.set(res));
2562
+ }
2563
+ class LooseContentSecurityStrategy extends ContentSecurityStrategy {
2564
+ constructor(nonce) {
2565
+ super(nonce);
2391
2566
  }
2392
- getLocalizationAndCombineWithAppState(appState) {
2393
- if (!appState.localization.currentCulture.cultureName) {
2394
- throw new Error('culture name should defined');
2567
+ applyCSP(element) {
2568
+ if (this.nonce) {
2569
+ element.setAttribute('nonce', this.nonce);
2395
2570
  }
2396
- const cultureName = this.uiCultureFromAuthCodeFlow ?? appState.localization.currentCulture.cultureName;
2397
- return this.getlocalizationResource(cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })), tap(() => (this.uiCultureFromAuthCodeFlow = undefined)));
2398
- }
2399
- getlocalizationResource(cultureName) {
2400
- return this.abpApplicationLocalizationService.get({
2401
- cultureName: cultureName,
2402
- onlyDynamics: false,
2403
- });
2404
2571
  }
2405
- refreshAppState() {
2406
- this.updateSubject.next();
2407
- return this.createOnUpdateStream(state => state).pipe(take(1));
2572
+ }
2573
+ class NoContentSecurityStrategy extends ContentSecurityStrategy {
2574
+ constructor() {
2575
+ super();
2408
2576
  }
2409
- refreshLocalization(lang) {
2410
- if (this.includeLocalizationResources) {
2411
- return this.refreshAppState().pipe(map(() => null));
2412
- }
2413
- return this.getlocalizationResource(lang)
2414
- .pipe(tap(result => this.store.patch({ localization: { ...this.store.state.localization, ...result } })))
2415
- .pipe(map(() => null));
2577
+ applyCSP(_) { }
2578
+ }
2579
+ const CONTENT_SECURITY_STRATEGY = {
2580
+ Loose(nonce) {
2581
+ return new LooseContentSecurityStrategy(nonce);
2582
+ },
2583
+ None() {
2584
+ return new NoContentSecurityStrategy();
2585
+ },
2586
+ };
2587
+
2588
+ class ContentStrategy {
2589
+ constructor(content, domStrategy = DOM_STRATEGY.AppendToHead(), contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(), options = {}) {
2590
+ this.content = content;
2591
+ this.domStrategy = domStrategy;
2592
+ this.contentSecurityStrategy = contentSecurityStrategy;
2593
+ this.options = options;
2594
+ }
2595
+ insertElement() {
2596
+ const element = this.createElement();
2597
+ if (this.options && Object.keys(this.options).length > 0) {
2598
+ Object.keys(this.options).forEach(key => {
2599
+ if (this.options[key]) {
2600
+ element[key] = this.options[key];
2601
+ }
2602
+ });
2603
+ }
2604
+ this.contentSecurityStrategy.applyCSP(element);
2605
+ this.domStrategy.insertElement(element);
2606
+ return element;
2607
+ }
2608
+ }
2609
+ class StyleContentStrategy extends ContentStrategy {
2610
+ createElement() {
2611
+ const element = inject(DOCUMENT).createElement('style');
2612
+ element.textContent = this.content;
2613
+ return element;
2614
+ }
2615
+ }
2616
+ class ScriptContentStrategy extends ContentStrategy {
2617
+ createElement() {
2618
+ const element = inject(DOCUMENT).createElement('script');
2619
+ element.textContent = this.content;
2620
+ return element;
2621
+ }
2622
+ }
2623
+ const CONTENT_STRATEGY = {
2624
+ AppendScriptToBody(content, options) {
2625
+ return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);
2626
+ },
2627
+ AppendScriptToHead(content, options) {
2628
+ return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
2629
+ },
2630
+ AppendStyleToHead(content, options) {
2631
+ return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
2632
+ },
2633
+ PrependStyleToHead(content, options) {
2634
+ return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);
2635
+ },
2636
+ };
2637
+
2638
+ class ContextStrategy {
2639
+ constructor(context) {
2640
+ this.context = context;
2641
+ }
2642
+ setContext(componentRef) {
2643
+ return this.context;
2644
+ }
2645
+ }
2646
+ class NoContextStrategy extends ContextStrategy {
2647
+ constructor() {
2648
+ super(undefined);
2649
+ }
2650
+ }
2651
+ class ComponentContextStrategy extends ContextStrategy {
2652
+ setContext(componentRef) {
2653
+ Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));
2654
+ componentRef.changeDetectorRef.detectChanges();
2655
+ return this.context;
2656
+ }
2657
+ }
2658
+ class TemplateContextStrategy extends ContextStrategy {
2659
+ setContext() {
2660
+ return this.context;
2661
+ }
2662
+ }
2663
+ const CONTEXT_STRATEGY = {
2664
+ None() {
2665
+ return new NoContextStrategy();
2666
+ },
2667
+ Component(context) {
2668
+ return new ComponentContextStrategy(context);
2669
+ },
2670
+ Template(context) {
2671
+ return new TemplateContextStrategy(context);
2672
+ },
2673
+ };
2674
+
2675
+ class LoadingStrategy {
2676
+ constructor(path, domStrategy = DOM_STRATEGY.AppendToHead(), crossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous()) {
2677
+ this.path = path;
2678
+ this.domStrategy = domStrategy;
2679
+ this.crossOriginStrategy = crossOriginStrategy;
2680
+ }
2681
+ createStream() {
2682
+ this.element = this.createElement();
2683
+ return of(null).pipe(switchMap(() => fromLazyLoad(this.element, this.domStrategy, this.crossOriginStrategy)));
2684
+ }
2685
+ }
2686
+ class ScriptLoadingStrategy extends LoadingStrategy {
2687
+ constructor(src, domStrategy, crossOriginStrategy) {
2688
+ super(src, domStrategy, crossOriginStrategy);
2689
+ }
2690
+ createElement() {
2691
+ const element = document.createElement('script');
2692
+ element.src = this.path;
2693
+ return element;
2694
+ }
2695
+ }
2696
+ class StyleLoadingStrategy extends LoadingStrategy {
2697
+ constructor(href, domStrategy, crossOriginStrategy) {
2698
+ super(href, domStrategy, crossOriginStrategy);
2699
+ }
2700
+ createElement() {
2701
+ const element = document.createElement('link');
2702
+ element.rel = 'stylesheet';
2703
+ element.href = this.path;
2704
+ return element;
2705
+ }
2706
+ }
2707
+ const LOADING_STRATEGY = {
2708
+ AppendScriptToBody(src) {
2709
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.None());
2710
+ },
2711
+ AppendAnonymousScriptToBody(src, integrity) {
2712
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2713
+ },
2714
+ AppendAnonymousScriptToHead(src, integrity) {
2715
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2716
+ },
2717
+ AppendAnonymousStyleToHead(src, integrity) {
2718
+ return new StyleLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2719
+ },
2720
+ PrependAnonymousScriptToHead(src, integrity) {
2721
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2722
+ },
2723
+ PrependAnonymousStyleToHead(src, integrity) {
2724
+ return new StyleLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2725
+ },
2726
+ };
2727
+
2728
+ class ProjectionStrategy {
2729
+ constructor(content) {
2730
+ this.content = content;
2731
+ }
2732
+ }
2733
+ class ComponentProjectionStrategy extends ProjectionStrategy {
2734
+ constructor(component, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
2735
+ super(component);
2736
+ this.containerStrategy = containerStrategy;
2737
+ this.contextStrategy = contextStrategy;
2738
+ }
2739
+ injectContent(injector) {
2740
+ this.containerStrategy.prepare();
2741
+ const resolver = injector.get(ComponentFactoryResolver);
2742
+ const factory = resolver.resolveComponentFactory(this.content);
2743
+ const componentRef = this.containerStrategy.containerRef.createComponent(factory, this.containerStrategy.getIndex(), injector);
2744
+ this.contextStrategy.setContext(componentRef);
2745
+ return componentRef;
2746
+ }
2747
+ }
2748
+ class RootComponentProjectionStrategy extends ProjectionStrategy {
2749
+ constructor(component, contextStrategy = CONTEXT_STRATEGY.None(), domStrategy = DOM_STRATEGY.AppendToBody()) {
2750
+ super(component);
2751
+ this.contextStrategy = contextStrategy;
2752
+ this.domStrategy = domStrategy;
2753
+ }
2754
+ injectContent(injector) {
2755
+ const appRef = injector.get(ApplicationRef);
2756
+ const resolver = injector.get(ComponentFactoryResolver);
2757
+ const componentRef = resolver
2758
+ .resolveComponentFactory(this.content)
2759
+ .create(injector);
2760
+ this.contextStrategy.setContext(componentRef);
2761
+ appRef.attachView(componentRef.hostView);
2762
+ const element = componentRef.hostView.rootNodes[0];
2763
+ this.domStrategy.insertElement(element);
2764
+ return componentRef;
2765
+ }
2766
+ }
2767
+ class TemplateProjectionStrategy extends ProjectionStrategy {
2768
+ constructor(templateRef, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
2769
+ super(templateRef);
2770
+ this.containerStrategy = containerStrategy;
2771
+ this.contextStrategy = contextStrategy;
2772
+ }
2773
+ injectContent() {
2774
+ this.containerStrategy.prepare();
2775
+ const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(this.content, this.contextStrategy.context, this.containerStrategy.getIndex());
2776
+ embeddedViewRef.detectChanges();
2777
+ return embeddedViewRef;
2778
+ }
2779
+ }
2780
+ const PROJECTION_STRATEGY = {
2781
+ AppendComponentToBody(component, context) {
2782
+ return new RootComponentProjectionStrategy(component, context && CONTEXT_STRATEGY.Component(context));
2783
+ },
2784
+ AppendComponentToContainer(component, containerRef, context) {
2785
+ return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Component(context));
2786
+ },
2787
+ AppendTemplateToContainer(templateRef, containerRef, context) {
2788
+ return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Template(context));
2789
+ },
2790
+ PrependComponentToContainer(component, containerRef, context) {
2791
+ return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Component(context));
2792
+ },
2793
+ PrependTemplateToContainer(templateRef, containerRef, context) {
2794
+ return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Template(context));
2795
+ },
2796
+ ProjectComponentToContainer(component, containerRef, context) {
2797
+ return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Component(context));
2798
+ },
2799
+ ProjectTemplateToContainer(templateRef, containerRef, context) {
2800
+ return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Template(context));
2801
+ },
2802
+ };
2803
+
2804
+ class DomStrategyService {
2805
+ constructor() {
2806
+ this.document = inject(DOCUMENT);
2807
+ }
2808
+ afterElement(el) {
2809
+ return new DomStrategy(() => el, 'afterend');
2810
+ }
2811
+ beforeElement(el) {
2812
+ return new DomStrategy(() => el, 'beforebegin');
2813
+ }
2814
+ appendToBody() {
2815
+ return new DomStrategy(() => this.document.body, 'beforeend');
2816
+ }
2817
+ appendToHead() {
2818
+ return new DomStrategy(() => this.document.head, 'beforeend');
2819
+ }
2820
+ prependToHead() {
2821
+ return new DomStrategy(() => this.document.head, 'afterbegin');
2822
+ }
2823
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DomStrategyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2824
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DomStrategyService, providedIn: 'root' }); }
2825
+ }
2826
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DomStrategyService, decorators: [{
2827
+ type: Injectable,
2828
+ args: [{ providedIn: 'root' }]
2829
+ }] });
2830
+
2831
+ class AbpApplicationConfigurationService {
2832
+ constructor() {
2833
+ this.restService = inject(RestService);
2834
+ this.apiName = 'abp';
2835
+ this.get = (options, config) => this.restService.request({
2836
+ method: 'GET',
2837
+ url: '/api/abp/application-configuration',
2838
+ params: { includeLocalizationResources: options.includeLocalizationResources },
2839
+ }, { apiName: this.apiName, ...config });
2840
+ }
2841
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2842
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, providedIn: 'root' }); }
2843
+ }
2844
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, decorators: [{
2845
+ type: Injectable,
2846
+ args: [{
2847
+ providedIn: 'root',
2848
+ }]
2849
+ }] });
2850
+
2851
+ class AbpApplicationLocalizationService {
2852
+ constructor() {
2853
+ this.restService = inject(RestService);
2854
+ this.apiName = 'abp';
2855
+ this.get = (input, config) => this.restService.request({
2856
+ method: 'GET',
2857
+ url: '/api/abp/application-localization',
2858
+ params: { cultureName: input.cultureName, onlyDynamics: input.onlyDynamics },
2859
+ }, { apiName: this.apiName, ...config });
2860
+ }
2861
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2862
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, providedIn: 'root' }); }
2863
+ }
2864
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, decorators: [{
2865
+ type: Injectable,
2866
+ args: [{
2867
+ providedIn: 'root',
2868
+ }]
2869
+ }] });
2870
+
2871
+ class ConfigStateService {
2872
+ setState(config) {
2873
+ this.store.set(config);
2874
+ }
2875
+ get createOnUpdateStream() {
2876
+ return this.store.sliceUpdate;
2877
+ }
2878
+ constructor() {
2879
+ this.abpConfigService = inject(AbpApplicationConfigurationService);
2880
+ this.abpApplicationLocalizationService = inject(AbpApplicationLocalizationService);
2881
+ this.includeLocalizationResources = inject(INCUDE_LOCALIZATION_RESOURCES_TOKEN, { optional: true });
2882
+ this.updateSubject = new Subject();
2883
+ this.store = new InternalStore({});
2884
+ this.initUpdateStream();
2885
+ }
2886
+ initUpdateStream() {
2887
+ this.updateSubject
2888
+ .pipe(switchMap(() => this.abpConfigService.get({
2889
+ includeLocalizationResources: !!this.includeLocalizationResources,
2890
+ })))
2891
+ .pipe(switchMap(appState => this.getLocalizationAndCombineWithAppState(appState)))
2892
+ .subscribe(res => this.store.set(res));
2893
+ }
2894
+ getLocalizationAndCombineWithAppState(appState) {
2895
+ if (!appState.localization.currentCulture.cultureName) {
2896
+ throw new Error('culture name should defined');
2897
+ }
2898
+ const cultureName = this.uiCultureFromAuthCodeFlow ?? appState.localization.currentCulture.cultureName;
2899
+ return this.getlocalizationResource(cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })), tap(() => (this.uiCultureFromAuthCodeFlow = undefined)));
2900
+ }
2901
+ getlocalizationResource(cultureName) {
2902
+ return this.abpApplicationLocalizationService.get({
2903
+ cultureName: cultureName,
2904
+ onlyDynamics: false,
2905
+ });
2906
+ }
2907
+ refreshAppState() {
2908
+ this.updateSubject.next();
2909
+ return this.createOnUpdateStream(state => state).pipe(take(1));
2910
+ }
2911
+ refreshLocalization(lang) {
2912
+ if (this.includeLocalizationResources) {
2913
+ return this.refreshAppState().pipe(map(() => null));
2914
+ }
2915
+ return this.getlocalizationResource(lang)
2916
+ .pipe(tap(result => this.store.patch({ localization: { ...this.store.state.localization, ...result } })))
2917
+ .pipe(map(() => null));
2416
2918
  }
2417
2919
  getOne$(key) {
2418
2920
  return this.store.sliceState(state => state[key]);
@@ -2521,7 +3023,7 @@ class ConfigStateService {
2521
3023
  getGlobalFeatureIsEnabled$(key) {
2522
3024
  return this.store.sliceState(state => this.isGlobalFeatureEnabled(key, state.globalFeatures));
2523
3025
  }
2524
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, deps: [{ token: AbpApplicationConfigurationService }, { token: AbpApplicationLocalizationService }, { token: INCUDE_LOCALIZATION_RESOURCES_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
3026
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2525
3027
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, providedIn: 'root' }); }
2526
3028
  }
2527
3029
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, decorators: [{
@@ -2529,12 +3031,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2529
3031
  args: [{
2530
3032
  providedIn: 'root',
2531
3033
  }]
2532
- }], ctorParameters: () => [{ type: AbpApplicationConfigurationService }, { type: AbpApplicationLocalizationService }, { type: undefined, decorators: [{
2533
- type: Optional
2534
- }, {
2535
- type: Inject,
2536
- args: [INCUDE_LOCALIZATION_RESOURCES_TOKEN]
2537
- }] }] });
3034
+ }], ctorParameters: () => [] });
2538
3035
  function splitKeys(keys) {
2539
3036
  if (typeof keys === 'string') {
2540
3037
  keys = keys.split('.');
@@ -2561,14 +3058,15 @@ class LocalizationService {
2561
3058
  get languageChange$() {
2562
3059
  return this._languageChange$.asObservable();
2563
3060
  }
2564
- constructor(sessionState, injector, otherInstance, configState) {
2565
- this.sessionState = sessionState;
2566
- this.injector = injector;
2567
- this.configState = configState;
3061
+ constructor() {
3062
+ this.sessionState = inject(SessionStateService);
3063
+ this.injector = inject(Injector);
3064
+ this.configState = inject(ConfigStateService);
2568
3065
  this.latestLang = this.sessionState.getLanguage();
2569
3066
  this._languageChange$ = new Subject();
2570
3067
  this.uiLocalizations$ = new BehaviorSubject(new Map());
2571
3068
  this.localizations$ = new BehaviorSubject(new Map());
3069
+ const otherInstance = inject(LocalizationService, { optional: true, skipSelf: true });
2572
3070
  if (otherInstance)
2573
3071
  throw new Error('LocalizationService should have only one instance.');
2574
3072
  this.listenToSetLanguage();
@@ -2714,17 +3212,13 @@ class LocalizationService {
2714
3212
  localization = '';
2715
3213
  return localization || defaultValue || key;
2716
3214
  }
2717
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, deps: [{ token: SessionStateService }, { token: i0.Injector }, { token: LocalizationService, optional: true, skipSelf: true }, { token: ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2718
3216
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
2719
3217
  }
2720
3218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, decorators: [{
2721
3219
  type: Injectable,
2722
3220
  args: [{ providedIn: 'root' }]
2723
- }], ctorParameters: () => [{ type: SessionStateService }, { type: i0.Injector }, { type: LocalizationService, decorators: [{
2724
- type: Optional
2725
- }, {
2726
- type: SkipSelf
2727
- }] }, { type: ConfigStateService }] });
3221
+ }], ctorParameters: () => [] });
2728
3222
  function recursivelyMergeBaseResources(baseResourceName, source) {
2729
3223
  const item = source[baseResourceName];
2730
3224
  if (item.baseResources.length === 0) {
@@ -2751,7 +3245,7 @@ function combineLegacyandNewResources(legacy, resource) {
2751
3245
  }
2752
3246
 
2753
3247
  class DynamicLayoutComponent {
2754
- constructor(dynamicLayoutComponent) {
3248
+ constructor() {
2755
3249
  this.layouts = inject(DYNAMIC_LAYOUTS_TOKEN);
2756
3250
  this.isLayoutVisible = true;
2757
3251
  this.router = inject(Router);
@@ -2762,6 +3256,7 @@ class DynamicLayoutComponent {
2762
3256
  this.subscription = inject(SubscriptionService);
2763
3257
  this.routerEvents = inject(RouterEvents);
2764
3258
  this.environment = inject(EnvironmentService);
3259
+ const dynamicLayoutComponent = inject(DynamicLayoutComponent, { optional: true, skipSelf: true });
2765
3260
  if (dynamicLayoutComponent) {
2766
3261
  if (isDevMode())
2767
3262
  console.warn('DynamicLayoutComponent must be used only in AppComponent.');
@@ -2769,15 +3264,7 @@ class DynamicLayoutComponent {
2769
3264
  }
2770
3265
  this.checkLayoutOnNavigationEnd();
2771
3266
  this.listenToLanguageChange();
2772
- }
2773
- ngOnInit() {
2774
- if (this.layout) {
2775
- return;
2776
- }
2777
- const { oAuthConfig } = this.environment.getEnvironment();
2778
- if (oAuthConfig.responseType === 'code') {
2779
- this.getLayout();
2780
- }
3267
+ this.listenToEnvironmentChange();
2781
3268
  }
2782
3269
  checkLayoutOnNavigationEnd() {
2783
3270
  const navigationEnd$ = this.routerEvents.getNavigationEvents('End');
@@ -2829,12 +3316,23 @@ class DynamicLayoutComponent {
2829
3316
  getComponent(key) {
2830
3317
  return this.replaceableComponents.get(key);
2831
3318
  }
2832
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DynamicLayoutComponent, deps: [{ token: DynamicLayoutComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
3319
+ listenToEnvironmentChange() {
3320
+ this.environment
3321
+ .createOnUpdateStream(x => x.oAuthConfig)
3322
+ .pipe(take$1(1), filter$1(config => config.responseType === 'code'))
3323
+ .subscribe(() => {
3324
+ if (this.layout) {
3325
+ return;
3326
+ }
3327
+ this.getLayout();
3328
+ });
3329
+ }
3330
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DynamicLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2833
3331
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: DynamicLayoutComponent, isStandalone: true, selector: "abp-dynamic-layout", providers: [SubscriptionService], ngImport: i0, template: `
2834
3332
  @if (isLayoutVisible) {
2835
3333
  <ng-container [ngComponentOutlet]="layout"></ng-container>
2836
3334
  }
2837
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
3335
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
2838
3336
  }
2839
3337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DynamicLayoutComponent, decorators: [{
2840
3338
  type: Component,
@@ -2846,19 +3344,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2846
3344
  }
2847
3345
  `,
2848
3346
  providers: [SubscriptionService],
2849
- imports: [CommonModule],
3347
+ imports: [NgComponentOutlet],
2850
3348
  }]
2851
- }], ctorParameters: () => [{ type: DynamicLayoutComponent, decorators: [{
2852
- type: Optional
2853
- }, {
2854
- type: SkipSelf
2855
- }] }] });
3349
+ }], ctorParameters: () => [] });
2856
3350
 
2857
3351
  class ReplaceableRouteContainerComponent {
2858
- constructor(route, replaceableComponents, subscription) {
2859
- this.route = route;
2860
- this.replaceableComponents = replaceableComponents;
2861
- this.subscription = subscription;
3352
+ constructor() {
3353
+ this.route = inject(ActivatedRoute);
3354
+ this.replaceableComponents = inject(ReplaceableComponentsService);
3355
+ this.subscription = inject(SubscriptionService);
2862
3356
  }
2863
3357
  ngOnInit() {
2864
3358
  this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;
@@ -2870,10 +3364,10 @@ class ReplaceableRouteContainerComponent {
2870
3364
  this.externalComponent = res.component;
2871
3365
  });
2872
3366
  }
2873
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableRouteContainerComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: ReplaceableComponentsService }, { token: SubscriptionService }], target: i0.ɵɵFactoryTarget.Component }); }
3367
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableRouteContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2874
3368
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.7", type: ReplaceableRouteContainerComponent, isStandalone: true, selector: "abp-replaceable-route-container", providers: [SubscriptionService], ngImport: i0, template: `
2875
3369
  <ng-container *ngComponentOutlet="externalComponent || defaultComponent"></ng-container>
2876
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
3370
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
2877
3371
  }
2878
3372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableRouteContainerComponent, decorators: [{
2879
3373
  type: Component,
@@ -2883,20 +3377,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2883
3377
  <ng-container *ngComponentOutlet="externalComponent || defaultComponent"></ng-container>
2884
3378
  `,
2885
3379
  providers: [SubscriptionService],
2886
- imports: [CommonModule],
3380
+ imports: [NgComponentOutlet],
2887
3381
  }]
2888
- }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: ReplaceableComponentsService }, { type: SubscriptionService }] });
3382
+ }] });
2889
3383
 
2890
3384
  class RouterOutletComponent {
2891
3385
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2892
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.7", type: RouterOutletComponent, isStandalone: true, selector: "abp-router-outlet", ngImport: i0, template: ` <router-outlet></router-outlet> `, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
3386
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.7", type: RouterOutletComponent, isStandalone: true, selector: "abp-router-outlet", ngImport: i0, template: ` <router-outlet></router-outlet> `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2893
3387
  }
2894
3388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterOutletComponent, decorators: [{
2895
3389
  type: Component,
2896
3390
  args: [{
2897
3391
  selector: 'abp-router-outlet',
2898
3392
  template: ` <router-outlet></router-outlet> `,
2899
- imports: [RouterModule],
3393
+ imports: [RouterOutlet],
2900
3394
  }]
2901
3395
  }] });
2902
3396
 
@@ -3244,20 +3738,20 @@ const DEFAULT_DYNAMIC_LAYOUTS = new Map([
3244
3738
  ]);
3245
3739
 
3246
3740
  class AutofocusDirective {
3741
+ constructor() {
3742
+ this.elRef = inject(ElementRef);
3743
+ this._delay = 0;
3744
+ }
3247
3745
  set delay(val) {
3248
3746
  this._delay = Number(val) || 0;
3249
3747
  }
3250
3748
  get delay() {
3251
3749
  return this._delay;
3252
3750
  }
3253
- constructor(elRef) {
3254
- this.elRef = elRef;
3255
- this._delay = 0;
3256
- }
3257
3751
  ngAfterViewInit() {
3258
3752
  setTimeout(() => this.elRef.nativeElement.focus(), this.delay);
3259
3753
  }
3260
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AutofocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
3754
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3261
3755
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: AutofocusDirective, isStandalone: true, selector: "[autofocus]", inputs: { delay: ["autofocus", "delay"] }, ngImport: i0 }); }
3262
3756
  }
3263
3757
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AutofocusDirective, decorators: [{
@@ -3265,15 +3759,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3265
3759
  args: [{
3266
3760
  selector: '[autofocus]',
3267
3761
  }]
3268
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { delay: [{
3762
+ }], propDecorators: { delay: [{
3269
3763
  type: Input,
3270
3764
  args: ['autofocus']
3271
3765
  }] } });
3272
3766
 
3273
3767
  class InputEventDebounceDirective {
3274
- constructor(el, subscription) {
3275
- this.el = el;
3276
- this.subscription = subscription;
3768
+ constructor() {
3769
+ this.el = inject(ElementRef);
3770
+ this.subscription = inject(SubscriptionService);
3277
3771
  this.debounce = 300;
3278
3772
  this.debounceEvent = new EventEmitter();
3279
3773
  }
@@ -3283,7 +3777,7 @@ class InputEventDebounceDirective {
3283
3777
  this.debounceEvent.emit(event);
3284
3778
  });
3285
3779
  }
3286
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InputEventDebounceDirective, deps: [{ token: i0.ElementRef }, { token: SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive }); }
3780
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InputEventDebounceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3287
3781
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: InputEventDebounceDirective, isStandalone: true, selector: "[input.debounce]", inputs: { debounce: "debounce" }, outputs: { debounceEvent: "input.debounce" }, providers: [SubscriptionService], ngImport: i0 }); }
3288
3782
  }
3289
3783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InputEventDebounceDirective, decorators: [{
@@ -3292,7 +3786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3292
3786
  selector: '[input.debounce]',
3293
3787
  providers: [SubscriptionService],
3294
3788
  }]
3295
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SubscriptionService }], propDecorators: { debounce: [{
3789
+ }], propDecorators: { debounce: [{
3296
3790
  type: Input
3297
3791
  }], debounceEvent: [{
3298
3792
  type: Output,
@@ -3314,17 +3808,17 @@ class RecordView {
3314
3808
  }
3315
3809
  }
3316
3810
  class ForDirective {
3811
+ constructor() {
3812
+ this.tempRef = inject(TemplateRef);
3813
+ this.vcRef = inject(ViewContainerRef);
3814
+ this.differs = inject(IterableDiffers);
3815
+ }
3317
3816
  get compareFn() {
3318
3817
  return this.compareBy || compare;
3319
3818
  }
3320
3819
  get trackByFn() {
3321
3820
  return this.trackBy || ((index, item) => item.id || index);
3322
3821
  }
3323
- constructor(tempRef, vcRef, differs) {
3324
- this.tempRef = tempRef;
3325
- this.vcRef = vcRef;
3326
- this.differs = differs;
3327
- }
3328
3822
  iterateOverAppliedOperations(changes) {
3329
3823
  const rw = [];
3330
3824
  changes.forEachOperation((record, previousIndex, currentIndex) => {
@@ -3420,7 +3914,7 @@ class ForDirective {
3420
3914
  this.projectItems(items);
3421
3915
  }
3422
3916
  }
3423
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ForDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }
3917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3424
3918
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: ForDirective, isStandalone: true, selector: "[abpFor]", inputs: { items: ["abpForOf", "items"], orderBy: ["abpForOrderBy", "orderBy"], orderDir: ["abpForOrderDir", "orderDir"], filterBy: ["abpForFilterBy", "filterBy"], filterVal: ["abpForFilterVal", "filterVal"], trackBy: ["abpForTrackBy", "trackBy"], compareBy: ["abpForCompareBy", "compareBy"], emptyRef: ["abpForEmptyRef", "emptyRef"] }, usesOnChanges: true, ngImport: i0 }); }
3425
3919
  }
3426
3920
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ForDirective, decorators: [{
@@ -3428,7 +3922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3428
3922
  args: [{
3429
3923
  selector: '[abpFor]',
3430
3924
  }]
3431
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }], propDecorators: { items: [{
3925
+ }], propDecorators: { items: [{
3432
3926
  type: Input,
3433
3927
  args: ['abpForOf']
3434
3928
  }], orderBy: [{
@@ -3458,11 +3952,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3458
3952
  * @deprecated FormSubmitDirective will be removed in V7.0.0. Use `ngSubmit` instead.
3459
3953
  */
3460
3954
  class FormSubmitDirective {
3461
- constructor(formGroupDirective, host, cdRef, subscription) {
3462
- this.formGroupDirective = formGroupDirective;
3463
- this.host = host;
3464
- this.cdRef = cdRef;
3465
- this.subscription = subscription;
3955
+ constructor() {
3956
+ this.formGroupDirective = inject(FormGroupDirective, { self: true });
3957
+ this.host = inject(ElementRef);
3958
+ this.cdRef = inject(ChangeDetectorRef);
3959
+ this.subscription = inject(SubscriptionService);
3466
3960
  this.debounce = 200;
3467
3961
  this.markAsDirtyWhenSubmit = true;
3468
3962
  this.ngSubmit = new EventEmitter();
@@ -3489,7 +3983,7 @@ class FormSubmitDirective {
3489
3983
  form.markAsDirty();
3490
3984
  this.cdRef.detectChanges();
3491
3985
  }
3492
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FormSubmitDirective, deps: [{ token: i1$3.FormGroupDirective, self: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive }); }
3986
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FormSubmitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3493
3987
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: FormSubmitDirective, isStandalone: true, selector: "form[ngSubmit][formGroup]", inputs: { debounce: "debounce", notValidateOnSubmit: "notValidateOnSubmit", markAsDirtyWhenSubmit: "markAsDirtyWhenSubmit" }, outputs: { ngSubmit: "ngSubmit" }, providers: [SubscriptionService], ngImport: i0 }); }
3494
3988
  }
3495
3989
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FormSubmitDirective, decorators: [{
@@ -3498,9 +3992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3498
3992
  selector: 'form[ngSubmit][formGroup]',
3499
3993
  providers: [SubscriptionService],
3500
3994
  }]
3501
- }], ctorParameters: () => [{ type: i1$3.FormGroupDirective, decorators: [{
3502
- type: Self
3503
- }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: SubscriptionService }], propDecorators: { debounce: [{
3995
+ }], propDecorators: { debounce: [{
3504
3996
  type: Input
3505
3997
  }], notValidateOnSubmit: [{
3506
3998
  type: Input
@@ -3523,14 +4015,14 @@ function setDirty(controls) {
3523
4015
  }
3524
4016
 
3525
4017
  class InitDirective {
3526
- constructor(elRef) {
3527
- this.elRef = elRef;
4018
+ constructor() {
4019
+ this.elRef = inject(ElementRef);
3528
4020
  this.init = new EventEmitter();
3529
4021
  }
3530
4022
  ngAfterViewInit() {
3531
4023
  this.init.emit(this.elRef);
3532
4024
  }
3533
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InitDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
4025
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3534
4026
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: InitDirective, isStandalone: true, selector: "[abpInit]", outputs: { init: "abpInit" }, ngImport: i0 }); }
3535
4027
  }
3536
4028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InitDirective, decorators: [{
@@ -3538,18 +4030,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3538
4030
  args: [{
3539
4031
  selector: '[abpInit]',
3540
4032
  }]
3541
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { init: [{
4033
+ }], propDecorators: { init: [{
3542
4034
  type: Output,
3543
4035
  args: ['abpInit']
3544
4036
  }] } });
3545
4037
 
3546
4038
  class PermissionDirective {
3547
- constructor(templateRef, vcRef, permissionService, cdRef, queue) {
3548
- this.templateRef = templateRef;
3549
- this.vcRef = vcRef;
3550
- this.permissionService = permissionService;
3551
- this.cdRef = cdRef;
3552
- this.queue = queue;
4039
+ constructor() {
4040
+ this.templateRef = inject(TemplateRef, { optional: true });
4041
+ this.vcRef = inject(ViewContainerRef);
4042
+ this.permissionService = inject(PermissionService);
4043
+ this.cdRef = inject(ChangeDetectorRef);
4044
+ this.queue = inject(QUEUE_MANAGER);
3553
4045
  this.runChangeDetection = true;
3554
4046
  this.cdrSubject = new ReplaySubject();
3555
4047
  this.rendered = false;
@@ -3589,7 +4081,7 @@ class PermissionDirective {
3589
4081
  this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));
3590
4082
  this.rendered = true;
3591
4083
  }
3592
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionDirective, deps: [{ token: i0.TemplateRef, optional: true }, { token: i0.ViewContainerRef }, { token: PermissionService }, { token: i0.ChangeDetectorRef }, { token: QUEUE_MANAGER }], target: i0.ɵɵFactoryTarget.Directive }); }
4084
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3593
4085
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: PermissionDirective, isStandalone: true, selector: "[abpPermission]", inputs: { condition: ["abpPermission", "condition"], runChangeDetection: ["abpPermissionRunChangeDetection", "runChangeDetection"] }, usesOnChanges: true, ngImport: i0 }); }
3594
4086
  }
3595
4087
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionDirective, decorators: [{
@@ -3597,12 +4089,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3597
4089
  args: [{
3598
4090
  selector: '[abpPermission]',
3599
4091
  }]
3600
- }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
3601
- type: Optional
3602
- }] }, { type: i0.ViewContainerRef }, { type: PermissionService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
3603
- type: Inject,
3604
- args: [QUEUE_MANAGER]
3605
- }] }], propDecorators: { condition: [{
4092
+ }], propDecorators: { condition: [{
3606
4093
  type: Input,
3607
4094
  args: ['abpPermission']
3608
4095
  }], runChangeDetection: [{
@@ -3611,12 +4098,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3611
4098
  }] } });
3612
4099
 
3613
4100
  class ReplaceableTemplateDirective {
3614
- constructor(injector, templateRef, vcRef, replaceableComponents, subscription) {
3615
- this.injector = injector;
3616
- this.templateRef = templateRef;
3617
- this.vcRef = vcRef;
3618
- this.replaceableComponents = replaceableComponents;
3619
- this.subscription = subscription;
4101
+ constructor() {
4102
+ this.injector = inject(Injector);
4103
+ this.templateRef = inject(TemplateRef);
4104
+ this.vcRef = inject(ViewContainerRef);
4105
+ this.replaceableComponents = inject(ReplaceableComponentsService);
4106
+ this.subscription = inject(SubscriptionService);
3620
4107
  this.providedData = {
3621
4108
  inputs: {},
3622
4109
  outputs: {},
@@ -3720,7 +4207,7 @@ class ReplaceableTemplateDirective {
3720
4207
  this.defaultComponentSubscriptions = {};
3721
4208
  this.defaultComponentRef = null;
3722
4209
  }
3723
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableTemplateDirective, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: ReplaceableComponentsService }, { token: SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive }); }
4210
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3724
4211
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: ReplaceableTemplateDirective, isStandalone: true, selector: "[abpReplaceableTemplate]", inputs: { data: ["abpReplaceableTemplate", "data"] }, providers: [SubscriptionService], usesOnChanges: true, ngImport: i0 }); }
3725
4212
  }
3726
4213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableTemplateDirective, decorators: [{
@@ -3729,15 +4216,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3729
4216
  selector: '[abpReplaceableTemplate]',
3730
4217
  providers: [SubscriptionService],
3731
4218
  }]
3732
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ReplaceableComponentsService }, { type: SubscriptionService }], propDecorators: { data: [{
4219
+ }], ctorParameters: () => [], propDecorators: { data: [{
3733
4220
  type: Input,
3734
4221
  args: ['abpReplaceableTemplate']
3735
4222
  }] } });
3736
4223
 
3737
4224
  class StopPropagationDirective {
3738
- constructor(el, subscription) {
3739
- this.el = el;
3740
- this.subscription = subscription;
4225
+ constructor() {
4226
+ this.el = inject(ElementRef);
4227
+ this.subscription = inject(SubscriptionService);
3741
4228
  this.stopPropEvent = new EventEmitter();
3742
4229
  }
3743
4230
  ngOnInit() {
@@ -3746,7 +4233,7 @@ class StopPropagationDirective {
3746
4233
  this.stopPropEvent.emit(event);
3747
4234
  });
3748
4235
  }
3749
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: StopPropagationDirective, deps: [{ token: i0.ElementRef }, { token: SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive }); }
4236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: StopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3750
4237
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: StopPropagationDirective, isStandalone: true, selector: "[click.stop]", outputs: { stopPropEvent: "click.stop" }, providers: [SubscriptionService], ngImport: i0 }); }
3751
4238
  }
3752
4239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: StopPropagationDirective, decorators: [{
@@ -3755,7 +4242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3755
4242
  selector: '[click.stop]',
3756
4243
  providers: [SubscriptionService],
3757
4244
  }]
3758
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SubscriptionService }], propDecorators: { stopPropEvent: [{
4245
+ }], propDecorators: { stopPropEvent: [{
3759
4246
  type: Output,
3760
4247
  args: ['click.stop']
3761
4248
  }] } });
@@ -3827,6 +4314,9 @@ Date.prototype.toLocalISOString = function () {
3827
4314
 
3828
4315
  function setLanguageToCookie() {
3829
4316
  const injector = inject(Injector);
4317
+ const platformId = injector.get(PLATFORM_ID);
4318
+ if (!isPlatformBrowser(platformId))
4319
+ return;
3830
4320
  const sessionState = injector.get(SessionStateService);
3831
4321
  const document = injector.get(DOCUMENT);
3832
4322
  const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);
@@ -3840,9 +4330,9 @@ const CookieLanguageProvider = provideAppInitializer(() => {
3840
4330
  });
3841
4331
 
3842
4332
  class LocaleId extends String {
3843
- constructor(localizationService) {
4333
+ constructor() {
3844
4334
  super();
3845
- this.localizationService = localizationService;
4335
+ this.localizationService = inject(LocalizationService);
3846
4336
  }
3847
4337
  toString() {
3848
4338
  const { currentLang } = this.localizationService;
@@ -3858,7 +4348,6 @@ class LocaleId extends String {
3858
4348
  const LocaleProvider = {
3859
4349
  provide: LOCALE_ID,
3860
4350
  useClass: LocaleId,
3861
- deps: [LocalizationService],
3862
4351
  };
3863
4352
 
3864
4353
  const IncludeLocalizationResourcesProvider = {
@@ -3867,9 +4356,9 @@ const IncludeLocalizationResourcesProvider = {
3867
4356
  };
3868
4357
 
3869
4358
  class RoutesHandler {
3870
- constructor(routes, router) {
3871
- this.routes = routes;
3872
- this.router = router;
4359
+ constructor() {
4360
+ this.routes = inject(RoutesService);
4361
+ this.router = inject(Router, { optional: true });
3873
4362
  this.addRoutes();
3874
4363
  }
3875
4364
  addRoutes() {
@@ -3886,7 +4375,7 @@ class RoutesHandler {
3886
4375
  }
3887
4376
  });
3888
4377
  }
3889
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, deps: [{ token: RoutesService }, { token: i1$1.Router, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
4378
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3890
4379
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, providedIn: 'root' }); }
3891
4380
  }
3892
4381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, decorators: [{
@@ -3894,9 +4383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3894
4383
  args: [{
3895
4384
  providedIn: 'root',
3896
4385
  }]
3897
- }], ctorParameters: () => [{ type: RoutesService }, { type: i1$1.Router, decorators: [{
3898
- type: Optional
3899
- }] }] });
4386
+ }], ctorParameters: () => [] });
3900
4387
  function flatRoutes(routes, parent) {
3901
4388
  if (!routes)
3902
4389
  return [];
@@ -3912,8 +4399,8 @@ function flatRoutes(routes, parent) {
3912
4399
  }
3913
4400
 
3914
4401
  class ApiInterceptor {
3915
- constructor(httpWaitService) {
3916
- this.httpWaitService = httpWaitService;
4402
+ constructor() {
4403
+ this.httpWaitService = inject(HttpWaitService);
3917
4404
  }
3918
4405
  getAdditionalHeaders(existingHeaders) {
3919
4406
  return existingHeaders || new HttpHeaders();
@@ -3922,7 +4409,7 @@ class ApiInterceptor {
3922
4409
  this.httpWaitService.addRequest(request);
3923
4410
  return next.handle(request).pipe(finalize(() => this.httpWaitService.deleteRequest(request)));
3924
4411
  }
3925
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, deps: [{ token: HttpWaitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3926
4413
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, providedIn: 'root' }); }
3927
4414
  }
3928
4415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, decorators: [{
@@ -3930,35 +4417,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3930
4417
  args: [{
3931
4418
  providedIn: 'root',
3932
4419
  }]
3933
- }], ctorParameters: () => [{ type: HttpWaitService }] });
4420
+ }] });
3934
4421
 
3935
- class TimezoneInterceptor {
3936
- constructor() {
3937
- this.timezoneService = inject(TimezoneService);
4422
+ const timezoneInterceptor = (req, next) => {
4423
+ const timezoneService = inject(TimezoneService);
4424
+ if (!timezoneService.isUtcClockEnabled) {
4425
+ return next(req);
3938
4426
  }
3939
- intercept(req, next) {
3940
- if (!this.timezoneService.isUtcClockEnabled) {
3941
- return next.handle(req);
3942
- }
3943
- const timezone = this.timezoneService.timezone;
3944
- if (timezone) {
3945
- req = req.clone({
3946
- setHeaders: {
3947
- __timezone: timezone,
3948
- },
3949
- });
4427
+ const timezone = timezoneService.timezone;
4428
+ if (timezone) {
4429
+ req = req.clone({
4430
+ setHeaders: {
4431
+ __timezone: timezone,
4432
+ },
4433
+ });
4434
+ }
4435
+ return next(req);
4436
+ };
4437
+
4438
+ const transferStateInterceptor = (req, next) => {
4439
+ const transferState = inject(TransferState);
4440
+ const platformId = inject(PLATFORM_ID);
4441
+ if (req.method !== 'GET') {
4442
+ return next(req);
4443
+ }
4444
+ const stateKey = makeStateKey(req.urlWithParams);
4445
+ if (isPlatformBrowser(platformId)) {
4446
+ const storedResponse = transferState.get(stateKey, null);
4447
+ if (storedResponse) {
4448
+ transferState.remove(stateKey);
4449
+ return of(new HttpResponse({ body: storedResponse, status: 200 }));
3950
4450
  }
3951
- return next.handle(req);
3952
4451
  }
3953
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: TimezoneInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3954
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: TimezoneInterceptor, providedIn: 'root' }); }
3955
- }
3956
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: TimezoneInterceptor, decorators: [{
3957
- type: Injectable,
3958
- args: [{
3959
- providedIn: 'root',
3960
- }]
3961
- }] });
4452
+ return next(req).pipe(tap(event => {
4453
+ if (isPlatformServer(platformId) && event instanceof HttpResponse) {
4454
+ transferState.set(stateKey, event.body);
4455
+ console.log(`Interceptor: ${req.urlWithParams} is stored in TransferState.`);
4456
+ }
4457
+ }));
4458
+ };
3962
4459
 
3963
4460
  var CoreFeatureKind;
3964
4461
  (function (CoreFeatureKind) {
@@ -4021,7 +4518,7 @@ function provideAbpCore(...features) {
4021
4518
  provideHttpClient(withInterceptorsFromDi(), withXsrfConfiguration({
4022
4519
  cookieName: 'XSRF-TOKEN',
4023
4520
  headerName: 'RequestVerificationToken',
4024
- })),
4521
+ }), withFetch(), withInterceptors([transferStateInterceptor, timezoneInterceptor])),
4025
4522
  provideAppInitializer(async () => {
4026
4523
  inject(LocalizationService);
4027
4524
  inject(LocalStorageListenerService);
@@ -4044,11 +4541,6 @@ function provideAbpCore(...features) {
4044
4541
  provide: TitleStrategy,
4045
4542
  useExisting: AbpTitleStrategy,
4046
4543
  },
4047
- {
4048
- provide: HTTP_INTERCEPTORS,
4049
- useClass: TimezoneInterceptor,
4050
- multi: true,
4051
- },
4052
4544
  ];
4053
4545
  for (const feature of features) {
4054
4546
  providers.push(...feature.ɵproviders);
@@ -4067,8 +4559,8 @@ function provideAbpCoreChild(options = {}) {
4067
4559
  }
4068
4560
 
4069
4561
  class LocalizationPipe {
4070
- constructor(localization) {
4071
- this.localization = localization;
4562
+ constructor() {
4563
+ this.localization = inject(LocalizationService);
4072
4564
  }
4073
4565
  transform(value = '', ...interpolateParams) {
4074
4566
  const params = interpolateParams.reduce((acc, val) => {
@@ -4082,7 +4574,7 @@ class LocalizationPipe {
4082
4574
  }, []) || [];
4083
4575
  return this.localization.instant(value, ...params);
4084
4576
  }
4085
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe }); }
4577
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4086
4578
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe, isStandalone: true, name: "abpLocalization" }); }
4087
4579
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe }); }
4088
4580
  }
@@ -4093,7 +4585,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4093
4585
  args: [{
4094
4586
  name: 'abpLocalization',
4095
4587
  }]
4096
- }], ctorParameters: () => [{ type: LocalizationService }] });
4588
+ }] });
4097
4589
 
4098
4590
  class SafeHtmlPipe {
4099
4591
  constructor() {
@@ -4166,8 +4658,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4166
4658
 
4167
4659
  const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken('INJECTOR_PIPE_DATA_TOKEN');
4168
4660
  class ToInjectorPipe {
4169
- constructor(injector) {
4170
- this.injector = injector;
4661
+ constructor() {
4662
+ this.injector = inject(Injector);
4171
4663
  }
4172
4664
  transform(value, token = INJECTOR_PIPE_DATA_TOKEN, name = 'ToInjectorPipe') {
4173
4665
  return Injector.create({
@@ -4181,7 +4673,7 @@ class ToInjectorPipe {
4181
4673
  name,
4182
4674
  });
4183
4675
  }
4184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
4676
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4185
4677
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, isStandalone: true, name: "toInjector" }); }
4186
4678
  }
4187
4679
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, decorators: [{
@@ -4189,18 +4681,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4189
4681
  args: [{
4190
4682
  name: 'toInjector',
4191
4683
  }]
4192
- }], ctorParameters: () => [{ type: i0.Injector }] });
4684
+ }] });
4193
4685
 
4194
4686
  class ShortDatePipe extends DatePipe {
4195
- constructor(configStateService, locale, defaultTimezone) {
4687
+ constructor() {
4688
+ const locale = inject(LOCALE_ID);
4689
+ const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });
4196
4690
  super(locale, defaultTimezone);
4197
- this.configStateService = configStateService;
4691
+ this.configStateService = inject(ConfigStateService);
4198
4692
  }
4199
4693
  transform(value, timezone, locale) {
4200
4694
  const format = getShortDateFormat(this.configStateService);
4201
4695
  return super.transform(value, format, timezone, locale);
4202
4696
  }
4203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, deps: [{ token: ConfigStateService }, { token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
4697
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4204
4698
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, isStandalone: true, name: "shortDate" }); }
4205
4699
  }
4206
4700
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, decorators: [{
@@ -4209,26 +4703,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4209
4703
  name: 'shortDate',
4210
4704
  pure: true,
4211
4705
  }]
4212
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: undefined, decorators: [{
4213
- type: Inject,
4214
- args: [LOCALE_ID]
4215
- }] }, { type: undefined, decorators: [{
4216
- type: Inject,
4217
- args: [DATE_PIPE_DEFAULT_TIMEZONE]
4218
- }, {
4219
- type: Optional
4220
- }] }] });
4706
+ }], ctorParameters: () => [] });
4221
4707
 
4222
4708
  class ShortTimePipe extends DatePipe {
4223
- constructor(configStateService, locale, defaultTimezone) {
4709
+ constructor() {
4710
+ const locale = inject(LOCALE_ID);
4711
+ const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });
4224
4712
  super(locale, defaultTimezone);
4225
- this.configStateService = configStateService;
4713
+ this.configStateService = inject(ConfigStateService);
4226
4714
  }
4227
4715
  transform(value, timezone, locale) {
4228
4716
  const format = getShortTimeFormat(this.configStateService);
4229
4717
  return super.transform(value, format, timezone, locale);
4230
4718
  }
4231
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, deps: [{ token: ConfigStateService }, { token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
4719
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4232
4720
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, isStandalone: true, name: "shortTime" }); }
4233
4721
  }
4234
4722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, decorators: [{
@@ -4237,26 +4725,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4237
4725
  name: 'shortTime',
4238
4726
  pure: true,
4239
4727
  }]
4240
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: undefined, decorators: [{
4241
- type: Inject,
4242
- args: [LOCALE_ID]
4243
- }] }, { type: undefined, decorators: [{
4244
- type: Inject,
4245
- args: [DATE_PIPE_DEFAULT_TIMEZONE]
4246
- }, {
4247
- type: Optional
4248
- }] }] });
4728
+ }], ctorParameters: () => [] });
4249
4729
 
4250
4730
  class ShortDateTimePipe extends DatePipe {
4251
- constructor(configStateService, locale, defaultTimezone) {
4731
+ constructor() {
4732
+ const locale = inject(LOCALE_ID);
4733
+ const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });
4252
4734
  super(locale, defaultTimezone);
4253
- this.configStateService = configStateService;
4735
+ this.configStateService = inject(ConfigStateService);
4254
4736
  }
4255
4737
  transform(value, timezone, locale) {
4256
4738
  const format = getShortDateShortTimeFormat(this.configStateService);
4257
4739
  return super.transform(value, format, timezone, locale);
4258
4740
  }
4259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, deps: [{ token: ConfigStateService }, { token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
4741
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4260
4742
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, isStandalone: true, name: "shortDateTime" }); }
4261
4743
  }
4262
4744
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, decorators: [{
@@ -4265,15 +4747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4265
4747
  name: 'shortDateTime',
4266
4748
  pure: true,
4267
4749
  }]
4268
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: undefined, decorators: [{
4269
- type: Inject,
4270
- args: [LOCALE_ID]
4271
- }] }, { type: undefined, decorators: [{
4272
- type: Inject,
4273
- args: [DATE_PIPE_DEFAULT_TIMEZONE]
4274
- }, {
4275
- type: Optional
4276
- }] }] });
4750
+ }], ctorParameters: () => [] });
4277
4751
 
4278
4752
  class UtcToLocalPipe {
4279
4753
  constructor() {
@@ -4432,13 +4906,11 @@ class BaseCoreModule {
4432
4906
  ReplaceableRouteContainerComponent,
4433
4907
  RouterOutletComponent,
4434
4908
  AbstractNgModelComponent] }); }
4435
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: BaseCoreModule, providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
4909
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: BaseCoreModule, providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())], imports: [CommonModule,
4436
4910
  FormsModule,
4437
4911
  ReactiveFormsModule,
4438
4912
  RouterModule,
4439
- NgxValidateCoreModule, DynamicLayoutComponent,
4440
- ReplaceableRouteContainerComponent,
4441
- RouterOutletComponent, CommonModule,
4913
+ NgxValidateCoreModule, CommonModule,
4442
4914
  FormsModule,
4443
4915
  ReactiveFormsModule,
4444
4916
  RouterModule,
@@ -4468,7 +4940,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4468
4940
  ...CORE_COMPONENTS,
4469
4941
  ],
4470
4942
  declarations: [],
4471
- providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi())],
4943
+ providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())],
4472
4944
  }]
4473
4945
  }] });
4474
4946
  /**
@@ -4573,6 +5045,7 @@ const permissionGuard = (route, state) => {
4573
5045
  const authService = inject(AuthService);
4574
5046
  const permissionService = inject(PermissionService);
4575
5047
  const httpErrorReporter = inject(HttpErrorReporterService);
5048
+ const platformId = inject(PLATFORM_ID);
4576
5049
  let { requiredPolicy } = route.data || {};
4577
5050
  if (!requiredPolicy) {
4578
5051
  const routeFound = findRoute(routesService, getRoutePath(router, state.url));
@@ -4581,6 +5054,10 @@ const permissionGuard = (route, state) => {
4581
5054
  if (!requiredPolicy) {
4582
5055
  return of(true);
4583
5056
  }
5057
+ //TODO enable permission check on ssr
5058
+ if (isPlatformServer(platformId)) {
5059
+ return of(true);
5060
+ }
4584
5061
  return permissionService.getGrantedPolicy$(requiredPolicy).pipe(filter(Boolean), take(1), tap(access => {
4585
5062
  if (!access && authService.isAuthenticated) {
4586
5063
  httpErrorReporter.reportError({ status: 403 });
@@ -4664,419 +5141,135 @@ class PagedAndSortedResultRequestDto extends PagedResultRequestDto {
4664
5141
  super(initialValues);
4665
5142
  }
4666
5143
  }
4667
- class ExtensiblePagedAndSortedResultRequestDto extends ExtensiblePagedResultRequestDto {
4668
- constructor(initialValues = {}) {
4669
- super(initialValues);
4670
- }
4671
- }
4672
- class EntityDto {
4673
- constructor(initialValues = {}) {
4674
- for (const key in initialValues) {
4675
- if (checkHasProp(initialValues, key)) {
4676
- this[key] = initialValues[key];
4677
- }
4678
- }
4679
- }
4680
- }
4681
- class CreationAuditedEntityDto extends EntityDto {
4682
- constructor(initialValues = {}) {
4683
- super(initialValues);
4684
- }
4685
- }
4686
- class CreationAuditedEntityWithUserDto extends CreationAuditedEntityDto {
4687
- constructor(initialValues = {}) {
4688
- super(initialValues);
4689
- }
4690
- }
4691
- class AuditedEntityDto extends CreationAuditedEntityDto {
4692
- constructor(initialValues = {}) {
4693
- super(initialValues);
4694
- }
4695
- }
4696
- /** @deprecated the class signature will change in v8.0 */
4697
- class AuditedEntityWithUserDto extends AuditedEntityDto {
4698
- constructor(initialValues = {}) {
4699
- super(initialValues);
4700
- }
4701
- }
4702
- class FullAuditedEntityDto extends AuditedEntityDto {
4703
- constructor(initialValues = {}) {
4704
- super(initialValues);
4705
- }
4706
- }
4707
- /** @deprecated the class signature will change in v8.0 */
4708
- class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
4709
- constructor(initialValues = {}) {
4710
- super(initialValues);
4711
- }
4712
- }
4713
- class ExtensibleCreationAuditedEntityDto extends ExtensibleEntityDto {
4714
- constructor(initialValues = {}) {
4715
- super(initialValues);
4716
- }
4717
- }
4718
- class ExtensibleAuditedEntityDto extends ExtensibleCreationAuditedEntityDto {
4719
- constructor(initialValues = {}) {
4720
- super(initialValues);
4721
- }
4722
- }
4723
- class ExtensibleAuditedEntityWithUserDto extends ExtensibleAuditedEntityDto {
4724
- constructor(initialValues = {}) {
4725
- super(initialValues);
4726
- }
4727
- }
4728
- class ExtensibleCreationAuditedEntityWithUserDto extends ExtensibleCreationAuditedEntityDto {
4729
- constructor(initialValues = {}) {
4730
- super(initialValues);
4731
- }
4732
- }
4733
- class ExtensibleFullAuditedEntityDto extends ExtensibleAuditedEntityDto {
4734
- constructor(initialValues = {}) {
4735
- super(initialValues);
4736
- }
4737
- }
4738
- class ExtensibleFullAuditedEntityWithUserDto extends ExtensibleFullAuditedEntityDto {
4739
- constructor(initialValues = {}) {
4740
- super(initialValues);
4741
- }
4742
- }
4743
-
4744
- class AuthEvent {
4745
- constructor(type) {
4746
- this.type = type;
4747
- this.type = type;
4748
- }
4749
- }
4750
- class AuthSuccessEvent extends AuthEvent {
4751
- constructor(type, info) {
4752
- super(type);
4753
- this.type = type;
4754
- this.info = info;
4755
- }
4756
- }
4757
- class AuthInfoEvent extends AuthEvent {
4758
- constructor(type, info) {
4759
- super(type);
4760
- this.type = type;
4761
- this.info = info;
4762
- }
4763
- }
4764
- class AuthErrorEvent extends AuthEvent {
4765
- constructor(type, reason, params) {
4766
- super(type);
4767
- this.type = type;
4768
- this.reason = reason;
4769
- this.params = params;
4770
- }
4771
- }
4772
-
4773
- class AbpApiDefinitionService {
4774
- constructor(restService) {
4775
- this.restService = restService;
4776
- this.apiName = 'abp';
4777
- this.getByModel = (model, config) => this.restService.request({
4778
- method: 'GET',
4779
- url: '/api/abp/api-definition',
4780
- params: { includeTypes: model.includeTypes },
4781
- }, { apiName: this.apiName, ...config });
4782
- }
4783
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4784
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, providedIn: 'root' }); }
4785
- }
4786
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, decorators: [{
4787
- type: Injectable,
4788
- args: [{
4789
- providedIn: 'root',
4790
- }]
4791
- }], ctorParameters: () => [{ type: RestService }] });
4792
-
4793
- var index = /*#__PURE__*/Object.freeze({
4794
- __proto__: null
4795
- });
4796
-
4797
- class ContainerStrategy {
4798
- constructor(containerRef) {
4799
- this.containerRef = containerRef;
4800
- }
4801
- prepare() { }
4802
- }
4803
- class ClearContainerStrategy extends ContainerStrategy {
4804
- getIndex() {
4805
- return 0;
4806
- }
4807
- prepare() {
4808
- this.containerRef.clear();
4809
- }
4810
- }
4811
- class InsertIntoContainerStrategy extends ContainerStrategy {
4812
- constructor(containerRef, index) {
4813
- super(containerRef);
4814
- this.index = index;
4815
- }
4816
- getIndex() {
4817
- return Math.min(Math.max(0, this.index), this.containerRef.length);
4818
- }
4819
- }
4820
- const CONTAINER_STRATEGY = {
4821
- Clear(containerRef) {
4822
- return new ClearContainerStrategy(containerRef);
4823
- },
4824
- Append(containerRef) {
4825
- return new InsertIntoContainerStrategy(containerRef, containerRef.length);
4826
- },
4827
- Prepend(containerRef) {
4828
- return new InsertIntoContainerStrategy(containerRef, 0);
4829
- },
4830
- Insert(containerRef, index) {
4831
- return new InsertIntoContainerStrategy(containerRef, index);
4832
- },
4833
- };
4834
-
4835
- class ContentSecurityStrategy {
4836
- constructor(nonce) {
4837
- this.nonce = nonce;
4838
- }
4839
- }
4840
- class LooseContentSecurityStrategy extends ContentSecurityStrategy {
4841
- constructor(nonce) {
4842
- super(nonce);
4843
- }
4844
- applyCSP(element) {
4845
- if (this.nonce) {
4846
- element.setAttribute('nonce', this.nonce);
4847
- }
4848
- }
4849
- }
4850
- class NoContentSecurityStrategy extends ContentSecurityStrategy {
4851
- constructor() {
4852
- super();
4853
- }
4854
- applyCSP(_) { }
4855
- }
4856
- const CONTENT_SECURITY_STRATEGY = {
4857
- Loose(nonce) {
4858
- return new LooseContentSecurityStrategy(nonce);
4859
- },
4860
- None() {
4861
- return new NoContentSecurityStrategy();
4862
- },
4863
- };
4864
-
4865
- class ContentStrategy {
4866
- constructor(content, domStrategy = DOM_STRATEGY.AppendToHead(), contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(), options = {}) {
4867
- this.content = content;
4868
- this.domStrategy = domStrategy;
4869
- this.contentSecurityStrategy = contentSecurityStrategy;
4870
- this.options = options;
4871
- }
4872
- insertElement() {
4873
- const element = this.createElement();
4874
- if (this.options && Object.keys(this.options).length > 0) {
4875
- Object.keys(this.options).forEach(key => {
4876
- if (this.options[key]) {
4877
- element[key] = this.options[key];
4878
- }
4879
- });
4880
- }
4881
- this.contentSecurityStrategy.applyCSP(element);
4882
- this.domStrategy.insertElement(element);
4883
- return element;
4884
- }
4885
- }
4886
- class StyleContentStrategy extends ContentStrategy {
4887
- createElement() {
4888
- const element = document.createElement('style');
4889
- element.textContent = this.content;
4890
- return element;
5144
+ class ExtensiblePagedAndSortedResultRequestDto extends ExtensiblePagedResultRequestDto {
5145
+ constructor(initialValues = {}) {
5146
+ super(initialValues);
4891
5147
  }
4892
5148
  }
4893
- class ScriptContentStrategy extends ContentStrategy {
4894
- createElement() {
4895
- const element = document.createElement('script');
4896
- element.textContent = this.content;
4897
- return element;
5149
+ class EntityDto {
5150
+ constructor(initialValues = {}) {
5151
+ for (const key in initialValues) {
5152
+ if (checkHasProp(initialValues, key)) {
5153
+ this[key] = initialValues[key];
5154
+ }
5155
+ }
4898
5156
  }
4899
5157
  }
4900
- const CONTENT_STRATEGY = {
4901
- AppendScriptToBody(content, options) {
4902
- return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);
4903
- },
4904
- AppendScriptToHead(content, options) {
4905
- return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
4906
- },
4907
- AppendStyleToHead(content, options) {
4908
- return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
4909
- },
4910
- PrependStyleToHead(content, options) {
4911
- return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);
4912
- },
4913
- };
4914
-
4915
- class ContextStrategy {
4916
- constructor(context) {
4917
- this.context = context;
4918
- }
4919
- setContext(componentRef) {
4920
- return this.context;
5158
+ class CreationAuditedEntityDto extends EntityDto {
5159
+ constructor(initialValues = {}) {
5160
+ super(initialValues);
4921
5161
  }
4922
5162
  }
4923
- class NoContextStrategy extends ContextStrategy {
4924
- constructor() {
4925
- super(undefined);
5163
+ class CreationAuditedEntityWithUserDto extends CreationAuditedEntityDto {
5164
+ constructor(initialValues = {}) {
5165
+ super(initialValues);
4926
5166
  }
4927
5167
  }
4928
- class ComponentContextStrategy extends ContextStrategy {
4929
- setContext(componentRef) {
4930
- Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));
4931
- componentRef.changeDetectorRef.detectChanges();
4932
- return this.context;
5168
+ class AuditedEntityDto extends CreationAuditedEntityDto {
5169
+ constructor(initialValues = {}) {
5170
+ super(initialValues);
4933
5171
  }
4934
5172
  }
4935
- class TemplateContextStrategy extends ContextStrategy {
4936
- setContext() {
4937
- return this.context;
5173
+ /** @deprecated the class signature will change in v8.0 */
5174
+ class AuditedEntityWithUserDto extends AuditedEntityDto {
5175
+ constructor(initialValues = {}) {
5176
+ super(initialValues);
4938
5177
  }
4939
5178
  }
4940
- const CONTEXT_STRATEGY = {
4941
- None() {
4942
- return new NoContextStrategy();
4943
- },
4944
- Component(context) {
4945
- return new ComponentContextStrategy(context);
4946
- },
4947
- Template(context) {
4948
- return new TemplateContextStrategy(context);
4949
- },
4950
- };
4951
-
4952
- class LoadingStrategy {
4953
- constructor(path, domStrategy = DOM_STRATEGY.AppendToHead(), crossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous()) {
4954
- this.path = path;
4955
- this.domStrategy = domStrategy;
4956
- this.crossOriginStrategy = crossOriginStrategy;
5179
+ class FullAuditedEntityDto extends AuditedEntityDto {
5180
+ constructor(initialValues = {}) {
5181
+ super(initialValues);
4957
5182
  }
4958
- createStream() {
4959
- this.element = this.createElement();
4960
- return of(null).pipe(switchMap(() => fromLazyLoad(this.element, this.domStrategy, this.crossOriginStrategy)));
5183
+ }
5184
+ /** @deprecated the class signature will change in v8.0 */
5185
+ class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
5186
+ constructor(initialValues = {}) {
5187
+ super(initialValues);
4961
5188
  }
4962
5189
  }
4963
- class ScriptLoadingStrategy extends LoadingStrategy {
4964
- constructor(src, domStrategy, crossOriginStrategy) {
4965
- super(src, domStrategy, crossOriginStrategy);
5190
+ class ExtensibleCreationAuditedEntityDto extends ExtensibleEntityDto {
5191
+ constructor(initialValues = {}) {
5192
+ super(initialValues);
4966
5193
  }
4967
- createElement() {
4968
- const element = document.createElement('script');
4969
- element.src = this.path;
4970
- return element;
5194
+ }
5195
+ class ExtensibleAuditedEntityDto extends ExtensibleCreationAuditedEntityDto {
5196
+ constructor(initialValues = {}) {
5197
+ super(initialValues);
4971
5198
  }
4972
5199
  }
4973
- class StyleLoadingStrategy extends LoadingStrategy {
4974
- constructor(href, domStrategy, crossOriginStrategy) {
4975
- super(href, domStrategy, crossOriginStrategy);
5200
+ class ExtensibleAuditedEntityWithUserDto extends ExtensibleAuditedEntityDto {
5201
+ constructor(initialValues = {}) {
5202
+ super(initialValues);
4976
5203
  }
4977
- createElement() {
4978
- const element = document.createElement('link');
4979
- element.rel = 'stylesheet';
4980
- element.href = this.path;
4981
- return element;
5204
+ }
5205
+ class ExtensibleCreationAuditedEntityWithUserDto extends ExtensibleCreationAuditedEntityDto {
5206
+ constructor(initialValues = {}) {
5207
+ super(initialValues);
4982
5208
  }
4983
5209
  }
4984
- const LOADING_STRATEGY = {
4985
- AppendScriptToBody(src) {
4986
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.None());
4987
- },
4988
- AppendAnonymousScriptToBody(src, integrity) {
4989
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
4990
- },
4991
- AppendAnonymousScriptToHead(src, integrity) {
4992
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
4993
- },
4994
- AppendAnonymousStyleToHead(src, integrity) {
4995
- return new StyleLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
4996
- },
4997
- PrependAnonymousScriptToHead(src, integrity) {
4998
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
4999
- },
5000
- PrependAnonymousStyleToHead(src, integrity) {
5001
- return new StyleLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
5002
- },
5003
- };
5004
-
5005
- class ProjectionStrategy {
5006
- constructor(content) {
5007
- this.content = content;
5210
+ class ExtensibleFullAuditedEntityDto extends ExtensibleAuditedEntityDto {
5211
+ constructor(initialValues = {}) {
5212
+ super(initialValues);
5008
5213
  }
5009
5214
  }
5010
- class ComponentProjectionStrategy extends ProjectionStrategy {
5011
- constructor(component, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
5012
- super(component);
5013
- this.containerStrategy = containerStrategy;
5014
- this.contextStrategy = contextStrategy;
5215
+ class ExtensibleFullAuditedEntityWithUserDto extends ExtensibleFullAuditedEntityDto {
5216
+ constructor(initialValues = {}) {
5217
+ super(initialValues);
5015
5218
  }
5016
- injectContent(injector) {
5017
- this.containerStrategy.prepare();
5018
- const resolver = injector.get(ComponentFactoryResolver);
5019
- const factory = resolver.resolveComponentFactory(this.content);
5020
- const componentRef = this.containerStrategy.containerRef.createComponent(factory, this.containerStrategy.getIndex(), injector);
5021
- this.contextStrategy.setContext(componentRef);
5022
- return componentRef;
5219
+ }
5220
+
5221
+ class AuthEvent {
5222
+ constructor(type) {
5223
+ this.type = type;
5224
+ this.type = type;
5023
5225
  }
5024
5226
  }
5025
- class RootComponentProjectionStrategy extends ProjectionStrategy {
5026
- constructor(component, contextStrategy = CONTEXT_STRATEGY.None(), domStrategy = DOM_STRATEGY.AppendToBody()) {
5027
- super(component);
5028
- this.contextStrategy = contextStrategy;
5029
- this.domStrategy = domStrategy;
5227
+ class AuthSuccessEvent extends AuthEvent {
5228
+ constructor(type, info) {
5229
+ super(type);
5230
+ this.type = type;
5231
+ this.info = info;
5030
5232
  }
5031
- injectContent(injector) {
5032
- const appRef = injector.get(ApplicationRef);
5033
- const resolver = injector.get(ComponentFactoryResolver);
5034
- const componentRef = resolver
5035
- .resolveComponentFactory(this.content)
5036
- .create(injector);
5037
- this.contextStrategy.setContext(componentRef);
5038
- appRef.attachView(componentRef.hostView);
5039
- const element = componentRef.hostView.rootNodes[0];
5040
- this.domStrategy.insertElement(element);
5041
- return componentRef;
5233
+ }
5234
+ class AuthInfoEvent extends AuthEvent {
5235
+ constructor(type, info) {
5236
+ super(type);
5237
+ this.type = type;
5238
+ this.info = info;
5042
5239
  }
5043
5240
  }
5044
- class TemplateProjectionStrategy extends ProjectionStrategy {
5045
- constructor(templateRef, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
5046
- super(templateRef);
5047
- this.containerStrategy = containerStrategy;
5048
- this.contextStrategy = contextStrategy;
5241
+ class AuthErrorEvent extends AuthEvent {
5242
+ constructor(type, reason, params) {
5243
+ super(type);
5244
+ this.type = type;
5245
+ this.reason = reason;
5246
+ this.params = params;
5049
5247
  }
5050
- injectContent() {
5051
- this.containerStrategy.prepare();
5052
- const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(this.content, this.contextStrategy.context, this.containerStrategy.getIndex());
5053
- embeddedViewRef.detectChanges();
5054
- return embeddedViewRef;
5248
+ }
5249
+
5250
+ class AbpApiDefinitionService {
5251
+ constructor() {
5252
+ this.restService = inject(RestService);
5253
+ this.apiName = 'abp';
5254
+ this.getByModel = (model, config) => this.restService.request({
5255
+ method: 'GET',
5256
+ url: '/api/abp/api-definition',
5257
+ params: { includeTypes: model.includeTypes },
5258
+ }, { apiName: this.apiName, ...config });
5055
5259
  }
5260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5261
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, providedIn: 'root' }); }
5056
5262
  }
5057
- const PROJECTION_STRATEGY = {
5058
- AppendComponentToBody(component, context) {
5059
- return new RootComponentProjectionStrategy(component, context && CONTEXT_STRATEGY.Component(context));
5060
- },
5061
- AppendComponentToContainer(component, containerRef, context) {
5062
- return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Component(context));
5063
- },
5064
- AppendTemplateToContainer(templateRef, containerRef, context) {
5065
- return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Template(context));
5066
- },
5067
- PrependComponentToContainer(component, containerRef, context) {
5068
- return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Component(context));
5069
- },
5070
- PrependTemplateToContainer(templateRef, containerRef, context) {
5071
- return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Template(context));
5072
- },
5073
- ProjectComponentToContainer(component, containerRef, context) {
5074
- return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Component(context));
5075
- },
5076
- ProjectTemplateToContainer(templateRef, containerRef, context) {
5077
- return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Template(context));
5078
- },
5079
- };
5263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, decorators: [{
5264
+ type: Injectable,
5265
+ args: [{
5266
+ providedIn: 'root',
5267
+ }]
5268
+ }] });
5269
+
5270
+ var index = /*#__PURE__*/Object.freeze({
5271
+ __proto__: null
5272
+ });
5080
5273
 
5081
5274
  function validateMinAge({ age = 18 } = {}) {
5082
5275
  return (control) => {
@@ -5217,5 +5410,5 @@ const AbpValidators = {
5217
5410
  * Generated bundle index. Do not edit.
5218
5411
  */
5219
5412
 
5220
- export { APP_INIT_ERROR_HANDLERS, AbpApiDefinitionService, AbpApplicationConfigurationService, AbpApplicationLocalizationService, AbpLocalStorageService, AbpTenantService, AbpTitleStrategy, AbpValidators, AbpWindowService, AbstractAuthErrorFilter, AbstractNavTreeService, AbstractNgModelComponent, AbstractTreeService, ApiInterceptor, AuditedEntityDto, AuditedEntityWithUserDto, AuthErrorEvent, AuthErrorFilterService, AuthEvent, AuthGuard, AuthInfoEvent, AuthService, AuthSuccessEvent, AutofocusDirective, BaseCoreModule, BaseTreeNode, CHECK_AUTHENTICATION_STATE_FN_KEY, CONTAINER_STRATEGY, CONTENT_SECURITY_STRATEGY, CONTENT_STRATEGY, CONTEXT_STRATEGY, COOKIE_LANGUAGE_KEY, CORE_OPTIONS, CROSS_ORIGIN_STRATEGY, ClearContainerStrategy, ComponentContextStrategy, ComponentProjectionStrategy, ConfigStateService, ContainerStrategy, ContentProjectionService, ContentSecurityStrategy, ContentStrategy, ContextStrategy, CookieLanguageProvider, CoreFeatureKind, CoreModule, CreationAuditedEntityDto, CreationAuditedEntityWithUserDto, CrossOriginStrategy, DEFAULT_DYNAMIC_LAYOUTS, DISABLE_PROJECT_NAME, DOM_STRATEGY, DYNAMIC_LAYOUTS_TOKEN, DefaultQueueManager, DomInsertionService, DomStrategy, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleLimitedResultRequestDto, ExtensibleObject, ExtensiblePagedAndSortedResultRequestDto, ExtensiblePagedResultRequestDto, ExternalHttpClient, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, IS_EXTERNAL_REQUEST, IncludeLocalizationResourcesProvider, InitDirective, InputEventDebounceDirective, InsertIntoContainerStrategy, InternalStore, InternetConnectionService, LIST_QUERY_DEBOUNCE_TIME, LOADER_DELAY, LOADING_STRATEGY, LOCALIZATIONS, LazyLoadService, LazyLocalizationPipe, LazyModuleFactory, LimitedResultRequestDto, ListResultDto, ListService, LoadingStrategy, LocalStorageListenerService, LocaleId, LocaleProvider, LocalizationModule, LocalizationPipe, LocalizationService, LooseContentSecurityStrategy, MultiTenancyService, NAVIGATE_TO_MANAGE_PROFILE, NavigationEvent, NoContentSecurityStrategy, NoContextStrategy, NoCrossOriginStrategy, OTHERS_GROUP, index as ObjectExtending, PIPE_TO_LOGIN_FN_KEY, PROJECTION_STRATEGY, PagedAndSortedResultRequestDto, PagedResultDto, PagedResultRequestDto, PermissionDirective, PermissionGuard, PermissionService, ProjectionStrategy, QUEUE_MANAGER, ReplaceableComponentsService, ReplaceableRouteContainerComponent, ReplaceableTemplateDirective, ResourceWaitService, RestService, RootComponentProjectionStrategy, RootCoreModule, RouterEvents, RouterOutletComponent, RouterWaitService, RoutesService, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, SORT_COMPARE_FUNC, SafeHtmlPipe, ScriptContentStrategy, ScriptLoadingStrategy, SessionStateService, ShortDatePipe, ShortDateTimePipe, ShortTimePipe, ShowPasswordDirective, SortPipe, StopPropagationDirective, StyleContentStrategy, StyleLoadingStrategy, SubscriptionService, TENANT_KEY, TENANT_NOT_FOUND_BY_NAME, TemplateContextStrategy, TemplateProjectionStrategy, TimeService, TimezoneInterceptor, TimezoneService, ToInjectorPipe, TrackByService, TrackCapsLockDirective, UtcToLocalPipe, WebHttpUrlEncodingCodec, authGuard, checkHasProp, compareFuncFactory, coreOptionsFactory, createGroupMap, createLocalizationPipeKeyGenerator, createLocalizer, createLocalizerWithFallback, createMapFromList, createTokenParser, createTreeFromList, createTreeNodeFilterCreator, deepMerge, differentLocales, downloadBlob, escapeHtmlChars, exists, featuresFactory, findRoute, fromLazyLoad, generateHash, generatePassword, getInitialData, getLocaleDirection, getPathName, getRemoteEnv, getRoutePath, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, interpolate, isArray, isNode, isNullOrEmpty, isNullOrUndefined, isNumber, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isUndefinedOrEmptyString, localeInitializer, localizationContributor, localizations$, mapEnumToOptions, noop, parseTenantFromUrl, permissionGuard, provideAbpCore, provideAbpCoreChild, pushValueTo, reloadRoute, setLanguageToCookie, trackBy, trackByDeep, uuid, validateCreditCard, validateMinAge, validateRange, validateRequired, validateStringLength, validateUniqueCharacter, validateUrl, withCompareFuncFactory, withOptions, withTitleStrategy };
5413
+ export { APP_INIT_ERROR_HANDLERS, APP_STARTED_WITH_SSR, AbpApiDefinitionService, AbpApplicationConfigurationService, AbpApplicationLocalizationService, AbpCookieStorageService, AbpLocalStorageService, AbpTenantService, AbpTitleStrategy, AbpValidators, AbpWindowService, AbstractAuthErrorFilter, AbstractNavTreeService, AbstractNgModelComponent, AbstractTreeService, ApiInterceptor, AuditedEntityDto, AuditedEntityWithUserDto, AuthErrorEvent, AuthErrorFilterService, AuthEvent, AuthGuard, AuthInfoEvent, AuthService, AuthSuccessEvent, AutofocusDirective, BaseCoreModule, BaseTreeNode, CHECK_AUTHENTICATION_STATE_FN_KEY, CONTAINER_STRATEGY, CONTENT_SECURITY_STRATEGY, CONTENT_STRATEGY, CONTEXT_STRATEGY, COOKIE_LANGUAGE_KEY, CORE_OPTIONS, CROSS_ORIGIN_STRATEGY, ClearContainerStrategy, ComponentContextStrategy, ComponentProjectionStrategy, ConfigStateService, ContainerStrategy, ContentProjectionService, ContentSecurityStrategy, ContentStrategy, ContextStrategy, CookieLanguageProvider, CoreFeatureKind, CoreModule, CreationAuditedEntityDto, CreationAuditedEntityWithUserDto, CrossOriginStrategy, DEFAULT_DYNAMIC_LAYOUTS, DISABLE_PROJECT_NAME, DOM_STRATEGY, DYNAMIC_LAYOUTS_TOKEN, DefaultQueueManager, DomInsertionService, DomStrategy, DomStrategyService, DynamicLayoutComponent, EntityDto, EnvironmentService, ExtensibleAuditedEntityDto, ExtensibleAuditedEntityWithUserDto, ExtensibleCreationAuditedEntityDto, ExtensibleCreationAuditedEntityWithUserDto, ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleFullAuditedEntityWithUserDto, ExtensibleLimitedResultRequestDto, ExtensibleObject, ExtensiblePagedAndSortedResultRequestDto, ExtensiblePagedResultRequestDto, ExternalHttpClient, ForDirective, FormSubmitDirective, FullAuditedEntityDto, FullAuditedEntityWithUserDto, HttpErrorReporterService, HttpWaitService, INCUDE_LOCALIZATION_RESOURCES_TOKEN, INJECTOR_PIPE_DATA_TOKEN, IS_EXTERNAL_REQUEST, IncludeLocalizationResourcesProvider, InitDirective, InputEventDebounceDirective, InsertIntoContainerStrategy, InternalStore, InternetConnectionService, LIST_QUERY_DEBOUNCE_TIME, LOADER_DELAY, LOADING_STRATEGY, LOCALIZATIONS, LazyLoadService, LazyLocalizationPipe, LazyModuleFactory, LimitedResultRequestDto, ListResultDto, ListService, LoadingStrategy, LocalStorageListenerService, LocaleId, LocaleProvider, LocalizationModule, LocalizationPipe, LocalizationService, LooseContentSecurityStrategy, MultiTenancyService, NAVIGATE_TO_MANAGE_PROFILE, NavigationEvent, NoContentSecurityStrategy, NoContextStrategy, NoCrossOriginStrategy, OTHERS_GROUP, index as ObjectExtending, PIPE_TO_LOGIN_FN_KEY, PROJECTION_STRATEGY, PagedAndSortedResultRequestDto, PagedResultDto, PagedResultRequestDto, PermissionDirective, PermissionGuard, PermissionService, ProjectionStrategy, QUEUE_MANAGER, ReplaceableComponentsService, ReplaceableRouteContainerComponent, ReplaceableTemplateDirective, ResourceWaitService, RestService, RootComponentProjectionStrategy, RootCoreModule, RouterEvents, RouterOutletComponent, RouterWaitService, RoutesService, SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY, SORT_COMPARE_FUNC, SSR_FLAG, SafeHtmlPipe, ScriptContentStrategy, ScriptLoadingStrategy, ServerCookieParser, SessionStateService, ShortDatePipe, ShortDateTimePipe, ShortTimePipe, ShowPasswordDirective, SortPipe, StopPropagationDirective, StyleContentStrategy, StyleLoadingStrategy, SubscriptionService, TENANT_KEY, TENANT_NOT_FOUND_BY_NAME, TemplateContextStrategy, TemplateProjectionStrategy, TimeService, TimezoneService, ToInjectorPipe, TrackByService, TrackCapsLockDirective, UtcToLocalPipe, WebHttpUrlEncodingCodec, asyncAuthGuard, authGuard, checkHasProp, compareFuncFactory, coreOptionsFactory, createGroupMap, createLocalizationPipeKeyGenerator, createLocalizer, createLocalizerWithFallback, createMapFromList, createTokenParser, createTreeFromList, createTreeNodeFilterCreator, deepMerge, differentLocales, downloadBlob, escapeHtmlChars, exists, featuresFactory, findRoute, fromLazyLoad, generateHash, generatePassword, getCurrentTenancyNameFromUrl, getInitialData, getLocaleDirection, getPathName, getRemoteEnv, getRoutePath, getShortDateFormat, getShortDateShortTimeFormat, getShortTimeFormat, interpolate, isArray, isNode, isNullOrEmpty, isNullOrUndefined, isNumber, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isUndefinedOrEmptyString, localeInitializer, localizationContributor, localizations$, mapEnumToOptions, noop, parseTenantFromUrl, permissionGuard, provideAbpCore, provideAbpCoreChild, pushValueTo, reloadRoute, setLanguageToCookie, timezoneInterceptor, trackBy, trackByDeep, transferStateInterceptor, uuid, validateCreditCard, validateMinAge, validateRange, validateRequired, validateStringLength, validateUniqueCharacter, validateUrl, withCompareFuncFactory, withOptions, withTitleStrategy };
5221
5414
  //# sourceMappingURL=abp-ng.core.mjs.map