@igo2/core 21.0.0-next.43 → 21.0.0-next.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igo2-core-activity.mjs +10 -10
- package/fesm2022/igo2-core-analytics.mjs +3 -3
- package/fesm2022/igo2-core-auth.mjs.map +1 -1
- package/fesm2022/igo2-core-config.mjs +9 -9
- package/fesm2022/igo2-core-config.mjs.map +1 -1
- package/fesm2022/igo2-core-language.mjs +7 -7
- package/fesm2022/igo2-core-media.mjs +3 -3
- package/fesm2022/igo2-core-message.mjs +24 -17
- package/fesm2022/igo2-core-message.mjs.map +1 -1
- package/fesm2022/igo2-core-network.mjs +3 -3
- package/fesm2022/igo2-core-regex.mjs +3 -3
- package/fesm2022/igo2-core-request.mjs +14 -14
- package/fesm2022/igo2-core-route.mjs +3 -3
- package/fesm2022/igo2-core-storage.mjs +3 -3
- package/fesm2022/igo2-core.mjs +4 -4
- package/locale/en.json +1 -1
- package/locale/fr.json +1 -1
- package/package.json +2 -2
- package/types/igo2-core-auth.d.ts +1 -0
- package/types/igo2-core-message.d.ts +2 -1
|
@@ -22,10 +22,10 @@ class ActivityService {
|
|
|
22
22
|
this.ids.splice(index, 1);
|
|
23
23
|
this.counter$.next(this.ids.length);
|
|
24
24
|
}
|
|
25
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
26
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ActivityService, providedIn: 'root' });
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ActivityService, decorators: [{
|
|
29
29
|
type: Injectable,
|
|
30
30
|
args: [{
|
|
31
31
|
providedIn: 'root'
|
|
@@ -49,10 +49,10 @@ class ActivityInterceptor {
|
|
|
49
49
|
this.activityService.unregister(id);
|
|
50
50
|
}));
|
|
51
51
|
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
53
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ActivityInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
53
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ActivityInterceptor });
|
|
54
54
|
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ActivityInterceptor, decorators: [{
|
|
56
56
|
type: Injectable
|
|
57
57
|
}] });
|
|
58
58
|
|
|
@@ -69,11 +69,11 @@ class IgoActivityModule {
|
|
|
69
69
|
]
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
73
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
74
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoActivityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
73
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: IgoActivityModule });
|
|
74
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoActivityModule });
|
|
75
75
|
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoActivityModule, decorators: [{
|
|
77
77
|
type: NgModule,
|
|
78
78
|
args: [{
|
|
79
79
|
imports: [],
|
|
@@ -75,10 +75,10 @@ class AnalyticsService {
|
|
|
75
75
|
if (this.options.provider === 'matomo')
|
|
76
76
|
this.paq.push(['trackEvent', category, action, parameters]);
|
|
77
77
|
}
|
|
78
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
79
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
78
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AnalyticsService, providedIn: 'root' });
|
|
80
80
|
}
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AnalyticsService, decorators: [{
|
|
82
82
|
type: Injectable,
|
|
83
83
|
args: [{
|
|
84
84
|
providedIn: 'root'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-core-auth.mjs","sources":["../../../packages/core/auth/src/xhr-interceptor.interface.ts","../../../packages/core/auth/src/public_api.ts","../../../packages/core/auth/src/igo2-core-auth.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Abstraction over an XHR interceptor used to authenticate raw XHR requests\n * (e.g. OpenLayers tile/feature loaders), which bypass Angular's\n * `HttpClient` and `HTTP_INTERCEPTORS`.\n */\nexport interface IXhrInterceptor {\n interceptXhr(xhr: XMLHttpRequest, url: string): boolean;\n alterUrlWithKeyAuth(url: string): string | undefined;\n}\n\nexport const XHR_INTERCEPTOR = new InjectionToken<IXhrInterceptor>(\n 'XHR_INTERCEPTOR'\n);\n","/*\n * Public API Surface of core/auth\n */\n\nexport * from './xhr-interceptor.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"igo2-core-auth.mjs","sources":["../../../packages/core/auth/src/xhr-interceptor.interface.ts","../../../packages/core/auth/src/public_api.ts","../../../packages/core/auth/src/igo2-core-auth.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Abstraction over an XHR interceptor used to authenticate raw XHR requests\n * (e.g. OpenLayers tile/feature loaders), which bypass Angular's\n * `HttpClient` and `HTTP_INTERCEPTORS`.\n */\nexport interface IXhrInterceptor {\n prepareXhr?(url: string): Promise<boolean>;\n interceptXhr(xhr: XMLHttpRequest, url: string): boolean;\n alterUrlWithKeyAuth(url: string): string | undefined;\n}\n\nexport const XHR_INTERCEPTOR = new InjectionToken<IXhrInterceptor>(\n 'XHR_INTERCEPTOR'\n);\n","/*\n * Public API Surface of core/auth\n */\n\nexport * from './xhr-interceptor.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;MAaa,eAAe,GAAG,IAAI,cAAc,CAC/C,iBAAiB;;ACdnB;;AAEG;;ACFH;;AAEG;;"}
|
|
@@ -15,8 +15,8 @@ const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map(Object.entries(CONFIG_DEPRECAT
|
|
|
15
15
|
]));
|
|
16
16
|
|
|
17
17
|
const version = {
|
|
18
|
-
lib: '21.0.0-next.
|
|
19
|
-
releaseDate:
|
|
18
|
+
lib: '21.0.0-next.45',
|
|
19
|
+
releaseDate: 1793209026653
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
class ConfigService {
|
|
@@ -100,10 +100,10 @@ class ConfigService {
|
|
|
100
100
|
});
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
104
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
103
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
104
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ConfigService, providedIn: 'root' });
|
|
105
105
|
}
|
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ConfigService, decorators: [{
|
|
107
107
|
type: Injectable,
|
|
108
108
|
args: [{
|
|
109
109
|
providedIn: 'root'
|
|
@@ -135,11 +135,11 @@ class IgoConfigModule {
|
|
|
135
135
|
providers: [provideConfig({})]
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
139
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
140
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
138
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
139
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: IgoConfigModule });
|
|
140
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoConfigModule });
|
|
141
141
|
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoConfigModule, decorators: [{
|
|
143
143
|
type: NgModule,
|
|
144
144
|
args: [{
|
|
145
145
|
imports: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n string,\n AlternateConfigOptions\n>(\n Object.entries(CONFIG_DEPRECATED)\n .filter(([_, options]) => options.alternativeKey)\n .map(\n ([key, options]) =>\n [\n options.alternativeKey!,\n {\n deprecatedKey: key\n } satisfies AlternateConfigOptions\n ] as const\n )\n);\n","export interface Version {\n app?: string;\n lib?: string;\n releaseDateApp?: number;\n releaseDate?: number;\n}\n\nexport const version: Version = {\n lib: '21.0.0-next.43',\n releaseDate: 1791484266246\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\n\nimport {\n ALTERNATE_CONFIG_FROM_DEPRECATION,\n CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n private config!: T | undefined;\n private httpClient: HttpClient;\n private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n private _isLoaded$ = new BehaviorSubject(false);\n isLoaded$ = this._isLoaded$.asObservable();\n\n constructor() {\n const handler = inject(HttpBackend);\n\n this.httpClient = new HttpClient(handler);\n }\n\n /**\n * Use to get the all config file (merge from environnement.ts and config.json)\n */\n public getConfigs(): any {\n Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n const deprecatedValue = ObjectUtils.resolve(\n this.config ?? {},\n deprecatedKey\n );\n if (deprecatedValue !== undefined) {\n this.handleDeprecatedConfig(deprecatedKey);\n }\n });\n return this.config;\n }\n\n /**\n * Use to get the data found in config file\n */\n public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n let value = ObjectUtils.resolve(this.config ?? {}, key);\n\n const isDeprecated = this.configDeprecated.get(key);\n if (isDeprecated && value !== undefined) {\n this.handleDeprecatedConfig(key);\n } else if (value === undefined) {\n value = this.handleDeprecationPossibility(key);\n }\n\n return (value ?? defaultValue) as T;\n }\n\n private handleDeprecatedConfig(key: string): void {\n const options = this.configDeprecated.get(key);\n\n let message = `This config (${key}) is deprecated and will be removed shortly`;\n if (options?.alternativeKey) {\n message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n }\n\n const currentDate = new Date();\n options?.mayBeRemoveIn && currentDate >= options.mayBeRemoveIn\n ? console.error(message)\n : console.warn(message);\n }\n\n private handleDeprecationPossibility(key: string): any {\n const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n if (!options) {\n return;\n }\n\n return this.getConfig(options.deprecatedKey);\n }\n\n /**\n * This method loads \"[path]\" to get all config's variables\n */\n public load(options: ConfigOptions<T>): void | Promise<unknown> {\n const baseConfig = options.default;\n const path = options.path;\n if (!path) {\n this.config = baseConfig;\n this._isLoaded$.next(true);\n return;\n }\n\n return new Promise((resolve) => {\n this.httpClient.get<Record<string, unknown>>(path).subscribe({\n next: (configResponse) => {\n this.config = ObjectUtils.mergeDeep(\n ObjectUtils.mergeDeep({ version }, baseConfig ?? {}),\n configResponse\n ) as T;\n this._isLoaded$.next(true);\n resolve(true);\n },\n error: (error) => {\n console.log(`Configuration file ${path} could not be read`);\n this._isLoaded$.next(false);\n resolve(true);\n return throwError(() => error.error || 'Server error');\n }\n });\n });\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n 'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: CONFIG_OPTIONS,\n useValue: options\n },\n provideAppInitializer(async () => {\n const configService = inject(ConfigService);\n const options = inject(CONFIG_OPTIONS);\n return configService.load(options);\n })\n ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: []\n})\nexport class IgoConfigModule {\n static forRoot(): ModuleWithProviders<IgoConfigModule> {\n return {\n ngModule: IgoConfigModule,\n providers: [provideConfig({})]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,iBAAiB,GAAsC,EAAE;AAE/D,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAItD,MAAM,CAAC,OAAO,CAAC,iBAAiB;AAC7B,KAAA,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,cAAc;KAC/C,GAAG,CACF,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KACb;AACE,IAAA,OAAO,CAAC,cAAe;AACvB,IAAA;AACE,QAAA,aAAa,EAAE;AACiB;AAC1B,CAAA,CACb,CACJ;;ACZM,MAAM,OAAO,GAAY;AAC9B,IAAA,GAAG,EAAE,gBAAgB;AACrB,IAAA,WAAW,EAAE;;;MCQF,aAAa,CAAA;AAChB,IAAA,MAAM;AACN,IAAA,UAAU;IACV,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE7D,IAAA,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC/C,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAE1C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;QAEnC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC;IAC3C;AAEA;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,KAAI;AAC7D,YAAA,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CACzC,IAAI,CAAC,MAAM,IAAI,EAAE,EACjB,aAAa,CACd;AACD,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;QACF,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;AAEG;IACI,SAAS,CAAU,GAAW,EAAE,YAAsB,EAAA;AAC3D,QAAA,IAAI,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC;QAEvD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;AACnD,QAAA,IAAI,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE;AACvC,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;QAClC;AAAO,aAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC;QAChD;AAEA,QAAA,QAAQ,KAAK,IAAI,YAAY;IAC/B;AAEQ,IAAA,sBAAsB,CAAC,GAAW,EAAA;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;AAE9C,QAAA,IAAI,OAAO,GAAG,CAAA,aAAA,EAAgB,GAAG,6CAA6C;AAC9E,QAAA,IAAI,OAAO,EAAE,cAAc,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAA,0BAAA,EAA6B,OAAO,CAAC,cAAc,4BAA4B;QAC5F;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;AAC9B,QAAA,OAAO,EAAE,aAAa,IAAI,WAAW,IAAI,OAAO,CAAC;AAC/C,cAAE,OAAO,CAAC,KAAK,CAAC,OAAO;AACvB,cAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B;AAEQ,IAAA,4BAA4B,CAAC,GAAW,EAAA;QAC9C,MAAM,OAAO,GAAG,iCAAiC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;IAC9C;AAEA;;AAEG;AACI,IAAA,IAAI,CAAC,OAAyB,EAAA;AACnC,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO;AAClC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;QACzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B;QACF;AAEA,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAA0B,IAAI,CAAC,CAAC,SAAS,CAAC;AAC3D,gBAAA,IAAI,EAAE,CAAC,cAAc,KAAI;oBACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,SAAS,CACjC,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC,EACpD,cAAc,CACV;AACN,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC;gBACf,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAA,kBAAA,CAAoB,CAAC;AAC3D,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC;oBACb,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC;gBACxD;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;wGAnGW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCLY,cAAc,GAAG,IAAI,cAAc,CAC9C,eAAe;AAGX,SAAU,aAAa,CAAC,OAAsB,EAAA;AAClD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,QAAQ,EAAE;AACX,SAAA;QACD,qBAAqB,CAAC,YAAW;AAC/B,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACpC,QAAA,CAAC;AACF,KAAA,CAAC;AACJ;;ACvBA;;AAEG;MAMU,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;SAC9B;IACH;wGANW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAf,eAAe,EAAA,CAAA;yGAAf,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;AACV,iBAAA;;;ACXD;;AAEG;;"}
|
|
1
|
+
{"version":3,"file":"igo2-core-config.mjs","sources":["../../../packages/core/config/src/config-deprecated.ts","../../../packages/core/config/src/version.ts","../../../packages/core/config/src/config.service.ts","../../../packages/core/config/src/config.provider.ts","../../../packages/core/config/src/config.module.ts","../../../packages/core/config/src/igo2-core-config.ts"],"sourcesContent":["import { AlternateConfigOptions, DeprecatedOptions } from './config.interface';\n\nexport const CONFIG_DEPRECATED: Record<string, DeprecatedOptions> = {};\n\nexport const ALTERNATE_CONFIG_FROM_DEPRECATION = new Map<\n string,\n AlternateConfigOptions\n>(\n Object.entries(CONFIG_DEPRECATED)\n .filter(([_, options]) => options.alternativeKey)\n .map(\n ([key, options]) =>\n [\n options.alternativeKey!,\n {\n deprecatedKey: key\n } satisfies AlternateConfigOptions\n ] as const\n )\n);\n","export interface Version {\n app?: string;\n lib?: string;\n releaseDateApp?: number;\n releaseDate?: number;\n}\n\nexport const version: Version = {\n lib: '21.0.0-next.45',\n releaseDate: 1793209026653\n};\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { BehaviorSubject, throwError } from 'rxjs';\n\nimport {\n ALTERNATE_CONFIG_FROM_DEPRECATION,\n CONFIG_DEPRECATED\n} from './config-deprecated';\nimport { ConfigOptions } from './config.interface';\nimport { version } from './version';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService<T extends object = Record<string, any>> {\n private config!: T | undefined;\n private httpClient: HttpClient;\n private configDeprecated = new Map(Object.entries(CONFIG_DEPRECATED));\n\n private _isLoaded$ = new BehaviorSubject(false);\n isLoaded$ = this._isLoaded$.asObservable();\n\n constructor() {\n const handler = inject(HttpBackend);\n\n this.httpClient = new HttpClient(handler);\n }\n\n /**\n * Use to get the all config file (merge from environnement.ts and config.json)\n */\n public getConfigs(): any {\n Array.from(this.configDeprecated.keys()).map((deprecatedKey) => {\n const deprecatedValue = ObjectUtils.resolve(\n this.config ?? {},\n deprecatedKey\n );\n if (deprecatedValue !== undefined) {\n this.handleDeprecatedConfig(deprecatedKey);\n }\n });\n return this.config;\n }\n\n /**\n * Use to get the data found in config file\n */\n public getConfig<T = any>(key: string, defaultValue?: unknown): T {\n let value = ObjectUtils.resolve(this.config ?? {}, key);\n\n const isDeprecated = this.configDeprecated.get(key);\n if (isDeprecated && value !== undefined) {\n this.handleDeprecatedConfig(key);\n } else if (value === undefined) {\n value = this.handleDeprecationPossibility(key);\n }\n\n return (value ?? defaultValue) as T;\n }\n\n private handleDeprecatedConfig(key: string): void {\n const options = this.configDeprecated.get(key);\n\n let message = `This config (${key}) is deprecated and will be removed shortly`;\n if (options?.alternativeKey) {\n message += ` You should use this key (${options.alternativeKey}) as an alternate solution`;\n }\n\n const currentDate = new Date();\n options?.mayBeRemoveIn && currentDate >= options.mayBeRemoveIn\n ? console.error(message)\n : console.warn(message);\n }\n\n private handleDeprecationPossibility(key: string): any {\n const options = ALTERNATE_CONFIG_FROM_DEPRECATION.get(key);\n if (!options) {\n return;\n }\n\n return this.getConfig(options.deprecatedKey);\n }\n\n /**\n * This method loads \"[path]\" to get all config's variables\n */\n public load(options: ConfigOptions<T>): void | Promise<unknown> {\n const baseConfig = options.default;\n const path = options.path;\n if (!path) {\n this.config = baseConfig;\n this._isLoaded$.next(true);\n return;\n }\n\n return new Promise((resolve) => {\n this.httpClient.get<Record<string, unknown>>(path).subscribe({\n next: (configResponse) => {\n this.config = ObjectUtils.mergeDeep(\n ObjectUtils.mergeDeep({ version }, baseConfig ?? {}),\n configResponse\n ) as T;\n this._isLoaded$.next(true);\n resolve(true);\n },\n error: (error) => {\n console.log(`Configuration file ${path} could not be read`);\n this._isLoaded$.next(false);\n resolve(true);\n return throwError(() => error.error || 'Server error');\n }\n });\n });\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ConfigOptions } from './config.interface';\nimport { ConfigService } from './config.service';\n\nexport const CONFIG_OPTIONS = new InjectionToken<ConfigOptions>(\n 'configOptions'\n);\n\nexport function provideConfig(options: ConfigOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: CONFIG_OPTIONS,\n useValue: options\n },\n provideAppInitializer(async () => {\n const configService = inject(ConfigService);\n const options = inject(CONFIG_OPTIONS);\n return configService.load(options);\n })\n ]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideConfig } from './config.provider';\n\n/**\n * @deprecated import the provideConfig directly\n */\n@NgModule({\n imports: [],\n declarations: [],\n exports: []\n})\nexport class IgoConfigModule {\n static forRoot(): ModuleWithProviders<IgoConfigModule> {\n return {\n ngModule: IgoConfigModule,\n providers: [provideConfig({})]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,11 @@ import { ConfigService } from '@igo2/core/config';
|
|
|
9
9
|
import { timeout, catchError } from 'rxjs/operators';
|
|
10
10
|
|
|
11
11
|
class IgoLanguageModule {
|
|
12
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
13
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
14
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoLanguageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: IgoLanguageModule, exports: [TranslateModule] });
|
|
14
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoLanguageModule, imports: [TranslateModule] });
|
|
15
15
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: IgoLanguageModule, decorators: [{
|
|
17
17
|
type: NgModule,
|
|
18
18
|
args: [{
|
|
19
19
|
exports: [TranslateModule]
|
|
@@ -120,10 +120,10 @@ class LanguageService {
|
|
|
120
120
|
this.language$.next(this.language);
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
124
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: LanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
124
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: LanguageService, providedIn: 'root' });
|
|
125
125
|
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: LanguageService, decorators: [{
|
|
127
127
|
type: Injectable,
|
|
128
128
|
args: [{
|
|
129
129
|
providedIn: 'root'
|
|
@@ -83,10 +83,10 @@ class MediaService {
|
|
|
83
83
|
isDesktop() {
|
|
84
84
|
return this.getMedia() === Media.Desktop;
|
|
85
85
|
}
|
|
86
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
87
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
86
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: MediaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
87
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: MediaService, providedIn: 'root' });
|
|
88
88
|
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: MediaService, decorators: [{
|
|
90
90
|
type: Injectable,
|
|
91
91
|
args: [{
|
|
92
92
|
providedIn: 'root'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, output, signal, ChangeDetectionStrategy, Component, ApplicationRef, createComponent, Injectable, provideAppInitializer } from '@angular/core';
|
|
2
|
+
import { inject, output, signal, ChangeDetectionStrategy, Component, ApplicationRef, createComponent, Injectable, provideAppInitializer, Injector } from '@angular/core';
|
|
3
3
|
import { NgClass, DOCUMENT } from '@angular/common';
|
|
4
4
|
import { MatIconButton } from '@angular/material/button';
|
|
5
5
|
import * as i1 from '@angular/material/icon';
|
|
@@ -112,10 +112,10 @@ class ToastComponent {
|
|
|
112
112
|
this.progressIntervalId = null;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
116
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
115
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: ToastComponent, isStandalone: true, selector: "igo-toast", outputs: { removed: "removed" }, host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()", "touchstart": "onEnter()", "touchend": "onLeave()" }, properties: { "class": "animationState()" } }, ngImport: i0, template: "<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n", styles: [":host{display:block;pointer-events:all;opacity:0;transition:opacity .3s ease-out}:host.active{opacity:1;transition:opacity .3s ease-in}:host.inactive,:host.removed{opacity:0}:host ::ng-deep .mdc-linear-progress__bar{transition:transform .15s 0ms cubic-bezier(.4,0,.6,1)}.igo-toast{position:relative;overflow:hidden;padding:12px 16px;border-radius:4px;box-shadow:0 3px 6px -1px #0000001f,0 10px 36px -4px #4d60e84d;color:#fff;min-width:300px;max-width:400px;cursor:pointer;display:flex;align-items:flex-start;gap:12px}.toast-success{background-color:#51a351}.toast-error{background-color:var(--mat-sys-error);color:var(--mat-sys-on-error)}.toast-info{background-color:var(--mat-sys-primary);color:var(--mat-sys-on-primary)}.toast-warning{background-color:#f89406}.toast-show{background-color:var(--mat-sys-primary);color:var(--mat-sys-on-primary)}.toast-icon{flex-shrink:0;font-size:22px;width:22px;height:22px}.toast-content{flex:1;min-width:0}.toast-title{font-weight:700;font-size:var(--sdg-font-size-h5, 19px);line-height:24px}.toast-message{color:inherit;font-size:13px;word-wrap:break-word;margin-bottom:0!important}.toast-close-button{position:absolute;top:4px;right:4px;opacity:.8;color:inherit}.toast-close-button:hover{opacity:1}mat-progress-bar{position:absolute;bottom:0;left:0;width:100%;--mdc-linear-progress-active-indicator-transition-duration: 0ms;--mdc-linear-progress-active-indicator-color: rgba( 255, 255, 255, .7 ) !important;--mdc-linear-progress-track-color: rgba(255, 255, 255, .3) !important;--mat-progress-bar-active-indicator-color: rgba(255, 255, 255, .7);--mat-progress-bar-track-color: rgba(255, 255, 255, .3);--mdc-linear-progress-track-height: 3px;--mdc-linear-progress-active-indicator-height: 3px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
117
117
|
}
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastComponent, decorators: [{
|
|
119
119
|
type: Component,
|
|
120
120
|
args: [{ selector: 'igo-toast', standalone: true, imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
121
121
|
'[class]': 'animationState()',
|
|
@@ -127,10 +127,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.24", ngImpo
|
|
|
127
127
|
}], propDecorators: { removed: [{ type: i0.Output, args: ["removed"] }] } });
|
|
128
128
|
|
|
129
129
|
class ToastContainerComponent {
|
|
130
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
131
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
130
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.25", type: ToastContainerComponent, isStandalone: true, selector: "igo-toast-container", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{position:fixed;pointer-events:none;z-index:10000;display:flex;flex-direction:column;row-gap:8px}:host.toast-bottom-right{bottom:12px;right:12px;align-items:flex-end}:host.toast-bottom-left{bottom:12px;left:12px;align-items:flex-start}:host.toast-top-right{top:12px;right:12px;align-items:flex-end}:host.toast-top-left{top:12px;left:12px;align-items:flex-start}:host.toast-top-center{top:12px;left:50%;transform:translate(-50%);align-items:center}:host.toast-bottom-center{bottom:12px;left:50%;transform:translate(-50%);align-items:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastContainerComponent, decorators: [{
|
|
134
134
|
type: Component,
|
|
135
135
|
args: [{ selector: 'igo-toast-container', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `<ng-content></ng-content>`, styles: [":host{position:fixed;pointer-events:none;z-index:10000;display:flex;flex-direction:column;row-gap:8px}:host.toast-bottom-right{bottom:12px;right:12px;align-items:flex-end}:host.toast-bottom-left{bottom:12px;left:12px;align-items:flex-start}:host.toast-top-right{top:12px;right:12px;align-items:flex-end}:host.toast-top-left{top:12px;left:12px;align-items:flex-start}:host.toast-top-center{top:12px;left:50%;transform:translate(-50%);align-items:center}:host.toast-bottom-center{bottom:12px;left:50%;transform:translate(-50%);align-items:center}\n"] }]
|
|
136
136
|
}] });
|
|
@@ -262,10 +262,10 @@ class ToastService {
|
|
|
262
262
|
this.document.body.appendChild(el);
|
|
263
263
|
return this.containerRef;
|
|
264
264
|
}
|
|
265
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
266
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
265
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
266
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastService, providedIn: 'root' });
|
|
267
267
|
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ToastService, decorators: [{
|
|
269
269
|
type: Injectable,
|
|
270
270
|
args: [{ providedIn: 'root' }]
|
|
271
271
|
}] });
|
|
@@ -285,10 +285,13 @@ function provideMessage(config) {
|
|
|
285
285
|
|
|
286
286
|
class MessageService {
|
|
287
287
|
configService = inject(ConfigService);
|
|
288
|
-
|
|
288
|
+
injector = inject(Injector);
|
|
289
289
|
toastService = inject(ToastService);
|
|
290
290
|
messages$ = new BehaviorSubject([]);
|
|
291
291
|
options;
|
|
292
|
+
get languageService() {
|
|
293
|
+
return this.injector.get(LanguageService, null);
|
|
294
|
+
}
|
|
292
295
|
constructor() {
|
|
293
296
|
this.options = this.configService.getConfig('message');
|
|
294
297
|
}
|
|
@@ -362,8 +365,12 @@ class MessageService {
|
|
|
362
365
|
handleToast(type, text, title, options = {}, textInterpolateParams, titleInterpolateParams) {
|
|
363
366
|
const translatedTextInterpolateParams = this.translateInterpolateParams(textInterpolateParams);
|
|
364
367
|
const translatedTitleInterpolateParams = this.translateInterpolateParams(titleInterpolateParams);
|
|
365
|
-
const translatedMessage = this.languageService
|
|
366
|
-
|
|
368
|
+
const translatedMessage = this.languageService
|
|
369
|
+
? this.languageService.translate.instant(text, translatedTextInterpolateParams)
|
|
370
|
+
: text;
|
|
371
|
+
const translatedTitle = this.languageService
|
|
372
|
+
? this.languageService.translate.instant(title, translatedTitleInterpolateParams)
|
|
373
|
+
: title;
|
|
367
374
|
let activeToast;
|
|
368
375
|
switch (type) {
|
|
369
376
|
case 'success':
|
|
@@ -402,7 +409,7 @@ class MessageService {
|
|
|
402
409
|
return Object.keys(params).reduce((acc, key) => {
|
|
403
410
|
const value = params[key];
|
|
404
411
|
acc[key] =
|
|
405
|
-
typeof value === 'string'
|
|
412
|
+
typeof value === 'string' && this.languageService
|
|
406
413
|
? this.languageService.translate.instant(value)
|
|
407
414
|
: value;
|
|
408
415
|
return acc;
|
|
@@ -432,10 +439,10 @@ class MessageService {
|
|
|
432
439
|
message.title = undefined;
|
|
433
440
|
return message;
|
|
434
441
|
}
|
|
435
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
436
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
442
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
443
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: MessageService, providedIn: 'root' });
|
|
437
444
|
}
|
|
438
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: MessageService, decorators: [{
|
|
439
446
|
type: Injectable,
|
|
440
447
|
args: [{
|
|
441
448
|
providedIn: 'root'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-core-message.mjs","sources":["../../../packages/core/message/src/message.enum.ts","../../../packages/core/message/src/toast/toast/toast.component.ts","../../../packages/core/message/src/toast/toast/toast.component.html","../../../packages/core/message/src/toast/toast-container.component.ts","../../../packages/core/message/src/toast/toast.interface.ts","../../../packages/core/message/src/toast/toast.service.ts","../../../packages/core/message/src/message.provider.ts","../../../packages/core/message/src/message.service.ts","../../../packages/core/message/src/igo2-core-message.ts"],"sourcesContent":["export enum MessageType {\n ERROR = 'error',\n ALERT = 'warning',\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n WARNING = 'warning',\n INFO = 'info',\n SUCCESS = 'success',\n SHOW = 'show'\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n output,\n signal\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { ToastConfig, ToastType } from '../toast.interface';\n\n@Component({\n selector: 'igo-toast',\n standalone: true,\n imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n host: {\n '[class]': 'animationState()',\n '(mouseenter)': 'onEnter()',\n '(mouseleave)': 'onLeave()',\n '(touchstart)': 'onEnter()',\n '(touchend)': 'onLeave()'\n }\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private sanitizer = inject(DomSanitizer);\n\n readonly removed = output<number>();\n toastId!: number;\n type!: ToastType;\n title = '';\n config!: ToastConfig;\n enableHtml = false;\n showIcon = false;\n\n private _message = '';\n safeMessage: SafeHtml = '';\n\n get message(): string {\n return this._message;\n }\n\n set message(value: string) {\n this._message = value;\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(value);\n }\n\n progress = signal(100);\n animationState = signal<'inactive' | 'active' | 'removed'>('inactive');\n\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private progressIntervalId: ReturnType<typeof setInterval> | null = null;\n private startTime = 0;\n private remainingTime = 0;\n private totalTimeOut = 0;\n\n ngOnInit() {\n this.animationState.set('active');\n if (!this.config.disableTimeOut) {\n this.remainingTime = this.config.timeOut ?? 10000;\n this.totalTimeOut = this.remainingTime;\n this.startTimer();\n }\n }\n\n ngOnDestroy() {\n this.clearTimers();\n }\n\n onEnter() {\n if (!this.config.disableTimeOut) {\n this.remainingTime = (this.progress() / 100) * this.totalTimeOut;\n this.clearTimers();\n }\n }\n\n onLeave() {\n if (!this.config.disableTimeOut) {\n if (!this.config.freezeProgressOnHover) {\n const extendedTimeOut = this.config.extendedTimeOut ?? 10000;\n this.remainingTime = extendedTimeOut;\n this.totalTimeOut = extendedTimeOut;\n }\n this.startTimer();\n }\n }\n\n onTap() {\n if (this.config.tapToDismiss) {\n this.remove();\n }\n }\n\n close(event: Event) {\n event.stopPropagation();\n this.remove();\n }\n\n remove() {\n this.clearTimers();\n this.animationState.set('removed');\n setTimeout(() => {\n this.removed.emit(this.toastId);\n }, 300);\n }\n\n private startTimer() {\n this.startTime = Date.now();\n const duration = this.remainingTime;\n this.progress.set((duration / this.totalTimeOut) * 100);\n\n this.progressIntervalId = setInterval(() => {\n const elapsed = Date.now() - this.startTime;\n const remaining = Math.max(0, duration - elapsed);\n this.progress.set((remaining / this.totalTimeOut) * 100);\n }, 50);\n\n this.timeoutId = setTimeout(() => {\n this.remove();\n }, duration);\n }\n\n private clearTimers() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.progressIntervalId) {\n clearInterval(this.progressIntervalId);\n this.progressIntervalId = null;\n }\n }\n}\n","<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'igo-toast-container',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n position: fixed;\n pointer-events: none;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n }\n\n :host.toast-bottom-right {\n bottom: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-bottom-left {\n bottom: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-right {\n top: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-top-left {\n top: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-center {\n top: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n\n :host.toast-bottom-center {\n bottom: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n `\n ]\n})\nexport class ToastContainerComponent {}\n","export interface ToastConfig {\n timeOut: number;\n extendedTimeOut: number;\n closeButton: boolean;\n progressBar: boolean;\n tapToDismiss: boolean;\n positionClass: string;\n maxOpened: number;\n preventDuplicates: boolean;\n enableHtml: boolean;\n disableTimeOut: boolean;\n showIcon: boolean;\n freezeProgressOnHover: boolean;\n}\n\nexport type IndividualToastConfig = Partial<ToastConfig>;\n\nexport interface ToastRef {\n toastId: number;\n message: string;\n title: string;\n type: ToastType;\n config: ToastConfig;\n}\n\nexport type ToastType = 'success' | 'error' | 'info' | 'warning' | 'show';\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n timeOut: 10000,\n extendedTimeOut: 10000,\n closeButton: true,\n progressBar: true,\n tapToDismiss: true,\n positionClass: 'toast-bottom-right',\n maxOpened: 4,\n preventDuplicates: true,\n enableHtml: true,\n disableTimeOut: false,\n showIcon: false,\n freezeProgressOnHover: true\n};\n","import { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\n\nimport { ToastContainerComponent } from './toast-container.component';\nimport {\n DEFAULT_TOAST_CONFIG,\n IndividualToastConfig,\n ToastConfig,\n ToastRef,\n ToastType\n} from './toast.interface';\nimport { ToastComponent } from './toast/toast.component';\n\nexport interface ActiveToast {\n toastId: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private appRef = inject(ApplicationRef);\n private document = inject(DOCUMENT);\n\n private toastIdCounter = 0;\n private toasts: Map<number, ComponentRef<ToastComponent>> = new Map();\n private containerRef: ComponentRef<ToastContainerComponent> | null = null;\n private config: ToastConfig = { ...DEFAULT_TOAST_CONFIG };\n private lastMessage = '';\n private lastTitle = '';\n\n configure(config: Partial<ToastConfig>) {\n this.config = { ...this.config, ...config };\n }\n\n success(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('success', message, title, options);\n }\n\n error(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('error', message, title, options);\n }\n\n info(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('info', message, title, options);\n }\n\n warning(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('warning', message, title, options);\n }\n\n remove(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.remove();\n }\n }\n\n /** Called by ToastComponent when removal animation completes */\n removeToast(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n this.appRef.detachView(ref.hostView);\n ref.destroy();\n this.toasts.delete(toastId);\n }\n if (this.toasts.size === 0 && this.containerRef) {\n this.appRef.detachView(this.containerRef.hostView);\n this.containerRef.destroy();\n this.containerRef = null;\n }\n }\n\n getActiveToasts(): ToastRef[] {\n return Array.from(this.toasts.entries()).map(([id, ref]) => ({\n toastId: id,\n message: ref.instance.message,\n title: ref.instance.title,\n type: ref.instance.type,\n config: ref.instance.config as ToastConfig\n }));\n }\n\n updateToast(toastId: number, message: string, title: string) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.message = message;\n ref.instance.title = title;\n }\n }\n\n private show(\n type: ToastType,\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n const mergedConfig = { ...this.config, ...options };\n\n // Prevent duplicates\n if (mergedConfig.preventDuplicates) {\n if (this.lastMessage === message && this.lastTitle === title) {\n // Return last toast id\n const lastEntry = Array.from(this.toasts.entries()).pop();\n if (lastEntry) {\n return { toastId: lastEntry[0] };\n }\n }\n }\n\n // Enforce max opened\n if (mergedConfig.maxOpened && this.toasts.size >= mergedConfig.maxOpened) {\n const firstKey = this.toasts.keys().next().value!;\n this.remove(firstKey);\n }\n\n this.lastMessage = message;\n this.lastTitle = title;\n\n const toastId = ++this.toastIdCounter;\n const container = this.getOrCreateContainer(\n mergedConfig.positionClass || 'toast-bottom-right'\n );\n\n const toastRef = createComponent(ToastComponent, {\n environmentInjector: this.appRef.injector\n });\n\n toastRef.instance.toastId = toastId;\n toastRef.instance.type = type;\n toastRef.instance.message = message;\n toastRef.instance.title = title;\n toastRef.instance.config = mergedConfig;\n toastRef.instance.enableHtml = mergedConfig.enableHtml ?? true;\n toastRef.instance.showIcon = mergedConfig.showIcon ?? false;\n toastRef.instance.removed.subscribe((removedToastId) => {\n this.removeToast(removedToastId);\n });\n\n this.toasts.set(toastId, toastRef);\n this.appRef.attachView(toastRef.hostView);\n container.location.nativeElement.appendChild(\n toastRef.location.nativeElement\n );\n\n return { toastId };\n }\n\n private getOrCreateContainer(\n positionClass: string\n ): ComponentRef<ToastContainerComponent> {\n if (this.containerRef) {\n return this.containerRef;\n }\n\n this.containerRef = createComponent(ToastContainerComponent, {\n environmentInjector: this.appRef.injector\n });\n\n this.appRef.attachView(this.containerRef.hostView);\n const el = this.containerRef.location.nativeElement as HTMLElement;\n el.classList.add(positionClass);\n this.document.body.appendChild(el);\n return this.containerRef;\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ToastConfig, ToastService } from './toast';\n\n/**\n * Provides the message service with custom toast configuration.\n * Since ToastService is providedIn: 'root', this simply configures it.\n */\nexport function provideMessage(\n config?: Partial<ToastConfig>\n): EnvironmentProviders {\n return provideAppInitializer(() => {\n if (!config) {\n return;\n }\n inject(ToastService).configure(config);\n });\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { MessageType } from './message.enum';\nimport { Message, MessageOptions } from './message.interface';\nimport { ActiveToast, IndividualToastConfig, ToastService } from './toast';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n private configService = inject(ConfigService);\n private languageService = inject(LanguageService);\n private toastService = inject(ToastService);\n\n public messages$ = new BehaviorSubject<Message[]>([]);\n private options?: MessageOptions;\n\n constructor() {\n this.options = this.configService.getConfig('message');\n }\n\n showError(httpError: HttpErrorResponse) {\n const errorPayload = httpError.error as\n { caught?: boolean; message?: string; title?: string } | undefined;\n\n if (errorPayload && typeof errorPayload === 'object') {\n errorPayload.caught = true;\n }\n\n const message =\n typeof errorPayload?.message === 'string'\n ? errorPayload.message\n : httpError.message;\n const title =\n typeof errorPayload?.title === 'string'\n ? errorPayload.title\n : 'igo.core.message.error';\n\n return this.error(message, title);\n }\n\n message(message: Message) {\n this.messages$.next(this.messages$.value.concat([message]));\n\n const options = { ...(message.options ?? {}) } as MessageOptions;\n const currentDate = new Date();\n const fromDate = this.parseDate(options.from, new Date('1 jan 1900'));\n const toDate = this.parseDate(options.to, new Date('1 jan 3000'));\n\n options.from = fromDate;\n options.to = toDate;\n\n if (message.showIcon !== undefined) {\n options.showIcon = message.showIcon;\n }\n\n if (currentDate >= fromDate && currentDate <= toDate) {\n message = this.handleTemplate(message);\n\n if (message.text) {\n let messageShown: ActiveToast;\n switch (message.type) {\n case MessageType.SUCCESS:\n messageShown = this.success(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ERROR:\n messageShown = this.error(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.INFO:\n case MessageType.SHOW:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ALERT:\n case MessageType.WARNING:\n messageShown = this.alert(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n default:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n }\n options.id = messageShown.toastId;\n message.options = options;\n }\n }\n }\n\n success(\n text: string,\n title = 'igo.core.message.success',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'success',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n error(\n text: string,\n title = 'igo.core.message.error',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'error',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n info(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n alert(\n text: string,\n title = 'igo.core.message.alert',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'warning',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n show(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n private handleToast(\n type: 'warning' | 'info' | 'error' | 'success',\n text: string,\n title: string,\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n const translatedTextInterpolateParams = this.translateInterpolateParams(\n textInterpolateParams\n );\n const translatedTitleInterpolateParams = this.translateInterpolateParams(\n titleInterpolateParams\n );\n\n const translatedMessage = this.languageService.translate.instant(\n text,\n translatedTextInterpolateParams\n );\n const translatedTitle = this.languageService.translate.instant(\n title,\n translatedTitleInterpolateParams\n );\n\n let activeToast: ActiveToast;\n switch (type) {\n case 'success':\n activeToast = this.toastService.success(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'error':\n activeToast = this.toastService.error(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'info':\n activeToast = this.toastService.info(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'warning':\n activeToast = this.toastService.warning(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n }\n\n return activeToast;\n }\n\n private parseDate(value: Date | string | undefined, fallback: Date): Date {\n if (!value) {\n return fallback;\n }\n\n if (value instanceof Date) {\n return value;\n }\n\n const directParse = new Date(value);\n if (!Number.isNaN(directParse.getTime())) {\n return directParse;\n }\n\n const normalizedParse = new Date(Date.parse(value.replace(/-/g, ' ')));\n return Number.isNaN(normalizedParse.getTime()) ? fallback : normalizedParse;\n }\n\n private translateInterpolateParams(\n params?: Record<string, unknown>\n ): Record<string, unknown> {\n if (!params) {\n return {};\n }\n\n return Object.keys(params).reduce(\n (acc, key) => {\n const value = params[key];\n acc[key] =\n typeof value === 'string'\n ? this.languageService.translate.instant(value)\n : value;\n return acc;\n },\n {} as Record<string, unknown>\n );\n }\n\n remove(id: number) {\n this.toastService.remove(id);\n }\n\n removeAllAreNotError() {\n for (const mess of this.messages$.value) {\n if (mess.options?.id && mess.type !== MessageType.ERROR) {\n this.remove(mess.options.id);\n }\n }\n }\n\n private handleTemplate(message: Message): Message {\n if (!this.options?.template || message.html) {\n return message;\n }\n\n let html = this.options?.template;\n html = html.replace('${text}', message.text);\n if (message.title) {\n html = html.replace('${title}', message.title);\n }\n\n message.html = undefined;\n message.text = html;\n message.title = undefined;\n return message;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-core-message.mjs","sources":["../../../packages/core/message/src/message.enum.ts","../../../packages/core/message/src/toast/toast/toast.component.ts","../../../packages/core/message/src/toast/toast/toast.component.html","../../../packages/core/message/src/toast/toast-container.component.ts","../../../packages/core/message/src/toast/toast.interface.ts","../../../packages/core/message/src/toast/toast.service.ts","../../../packages/core/message/src/message.provider.ts","../../../packages/core/message/src/message.service.ts","../../../packages/core/message/src/igo2-core-message.ts"],"sourcesContent":["export enum MessageType {\n ERROR = 'error',\n ALERT = 'warning',\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n WARNING = 'warning',\n INFO = 'info',\n SUCCESS = 'success',\n SHOW = 'show'\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n inject,\n output,\n signal\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { ToastConfig, ToastType } from '../toast.interface';\n\n@Component({\n selector: 'igo-toast',\n standalone: true,\n imports: [NgClass, MatIconModule, MatIconButton, MatProgressBar],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n host: {\n '[class]': 'animationState()',\n '(mouseenter)': 'onEnter()',\n '(mouseleave)': 'onLeave()',\n '(touchstart)': 'onEnter()',\n '(touchend)': 'onLeave()'\n }\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n private sanitizer = inject(DomSanitizer);\n\n readonly removed = output<number>();\n toastId!: number;\n type!: ToastType;\n title = '';\n config!: ToastConfig;\n enableHtml = false;\n showIcon = false;\n\n private _message = '';\n safeMessage: SafeHtml = '';\n\n get message(): string {\n return this._message;\n }\n\n set message(value: string) {\n this._message = value;\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(value);\n }\n\n progress = signal(100);\n animationState = signal<'inactive' | 'active' | 'removed'>('inactive');\n\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n private progressIntervalId: ReturnType<typeof setInterval> | null = null;\n private startTime = 0;\n private remainingTime = 0;\n private totalTimeOut = 0;\n\n ngOnInit() {\n this.animationState.set('active');\n if (!this.config.disableTimeOut) {\n this.remainingTime = this.config.timeOut ?? 10000;\n this.totalTimeOut = this.remainingTime;\n this.startTimer();\n }\n }\n\n ngOnDestroy() {\n this.clearTimers();\n }\n\n onEnter() {\n if (!this.config.disableTimeOut) {\n this.remainingTime = (this.progress() / 100) * this.totalTimeOut;\n this.clearTimers();\n }\n }\n\n onLeave() {\n if (!this.config.disableTimeOut) {\n if (!this.config.freezeProgressOnHover) {\n const extendedTimeOut = this.config.extendedTimeOut ?? 10000;\n this.remainingTime = extendedTimeOut;\n this.totalTimeOut = extendedTimeOut;\n }\n this.startTimer();\n }\n }\n\n onTap() {\n if (this.config.tapToDismiss) {\n this.remove();\n }\n }\n\n close(event: Event) {\n event.stopPropagation();\n this.remove();\n }\n\n remove() {\n this.clearTimers();\n this.animationState.set('removed');\n setTimeout(() => {\n this.removed.emit(this.toastId);\n }, 300);\n }\n\n private startTimer() {\n this.startTime = Date.now();\n const duration = this.remainingTime;\n this.progress.set((duration / this.totalTimeOut) * 100);\n\n this.progressIntervalId = setInterval(() => {\n const elapsed = Date.now() - this.startTime;\n const remaining = Math.max(0, duration - elapsed);\n this.progress.set((remaining / this.totalTimeOut) * 100);\n }, 50);\n\n this.timeoutId = setTimeout(() => {\n this.remove();\n }, duration);\n }\n\n private clearTimers() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.progressIntervalId) {\n clearInterval(this.progressIntervalId);\n this.progressIntervalId = null;\n }\n }\n}\n","<div\n class=\"igo-toast\"\n [ngClass]=\"'toast-' + type\"\n [attr.tabindex]=\"config.tapToDismiss ? '0' : null\"\n (click)=\"onTap()\"\n (keydown.enter)=\"onTap()\"\n>\n @if (showIcon) {\n <mat-icon class=\"toast-icon\">\n @switch (type) {\n @case ('success') {\n check_circle\n }\n @case ('error') {\n error\n }\n @case ('warning') {\n warning\n }\n @default {\n info\n }\n }\n </mat-icon>\n }\n <div class=\"toast-content\">\n @if (title) {\n <header class=\"toast-title\">{{ title }}</header>\n }\n @if (!enableHtml) {\n <p class=\"toast-message\">{{ message }}</p>\n } @else {\n <p class=\"toast-message\" [innerHTML]=\"safeMessage\"></p>\n }\n </div>\n @if (config.closeButton) {\n <button matIconButton class=\"toast-close-button\" (click)=\"close($event)\">\n <mat-icon>close</mat-icon>\n </button>\n }\n @if (config.progressBar && !config.disableTimeOut) {\n <mat-progress-bar mode=\"determinate\" [value]=\"progress()\" />\n }\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'igo-toast-container',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n position: fixed;\n pointer-events: none;\n z-index: 10000;\n display: flex;\n flex-direction: column;\n row-gap: 8px;\n }\n\n :host.toast-bottom-right {\n bottom: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-bottom-left {\n bottom: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-right {\n top: 12px;\n right: 12px;\n align-items: flex-end;\n }\n\n :host.toast-top-left {\n top: 12px;\n left: 12px;\n align-items: flex-start;\n }\n\n :host.toast-top-center {\n top: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n\n :host.toast-bottom-center {\n bottom: 12px;\n left: 50%;\n transform: translateX(-50%);\n align-items: center;\n }\n `\n ]\n})\nexport class ToastContainerComponent {}\n","export interface ToastConfig {\n timeOut: number;\n extendedTimeOut: number;\n closeButton: boolean;\n progressBar: boolean;\n tapToDismiss: boolean;\n positionClass: string;\n maxOpened: number;\n preventDuplicates: boolean;\n enableHtml: boolean;\n disableTimeOut: boolean;\n showIcon: boolean;\n freezeProgressOnHover: boolean;\n}\n\nexport type IndividualToastConfig = Partial<ToastConfig>;\n\nexport interface ToastRef {\n toastId: number;\n message: string;\n title: string;\n type: ToastType;\n config: ToastConfig;\n}\n\nexport type ToastType = 'success' | 'error' | 'info' | 'warning' | 'show';\n\nexport const DEFAULT_TOAST_CONFIG: ToastConfig = {\n timeOut: 10000,\n extendedTimeOut: 10000,\n closeButton: true,\n progressBar: true,\n tapToDismiss: true,\n positionClass: 'toast-bottom-right',\n maxOpened: 4,\n preventDuplicates: true,\n enableHtml: true,\n disableTimeOut: false,\n showIcon: false,\n freezeProgressOnHover: true\n};\n","import { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\n\nimport { ToastContainerComponent } from './toast-container.component';\nimport {\n DEFAULT_TOAST_CONFIG,\n IndividualToastConfig,\n ToastConfig,\n ToastRef,\n ToastType\n} from './toast.interface';\nimport { ToastComponent } from './toast/toast.component';\n\nexport interface ActiveToast {\n toastId: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private appRef = inject(ApplicationRef);\n private document = inject(DOCUMENT);\n\n private toastIdCounter = 0;\n private toasts: Map<number, ComponentRef<ToastComponent>> = new Map();\n private containerRef: ComponentRef<ToastContainerComponent> | null = null;\n private config: ToastConfig = { ...DEFAULT_TOAST_CONFIG };\n private lastMessage = '';\n private lastTitle = '';\n\n configure(config: Partial<ToastConfig>) {\n this.config = { ...this.config, ...config };\n }\n\n success(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('success', message, title, options);\n }\n\n error(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('error', message, title, options);\n }\n\n info(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('info', message, title, options);\n }\n\n warning(\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n return this.show('warning', message, title, options);\n }\n\n remove(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.remove();\n }\n }\n\n /** Called by ToastComponent when removal animation completes */\n removeToast(toastId: number) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n this.appRef.detachView(ref.hostView);\n ref.destroy();\n this.toasts.delete(toastId);\n }\n if (this.toasts.size === 0 && this.containerRef) {\n this.appRef.detachView(this.containerRef.hostView);\n this.containerRef.destroy();\n this.containerRef = null;\n }\n }\n\n getActiveToasts(): ToastRef[] {\n return Array.from(this.toasts.entries()).map(([id, ref]) => ({\n toastId: id,\n message: ref.instance.message,\n title: ref.instance.title,\n type: ref.instance.type,\n config: ref.instance.config as ToastConfig\n }));\n }\n\n updateToast(toastId: number, message: string, title: string) {\n const ref = this.toasts.get(toastId);\n if (ref) {\n ref.instance.message = message;\n ref.instance.title = title;\n }\n }\n\n private show(\n type: ToastType,\n message: string,\n title: string,\n options?: IndividualToastConfig\n ): ActiveToast {\n const mergedConfig = { ...this.config, ...options };\n\n // Prevent duplicates\n if (mergedConfig.preventDuplicates) {\n if (this.lastMessage === message && this.lastTitle === title) {\n // Return last toast id\n const lastEntry = Array.from(this.toasts.entries()).pop();\n if (lastEntry) {\n return { toastId: lastEntry[0] };\n }\n }\n }\n\n // Enforce max opened\n if (mergedConfig.maxOpened && this.toasts.size >= mergedConfig.maxOpened) {\n const firstKey = this.toasts.keys().next().value!;\n this.remove(firstKey);\n }\n\n this.lastMessage = message;\n this.lastTitle = title;\n\n const toastId = ++this.toastIdCounter;\n const container = this.getOrCreateContainer(\n mergedConfig.positionClass || 'toast-bottom-right'\n );\n\n const toastRef = createComponent(ToastComponent, {\n environmentInjector: this.appRef.injector\n });\n\n toastRef.instance.toastId = toastId;\n toastRef.instance.type = type;\n toastRef.instance.message = message;\n toastRef.instance.title = title;\n toastRef.instance.config = mergedConfig;\n toastRef.instance.enableHtml = mergedConfig.enableHtml ?? true;\n toastRef.instance.showIcon = mergedConfig.showIcon ?? false;\n toastRef.instance.removed.subscribe((removedToastId) => {\n this.removeToast(removedToastId);\n });\n\n this.toasts.set(toastId, toastRef);\n this.appRef.attachView(toastRef.hostView);\n container.location.nativeElement.appendChild(\n toastRef.location.nativeElement\n );\n\n return { toastId };\n }\n\n private getOrCreateContainer(\n positionClass: string\n ): ComponentRef<ToastContainerComponent> {\n if (this.containerRef) {\n return this.containerRef;\n }\n\n this.containerRef = createComponent(ToastContainerComponent, {\n environmentInjector: this.appRef.injector\n });\n\n this.appRef.attachView(this.containerRef.hostView);\n const el = this.containerRef.location.nativeElement as HTMLElement;\n el.classList.add(positionClass);\n this.document.body.appendChild(el);\n return this.containerRef;\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n provideAppInitializer\n} from '@angular/core';\n\nimport { ToastConfig, ToastService } from './toast';\n\n/**\n * Provides the message service with custom toast configuration.\n * Since ToastService is providedIn: 'root', this simply configures it.\n */\nexport function provideMessage(\n config?: Partial<ToastConfig>\n): EnvironmentProviders {\n return provideAppInitializer(() => {\n if (!config) {\n return;\n }\n inject(ToastService).configure(config);\n });\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, Injector, inject } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { MessageType } from './message.enum';\nimport { Message, MessageOptions } from './message.interface';\nimport { ActiveToast, IndividualToastConfig, ToastService } from './toast';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n private configService = inject(ConfigService);\n private injector = inject(Injector);\n private toastService = inject(ToastService);\n\n public messages$ = new BehaviorSubject<Message[]>([]);\n private options?: MessageOptions;\n\n private get languageService(): LanguageService | null {\n return this.injector.get(LanguageService, null);\n }\n\n constructor() {\n this.options = this.configService.getConfig('message');\n }\n\n showError(httpError: HttpErrorResponse) {\n const errorPayload = httpError.error as\n { caught?: boolean; message?: string; title?: string } | undefined;\n\n if (errorPayload && typeof errorPayload === 'object') {\n errorPayload.caught = true;\n }\n\n const message =\n typeof errorPayload?.message === 'string'\n ? errorPayload.message\n : httpError.message;\n const title =\n typeof errorPayload?.title === 'string'\n ? errorPayload.title\n : 'igo.core.message.error';\n\n return this.error(message, title);\n }\n\n message(message: Message) {\n this.messages$.next(this.messages$.value.concat([message]));\n\n const options = { ...(message.options ?? {}) } as MessageOptions;\n const currentDate = new Date();\n const fromDate = this.parseDate(options.from, new Date('1 jan 1900'));\n const toDate = this.parseDate(options.to, new Date('1 jan 3000'));\n\n options.from = fromDate;\n options.to = toDate;\n\n if (message.showIcon !== undefined) {\n options.showIcon = message.showIcon;\n }\n\n if (currentDate >= fromDate && currentDate <= toDate) {\n message = this.handleTemplate(message);\n\n if (message.text) {\n let messageShown: ActiveToast;\n switch (message.type) {\n case MessageType.SUCCESS:\n messageShown = this.success(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ERROR:\n messageShown = this.error(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.INFO:\n case MessageType.SHOW:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n case MessageType.ALERT:\n case MessageType.WARNING:\n messageShown = this.alert(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n default:\n messageShown = this.info(\n message.text,\n message.title,\n options,\n message.textInterpolateParams,\n message.titleInterpolateParams\n );\n break;\n }\n options.id = messageShown.toastId;\n message.options = options;\n }\n }\n }\n\n success(\n text: string,\n title = 'igo.core.message.success',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'success',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n error(\n text: string,\n title = 'igo.core.message.error',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'error',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n info(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n alert(\n text: string,\n title = 'igo.core.message.alert',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'warning',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n show(\n text: string,\n title = 'igo.core.message.info',\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n return this.handleToast(\n 'info',\n text,\n title,\n options,\n textInterpolateParams,\n titleInterpolateParams\n );\n }\n\n private handleToast(\n type: 'warning' | 'info' | 'error' | 'success',\n text: string,\n title: string,\n options: IndividualToastConfig = {},\n textInterpolateParams?: Record<string, unknown>,\n titleInterpolateParams?: Record<string, unknown>\n ): ActiveToast {\n const translatedTextInterpolateParams = this.translateInterpolateParams(\n textInterpolateParams\n );\n const translatedTitleInterpolateParams = this.translateInterpolateParams(\n titleInterpolateParams\n );\n\n const translatedMessage = this.languageService\n ? this.languageService.translate.instant(\n text,\n translatedTextInterpolateParams\n )\n : text;\n const translatedTitle = this.languageService\n ? this.languageService.translate.instant(\n title,\n translatedTitleInterpolateParams\n )\n : title;\n\n let activeToast: ActiveToast;\n switch (type) {\n case 'success':\n activeToast = this.toastService.success(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'error':\n activeToast = this.toastService.error(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'info':\n activeToast = this.toastService.info(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n case 'warning':\n activeToast = this.toastService.warning(\n translatedMessage,\n translatedTitle,\n options\n );\n break;\n }\n\n return activeToast;\n }\n\n private parseDate(value: Date | string | undefined, fallback: Date): Date {\n if (!value) {\n return fallback;\n }\n\n if (value instanceof Date) {\n return value;\n }\n\n const directParse = new Date(value);\n if (!Number.isNaN(directParse.getTime())) {\n return directParse;\n }\n\n const normalizedParse = new Date(Date.parse(value.replace(/-/g, ' ')));\n return Number.isNaN(normalizedParse.getTime()) ? fallback : normalizedParse;\n }\n\n private translateInterpolateParams(\n params?: Record<string, unknown>\n ): Record<string, unknown> {\n if (!params) {\n return {};\n }\n\n return Object.keys(params).reduce(\n (acc, key) => {\n const value = params[key];\n acc[key] =\n typeof value === 'string' && this.languageService\n ? this.languageService.translate.instant(value)\n : value;\n return acc;\n },\n {} as Record<string, unknown>\n );\n }\n\n remove(id: number) {\n this.toastService.remove(id);\n }\n\n removeAllAreNotError() {\n for (const mess of this.messages$.value) {\n if (mess.options?.id && mess.type !== MessageType.ERROR) {\n this.remove(mess.options.id);\n }\n }\n }\n\n private handleTemplate(message: Message): Message {\n if (!this.options?.template || message.html) {\n return message;\n }\n\n let html = this.options?.template;\n html = html.replace('${text}', message.text);\n if (message.title) {\n html = html.replace('${title}', message.title);\n }\n\n message.html = undefined;\n message.text = html;\n message.title = undefined;\n return message;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -48,10 +48,10 @@ class NetworkService {
|
|
|
48
48
|
? this.stateChangeEventEmitter.pipe(debounceTime(300), startWith(this.state))
|
|
49
49
|
: this.stateChangeEventEmitter.pipe(debounceTime(300));
|
|
50
50
|
}
|
|
51
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
52
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
51
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: NetworkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: NetworkService, providedIn: 'root' });
|
|
53
53
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: NetworkService, decorators: [{
|
|
55
55
|
type: Injectable,
|
|
56
56
|
args: [{
|
|
57
57
|
providedIn: 'root'
|
|
@@ -17,10 +17,10 @@ class RegexService {
|
|
|
17
17
|
}
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
21
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: RegexService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: RegexService, providedIn: 'root' });
|
|
22
22
|
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: RegexService, decorators: [{
|
|
24
24
|
type: Injectable,
|
|
25
25
|
args: [{
|
|
26
26
|
providedIn: 'root'
|