@abp/ng.core 9.3.6 → 10.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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, input, 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, input, 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();
@@ -1320,15 +1477,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1320
1477
  }]
1321
1478
  }] });
1322
1479
 
1323
- const LOADER_DELAY = new InjectionToken('LOADER_DELAY');
1324
-
1325
1480
  class HttpWaitService {
1326
- constructor(injector) {
1481
+ constructor() {
1327
1482
  this.store = new InternalStore({
1328
1483
  requests: [],
1329
1484
  filteredRequests: [],
1330
1485
  });
1331
1486
  this.destroy$ = new Subject();
1487
+ const injector = inject(Injector);
1332
1488
  this.delay = injector.get(LOADER_DELAY, 500);
1333
1489
  }
1334
1490
  getLoading() {
@@ -1380,7 +1536,7 @@ class HttpWaitService {
1380
1536
  const { method, endpoint } = filteredRequest;
1381
1537
  return endpoint === request.endpoint && method === request.method;
1382
1538
  }
1383
- 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 }); }
1539
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1384
1540
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, providedIn: 'root' }); }
1385
1541
  }
1386
1542
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: HttpWaitService, decorators: [{
@@ -1388,7 +1544,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1388
1544
  args: [{
1389
1545
  providedIn: 'root',
1390
1546
  }]
1391
- }], ctorParameters: () => [{ type: i0.Injector }] });
1547
+ }], ctorParameters: () => [] });
1392
1548
 
1393
1549
  class ResourceWaitService {
1394
1550
  constructor() {
@@ -1427,8 +1583,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1427
1583
  }] });
1428
1584
 
1429
1585
  class LazyLoadService {
1430
- constructor(resourceWaitService) {
1431
- this.resourceWaitService = resourceWaitService;
1586
+ constructor() {
1587
+ this.resourceWaitService = inject(ResourceWaitService);
1432
1588
  this.loaded = new Map();
1433
1589
  }
1434
1590
  load(strategy, retryTimes, retryDelay) {
@@ -1450,7 +1606,7 @@ class LazyLoadService {
1450
1606
  this.loaded.delete(path);
1451
1607
  return true;
1452
1608
  }
1453
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, deps: [{ token: ResourceWaitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1609
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1454
1610
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, providedIn: 'root' }); }
1455
1611
  }
1456
1612
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LazyLoadService, decorators: [{
@@ -1458,9 +1614,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1458
1614
  args: [{
1459
1615
  providedIn: 'root',
1460
1616
  }]
1461
- }], ctorParameters: () => [{ type: ResourceWaitService }] });
1462
-
1463
- const LIST_QUERY_DEBOUNCE_TIME = new InjectionToken('LIST_QUERY_DEBOUNCE_TIME');
1617
+ }] });
1464
1618
 
1465
1619
  class ListService {
1466
1620
  set filter(value) {
@@ -1523,7 +1677,7 @@ class ListService {
1523
1677
  get requestStatus$() {
1524
1678
  return this._requestStatus.asObservable().pipe(takeUntil(this.destroy$));
1525
1679
  }
1526
- constructor(injector) {
1680
+ constructor() {
1527
1681
  this._filter = '';
1528
1682
  this._maxResultCount = 10;
1529
1683
  this._page = 0;
@@ -1541,6 +1695,7 @@ class ListService {
1541
1695
  this.getWithoutPageReset = () => {
1542
1696
  this.next();
1543
1697
  };
1698
+ const injector = inject(Injector);
1544
1699
  const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);
1545
1700
  this.delay = delay ? debounceTime(delay) : tap();
1546
1701
  this.get();
@@ -1575,16 +1730,16 @@ class ListService {
1575
1730
  sorting: this._sortOrder ? `${this._sortKey} ${this._sortOrder}` : undefined,
1576
1731
  });
1577
1732
  }
1578
- 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 }); }
1733
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1579
1734
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService }); }
1580
1735
  }
1581
1736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ListService, decorators: [{
1582
1737
  type: Injectable
1583
- }], ctorParameters: () => [{ type: i0.Injector }] });
1738
+ }], ctorParameters: () => [] });
1584
1739
 
1585
1740
  class PermissionService {
1586
- constructor(configState) {
1587
- this.configState = configState;
1741
+ constructor() {
1742
+ this.configState = inject(ConfigStateService);
1588
1743
  }
1589
1744
  getGrantedPolicy$(key) {
1590
1745
  return this.getStream().pipe(map(grantedPolicies => this.isPolicyGranted(key, grantedPolicies)));
@@ -1632,13 +1787,13 @@ class PermissionService {
1632
1787
  getPolicy(key, grantedPolicies) {
1633
1788
  return grantedPolicies[key] || false;
1634
1789
  }
1635
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, deps: [{ token: ConfigStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1790
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1636
1791
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, providedIn: 'root' }); }
1637
1792
  }
1638
1793
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionService, decorators: [{
1639
1794
  type: Injectable,
1640
1795
  args: [{ providedIn: 'root' }]
1641
- }], ctorParameters: () => [{ type: ConfigStateService }] });
1796
+ }] });
1642
1797
 
1643
1798
  class ReplaceableComponentsService {
1644
1799
  get replaceableComponents$() {
@@ -1650,9 +1805,9 @@ class ReplaceableComponentsService {
1650
1805
  get onUpdate$() {
1651
1806
  return this.store.sliceUpdate(state => state);
1652
1807
  }
1653
- constructor(ngZone, router) {
1654
- this.ngZone = ngZone;
1655
- this.router = router;
1808
+ constructor() {
1809
+ this.ngZone = inject(NgZone);
1810
+ this.router = inject(Router);
1656
1811
  this.store = new InternalStore([]);
1657
1812
  }
1658
1813
  add(replaceableComponent, reload) {
@@ -1674,23 +1829,109 @@ class ReplaceableComponentsService {
1674
1829
  get$(replaceableComponentKey) {
1675
1830
  return this.replaceableComponents$.pipe(map(components => components.find(component => component.key === replaceableComponentKey)));
1676
1831
  }
1677
- 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 }); }
1832
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1678
1833
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, providedIn: 'root' }); }
1679
1834
  }
1680
1835
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableComponentsService, decorators: [{
1681
1836
  type: Injectable,
1682
1837
  args: [{ providedIn: 'root' }]
1683
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$1.Router }] });
1838
+ }], ctorParameters: () => [] });
1684
1839
 
1685
- const NavigationEvent = {
1686
- Cancel: NavigationCancel,
1687
- End: NavigationEnd,
1688
- Error: NavigationError,
1689
- Start: NavigationStart,
1690
- };
1691
- class RouterEvents {
1692
- #previousNavigation;
1693
- #currentNavigation;
1840
+ // source : https://github.com/armanozak/demo-angular-server-specific-interceptors
1841
+ class ExternalHttpClient extends HttpClient {
1842
+ request(first, url, options = {}) {
1843
+ if (typeof first === 'string') {
1844
+ this.#setPlaceholderContext(options);
1845
+ return super.request(first, url || '', options);
1846
+ }
1847
+ this.#setPlaceholderContext(first);
1848
+ return super.request(first);
1849
+ }
1850
+ #setPlaceholderContext(optionsOrRequest) {
1851
+ optionsOrRequest.context ??= new HttpContext();
1852
+ optionsOrRequest.context.set(IS_EXTERNAL_REQUEST, true);
1853
+ }
1854
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1855
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, providedIn: 'root' }); }
1856
+ }
1857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ExternalHttpClient, decorators: [{
1858
+ type: Injectable,
1859
+ args: [{
1860
+ providedIn: 'root',
1861
+ }]
1862
+ }] });
1863
+
1864
+ class RestService {
1865
+ constructor() {
1866
+ this.options = inject(CORE_OPTIONS);
1867
+ this.http = inject(HttpClient);
1868
+ this.externalHttp = inject(ExternalHttpClient);
1869
+ this.environment = inject(EnvironmentService);
1870
+ this.httpErrorReporter = inject(HttpErrorReporterService);
1871
+ }
1872
+ getApiFromStore(apiName) {
1873
+ return this.environment.getApiUrl(apiName);
1874
+ }
1875
+ handleError(err) {
1876
+ this.httpErrorReporter.reportError(err);
1877
+ return throwError(() => err);
1878
+ }
1879
+ request(request, config, api) {
1880
+ config = config || {};
1881
+ api = api || this.getApiFromStore(config.apiName);
1882
+ const { method, params, ...options } = request;
1883
+ const { observe = "body" /* Rest.Observe.Body */, skipHandleError, responseType = "json" /* Rest.ResponseType.JSON */ } = config;
1884
+ const url = this.removeDuplicateSlashes(api + request.url);
1885
+ const httpClient = this.getHttpClient(config.skipAddingHeader);
1886
+ return httpClient
1887
+ .request(method, url, {
1888
+ observe,
1889
+ responseType: responseType,
1890
+ ...(params && {
1891
+ params: this.getParams(params, config.httpParamEncoder),
1892
+ }),
1893
+ ...options,
1894
+ })
1895
+ .pipe(catchError(err => (skipHandleError ? throwError(() => err) : this.handleError(err))));
1896
+ }
1897
+ getHttpClient(isExternal) {
1898
+ return isExternal ? this.externalHttp : this.http;
1899
+ }
1900
+ getParams(params, encoder) {
1901
+ const filteredParams = Object.entries(params).reduce((acc, [key, value]) => {
1902
+ if (isUndefinedOrEmptyString(value))
1903
+ return acc;
1904
+ if (value === null && !this.options.sendNullsAsQueryParam)
1905
+ return acc;
1906
+ acc[key] = value;
1907
+ return acc;
1908
+ }, {});
1909
+ return encoder
1910
+ ? new HttpParams({ encoder, fromObject: filteredParams })
1911
+ : new HttpParams({ fromObject: filteredParams });
1912
+ }
1913
+ removeDuplicateSlashes(url) {
1914
+ return url.replace(/([^:]\/)\/+/g, '$1');
1915
+ }
1916
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1917
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, providedIn: 'root' }); }
1918
+ }
1919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RestService, decorators: [{
1920
+ type: Injectable,
1921
+ args: [{
1922
+ providedIn: 'root',
1923
+ }]
1924
+ }] });
1925
+
1926
+ const NavigationEvent = {
1927
+ Cancel: NavigationCancel,
1928
+ End: NavigationEnd,
1929
+ Error: NavigationError,
1930
+ Start: NavigationStart,
1931
+ };
1932
+ class RouterEvents {
1933
+ #previousNavigation;
1934
+ #currentNavigation;
1694
1935
  constructor() {
1695
1936
  this.router = inject(Router);
1696
1937
  this.#previousNavigation = signal(undefined);
@@ -1730,10 +1971,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1730
1971
  }], ctorParameters: () => [] });
1731
1972
 
1732
1973
  class RouterWaitService {
1733
- constructor(routerEvents, injector) {
1734
- this.routerEvents = routerEvents;
1974
+ constructor() {
1975
+ this.routerEvents = inject(RouterEvents);
1735
1976
  this.store = new InternalStore({ loading: false });
1736
1977
  this.destroy$ = new Subject();
1978
+ const injector = inject(Injector);
1737
1979
  this.delay = injector.get(LOADER_DELAY, 500);
1738
1980
  this.updateLoadingStatusOnNavigationEvents();
1739
1981
  }
@@ -1761,7 +2003,7 @@ class RouterWaitService {
1761
2003
  setLoading(loading) {
1762
2004
  this.store.patch({ loading });
1763
2005
  }
1764
- 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 }); }
2006
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1765
2007
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, providedIn: 'root' }); }
1766
2008
  }
1767
2009
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterWaitService, decorators: [{
@@ -1769,59 +2011,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
1769
2011
  args: [{
1770
2012
  providedIn: 'root',
1771
2013
  }]
1772
- }], ctorParameters: () => [{ type: RouterEvents }, { type: i0.Injector }] });
1773
-
1774
- const COOKIE_LANGUAGE_KEY = new InjectionToken('COOKIE_LANGUAGE_KEY', {
1775
- factory: () => '.AspNetCore.Culture',
1776
- });
1777
-
1778
- const NAVIGATE_TO_MANAGE_PROFILE = new InjectionToken('NAVIGATE_TO_MANAGE_PROFILE');
1779
-
1780
- const QUEUE_MANAGER = new InjectionToken("QUEUE_MANAGER");
1781
-
1782
- const INCUDE_LOCALIZATION_RESOURCES_TOKEN = new InjectionToken('INCUDE_LOCALIZATION_RESOURCES_TOKEN');
1783
-
1784
- const PIPE_TO_LOGIN_FN_KEY = new InjectionToken('PIPE_TO_LOGIN_FN_KEY');
1785
-
1786
- /**
1787
- * @deprecated The token should not be used anymore.
1788
- */
1789
- const SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY = new InjectionToken('SET_TOKEN_RESPONSE_TO_STORAGE_FN_KEY');
1790
-
1791
- const OTHERS_GROUP = new InjectionToken('OTHERS_GROUP');
1792
-
1793
- const SORT_COMPARE_FUNC = new InjectionToken('SORT_COMPARE_FUNC');
1794
- function compareFuncFactory() {
1795
- const localizationService = inject(LocalizationService);
1796
- const fn = (a, b) => {
1797
- const aNumber = a.order;
1798
- const bNumber = b.order;
1799
- if (aNumber > bNumber)
1800
- return 1;
1801
- if (aNumber < bNumber)
1802
- return -1;
1803
- if (a.id > b.id)
1804
- return 1;
1805
- if (a.id < b.id)
1806
- return -1;
1807
- if (!Number.isInteger(aNumber))
1808
- return 1;
1809
- if (!Number.isInteger(bNumber))
1810
- return -1;
1811
- const aName = localizationService.instant(a.name);
1812
- const bName = localizationService.instant(b.name);
1813
- if (aName > bName)
1814
- return 1;
1815
- if (aName < bName)
1816
- return -1;
1817
- return 0;
1818
- };
1819
- return fn;
1820
- }
1821
-
1822
- const DYNAMIC_LAYOUTS_TOKEN = new InjectionToken('DYNAMIC_LAYOUTS');
1823
-
1824
- const DISABLE_PROJECT_NAME = new InjectionToken('DISABLE_APP_NAME');
2014
+ }], ctorParameters: () => [] });
1825
2015
 
1826
2016
  // eslint-disable-next-line @typescript-eslint/ban-types
1827
2017
  class AbstractTreeService {
@@ -1958,15 +2148,16 @@ class AbstractTreeService {
1958
2148
  }
1959
2149
  }
1960
2150
  class AbstractNavTreeService extends AbstractTreeService {
1961
- constructor(injector) {
2151
+ constructor() {
1962
2152
  super();
1963
- this.injector = injector;
2153
+ this.injector = inject(Injector);
1964
2154
  this.id = 'name';
1965
2155
  this.parentId = 'parentName';
1966
2156
  this.hide = (item) => item.invisible || !this.isGranted(item);
1967
2157
  this.sort = (a, b) => {
1968
2158
  return this.compareFunc(a, b);
1969
2159
  };
2160
+ const injector = this.injector;
1970
2161
  const configState = this.injector.get(ConfigStateService);
1971
2162
  this.subscription = configState
1972
2163
  .createOnUpdateStream(state => state)
@@ -1990,12 +2181,12 @@ class AbstractNavTreeService extends AbstractTreeService {
1990
2181
  ngOnDestroy() {
1991
2182
  this.subscription.unsubscribe();
1992
2183
  }
1993
- 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 }); }
2184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1994
2185
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService }); }
1995
2186
  }
1996
2187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbstractNavTreeService, decorators: [{
1997
2188
  type: Injectable
1998
- }], ctorParameters: () => [{ type: i0.Injector }] });
2189
+ }], ctorParameters: () => [] });
1999
2190
  class RoutesService extends AbstractNavTreeService {
2000
2191
  hasPathOrChild(item) {
2001
2192
  return Boolean(item.path) || this.hasChildren(item.name);
@@ -2359,93 +2550,404 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2359
2550
  }]
2360
2551
  }] });
2361
2552
 
2362
- class AbpApplicationConfigurationService {
2363
- constructor(restService) {
2364
- this.restService = restService;
2365
- this.apiName = 'abp';
2366
- this.get = (options, config) => this.restService.request({
2367
- method: 'GET',
2368
- url: '/api/abp/application-configuration',
2369
- params: { includeLocalizationResources: options.includeLocalizationResources },
2370
- }, { apiName: this.apiName, ...config });
2553
+ class ContainerStrategy {
2554
+ constructor(containerRef) {
2555
+ this.containerRef = containerRef;
2371
2556
  }
2372
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2373
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, providedIn: 'root' }); }
2557
+ prepare() { }
2374
2558
  }
2375
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, decorators: [{
2376
- type: Injectable,
2377
- args: [{
2378
- providedIn: 'root',
2379
- }]
2380
- }], ctorParameters: () => [{ type: RestService }] });
2381
-
2382
- class AbpApplicationLocalizationService {
2383
- constructor(restService) {
2384
- this.restService = restService;
2385
- this.apiName = 'abp';
2386
- this.get = (input, config) => this.restService.request({
2387
- method: 'GET',
2388
- url: '/api/abp/application-localization',
2389
- params: { cultureName: input.cultureName, onlyDynamics: input.onlyDynamics },
2390
- }, { apiName: this.apiName, ...config });
2559
+ class ClearContainerStrategy extends ContainerStrategy {
2560
+ getIndex() {
2561
+ return 0;
2562
+ }
2563
+ prepare() {
2564
+ this.containerRef.clear();
2391
2565
  }
2392
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2393
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, providedIn: 'root' }); }
2394
2566
  }
2395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, decorators: [{
2396
- type: Injectable,
2397
- args: [{
2398
- providedIn: 'root',
2399
- }]
2400
- }], ctorParameters: () => [{ type: RestService }] });
2401
-
2402
- class ConfigStateService {
2403
- setState(config) {
2404
- this.store.set(config);
2567
+ class InsertIntoContainerStrategy extends ContainerStrategy {
2568
+ constructor(containerRef, index) {
2569
+ super(containerRef);
2570
+ this.index = index;
2405
2571
  }
2406
- get createOnUpdateStream() {
2407
- return this.store.sliceUpdate;
2572
+ getIndex() {
2573
+ return Math.min(Math.max(0, this.index), this.containerRef.length);
2408
2574
  }
2409
- constructor(abpConfigService, abpApplicationLocalizationService, includeLocalizationResources) {
2410
- this.abpConfigService = abpConfigService;
2411
- this.abpApplicationLocalizationService = abpApplicationLocalizationService;
2412
- this.includeLocalizationResources = includeLocalizationResources;
2413
- this.updateSubject = new Subject();
2414
- this.store = new InternalStore({});
2415
- this.initUpdateStream();
2575
+ }
2576
+ const CONTAINER_STRATEGY = {
2577
+ Clear(containerRef) {
2578
+ return new ClearContainerStrategy(containerRef);
2579
+ },
2580
+ Append(containerRef) {
2581
+ return new InsertIntoContainerStrategy(containerRef, containerRef.length);
2582
+ },
2583
+ Prepend(containerRef) {
2584
+ return new InsertIntoContainerStrategy(containerRef, 0);
2585
+ },
2586
+ Insert(containerRef, index) {
2587
+ return new InsertIntoContainerStrategy(containerRef, index);
2588
+ },
2589
+ };
2590
+
2591
+ class ContentSecurityStrategy {
2592
+ constructor(nonce) {
2593
+ this.nonce = nonce;
2416
2594
  }
2417
- initUpdateStream() {
2418
- this.updateSubject
2419
- .pipe(switchMap(() => this.abpConfigService.get({
2420
- includeLocalizationResources: !!this.includeLocalizationResources,
2421
- })))
2422
- .pipe(switchMap(appState => this.getLocalizationAndCombineWithAppState(appState)))
2423
- .subscribe(res => this.store.set(res));
2595
+ }
2596
+ class LooseContentSecurityStrategy extends ContentSecurityStrategy {
2597
+ constructor(nonce) {
2598
+ super(nonce);
2424
2599
  }
2425
- getLocalizationAndCombineWithAppState(appState) {
2426
- if (!appState.localization.currentCulture.cultureName) {
2427
- throw new Error('culture name should defined');
2600
+ applyCSP(element) {
2601
+ if (this.nonce) {
2602
+ element.setAttribute('nonce', this.nonce);
2428
2603
  }
2429
- const cultureName = this.uiCultureFromAuthCodeFlow ?? appState.localization.currentCulture.cultureName;
2430
- return this.getlocalizationResource(cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })), tap(() => (this.uiCultureFromAuthCodeFlow = undefined)));
2431
- }
2432
- getlocalizationResource(cultureName) {
2433
- return this.abpApplicationLocalizationService.get({
2434
- cultureName: cultureName,
2435
- onlyDynamics: false,
2436
- });
2437
2604
  }
2438
- refreshAppState() {
2439
- this.updateSubject.next();
2440
- return this.createOnUpdateStream(state => state).pipe(take(1));
2605
+ }
2606
+ class NoContentSecurityStrategy extends ContentSecurityStrategy {
2607
+ constructor() {
2608
+ super();
2441
2609
  }
2442
- refreshLocalization(lang) {
2443
- if (this.includeLocalizationResources) {
2444
- return this.refreshAppState().pipe(map(() => null));
2445
- }
2446
- return this.getlocalizationResource(lang)
2447
- .pipe(tap(result => this.store.patch({ localization: { ...this.store.state.localization, ...result } })))
2448
- .pipe(map(() => null));
2610
+ applyCSP(_) { }
2611
+ }
2612
+ const CONTENT_SECURITY_STRATEGY = {
2613
+ Loose(nonce) {
2614
+ return new LooseContentSecurityStrategy(nonce);
2615
+ },
2616
+ None() {
2617
+ return new NoContentSecurityStrategy();
2618
+ },
2619
+ };
2620
+
2621
+ class ContentStrategy {
2622
+ constructor(content, domStrategy = DOM_STRATEGY.AppendToHead(), contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(), options = {}) {
2623
+ this.content = content;
2624
+ this.domStrategy = domStrategy;
2625
+ this.contentSecurityStrategy = contentSecurityStrategy;
2626
+ this.options = options;
2627
+ }
2628
+ insertElement() {
2629
+ const element = this.createElement();
2630
+ if (this.options && Object.keys(this.options).length > 0) {
2631
+ Object.keys(this.options).forEach(key => {
2632
+ if (this.options[key]) {
2633
+ element[key] = this.options[key];
2634
+ }
2635
+ });
2636
+ }
2637
+ this.contentSecurityStrategy.applyCSP(element);
2638
+ this.domStrategy.insertElement(element);
2639
+ return element;
2640
+ }
2641
+ }
2642
+ class StyleContentStrategy extends ContentStrategy {
2643
+ createElement() {
2644
+ const element = inject(DOCUMENT).createElement('style');
2645
+ element.textContent = this.content;
2646
+ return element;
2647
+ }
2648
+ }
2649
+ class ScriptContentStrategy extends ContentStrategy {
2650
+ createElement() {
2651
+ const element = inject(DOCUMENT).createElement('script');
2652
+ element.textContent = this.content;
2653
+ return element;
2654
+ }
2655
+ }
2656
+ const CONTENT_STRATEGY = {
2657
+ AppendScriptToBody(content, options) {
2658
+ return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);
2659
+ },
2660
+ AppendScriptToHead(content, options) {
2661
+ return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
2662
+ },
2663
+ AppendStyleToHead(content, options) {
2664
+ return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
2665
+ },
2666
+ PrependStyleToHead(content, options) {
2667
+ return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);
2668
+ },
2669
+ };
2670
+
2671
+ class ContextStrategy {
2672
+ constructor(context) {
2673
+ this.context = context;
2674
+ }
2675
+ setContext(componentRef) {
2676
+ return this.context;
2677
+ }
2678
+ }
2679
+ class NoContextStrategy extends ContextStrategy {
2680
+ constructor() {
2681
+ super(undefined);
2682
+ }
2683
+ }
2684
+ class ComponentContextStrategy extends ContextStrategy {
2685
+ setContext(componentRef) {
2686
+ Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));
2687
+ componentRef.changeDetectorRef.detectChanges();
2688
+ return this.context;
2689
+ }
2690
+ }
2691
+ class TemplateContextStrategy extends ContextStrategy {
2692
+ setContext() {
2693
+ return this.context;
2694
+ }
2695
+ }
2696
+ const CONTEXT_STRATEGY = {
2697
+ None() {
2698
+ return new NoContextStrategy();
2699
+ },
2700
+ Component(context) {
2701
+ return new ComponentContextStrategy(context);
2702
+ },
2703
+ Template(context) {
2704
+ return new TemplateContextStrategy(context);
2705
+ },
2706
+ };
2707
+
2708
+ class LoadingStrategy {
2709
+ constructor(path, domStrategy = DOM_STRATEGY.AppendToHead(), crossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous()) {
2710
+ this.path = path;
2711
+ this.domStrategy = domStrategy;
2712
+ this.crossOriginStrategy = crossOriginStrategy;
2713
+ }
2714
+ createStream() {
2715
+ this.element = this.createElement();
2716
+ return of(null).pipe(switchMap(() => fromLazyLoad(this.element, this.domStrategy, this.crossOriginStrategy)));
2717
+ }
2718
+ }
2719
+ class ScriptLoadingStrategy extends LoadingStrategy {
2720
+ constructor(src, domStrategy, crossOriginStrategy) {
2721
+ super(src, domStrategy, crossOriginStrategy);
2722
+ }
2723
+ createElement() {
2724
+ const element = document.createElement('script');
2725
+ element.src = this.path;
2726
+ return element;
2727
+ }
2728
+ }
2729
+ class StyleLoadingStrategy extends LoadingStrategy {
2730
+ constructor(href, domStrategy, crossOriginStrategy) {
2731
+ super(href, domStrategy, crossOriginStrategy);
2732
+ }
2733
+ createElement() {
2734
+ const element = document.createElement('link');
2735
+ element.rel = 'stylesheet';
2736
+ element.href = this.path;
2737
+ return element;
2738
+ }
2739
+ }
2740
+ const LOADING_STRATEGY = {
2741
+ AppendScriptToBody(src) {
2742
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.None());
2743
+ },
2744
+ AppendAnonymousScriptToBody(src, integrity) {
2745
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2746
+ },
2747
+ AppendAnonymousScriptToHead(src, integrity) {
2748
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2749
+ },
2750
+ AppendAnonymousStyleToHead(src, integrity) {
2751
+ return new StyleLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2752
+ },
2753
+ PrependAnonymousScriptToHead(src, integrity) {
2754
+ return new ScriptLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2755
+ },
2756
+ PrependAnonymousStyleToHead(src, integrity) {
2757
+ return new StyleLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
2758
+ },
2759
+ };
2760
+
2761
+ class ProjectionStrategy {
2762
+ constructor(content) {
2763
+ this.content = content;
2764
+ }
2765
+ }
2766
+ class ComponentProjectionStrategy extends ProjectionStrategy {
2767
+ constructor(component, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
2768
+ super(component);
2769
+ this.containerStrategy = containerStrategy;
2770
+ this.contextStrategy = contextStrategy;
2771
+ }
2772
+ injectContent(injector) {
2773
+ this.containerStrategy.prepare();
2774
+ const resolver = injector.get(ComponentFactoryResolver);
2775
+ const factory = resolver.resolveComponentFactory(this.content);
2776
+ const componentRef = this.containerStrategy.containerRef.createComponent(factory, this.containerStrategy.getIndex(), injector);
2777
+ this.contextStrategy.setContext(componentRef);
2778
+ return componentRef;
2779
+ }
2780
+ }
2781
+ class RootComponentProjectionStrategy extends ProjectionStrategy {
2782
+ constructor(component, contextStrategy = CONTEXT_STRATEGY.None(), domStrategy = DOM_STRATEGY.AppendToBody()) {
2783
+ super(component);
2784
+ this.contextStrategy = contextStrategy;
2785
+ this.domStrategy = domStrategy;
2786
+ }
2787
+ injectContent(injector) {
2788
+ const appRef = injector.get(ApplicationRef);
2789
+ const resolver = injector.get(ComponentFactoryResolver);
2790
+ const componentRef = resolver
2791
+ .resolveComponentFactory(this.content)
2792
+ .create(injector);
2793
+ this.contextStrategy.setContext(componentRef);
2794
+ appRef.attachView(componentRef.hostView);
2795
+ const element = componentRef.hostView.rootNodes[0];
2796
+ this.domStrategy.insertElement(element);
2797
+ return componentRef;
2798
+ }
2799
+ }
2800
+ class TemplateProjectionStrategy extends ProjectionStrategy {
2801
+ constructor(templateRef, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
2802
+ super(templateRef);
2803
+ this.containerStrategy = containerStrategy;
2804
+ this.contextStrategy = contextStrategy;
2805
+ }
2806
+ injectContent() {
2807
+ this.containerStrategy.prepare();
2808
+ const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(this.content, this.contextStrategy.context, this.containerStrategy.getIndex());
2809
+ embeddedViewRef.detectChanges();
2810
+ return embeddedViewRef;
2811
+ }
2812
+ }
2813
+ const PROJECTION_STRATEGY = {
2814
+ AppendComponentToBody(component, context) {
2815
+ return new RootComponentProjectionStrategy(component, context && CONTEXT_STRATEGY.Component(context));
2816
+ },
2817
+ AppendComponentToContainer(component, containerRef, context) {
2818
+ return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Component(context));
2819
+ },
2820
+ AppendTemplateToContainer(templateRef, containerRef, context) {
2821
+ return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Template(context));
2822
+ },
2823
+ PrependComponentToContainer(component, containerRef, context) {
2824
+ return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Component(context));
2825
+ },
2826
+ PrependTemplateToContainer(templateRef, containerRef, context) {
2827
+ return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Template(context));
2828
+ },
2829
+ ProjectComponentToContainer(component, containerRef, context) {
2830
+ return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Component(context));
2831
+ },
2832
+ ProjectTemplateToContainer(templateRef, containerRef, context) {
2833
+ return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Template(context));
2834
+ },
2835
+ };
2836
+
2837
+ class DomStrategyService {
2838
+ constructor() {
2839
+ this.document = inject(DOCUMENT);
2840
+ }
2841
+ afterElement(el) {
2842
+ return new DomStrategy(() => el, 'afterend');
2843
+ }
2844
+ beforeElement(el) {
2845
+ return new DomStrategy(() => el, 'beforebegin');
2846
+ }
2847
+ appendToBody() {
2848
+ return new DomStrategy(() => this.document.body, 'beforeend');
2849
+ }
2850
+ appendToHead() {
2851
+ return new DomStrategy(() => this.document.head, 'beforeend');
2852
+ }
2853
+ prependToHead() {
2854
+ return new DomStrategy(() => this.document.head, 'afterbegin');
2855
+ }
2856
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DomStrategyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2857
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DomStrategyService, providedIn: 'root' }); }
2858
+ }
2859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DomStrategyService, decorators: [{
2860
+ type: Injectable,
2861
+ args: [{ providedIn: 'root' }]
2862
+ }] });
2863
+
2864
+ class AbpApplicationConfigurationService {
2865
+ constructor() {
2866
+ this.restService = inject(RestService);
2867
+ this.apiName = 'abp';
2868
+ this.get = (options, config) => this.restService.request({
2869
+ method: 'GET',
2870
+ url: '/api/abp/application-configuration',
2871
+ params: { includeLocalizationResources: options.includeLocalizationResources },
2872
+ }, { apiName: this.apiName, ...config });
2873
+ }
2874
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2875
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, providedIn: 'root' }); }
2876
+ }
2877
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationConfigurationService, decorators: [{
2878
+ type: Injectable,
2879
+ args: [{
2880
+ providedIn: 'root',
2881
+ }]
2882
+ }] });
2883
+
2884
+ class AbpApplicationLocalizationService {
2885
+ constructor() {
2886
+ this.restService = inject(RestService);
2887
+ this.apiName = 'abp';
2888
+ this.get = (input, config) => this.restService.request({
2889
+ method: 'GET',
2890
+ url: '/api/abp/application-localization',
2891
+ params: { cultureName: input.cultureName, onlyDynamics: input.onlyDynamics },
2892
+ }, { apiName: this.apiName, ...config });
2893
+ }
2894
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2895
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, providedIn: 'root' }); }
2896
+ }
2897
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApplicationLocalizationService, decorators: [{
2898
+ type: Injectable,
2899
+ args: [{
2900
+ providedIn: 'root',
2901
+ }]
2902
+ }] });
2903
+
2904
+ class ConfigStateService {
2905
+ setState(config) {
2906
+ this.store.set(config);
2907
+ }
2908
+ get createOnUpdateStream() {
2909
+ return this.store.sliceUpdate;
2910
+ }
2911
+ constructor() {
2912
+ this.abpConfigService = inject(AbpApplicationConfigurationService);
2913
+ this.abpApplicationLocalizationService = inject(AbpApplicationLocalizationService);
2914
+ this.includeLocalizationResources = inject(INCUDE_LOCALIZATION_RESOURCES_TOKEN, { optional: true });
2915
+ this.updateSubject = new Subject();
2916
+ this.store = new InternalStore({});
2917
+ this.initUpdateStream();
2918
+ }
2919
+ initUpdateStream() {
2920
+ this.updateSubject
2921
+ .pipe(switchMap(() => this.abpConfigService.get({
2922
+ includeLocalizationResources: !!this.includeLocalizationResources,
2923
+ })))
2924
+ .pipe(switchMap(appState => this.getLocalizationAndCombineWithAppState(appState)))
2925
+ .subscribe(res => this.store.set(res));
2926
+ }
2927
+ getLocalizationAndCombineWithAppState(appState) {
2928
+ if (!appState.localization.currentCulture.cultureName) {
2929
+ throw new Error('culture name should defined');
2930
+ }
2931
+ const cultureName = this.uiCultureFromAuthCodeFlow ?? appState.localization.currentCulture.cultureName;
2932
+ return this.getlocalizationResource(cultureName).pipe(map(result => ({ ...appState, localization: { ...appState.localization, ...result } })), tap(() => (this.uiCultureFromAuthCodeFlow = undefined)));
2933
+ }
2934
+ getlocalizationResource(cultureName) {
2935
+ return this.abpApplicationLocalizationService.get({
2936
+ cultureName: cultureName,
2937
+ onlyDynamics: false,
2938
+ });
2939
+ }
2940
+ refreshAppState() {
2941
+ this.updateSubject.next();
2942
+ return this.createOnUpdateStream(state => state).pipe(take(1));
2943
+ }
2944
+ refreshLocalization(lang) {
2945
+ if (this.includeLocalizationResources) {
2946
+ return this.refreshAppState().pipe(map(() => null));
2947
+ }
2948
+ return this.getlocalizationResource(lang)
2949
+ .pipe(tap(result => this.store.patch({ localization: { ...this.store.state.localization, ...result } })))
2950
+ .pipe(map(() => null));
2449
2951
  }
2450
2952
  getOne$(key) {
2451
2953
  return this.store.sliceState(state => state[key]);
@@ -2554,7 +3056,7 @@ class ConfigStateService {
2554
3056
  getGlobalFeatureIsEnabled$(key) {
2555
3057
  return this.store.sliceState(state => this.isGlobalFeatureEnabled(key, state.globalFeatures));
2556
3058
  }
2557
- 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 }); }
3059
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2558
3060
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, providedIn: 'root' }); }
2559
3061
  }
2560
3062
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ConfigStateService, decorators: [{
@@ -2562,12 +3064,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2562
3064
  args: [{
2563
3065
  providedIn: 'root',
2564
3066
  }]
2565
- }], ctorParameters: () => [{ type: AbpApplicationConfigurationService }, { type: AbpApplicationLocalizationService }, { type: undefined, decorators: [{
2566
- type: Optional
2567
- }, {
2568
- type: Inject,
2569
- args: [INCUDE_LOCALIZATION_RESOURCES_TOKEN]
2570
- }] }] });
3067
+ }], ctorParameters: () => [] });
2571
3068
  function splitKeys(keys) {
2572
3069
  if (typeof keys === 'string') {
2573
3070
  keys = keys.split('.');
@@ -2594,14 +3091,15 @@ class LocalizationService {
2594
3091
  get languageChange$() {
2595
3092
  return this._languageChange$.asObservable();
2596
3093
  }
2597
- constructor(sessionState, injector, otherInstance, configState) {
2598
- this.sessionState = sessionState;
2599
- this.injector = injector;
2600
- this.configState = configState;
3094
+ constructor() {
3095
+ this.sessionState = inject(SessionStateService);
3096
+ this.injector = inject(Injector);
3097
+ this.configState = inject(ConfigStateService);
2601
3098
  this.latestLang = this.sessionState.getLanguage();
2602
3099
  this._languageChange$ = new Subject();
2603
3100
  this.uiLocalizations$ = new BehaviorSubject(new Map());
2604
3101
  this.localizations$ = new BehaviorSubject(new Map());
3102
+ const otherInstance = inject(LocalizationService, { optional: true, skipSelf: true });
2605
3103
  if (otherInstance)
2606
3104
  throw new Error('LocalizationService should have only one instance.');
2607
3105
  this.listenToSetLanguage();
@@ -2747,17 +3245,13 @@ class LocalizationService {
2747
3245
  localization = '';
2748
3246
  return localization || defaultValue || key;
2749
3247
  }
2750
- 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 }); }
3248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2751
3249
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, providedIn: 'root' }); }
2752
3250
  }
2753
3251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationService, decorators: [{
2754
3252
  type: Injectable,
2755
3253
  args: [{ providedIn: 'root' }]
2756
- }], ctorParameters: () => [{ type: SessionStateService }, { type: i0.Injector }, { type: LocalizationService, decorators: [{
2757
- type: Optional
2758
- }, {
2759
- type: SkipSelf
2760
- }] }, { type: ConfigStateService }] });
3254
+ }], ctorParameters: () => [] });
2761
3255
  function recursivelyMergeBaseResources(baseResourceName, source) {
2762
3256
  const item = source[baseResourceName];
2763
3257
  if (item.baseResources.length === 0) {
@@ -2784,7 +3278,7 @@ function combineLegacyandNewResources(legacy, resource) {
2784
3278
  }
2785
3279
 
2786
3280
  class DynamicLayoutComponent {
2787
- constructor(dynamicLayoutComponent) {
3281
+ constructor() {
2788
3282
  this.layouts = inject(DYNAMIC_LAYOUTS_TOKEN);
2789
3283
  this.isLayoutVisible = true;
2790
3284
  this.defaultLayout = input(undefined);
@@ -2796,6 +3290,7 @@ class DynamicLayoutComponent {
2796
3290
  this.subscription = inject(SubscriptionService);
2797
3291
  this.routerEvents = inject(RouterEvents);
2798
3292
  this.environment = inject(EnvironmentService);
3293
+ const dynamicLayoutComponent = inject(DynamicLayoutComponent, { optional: true, skipSelf: true });
2799
3294
  if (dynamicLayoutComponent) {
2800
3295
  if (isDevMode())
2801
3296
  console.warn('DynamicLayoutComponent must be used only in AppComponent.');
@@ -2803,15 +3298,7 @@ class DynamicLayoutComponent {
2803
3298
  }
2804
3299
  this.checkLayoutOnNavigationEnd();
2805
3300
  this.listenToLanguageChange();
2806
- }
2807
- ngOnInit() {
2808
- if (this.layout) {
2809
- return;
2810
- }
2811
- const { oAuthConfig } = this.environment.getEnvironment();
2812
- if (oAuthConfig.responseType === 'code') {
2813
- this.getLayout();
2814
- }
3301
+ this.listenToEnvironmentChange();
2815
3302
  }
2816
3303
  checkLayoutOnNavigationEnd() {
2817
3304
  const navigationEnd$ = this.routerEvents.getNavigationEvents('End');
@@ -2863,12 +3350,23 @@ class DynamicLayoutComponent {
2863
3350
  getComponent(key) {
2864
3351
  return this.replaceableComponents.get(key);
2865
3352
  }
2866
- 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 }); }
3353
+ listenToEnvironmentChange() {
3354
+ this.environment
3355
+ .createOnUpdateStream(x => x.oAuthConfig)
3356
+ .pipe(take$1(1), filter$1(config => config.responseType === 'code'))
3357
+ .subscribe(() => {
3358
+ if (this.layout) {
3359
+ return;
3360
+ }
3361
+ this.getLayout();
3362
+ });
3363
+ }
3364
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DynamicLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2867
3365
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: DynamicLayoutComponent, isStandalone: true, selector: "abp-dynamic-layout", inputs: { defaultLayout: { classPropertyName: "defaultLayout", publicName: "defaultLayout", isSignal: true, isRequired: false, transformFunction: null } }, providers: [SubscriptionService], ngImport: i0, template: `
2868
3366
  @if (isLayoutVisible) {
2869
3367
  <ng-container [ngComponentOutlet]="layout"></ng-container>
2870
3368
  }
2871
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
3369
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
2872
3370
  }
2873
3371
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: DynamicLayoutComponent, decorators: [{
2874
3372
  type: Component,
@@ -2880,19 +3378,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2880
3378
  }
2881
3379
  `,
2882
3380
  providers: [SubscriptionService],
2883
- imports: [CommonModule],
3381
+ imports: [NgComponentOutlet],
2884
3382
  }]
2885
- }], ctorParameters: () => [{ type: DynamicLayoutComponent, decorators: [{
2886
- type: Optional
2887
- }, {
2888
- type: SkipSelf
2889
- }] }] });
3383
+ }], ctorParameters: () => [] });
2890
3384
 
2891
3385
  class ReplaceableRouteContainerComponent {
2892
- constructor(route, replaceableComponents, subscription) {
2893
- this.route = route;
2894
- this.replaceableComponents = replaceableComponents;
2895
- this.subscription = subscription;
3386
+ constructor() {
3387
+ this.route = inject(ActivatedRoute);
3388
+ this.replaceableComponents = inject(ReplaceableComponentsService);
3389
+ this.subscription = inject(SubscriptionService);
2896
3390
  }
2897
3391
  ngOnInit() {
2898
3392
  this.defaultComponent = this.route.snapshot.data.replaceableComponent.defaultComponent;
@@ -2904,10 +3398,10 @@ class ReplaceableRouteContainerComponent {
2904
3398
  this.externalComponent = res.component;
2905
3399
  });
2906
3400
  }
2907
- 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 }); }
3401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableRouteContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2908
3402
  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: `
2909
3403
  <ng-container *ngComponentOutlet="externalComponent || defaultComponent"></ng-container>
2910
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
3404
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }] }); }
2911
3405
  }
2912
3406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableRouteContainerComponent, decorators: [{
2913
3407
  type: Component,
@@ -2917,20 +3411,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
2917
3411
  <ng-container *ngComponentOutlet="externalComponent || defaultComponent"></ng-container>
2918
3412
  `,
2919
3413
  providers: [SubscriptionService],
2920
- imports: [CommonModule],
3414
+ imports: [NgComponentOutlet],
2921
3415
  }]
2922
- }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: ReplaceableComponentsService }, { type: SubscriptionService }] });
3416
+ }] });
2923
3417
 
2924
3418
  class RouterOutletComponent {
2925
3419
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2926
- 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"] }] }); }
3420
+ 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"] }] }); }
2927
3421
  }
2928
3422
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RouterOutletComponent, decorators: [{
2929
3423
  type: Component,
2930
3424
  args: [{
2931
3425
  selector: 'abp-router-outlet',
2932
3426
  template: ` <router-outlet></router-outlet> `,
2933
- imports: [RouterModule],
3427
+ imports: [RouterOutlet],
2934
3428
  }]
2935
3429
  }] });
2936
3430
 
@@ -3278,20 +3772,20 @@ const DEFAULT_DYNAMIC_LAYOUTS = new Map([
3278
3772
  ]);
3279
3773
 
3280
3774
  class AutofocusDirective {
3775
+ constructor() {
3776
+ this.elRef = inject(ElementRef);
3777
+ this._delay = 0;
3778
+ }
3281
3779
  set delay(val) {
3282
3780
  this._delay = Number(val) || 0;
3283
3781
  }
3284
3782
  get delay() {
3285
3783
  return this._delay;
3286
3784
  }
3287
- constructor(elRef) {
3288
- this.elRef = elRef;
3289
- this._delay = 0;
3290
- }
3291
3785
  ngAfterViewInit() {
3292
3786
  setTimeout(() => this.elRef.nativeElement.focus(), this.delay);
3293
3787
  }
3294
- 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 }); }
3788
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AutofocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3295
3789
  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 }); }
3296
3790
  }
3297
3791
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AutofocusDirective, decorators: [{
@@ -3299,15 +3793,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3299
3793
  args: [{
3300
3794
  selector: '[autofocus]',
3301
3795
  }]
3302
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { delay: [{
3796
+ }], propDecorators: { delay: [{
3303
3797
  type: Input,
3304
3798
  args: ['autofocus']
3305
3799
  }] } });
3306
3800
 
3307
3801
  class InputEventDebounceDirective {
3308
- constructor(el, subscription) {
3309
- this.el = el;
3310
- this.subscription = subscription;
3802
+ constructor() {
3803
+ this.el = inject(ElementRef);
3804
+ this.subscription = inject(SubscriptionService);
3311
3805
  this.debounce = 300;
3312
3806
  this.debounceEvent = new EventEmitter();
3313
3807
  }
@@ -3317,7 +3811,7 @@ class InputEventDebounceDirective {
3317
3811
  this.debounceEvent.emit(event);
3318
3812
  });
3319
3813
  }
3320
- 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 }); }
3814
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InputEventDebounceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3321
3815
  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 }); }
3322
3816
  }
3323
3817
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InputEventDebounceDirective, decorators: [{
@@ -3326,7 +3820,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3326
3820
  selector: '[input.debounce]',
3327
3821
  providers: [SubscriptionService],
3328
3822
  }]
3329
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SubscriptionService }], propDecorators: { debounce: [{
3823
+ }], propDecorators: { debounce: [{
3330
3824
  type: Input
3331
3825
  }], debounceEvent: [{
3332
3826
  type: Output,
@@ -3348,17 +3842,17 @@ class RecordView {
3348
3842
  }
3349
3843
  }
3350
3844
  class ForDirective {
3845
+ constructor() {
3846
+ this.tempRef = inject(TemplateRef);
3847
+ this.vcRef = inject(ViewContainerRef);
3848
+ this.differs = inject(IterableDiffers);
3849
+ }
3351
3850
  get compareFn() {
3352
3851
  return this.compareBy || compare;
3353
3852
  }
3354
3853
  get trackByFn() {
3355
3854
  return this.trackBy || ((index, item) => item.id || index);
3356
3855
  }
3357
- constructor(tempRef, vcRef, differs) {
3358
- this.tempRef = tempRef;
3359
- this.vcRef = vcRef;
3360
- this.differs = differs;
3361
- }
3362
3856
  iterateOverAppliedOperations(changes) {
3363
3857
  const rw = [];
3364
3858
  changes.forEachOperation((record, previousIndex, currentIndex) => {
@@ -3454,7 +3948,7 @@ class ForDirective {
3454
3948
  this.projectItems(items);
3455
3949
  }
3456
3950
  }
3457
- 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 }); }
3951
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3458
3952
  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 }); }
3459
3953
  }
3460
3954
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ForDirective, decorators: [{
@@ -3462,7 +3956,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3462
3956
  args: [{
3463
3957
  selector: '[abpFor]',
3464
3958
  }]
3465
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }], propDecorators: { items: [{
3959
+ }], propDecorators: { items: [{
3466
3960
  type: Input,
3467
3961
  args: ['abpForOf']
3468
3962
  }], orderBy: [{
@@ -3492,11 +3986,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3492
3986
  * @deprecated FormSubmitDirective will be removed in V7.0.0. Use `ngSubmit` instead.
3493
3987
  */
3494
3988
  class FormSubmitDirective {
3495
- constructor(formGroupDirective, host, cdRef, subscription) {
3496
- this.formGroupDirective = formGroupDirective;
3497
- this.host = host;
3498
- this.cdRef = cdRef;
3499
- this.subscription = subscription;
3989
+ constructor() {
3990
+ this.formGroupDirective = inject(FormGroupDirective, { self: true });
3991
+ this.host = inject(ElementRef);
3992
+ this.cdRef = inject(ChangeDetectorRef);
3993
+ this.subscription = inject(SubscriptionService);
3500
3994
  this.debounce = 200;
3501
3995
  this.markAsDirtyWhenSubmit = true;
3502
3996
  this.ngSubmit = new EventEmitter();
@@ -3523,7 +4017,7 @@ class FormSubmitDirective {
3523
4017
  form.markAsDirty();
3524
4018
  this.cdRef.detectChanges();
3525
4019
  }
3526
- 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 }); }
4020
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FormSubmitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3527
4021
  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 }); }
3528
4022
  }
3529
4023
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: FormSubmitDirective, decorators: [{
@@ -3532,9 +4026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3532
4026
  selector: 'form[ngSubmit][formGroup]',
3533
4027
  providers: [SubscriptionService],
3534
4028
  }]
3535
- }], ctorParameters: () => [{ type: i1$3.FormGroupDirective, decorators: [{
3536
- type: Self
3537
- }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: SubscriptionService }], propDecorators: { debounce: [{
4029
+ }], propDecorators: { debounce: [{
3538
4030
  type: Input
3539
4031
  }], notValidateOnSubmit: [{
3540
4032
  type: Input
@@ -3557,14 +4049,14 @@ function setDirty(controls) {
3557
4049
  }
3558
4050
 
3559
4051
  class InitDirective {
3560
- constructor(elRef) {
3561
- this.elRef = elRef;
4052
+ constructor() {
4053
+ this.elRef = inject(ElementRef);
3562
4054
  this.init = new EventEmitter();
3563
4055
  }
3564
4056
  ngAfterViewInit() {
3565
4057
  this.init.emit(this.elRef);
3566
4058
  }
3567
- 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 }); }
4059
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3568
4060
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.7", type: InitDirective, isStandalone: true, selector: "[abpInit]", outputs: { init: "abpInit" }, ngImport: i0 }); }
3569
4061
  }
3570
4062
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: InitDirective, decorators: [{
@@ -3572,18 +4064,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3572
4064
  args: [{
3573
4065
  selector: '[abpInit]',
3574
4066
  }]
3575
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { init: [{
4067
+ }], propDecorators: { init: [{
3576
4068
  type: Output,
3577
4069
  args: ['abpInit']
3578
4070
  }] } });
3579
4071
 
3580
4072
  class PermissionDirective {
3581
- constructor(templateRef, vcRef, permissionService, cdRef, queue) {
3582
- this.templateRef = templateRef;
3583
- this.vcRef = vcRef;
3584
- this.permissionService = permissionService;
3585
- this.cdRef = cdRef;
3586
- this.queue = queue;
4073
+ constructor() {
4074
+ this.templateRef = inject(TemplateRef, { optional: true });
4075
+ this.vcRef = inject(ViewContainerRef);
4076
+ this.permissionService = inject(PermissionService);
4077
+ this.cdRef = inject(ChangeDetectorRef);
4078
+ this.queue = inject(QUEUE_MANAGER);
3587
4079
  this.runChangeDetection = true;
3588
4080
  this.cdrSubject = new ReplaySubject();
3589
4081
  this.rendered = false;
@@ -3623,7 +4115,7 @@ class PermissionDirective {
3623
4115
  this.cdrSubject.pipe(take(1)).subscribe(() => this.queue.add(() => this.cdRef.detectChanges()));
3624
4116
  this.rendered = true;
3625
4117
  }
3626
- 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 }); }
4118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3627
4119
  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 }); }
3628
4120
  }
3629
4121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: PermissionDirective, decorators: [{
@@ -3631,12 +4123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3631
4123
  args: [{
3632
4124
  selector: '[abpPermission]',
3633
4125
  }]
3634
- }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
3635
- type: Optional
3636
- }] }, { type: i0.ViewContainerRef }, { type: PermissionService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
3637
- type: Inject,
3638
- args: [QUEUE_MANAGER]
3639
- }] }], propDecorators: { condition: [{
4126
+ }], propDecorators: { condition: [{
3640
4127
  type: Input,
3641
4128
  args: ['abpPermission']
3642
4129
  }], runChangeDetection: [{
@@ -3645,12 +4132,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3645
4132
  }] } });
3646
4133
 
3647
4134
  class ReplaceableTemplateDirective {
3648
- constructor(injector, templateRef, vcRef, replaceableComponents, subscription) {
3649
- this.injector = injector;
3650
- this.templateRef = templateRef;
3651
- this.vcRef = vcRef;
3652
- this.replaceableComponents = replaceableComponents;
3653
- this.subscription = subscription;
4135
+ constructor() {
4136
+ this.injector = inject(Injector);
4137
+ this.templateRef = inject(TemplateRef);
4138
+ this.vcRef = inject(ViewContainerRef);
4139
+ this.replaceableComponents = inject(ReplaceableComponentsService);
4140
+ this.subscription = inject(SubscriptionService);
3654
4141
  this.providedData = {
3655
4142
  inputs: {},
3656
4143
  outputs: {},
@@ -3754,7 +4241,7 @@ class ReplaceableTemplateDirective {
3754
4241
  this.defaultComponentSubscriptions = {};
3755
4242
  this.defaultComponentRef = null;
3756
4243
  }
3757
- 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 }); }
4244
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3758
4245
  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 }); }
3759
4246
  }
3760
4247
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ReplaceableTemplateDirective, decorators: [{
@@ -3763,15 +4250,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3763
4250
  selector: '[abpReplaceableTemplate]',
3764
4251
  providers: [SubscriptionService],
3765
4252
  }]
3766
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ReplaceableComponentsService }, { type: SubscriptionService }], propDecorators: { data: [{
4253
+ }], ctorParameters: () => [], propDecorators: { data: [{
3767
4254
  type: Input,
3768
4255
  args: ['abpReplaceableTemplate']
3769
4256
  }] } });
3770
4257
 
3771
4258
  class StopPropagationDirective {
3772
- constructor(el, subscription) {
3773
- this.el = el;
3774
- this.subscription = subscription;
4259
+ constructor() {
4260
+ this.el = inject(ElementRef);
4261
+ this.subscription = inject(SubscriptionService);
3775
4262
  this.stopPropEvent = new EventEmitter();
3776
4263
  }
3777
4264
  ngOnInit() {
@@ -3780,7 +4267,7 @@ class StopPropagationDirective {
3780
4267
  this.stopPropEvent.emit(event);
3781
4268
  });
3782
4269
  }
3783
- 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 }); }
4270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: StopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3784
4271
  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 }); }
3785
4272
  }
3786
4273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: StopPropagationDirective, decorators: [{
@@ -3789,7 +4276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3789
4276
  selector: '[click.stop]',
3790
4277
  providers: [SubscriptionService],
3791
4278
  }]
3792
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SubscriptionService }], propDecorators: { stopPropEvent: [{
4279
+ }], propDecorators: { stopPropEvent: [{
3793
4280
  type: Output,
3794
4281
  args: ['click.stop']
3795
4282
  }] } });
@@ -3861,6 +4348,9 @@ Date.prototype.toLocalISOString = function () {
3861
4348
 
3862
4349
  function setLanguageToCookie() {
3863
4350
  const injector = inject(Injector);
4351
+ const platformId = injector.get(PLATFORM_ID);
4352
+ if (!isPlatformBrowser(platformId))
4353
+ return;
3864
4354
  const sessionState = injector.get(SessionStateService);
3865
4355
  const document = injector.get(DOCUMENT);
3866
4356
  const cookieLanguageKey = injector.get(COOKIE_LANGUAGE_KEY);
@@ -3874,9 +4364,9 @@ const CookieLanguageProvider = provideAppInitializer(() => {
3874
4364
  });
3875
4365
 
3876
4366
  class LocaleId extends String {
3877
- constructor(localizationService) {
4367
+ constructor() {
3878
4368
  super();
3879
- this.localizationService = localizationService;
4369
+ this.localizationService = inject(LocalizationService);
3880
4370
  }
3881
4371
  toString() {
3882
4372
  const { currentLang } = this.localizationService;
@@ -3892,7 +4382,6 @@ class LocaleId extends String {
3892
4382
  const LocaleProvider = {
3893
4383
  provide: LOCALE_ID,
3894
4384
  useClass: LocaleId,
3895
- deps: [LocalizationService],
3896
4385
  };
3897
4386
 
3898
4387
  const IncludeLocalizationResourcesProvider = {
@@ -3901,9 +4390,9 @@ const IncludeLocalizationResourcesProvider = {
3901
4390
  };
3902
4391
 
3903
4392
  class RoutesHandler {
3904
- constructor(routes, router) {
3905
- this.routes = routes;
3906
- this.router = router;
4393
+ constructor() {
4394
+ this.routes = inject(RoutesService);
4395
+ this.router = inject(Router, { optional: true });
3907
4396
  this.addRoutes();
3908
4397
  }
3909
4398
  addRoutes() {
@@ -3920,7 +4409,7 @@ class RoutesHandler {
3920
4409
  }
3921
4410
  });
3922
4411
  }
3923
- 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 }); }
4412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3924
4413
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, providedIn: 'root' }); }
3925
4414
  }
3926
4415
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: RoutesHandler, decorators: [{
@@ -3928,9 +4417,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3928
4417
  args: [{
3929
4418
  providedIn: 'root',
3930
4419
  }]
3931
- }], ctorParameters: () => [{ type: RoutesService }, { type: i1$1.Router, decorators: [{
3932
- type: Optional
3933
- }] }] });
4420
+ }], ctorParameters: () => [] });
3934
4421
  function flatRoutes(routes, parent) {
3935
4422
  if (!routes)
3936
4423
  return [];
@@ -3946,8 +4433,8 @@ function flatRoutes(routes, parent) {
3946
4433
  }
3947
4434
 
3948
4435
  class ApiInterceptor {
3949
- constructor(httpWaitService) {
3950
- this.httpWaitService = httpWaitService;
4436
+ constructor() {
4437
+ this.httpWaitService = inject(HttpWaitService);
3951
4438
  }
3952
4439
  getAdditionalHeaders(existingHeaders) {
3953
4440
  return existingHeaders || new HttpHeaders();
@@ -3956,7 +4443,7 @@ class ApiInterceptor {
3956
4443
  this.httpWaitService.addRequest(request);
3957
4444
  return next.handle(request).pipe(finalize(() => this.httpWaitService.deleteRequest(request)));
3958
4445
  }
3959
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, deps: [{ token: HttpWaitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4446
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3960
4447
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, providedIn: 'root' }); }
3961
4448
  }
3962
4449
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ApiInterceptor, decorators: [{
@@ -3964,35 +4451,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
3964
4451
  args: [{
3965
4452
  providedIn: 'root',
3966
4453
  }]
3967
- }], ctorParameters: () => [{ type: HttpWaitService }] });
4454
+ }] });
3968
4455
 
3969
- class TimezoneInterceptor {
3970
- constructor() {
3971
- this.timezoneService = inject(TimezoneService);
4456
+ const timezoneInterceptor = (req, next) => {
4457
+ const timezoneService = inject(TimezoneService);
4458
+ if (!timezoneService.isUtcClockEnabled) {
4459
+ return next(req);
3972
4460
  }
3973
- intercept(req, next) {
3974
- if (!this.timezoneService.isUtcClockEnabled) {
3975
- return next.handle(req);
3976
- }
3977
- const timezone = this.timezoneService.timezone;
3978
- if (timezone) {
3979
- req = req.clone({
3980
- setHeaders: {
3981
- __timezone: timezone,
3982
- },
3983
- });
4461
+ const timezone = timezoneService.timezone;
4462
+ if (timezone) {
4463
+ req = req.clone({
4464
+ setHeaders: {
4465
+ __timezone: timezone,
4466
+ },
4467
+ });
4468
+ }
4469
+ return next(req);
4470
+ };
4471
+
4472
+ const transferStateInterceptor = (req, next) => {
4473
+ const transferState = inject(TransferState);
4474
+ const platformId = inject(PLATFORM_ID);
4475
+ if (req.method !== 'GET') {
4476
+ return next(req);
4477
+ }
4478
+ const stateKey = makeStateKey(req.urlWithParams);
4479
+ if (isPlatformBrowser(platformId)) {
4480
+ const storedResponse = transferState.get(stateKey, null);
4481
+ if (storedResponse) {
4482
+ transferState.remove(stateKey);
4483
+ return of(new HttpResponse({ body: storedResponse, status: 200 }));
3984
4484
  }
3985
- return next.handle(req);
3986
4485
  }
3987
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: TimezoneInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3988
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: TimezoneInterceptor, providedIn: 'root' }); }
3989
- }
3990
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: TimezoneInterceptor, decorators: [{
3991
- type: Injectable,
3992
- args: [{
3993
- providedIn: 'root',
3994
- }]
3995
- }] });
4486
+ return next(req).pipe(tap(event => {
4487
+ if (isPlatformServer(platformId) && event instanceof HttpResponse) {
4488
+ transferState.set(stateKey, event.body);
4489
+ console.log(`Interceptor: ${req.urlWithParams} is stored in TransferState.`);
4490
+ }
4491
+ }));
4492
+ };
3996
4493
 
3997
4494
  var CoreFeatureKind;
3998
4495
  (function (CoreFeatureKind) {
@@ -4055,7 +4552,7 @@ function provideAbpCore(...features) {
4055
4552
  provideHttpClient(withInterceptorsFromDi(), withXsrfConfiguration({
4056
4553
  cookieName: 'XSRF-TOKEN',
4057
4554
  headerName: 'RequestVerificationToken',
4058
- })),
4555
+ }), withFetch(), withInterceptors([transferStateInterceptor, timezoneInterceptor])),
4059
4556
  provideAppInitializer(async () => {
4060
4557
  inject(LocalizationService);
4061
4558
  inject(LocalStorageListenerService);
@@ -4078,11 +4575,6 @@ function provideAbpCore(...features) {
4078
4575
  provide: TitleStrategy,
4079
4576
  useExisting: AbpTitleStrategy,
4080
4577
  },
4081
- {
4082
- provide: HTTP_INTERCEPTORS,
4083
- useClass: TimezoneInterceptor,
4084
- multi: true,
4085
- },
4086
4578
  ];
4087
4579
  for (const feature of features) {
4088
4580
  providers.push(...feature.ɵproviders);
@@ -4101,8 +4593,8 @@ function provideAbpCoreChild(options = {}) {
4101
4593
  }
4102
4594
 
4103
4595
  class LocalizationPipe {
4104
- constructor(localization) {
4105
- this.localization = localization;
4596
+ constructor() {
4597
+ this.localization = inject(LocalizationService);
4106
4598
  }
4107
4599
  transform(value = '', ...interpolateParams) {
4108
4600
  const params = interpolateParams.reduce((acc, val) => {
@@ -4116,7 +4608,7 @@ class LocalizationPipe {
4116
4608
  }, []) || [];
4117
4609
  return this.localization.instant(value, ...params);
4118
4610
  }
4119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe, deps: [{ token: LocalizationService }], target: i0.ɵɵFactoryTarget.Pipe }); }
4611
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4120
4612
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe, isStandalone: true, name: "abpLocalization" }); }
4121
4613
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: LocalizationPipe }); }
4122
4614
  }
@@ -4127,7 +4619,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4127
4619
  args: [{
4128
4620
  name: 'abpLocalization',
4129
4621
  }]
4130
- }], ctorParameters: () => [{ type: LocalizationService }] });
4622
+ }] });
4131
4623
 
4132
4624
  class SafeHtmlPipe {
4133
4625
  constructor() {
@@ -4200,8 +4692,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4200
4692
 
4201
4693
  const INJECTOR_PIPE_DATA_TOKEN = new InjectionToken('INJECTOR_PIPE_DATA_TOKEN');
4202
4694
  class ToInjectorPipe {
4203
- constructor(injector) {
4204
- this.injector = injector;
4695
+ constructor() {
4696
+ this.injector = inject(Injector);
4205
4697
  }
4206
4698
  transform(value, token = INJECTOR_PIPE_DATA_TOKEN, name = 'ToInjectorPipe') {
4207
4699
  return Injector.create({
@@ -4215,7 +4707,7 @@ class ToInjectorPipe {
4215
4707
  name,
4216
4708
  });
4217
4709
  }
4218
- 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 }); }
4710
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4219
4711
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, isStandalone: true, name: "toInjector" }); }
4220
4712
  }
4221
4713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ToInjectorPipe, decorators: [{
@@ -4223,18 +4715,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4223
4715
  args: [{
4224
4716
  name: 'toInjector',
4225
4717
  }]
4226
- }], ctorParameters: () => [{ type: i0.Injector }] });
4718
+ }] });
4227
4719
 
4228
4720
  class ShortDatePipe extends DatePipe {
4229
- constructor(configStateService, locale, defaultTimezone) {
4721
+ constructor() {
4722
+ const locale = inject(LOCALE_ID);
4723
+ const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });
4230
4724
  super(locale, defaultTimezone);
4231
- this.configStateService = configStateService;
4725
+ this.configStateService = inject(ConfigStateService);
4232
4726
  }
4233
4727
  transform(value, timezone, locale) {
4234
4728
  const format = getShortDateFormat(this.configStateService);
4235
4729
  return super.transform(value, format, timezone, locale);
4236
4730
  }
4237
- 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 }); }
4731
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4238
4732
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, isStandalone: true, name: "shortDate" }); }
4239
4733
  }
4240
4734
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDatePipe, decorators: [{
@@ -4243,26 +4737,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4243
4737
  name: 'shortDate',
4244
4738
  pure: true,
4245
4739
  }]
4246
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: undefined, decorators: [{
4247
- type: Inject,
4248
- args: [LOCALE_ID]
4249
- }] }, { type: undefined, decorators: [{
4250
- type: Inject,
4251
- args: [DATE_PIPE_DEFAULT_TIMEZONE]
4252
- }, {
4253
- type: Optional
4254
- }] }] });
4740
+ }], ctorParameters: () => [] });
4255
4741
 
4256
4742
  class ShortTimePipe extends DatePipe {
4257
- constructor(configStateService, locale, defaultTimezone) {
4743
+ constructor() {
4744
+ const locale = inject(LOCALE_ID);
4745
+ const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });
4258
4746
  super(locale, defaultTimezone);
4259
- this.configStateService = configStateService;
4747
+ this.configStateService = inject(ConfigStateService);
4260
4748
  }
4261
4749
  transform(value, timezone, locale) {
4262
4750
  const format = getShortTimeFormat(this.configStateService);
4263
4751
  return super.transform(value, format, timezone, locale);
4264
4752
  }
4265
- 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 }); }
4753
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4266
4754
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, isStandalone: true, name: "shortTime" }); }
4267
4755
  }
4268
4756
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortTimePipe, decorators: [{
@@ -4271,26 +4759,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4271
4759
  name: 'shortTime',
4272
4760
  pure: true,
4273
4761
  }]
4274
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: undefined, decorators: [{
4275
- type: Inject,
4276
- args: [LOCALE_ID]
4277
- }] }, { type: undefined, decorators: [{
4278
- type: Inject,
4279
- args: [DATE_PIPE_DEFAULT_TIMEZONE]
4280
- }, {
4281
- type: Optional
4282
- }] }] });
4762
+ }], ctorParameters: () => [] });
4283
4763
 
4284
4764
  class ShortDateTimePipe extends DatePipe {
4285
- constructor(configStateService, locale, defaultTimezone) {
4765
+ constructor() {
4766
+ const locale = inject(LOCALE_ID);
4767
+ const defaultTimezone = inject(DATE_PIPE_DEFAULT_TIMEZONE, { optional: true });
4286
4768
  super(locale, defaultTimezone);
4287
- this.configStateService = configStateService;
4769
+ this.configStateService = inject(ConfigStateService);
4288
4770
  }
4289
4771
  transform(value, timezone, locale) {
4290
4772
  const format = getShortDateShortTimeFormat(this.configStateService);
4291
4773
  return super.transform(value, format, timezone, locale);
4292
4774
  }
4293
- 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 }); }
4775
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4294
4776
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, isStandalone: true, name: "shortDateTime" }); }
4295
4777
  }
4296
4778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: ShortDateTimePipe, decorators: [{
@@ -4299,15 +4781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4299
4781
  name: 'shortDateTime',
4300
4782
  pure: true,
4301
4783
  }]
4302
- }], ctorParameters: () => [{ type: ConfigStateService }, { type: undefined, decorators: [{
4303
- type: Inject,
4304
- args: [LOCALE_ID]
4305
- }] }, { type: undefined, decorators: [{
4306
- type: Inject,
4307
- args: [DATE_PIPE_DEFAULT_TIMEZONE]
4308
- }, {
4309
- type: Optional
4310
- }] }] });
4784
+ }], ctorParameters: () => [] });
4311
4785
 
4312
4786
  class UtcToLocalPipe {
4313
4787
  constructor() {
@@ -4488,13 +4962,11 @@ class BaseCoreModule {
4488
4962
  ReplaceableRouteContainerComponent,
4489
4963
  RouterOutletComponent,
4490
4964
  AbstractNgModelComponent] }); }
4491
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: BaseCoreModule, providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
4965
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: BaseCoreModule, providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())], imports: [CommonModule,
4492
4966
  FormsModule,
4493
4967
  ReactiveFormsModule,
4494
4968
  RouterModule,
4495
- NgxValidateCoreModule, DynamicLayoutComponent,
4496
- ReplaceableRouteContainerComponent,
4497
- RouterOutletComponent, CommonModule,
4969
+ NgxValidateCoreModule, CommonModule,
4498
4970
  FormsModule,
4499
4971
  ReactiveFormsModule,
4500
4972
  RouterModule,
@@ -4524,7 +4996,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImpor
4524
4996
  ...CORE_COMPONENTS,
4525
4997
  ],
4526
4998
  declarations: [],
4527
- providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi())],
4999
+ providers: [LocalizationPipe, provideHttpClient(withInterceptorsFromDi(), withFetch())],
4528
5000
  }]
4529
5001
  }] });
4530
5002
  /**
@@ -4629,6 +5101,7 @@ const permissionGuard = (route, state) => {
4629
5101
  const authService = inject(AuthService);
4630
5102
  const permissionService = inject(PermissionService);
4631
5103
  const httpErrorReporter = inject(HttpErrorReporterService);
5104
+ const platformId = inject(PLATFORM_ID);
4632
5105
  let { requiredPolicy } = route.data || {};
4633
5106
  if (!requiredPolicy) {
4634
5107
  const routeFound = findRoute(routesService, getRoutePath(router, state.url));
@@ -4637,6 +5110,10 @@ const permissionGuard = (route, state) => {
4637
5110
  if (!requiredPolicy) {
4638
5111
  return of(true);
4639
5112
  }
5113
+ //TODO enable permission check on ssr
5114
+ if (isPlatformServer(platformId)) {
5115
+ return of(true);
5116
+ }
4640
5117
  return permissionService.getGrantedPolicy$(requiredPolicy).pipe(filter(Boolean), take(1), tap(access => {
4641
5118
  if (!access && authService.isAuthenticated) {
4642
5119
  httpErrorReporter.reportError({ status: 403 });
@@ -4720,419 +5197,135 @@ class PagedAndSortedResultRequestDto extends PagedResultRequestDto {
4720
5197
  super(initialValues);
4721
5198
  }
4722
5199
  }
4723
- class ExtensiblePagedAndSortedResultRequestDto extends ExtensiblePagedResultRequestDto {
4724
- constructor(initialValues = {}) {
4725
- super(initialValues);
4726
- }
4727
- }
4728
- class EntityDto {
4729
- constructor(initialValues = {}) {
4730
- for (const key in initialValues) {
4731
- if (checkHasProp(initialValues, key)) {
4732
- this[key] = initialValues[key];
4733
- }
4734
- }
4735
- }
4736
- }
4737
- class CreationAuditedEntityDto extends EntityDto {
4738
- constructor(initialValues = {}) {
4739
- super(initialValues);
4740
- }
4741
- }
4742
- class CreationAuditedEntityWithUserDto extends CreationAuditedEntityDto {
4743
- constructor(initialValues = {}) {
4744
- super(initialValues);
4745
- }
4746
- }
4747
- class AuditedEntityDto extends CreationAuditedEntityDto {
4748
- constructor(initialValues = {}) {
4749
- super(initialValues);
4750
- }
4751
- }
4752
- /** @deprecated the class signature will change in v8.0 */
4753
- class AuditedEntityWithUserDto extends AuditedEntityDto {
4754
- constructor(initialValues = {}) {
4755
- super(initialValues);
4756
- }
4757
- }
4758
- class FullAuditedEntityDto extends AuditedEntityDto {
4759
- constructor(initialValues = {}) {
4760
- super(initialValues);
4761
- }
4762
- }
4763
- /** @deprecated the class signature will change in v8.0 */
4764
- class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
4765
- constructor(initialValues = {}) {
4766
- super(initialValues);
4767
- }
4768
- }
4769
- class ExtensibleCreationAuditedEntityDto extends ExtensibleEntityDto {
4770
- constructor(initialValues = {}) {
4771
- super(initialValues);
4772
- }
4773
- }
4774
- class ExtensibleAuditedEntityDto extends ExtensibleCreationAuditedEntityDto {
4775
- constructor(initialValues = {}) {
4776
- super(initialValues);
4777
- }
4778
- }
4779
- class ExtensibleAuditedEntityWithUserDto extends ExtensibleAuditedEntityDto {
4780
- constructor(initialValues = {}) {
4781
- super(initialValues);
4782
- }
4783
- }
4784
- class ExtensibleCreationAuditedEntityWithUserDto extends ExtensibleCreationAuditedEntityDto {
4785
- constructor(initialValues = {}) {
4786
- super(initialValues);
4787
- }
4788
- }
4789
- class ExtensibleFullAuditedEntityDto extends ExtensibleAuditedEntityDto {
4790
- constructor(initialValues = {}) {
4791
- super(initialValues);
4792
- }
4793
- }
4794
- class ExtensibleFullAuditedEntityWithUserDto extends ExtensibleFullAuditedEntityDto {
4795
- constructor(initialValues = {}) {
4796
- super(initialValues);
4797
- }
4798
- }
4799
-
4800
- class AuthEvent {
4801
- constructor(type) {
4802
- this.type = type;
4803
- this.type = type;
4804
- }
4805
- }
4806
- class AuthSuccessEvent extends AuthEvent {
4807
- constructor(type, info) {
4808
- super(type);
4809
- this.type = type;
4810
- this.info = info;
4811
- }
4812
- }
4813
- class AuthInfoEvent extends AuthEvent {
4814
- constructor(type, info) {
4815
- super(type);
4816
- this.type = type;
4817
- this.info = info;
4818
- }
4819
- }
4820
- class AuthErrorEvent extends AuthEvent {
4821
- constructor(type, reason, params) {
4822
- super(type);
4823
- this.type = type;
4824
- this.reason = reason;
4825
- this.params = params;
4826
- }
4827
- }
4828
-
4829
- class AbpApiDefinitionService {
4830
- constructor(restService) {
4831
- this.restService = restService;
4832
- this.apiName = 'abp';
4833
- this.getByModel = (model, config) => this.restService.request({
4834
- method: 'GET',
4835
- url: '/api/abp/api-definition',
4836
- params: { includeTypes: model.includeTypes },
4837
- }, { apiName: this.apiName, ...config });
4838
- }
4839
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, deps: [{ token: RestService }], target: i0.ɵɵFactoryTarget.Injectable }); }
4840
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, providedIn: 'root' }); }
4841
- }
4842
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, decorators: [{
4843
- type: Injectable,
4844
- args: [{
4845
- providedIn: 'root',
4846
- }]
4847
- }], ctorParameters: () => [{ type: RestService }] });
4848
-
4849
- var index = /*#__PURE__*/Object.freeze({
4850
- __proto__: null
4851
- });
4852
-
4853
- class ContainerStrategy {
4854
- constructor(containerRef) {
4855
- this.containerRef = containerRef;
4856
- }
4857
- prepare() { }
4858
- }
4859
- class ClearContainerStrategy extends ContainerStrategy {
4860
- getIndex() {
4861
- return 0;
4862
- }
4863
- prepare() {
4864
- this.containerRef.clear();
4865
- }
4866
- }
4867
- class InsertIntoContainerStrategy extends ContainerStrategy {
4868
- constructor(containerRef, index) {
4869
- super(containerRef);
4870
- this.index = index;
4871
- }
4872
- getIndex() {
4873
- return Math.min(Math.max(0, this.index), this.containerRef.length);
4874
- }
4875
- }
4876
- const CONTAINER_STRATEGY = {
4877
- Clear(containerRef) {
4878
- return new ClearContainerStrategy(containerRef);
4879
- },
4880
- Append(containerRef) {
4881
- return new InsertIntoContainerStrategy(containerRef, containerRef.length);
4882
- },
4883
- Prepend(containerRef) {
4884
- return new InsertIntoContainerStrategy(containerRef, 0);
4885
- },
4886
- Insert(containerRef, index) {
4887
- return new InsertIntoContainerStrategy(containerRef, index);
4888
- },
4889
- };
4890
-
4891
- class ContentSecurityStrategy {
4892
- constructor(nonce) {
4893
- this.nonce = nonce;
4894
- }
4895
- }
4896
- class LooseContentSecurityStrategy extends ContentSecurityStrategy {
4897
- constructor(nonce) {
4898
- super(nonce);
4899
- }
4900
- applyCSP(element) {
4901
- if (this.nonce) {
4902
- element.setAttribute('nonce', this.nonce);
4903
- }
4904
- }
4905
- }
4906
- class NoContentSecurityStrategy extends ContentSecurityStrategy {
4907
- constructor() {
4908
- super();
4909
- }
4910
- applyCSP(_) { }
4911
- }
4912
- const CONTENT_SECURITY_STRATEGY = {
4913
- Loose(nonce) {
4914
- return new LooseContentSecurityStrategy(nonce);
4915
- },
4916
- None() {
4917
- return new NoContentSecurityStrategy();
4918
- },
4919
- };
4920
-
4921
- class ContentStrategy {
4922
- constructor(content, domStrategy = DOM_STRATEGY.AppendToHead(), contentSecurityStrategy = CONTENT_SECURITY_STRATEGY.None(), options = {}) {
4923
- this.content = content;
4924
- this.domStrategy = domStrategy;
4925
- this.contentSecurityStrategy = contentSecurityStrategy;
4926
- this.options = options;
4927
- }
4928
- insertElement() {
4929
- const element = this.createElement();
4930
- if (this.options && Object.keys(this.options).length > 0) {
4931
- Object.keys(this.options).forEach(key => {
4932
- if (this.options[key]) {
4933
- element[key] = this.options[key];
4934
- }
4935
- });
4936
- }
4937
- this.contentSecurityStrategy.applyCSP(element);
4938
- this.domStrategy.insertElement(element);
4939
- return element;
4940
- }
4941
- }
4942
- class StyleContentStrategy extends ContentStrategy {
4943
- createElement() {
4944
- const element = document.createElement('style');
4945
- element.textContent = this.content;
4946
- return element;
5200
+ class ExtensiblePagedAndSortedResultRequestDto extends ExtensiblePagedResultRequestDto {
5201
+ constructor(initialValues = {}) {
5202
+ super(initialValues);
4947
5203
  }
4948
5204
  }
4949
- class ScriptContentStrategy extends ContentStrategy {
4950
- createElement() {
4951
- const element = document.createElement('script');
4952
- element.textContent = this.content;
4953
- return element;
5205
+ class EntityDto {
5206
+ constructor(initialValues = {}) {
5207
+ for (const key in initialValues) {
5208
+ if (checkHasProp(initialValues, key)) {
5209
+ this[key] = initialValues[key];
5210
+ }
5211
+ }
4954
5212
  }
4955
5213
  }
4956
- const CONTENT_STRATEGY = {
4957
- AppendScriptToBody(content, options) {
4958
- return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToBody(), undefined, options);
4959
- },
4960
- AppendScriptToHead(content, options) {
4961
- return new ScriptContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
4962
- },
4963
- AppendStyleToHead(content, options) {
4964
- return new StyleContentStrategy(content, DOM_STRATEGY.AppendToHead(), undefined, options);
4965
- },
4966
- PrependStyleToHead(content, options) {
4967
- return new StyleContentStrategy(content, DOM_STRATEGY.PrependToHead(), undefined, options);
4968
- },
4969
- };
4970
-
4971
- class ContextStrategy {
4972
- constructor(context) {
4973
- this.context = context;
4974
- }
4975
- setContext(componentRef) {
4976
- return this.context;
5214
+ class CreationAuditedEntityDto extends EntityDto {
5215
+ constructor(initialValues = {}) {
5216
+ super(initialValues);
4977
5217
  }
4978
5218
  }
4979
- class NoContextStrategy extends ContextStrategy {
4980
- constructor() {
4981
- super(undefined);
5219
+ class CreationAuditedEntityWithUserDto extends CreationAuditedEntityDto {
5220
+ constructor(initialValues = {}) {
5221
+ super(initialValues);
4982
5222
  }
4983
5223
  }
4984
- class ComponentContextStrategy extends ContextStrategy {
4985
- setContext(componentRef) {
4986
- Object.keys(this.context).forEach(key => (componentRef.instance[key] = this.context[key]));
4987
- componentRef.changeDetectorRef.detectChanges();
4988
- return this.context;
5224
+ class AuditedEntityDto extends CreationAuditedEntityDto {
5225
+ constructor(initialValues = {}) {
5226
+ super(initialValues);
4989
5227
  }
4990
5228
  }
4991
- class TemplateContextStrategy extends ContextStrategy {
4992
- setContext() {
4993
- return this.context;
5229
+ /** @deprecated the class signature will change in v8.0 */
5230
+ class AuditedEntityWithUserDto extends AuditedEntityDto {
5231
+ constructor(initialValues = {}) {
5232
+ super(initialValues);
4994
5233
  }
4995
5234
  }
4996
- const CONTEXT_STRATEGY = {
4997
- None() {
4998
- return new NoContextStrategy();
4999
- },
5000
- Component(context) {
5001
- return new ComponentContextStrategy(context);
5002
- },
5003
- Template(context) {
5004
- return new TemplateContextStrategy(context);
5005
- },
5006
- };
5007
-
5008
- class LoadingStrategy {
5009
- constructor(path, domStrategy = DOM_STRATEGY.AppendToHead(), crossOriginStrategy = CROSS_ORIGIN_STRATEGY.Anonymous()) {
5010
- this.path = path;
5011
- this.domStrategy = domStrategy;
5012
- this.crossOriginStrategy = crossOriginStrategy;
5235
+ class FullAuditedEntityDto extends AuditedEntityDto {
5236
+ constructor(initialValues = {}) {
5237
+ super(initialValues);
5013
5238
  }
5014
- createStream() {
5015
- this.element = this.createElement();
5016
- return of(null).pipe(switchMap(() => fromLazyLoad(this.element, this.domStrategy, this.crossOriginStrategy)));
5239
+ }
5240
+ /** @deprecated the class signature will change in v8.0 */
5241
+ class FullAuditedEntityWithUserDto extends FullAuditedEntityDto {
5242
+ constructor(initialValues = {}) {
5243
+ super(initialValues);
5017
5244
  }
5018
5245
  }
5019
- class ScriptLoadingStrategy extends LoadingStrategy {
5020
- constructor(src, domStrategy, crossOriginStrategy) {
5021
- super(src, domStrategy, crossOriginStrategy);
5246
+ class ExtensibleCreationAuditedEntityDto extends ExtensibleEntityDto {
5247
+ constructor(initialValues = {}) {
5248
+ super(initialValues);
5022
5249
  }
5023
- createElement() {
5024
- const element = document.createElement('script');
5025
- element.src = this.path;
5026
- return element;
5250
+ }
5251
+ class ExtensibleAuditedEntityDto extends ExtensibleCreationAuditedEntityDto {
5252
+ constructor(initialValues = {}) {
5253
+ super(initialValues);
5027
5254
  }
5028
5255
  }
5029
- class StyleLoadingStrategy extends LoadingStrategy {
5030
- constructor(href, domStrategy, crossOriginStrategy) {
5031
- super(href, domStrategy, crossOriginStrategy);
5256
+ class ExtensibleAuditedEntityWithUserDto extends ExtensibleAuditedEntityDto {
5257
+ constructor(initialValues = {}) {
5258
+ super(initialValues);
5032
5259
  }
5033
- createElement() {
5034
- const element = document.createElement('link');
5035
- element.rel = 'stylesheet';
5036
- element.href = this.path;
5037
- return element;
5260
+ }
5261
+ class ExtensibleCreationAuditedEntityWithUserDto extends ExtensibleCreationAuditedEntityDto {
5262
+ constructor(initialValues = {}) {
5263
+ super(initialValues);
5038
5264
  }
5039
5265
  }
5040
- const LOADING_STRATEGY = {
5041
- AppendScriptToBody(src) {
5042
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.None());
5043
- },
5044
- AppendAnonymousScriptToBody(src, integrity) {
5045
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToBody(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
5046
- },
5047
- AppendAnonymousScriptToHead(src, integrity) {
5048
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
5049
- },
5050
- AppendAnonymousStyleToHead(src, integrity) {
5051
- return new StyleLoadingStrategy(src, DOM_STRATEGY.AppendToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
5052
- },
5053
- PrependAnonymousScriptToHead(src, integrity) {
5054
- return new ScriptLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
5055
- },
5056
- PrependAnonymousStyleToHead(src, integrity) {
5057
- return new StyleLoadingStrategy(src, DOM_STRATEGY.PrependToHead(), CROSS_ORIGIN_STRATEGY.Anonymous(integrity));
5058
- },
5059
- };
5060
-
5061
- class ProjectionStrategy {
5062
- constructor(content) {
5063
- this.content = content;
5266
+ class ExtensibleFullAuditedEntityDto extends ExtensibleAuditedEntityDto {
5267
+ constructor(initialValues = {}) {
5268
+ super(initialValues);
5064
5269
  }
5065
5270
  }
5066
- class ComponentProjectionStrategy extends ProjectionStrategy {
5067
- constructor(component, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
5068
- super(component);
5069
- this.containerStrategy = containerStrategy;
5070
- this.contextStrategy = contextStrategy;
5271
+ class ExtensibleFullAuditedEntityWithUserDto extends ExtensibleFullAuditedEntityDto {
5272
+ constructor(initialValues = {}) {
5273
+ super(initialValues);
5071
5274
  }
5072
- injectContent(injector) {
5073
- this.containerStrategy.prepare();
5074
- const resolver = injector.get(ComponentFactoryResolver);
5075
- const factory = resolver.resolveComponentFactory(this.content);
5076
- const componentRef = this.containerStrategy.containerRef.createComponent(factory, this.containerStrategy.getIndex(), injector);
5077
- this.contextStrategy.setContext(componentRef);
5078
- return componentRef;
5275
+ }
5276
+
5277
+ class AuthEvent {
5278
+ constructor(type) {
5279
+ this.type = type;
5280
+ this.type = type;
5079
5281
  }
5080
5282
  }
5081
- class RootComponentProjectionStrategy extends ProjectionStrategy {
5082
- constructor(component, contextStrategy = CONTEXT_STRATEGY.None(), domStrategy = DOM_STRATEGY.AppendToBody()) {
5083
- super(component);
5084
- this.contextStrategy = contextStrategy;
5085
- this.domStrategy = domStrategy;
5283
+ class AuthSuccessEvent extends AuthEvent {
5284
+ constructor(type, info) {
5285
+ super(type);
5286
+ this.type = type;
5287
+ this.info = info;
5086
5288
  }
5087
- injectContent(injector) {
5088
- const appRef = injector.get(ApplicationRef);
5089
- const resolver = injector.get(ComponentFactoryResolver);
5090
- const componentRef = resolver
5091
- .resolveComponentFactory(this.content)
5092
- .create(injector);
5093
- this.contextStrategy.setContext(componentRef);
5094
- appRef.attachView(componentRef.hostView);
5095
- const element = componentRef.hostView.rootNodes[0];
5096
- this.domStrategy.insertElement(element);
5097
- return componentRef;
5289
+ }
5290
+ class AuthInfoEvent extends AuthEvent {
5291
+ constructor(type, info) {
5292
+ super(type);
5293
+ this.type = type;
5294
+ this.info = info;
5098
5295
  }
5099
5296
  }
5100
- class TemplateProjectionStrategy extends ProjectionStrategy {
5101
- constructor(templateRef, containerStrategy, contextStrategy = CONTEXT_STRATEGY.None()) {
5102
- super(templateRef);
5103
- this.containerStrategy = containerStrategy;
5104
- this.contextStrategy = contextStrategy;
5297
+ class AuthErrorEvent extends AuthEvent {
5298
+ constructor(type, reason, params) {
5299
+ super(type);
5300
+ this.type = type;
5301
+ this.reason = reason;
5302
+ this.params = params;
5105
5303
  }
5106
- injectContent() {
5107
- this.containerStrategy.prepare();
5108
- const embeddedViewRef = this.containerStrategy.containerRef.createEmbeddedView(this.content, this.contextStrategy.context, this.containerStrategy.getIndex());
5109
- embeddedViewRef.detectChanges();
5110
- return embeddedViewRef;
5304
+ }
5305
+
5306
+ class AbpApiDefinitionService {
5307
+ constructor() {
5308
+ this.restService = inject(RestService);
5309
+ this.apiName = 'abp';
5310
+ this.getByModel = (model, config) => this.restService.request({
5311
+ method: 'GET',
5312
+ url: '/api/abp/api-definition',
5313
+ params: { includeTypes: model.includeTypes },
5314
+ }, { apiName: this.apiName, ...config });
5111
5315
  }
5316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5317
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, providedIn: 'root' }); }
5112
5318
  }
5113
- const PROJECTION_STRATEGY = {
5114
- AppendComponentToBody(component, context) {
5115
- return new RootComponentProjectionStrategy(component, context && CONTEXT_STRATEGY.Component(context));
5116
- },
5117
- AppendComponentToContainer(component, containerRef, context) {
5118
- return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Component(context));
5119
- },
5120
- AppendTemplateToContainer(templateRef, containerRef, context) {
5121
- return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Append(containerRef), context && CONTEXT_STRATEGY.Template(context));
5122
- },
5123
- PrependComponentToContainer(component, containerRef, context) {
5124
- return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Component(context));
5125
- },
5126
- PrependTemplateToContainer(templateRef, containerRef, context) {
5127
- return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Prepend(containerRef), context && CONTEXT_STRATEGY.Template(context));
5128
- },
5129
- ProjectComponentToContainer(component, containerRef, context) {
5130
- return new ComponentProjectionStrategy(component, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Component(context));
5131
- },
5132
- ProjectTemplateToContainer(templateRef, containerRef, context) {
5133
- return new TemplateProjectionStrategy(templateRef, CONTAINER_STRATEGY.Clear(containerRef), context && CONTEXT_STRATEGY.Template(context));
5134
- },
5135
- };
5319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AbpApiDefinitionService, decorators: [{
5320
+ type: Injectable,
5321
+ args: [{
5322
+ providedIn: 'root',
5323
+ }]
5324
+ }] });
5325
+
5326
+ var index = /*#__PURE__*/Object.freeze({
5327
+ __proto__: null
5328
+ });
5136
5329
 
5137
5330
  function validateMinAge({ age = 18 } = {}) {
5138
5331
  return (control) => {
@@ -5273,5 +5466,5 @@ const AbpValidators = {
5273
5466
  * Generated bundle index. Do not edit.
5274
5467
  */
5275
5468
 
5276
- 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, HtmlEncodePipe, HtmlEncodingService, 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 };
5469
+ 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, HtmlEncodePipe, HtmlEncodingService, 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 };
5277
5470
  //# sourceMappingURL=abp-ng.core.mjs.map