{"version":3,"file":"cauca-911-core.mjs","sources":["../../../projects/cauca-core/src/lib/shared/models/log-level.enum.ts","../../../projects/cauca-core/src/lib/shared/models/core-module-options.ts","../../../projects/cauca-core/src/lib/shared/classes/configuration.ts","../../../projects/cauca-core/src/lib/cauca-core.service.ts","../../../projects/cauca-core/src/lib/cauca-core.component.ts","../../../projects/cauca-core/src/lib/cauca-core.component.html","../../../projects/cauca-core/src/lib/shared/constants/cauca-core-module-options.ts","../../../projects/cauca-core/src/lib/cauca-page-not-found/cauca-page-not-found.component.ts","../../../projects/cauca-core/src/lib/cauca-page-not-found/cauca-page-not-found.component.html","../../../projects/cauca-core/src/lib/shared/interceptors/interceptor-error.service.ts","../../../projects/cauca-core/src/lib/shared/interceptors/http-offline-interceptor.ts","../../../projects/cauca-core/src/lib/shared/models/http-error.ts","../../../projects/cauca-core/src/lib/shared/decorators/debounce.ts","../../../projects/cauca-core/src/lib/shared/services/log.service.ts","../../../projects/cauca-core/src/lib/shared/tokens/injection-tokens.ts","../../../projects/cauca-core/src/lib/shared/services/refresh-token.service.ts","../../../projects/cauca-core/src/lib/shared/services/http-token-provider.ts","../../../projects/cauca-core/src/lib/shared/interceptors/http-token-writer-interceptor.ts","../../../projects/cauca-core/src/lib/shared/interceptors/http-token-reader-interceptor.ts","../../../projects/cauca-core/src/lib/shared/interceptors/http-error-interceptor.ts","../../../projects/cauca-core/src/lib/shared/ngx-translate/custom-missing-translation-handler.ts","../../../projects/cauca-core/src/lib/shared/ngx-translate/custom-multi-translate-http-loader.ts","../../../projects/cauca-core/src/lib/shared/services/translate.service.ts","../../../projects/cauca-core/src/lib/cauca-core.module.ts","../../../projects/cauca-core/src/lib/cauca-core-for-child.module.ts","../../../projects/cauca-core/src/lib/shared/services/api-lookup.service.ts","../../../projects/cauca-core/src/lib/shared/classes/network-estimates.ts","../../../projects/cauca-core/src/lib/shared/services/network-information.service.ts","../../../projects/cauca-core/src/lib/cauca-core-testing.module.ts","../../../projects/cauca-core/src/lib/testing/provide-testing-translation.ts","../../../projects/cauca-core/src/lib/shared/classes/browser.ts","../../../projects/cauca-core/src/lib/shared/classes/operating-system.ts","../../../projects/cauca-core/src/lib/shared/services/client-information.service.ts","../../../projects/cauca-core/src/lib/shared/services/fullscreen.service.ts","../../../projects/cauca-core/src/lib/shared/services/image.service.ts","../../../projects/cauca-core/src/lib/shared/models/version.ts","../../../projects/cauca-core/src/lib/shared/services/version-check.service.ts","../../../projects/cauca-core/src/lib/shared/services/refresh-url.service.ts","../../../projects/cauca-core/src/lib/shared/interceptors/interceptor-delay.service.ts","../../../projects/cauca-core/src/lib/shared/interceptors/http-delay.interceptor.ts","../../../projects/cauca-core/src/lib/shared/classes/color.ts","../../../projects/cauca-core/src/lib/functions/to-lower-case-and-without-diacritics.ts","../../../projects/cauca-core/src/public-api.ts","../../../projects/cauca-core/src/cauca-911-core.ts"],"sourcesContent":["export enum LogLevel {\n    trace = 0,\n    debug = 1,\n    information = 2,\n    warning = 3,\n    error = 4,\n    critical = 5,\n    disconnection = 6,\n}\n","import { Type } from '@angular/core';\nimport { BaseLogoutHandler } from '../services/logout-handler';\nimport { LogLevel } from './log-level.enum';\nimport { RefreshToken } from './refresh-token';\nimport { RefreshUrlService } from '../services/refresh-url.service';\n\nexport type LoginUrlFunction = () => string;\nexport type RefreshUrlFunction = () => string;\nexport type LogErrorFunction = (level: LogLevel, message: string, data: any) => void;\nexport type UpdateTokenFunction = (newToken: RefreshToken) => void;\nexport type HttpErrorFunction = (error: any, method: string, url: string) => void;\n\nexport class CoreModuleOptions {\n    public logLevel: LogLevel = LogLevel.error;\n    public apiUrl: string = '';\n    public languages: string[] = ['fr', 'en'];\n    public autoLoadMaterialLocales: boolean = true;\n    public refreshLoginURL: string | RefreshUrlFunction = '';\n    public allowRefreshToken: boolean = false;\n    public libraries: string[] = [];\n    public i18nPaths: string[] = [];\n    public locale: string = '';\n    public jsonConfigFile: string = '';\n    public nbRetryOnNetworkError: number = 2;\n    public contentSecurityPolicyActivated: boolean = false;\n    public loginURL: string | LoginUrlFunction = '';\n    public keepReturnUrlWhenRedirectingToLogin: boolean = false;\n    public logoutService?: Type<BaseLogoutHandler>;\n    public useLogoutService: boolean = false;\n    public refreshUrlService?: Type<RefreshUrlService>;\n    // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n    public logError: LogErrorFunction = (level: LogLevel, message: string, data: any = null) => {};\n    // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n    public updateToken: UpdateTokenFunction = (newToken: RefreshToken) => {};\n    // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n    public onHttpError: HttpErrorFunction = (error: any) => {};\n}\n","import { CoreModuleOptions, HttpErrorFunction, LogErrorFunction, LoginUrlFunction, RefreshUrlFunction, UpdateTokenFunction } from '../models/core-module-options';\nimport { LogLevel } from '../models/log-level.enum';\n\nexport class Configuration {\n    public jsonConfigFile: string = '';\n    public libraries: string[] = [];\n    public i18nPaths: string[] = [];\n    public loginURL: LoginUrlFunction;\n    public logError: LogErrorFunction;\n    public updateToken: UpdateTokenFunction;\n    public onHttpError: HttpErrorFunction;\n    public refreshLoginURL: RefreshUrlFunction;\n    public useLogoutService: boolean = false;\n    public allowRefreshToken: boolean = false;\n    public autoLoadMaterialLocales: boolean = true;\n    public logLevel: LogLevel = LogLevel.debug;\n    public apiUrl: string = '';\n    public nbRetryOnNetworkError: number = 2;\n    public contentSecurityPolicyActivated: boolean = false;\n    public keepReturnUrlWhenRedirectingToLogin: boolean = false;\n\n    private useCharset;\n    private useAuthorizationType;\n    private useAccessToken;\n    private useRefreshToken;\n    private useCSRFToken;\n    private useLocale: string;\n    private useLanguages: string[];\n\n    public constructor(options: CoreModuleOptions) {\n        this.useCharset = 'UTF-8';\n        this.useAuthorizationType = 'Bearer';\n        this.useAccessToken = '';\n        this.useRefreshToken = '';\n        this.useCSRFToken = '';\n        this.useLocale = options.locale || '';\n        this.useLanguages = options.languages || ['fr'];\n        this.autoLoadMaterialLocales = options.autoLoadMaterialLocales ?? true;\n        this.libraries = options.libraries || [];\n        this.i18nPaths = options.i18nPaths || [];\n        this.apiUrl = options.apiUrl || '/api/';\n        this.logLevel = options.logLevel || LogLevel.debug;\n        this.allowRefreshToken = options.allowRefreshToken || false;\n        this.nbRetryOnNetworkError = options.nbRetryOnNetworkError || 2;\n        this.contentSecurityPolicyActivated = options.contentSecurityPolicyActivated || false;\n        this.keepReturnUrlWhenRedirectingToLogin = options.keepReturnUrlWhenRedirectingToLogin || false;\n        this.logError = options.logError || this.defaultLogError;\n        this.updateToken = options.updateToken;\n        this.onHttpError = options.onHttpError;\n        this.useLogoutService = options.useLogoutService || false;\n        this.setRefreshUrl(options);\n        this.setLoginUrl(options);\n        this.setDefaultLocale();\n    }\n\n    public get locale(): string {\n        return this.useLocale;\n    }\n    public set locale(value: string) {\n        this.useLocale = value;\n    }\n\n    public get languages(): string[] {\n        return this.useLanguages;\n    }\n    public set languages(value: string[]) {\n        this.useLanguages = value;\n        this.setDefaultLocale();\n    }\n\n    public get charset(): string {\n        return this.useCharset;\n    }\n    public set charset(value: string) {\n        this.useCharset = value;\n    }\n\n    public get authorizationType(): string {\n        return this.useAuthorizationType;\n    }\n    public set authorizationType(value: string) {\n        this.useAuthorizationType = value;\n    }\n\n    public get refreshToken(): string {\n        if (this.contentSecurityPolicyActivated && !this.useRefreshToken) {\n            this.useRefreshToken = localStorage.getItem('refreshToken');\n        } else if (!this.useRefreshToken) {\n            this.useRefreshToken = sessionStorage.getItem('refreshToken');\n        }\n\n        return this.useRefreshToken;\n    }\n    public set refreshToken(value: string) {\n        this.setStorageValue('refreshToken', value);\n        this.useRefreshToken = value;\n    }\n\n    public get accessToken(): string {\n        if (this.contentSecurityPolicyActivated && !this.useAccessToken) {\n            this.useAccessToken = localStorage.getItem('accessToken');\n        } else if (!this.useAccessToken) {\n            this.useAccessToken = sessionStorage.getItem('accessToken');\n        }\n        return this.useAccessToken;\n    }\n    public set accessToken(value: string) {\n        this.setStorageValue('accessToken', value);\n        this.useAccessToken = value;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public get CSRFToken(): string {\n        if (this.contentSecurityPolicyActivated && !this.useAccessToken) {\n            this.useCSRFToken = localStorage.getItem('CSRFToken');\n        } else if (!this.useCSRFToken) {\n            this.useCSRFToken = sessionStorage.getItem('CSRFToken');\n        }\n\n        return this.useCSRFToken;\n    }\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public set CSRFToken(value: string) {\n        this.setStorageValue('CSRFToken', value);\n        this.useCSRFToken = value;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public get CSRFCookie(): string {\n        return sessionStorage.getItem('CSRFCookie');\n    }\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public set CSRFCookie(value: string) {\n        sessionStorage.setItem('CSRFCookie', value);\n    }\n\n    private setDefaultLocale(): void {\n        if (this.useLocale) {\n            return;\n        }\n\n        if (navigator && navigator.language.indexOf('-') > -1) {\n            if (this.languages.indexOf(navigator.language) > -1) {\n                this.locale = navigator.language;\n                return;\n            }\n\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            const [langue, country] = navigator.language.split('-');\n\n            if (this.languages.indexOf(langue) > -1) {\n                this.locale = langue;\n                return;\n            }\n        } else if (navigator && navigator.languages.length > 0) {\n            for (const i in navigator.languages) {\n                if (this.languages.indexOf(navigator.languages[i]) > -1) {\n                    this.locale = navigator.languages[i];\n                    return;\n                }\n            }\n        }\n    }\n\n    private setLoginUrl(options: CoreModuleOptions): void {\n        if (typeof(options.loginURL) === 'function') {\n            this.loginURL = options.loginURL;\n        } else {\n            const url = options.loginURL?.toString() || '/login';\n            this.loginURL = () =>  url;\n        }\n    }\n\n    private setRefreshUrl(options: CoreModuleOptions): void {\n        if (typeof(options.refreshLoginURL) === 'function') {\n            this.refreshLoginURL = options.refreshLoginURL;\n        } else {\n            const url = options.refreshLoginURL?.toString() || '';\n            this.refreshLoginURL = () =>  url;\n        }\n    }\n\n    private defaultLogError(level: LogLevel, message: string, data: any): void {\n        if (level >= this.logLevel) {\n            console.log(`LogLevel: ${level} >= ${this.logLevel}`);\n            console.log(`Message: ${message}`);\n\n            if (data) {\n                console.log(data);\n            }\n        }\n    }\n\n    private setStorageValue(key: string, value: string): void {\n        if (this.contentSecurityPolicyActivated) {\n            if (!value) {\n                localStorage.removeItem(key);\n            } else {\n                localStorage.setItem(key, value);\n            }\n        } else {\n            if (!value) {\n                sessionStorage.removeItem(key);\n            } else {\n                sessionStorage.setItem(key, value);\n            }\n        }\n    }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CoreModuleOptions } from './shared/models/core-module-options';\nimport { Configuration } from './shared/classes/configuration';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class CaucaCoreService {\n    private httpBackend = inject(HttpBackend);\n    private translateService = inject(TranslateService);\n\n    private config = new Configuration(new CoreModuleOptions());\n    private jsonIsLoaded: boolean = false;\n\n    public async appInitializer(coreOptions: CoreModuleOptions): Promise<void> {\n        this.config = new Configuration(coreOptions);\n        this.setupLocale();\n        this.config.languages = this.config.languages || ['fr', 'en'];\n        this.translateService.addLangs(this.config.languages);\n        this.translateService.setFallbackLang(this.config.locale);\n        this.translateService.use(this.config.locale);\n\n        if (coreOptions.jsonConfigFile && !this.jsonIsLoaded) {\n            const httpClient = new HttpClient(this.httpBackend);\n            const jsonConfig = await httpClient.get(coreOptions.jsonConfigFile).toPromise();\n\n            this.jsonIsLoaded = true;\n            this.config = Object.assign(this.config, jsonConfig);\n        }\n    }\n\n    public getConfig(): Configuration {\n        return this.config;\n    }\n\n    public toggleLanguage(): void {\n        if (this.config.languages.length < 2) {\n            throw new Error('You need to configure at least two languages.');\n        } else if (this.config.languages.length > 2) {\n            throw new Error('Since you had more then two languages, use \"setLanguage(language)\".');\n        }\n        localStorage.setItem('locale', this.config.locale === 'fr' ? 'en' : 'fr');\n    }\n\n    public setLanguage(language: string): void {\n        if (this.config.languages.length < 2) {\n            throw new Error('You need to configure at least two languages.');\n        } else if (!this.config.languages.includes(language)) {\n            throw new Error('This language is not available.');\n        }\n\n        localStorage.setItem('locale', language);\n    }\n\n    private setupLocale(): void {\n        const storedLocale = localStorage.getItem('locale');\n        if (storedLocale && this.config.languages.includes(storedLocale)) {\n            this.config.locale = storedLocale;\n        } else {\n            this.config.locale = this.config.locale || 'fr';\n        }\n    }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'cauca-core',\n    templateUrl: './cauca-core.component.html',\n    styleUrls: ['./cauca-core.component.scss'],\n    standalone: false\n})\nexport class CaucaCoreComponent {\n\n}\n","<div>{{'core.noGenericComponentOnThisLibrary' | translate}}</div>","import { InjectionToken } from '@angular/core';\nimport { CoreModuleOptions } from '../models/core-module-options';\n\nexport const CAUCA_CORE_MODULE_OPTIONS_FACTORY = (): CoreModuleOptions => new CoreModuleOptions();\n\nexport const CAUCA_CORE_MODULE_OPTIONS = new InjectionToken<CoreModuleOptions>('cauca-core-module-options', {\n    providedIn: 'root',\n    factory: CAUCA_CORE_MODULE_OPTIONS_FACTORY,\n});\n\n","import { Component } from '@angular/core';\n\n/**\n * @deprecated This is deprecated, please implement your own 404 page in your app and add it to your routing configuration.\n */\n@Component({\n    selector: 'cauca-page-not-found',\n    templateUrl: './cauca-page-not-found.component.html',\n    styleUrls: ['./cauca-page-not-found.component.scss'],\n    standalone: false\n})\nexport class CaucaPageNotFoundComponent {\n\n}\n","<div class=\"middle\">\n  <h1>Ooops... page not found</h1>\n</div>","import { EventEmitter, Injectable } from '@angular/core';\nimport { InterceptorError } from '../interfaces/interceptor-error';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InterceptorErrorService {\n  public error = new EventEmitter<InterceptorError>();\n\n  public append(statusCode: number, message: string): void {\n    this.error.emit({\n      statusCode,\n      message\n    });\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { InterceptorErrorService } from './interceptor-error.service';\n\n@Injectable()\nexport class HttpOfflineInterceptor {\n    private interceptorErrorService = inject(InterceptorErrorService);\n\n\n    public intercept(\n        request: HttpRequest<any>,\n        next: HttpHandler\n    ): Observable<HttpEvent<any>> {\n        request = request.clone();\n\n        if (!navigator.onLine) {\n            return this.onOffline(new HttpErrorResponse({\n                headers: request.headers,\n                status: 408,\n                statusText: 'Offline',\n                url: request.url,\n            }));\n        } else {\n            return next.handle(request).pipe(\n                catchError((error: any) => {\n                    if (error.status === 0) {\n                        return this.onOffline(error);\n                    }\n                    return throwError(() => error);\n                })\n            );\n        }\n    }\n\n    private onOffline(error: HttpErrorResponse): Observable<any> {\n        this.interceptorErrorService.append(error.status, error.statusText);\n        return throwError(() => error);\n    }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport class HttpError {\n    public status: number;\n    public statusText: string;\n    public url: string;\n    public data: string;\n    public body: string;\n\n    public constructor(error: HttpErrorResponse) {\n        this.url = error.url || '';\n        this.status = error.status;\n        this.statusText = error.statusText;\n\n        if (error.error instanceof ErrorEvent) {\n            this.body = error.error.message;\n        } else if (error.error) {\n            this.body = error.error.title || JSON.stringify(error.error);\n        }\n    }\n\n    public setData(data: any): void {\n        this.data = JSON.stringify(data);\n    }\n}\n","import { debounce } from 'lodash';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const Debounce = (ms: number): any => ((target: any, key: string, descriptor: PropertyDescriptor) => {\n    const oldFunc = descriptor.value;\n    const newFunc = debounce(oldFunc, ms);\n\n    descriptor.value = function(): any {\n        // eslint-disable-next-line prefer-rest-params\n        return newFunc.apply(this, arguments);\n    };\n});\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpBackend } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { CaucaCoreService } from '../../cauca-core.service';\nimport { Configuration } from '../classes/configuration';\nimport { HttpError } from '../models/http-error';\nimport { Debounce } from '../decorators/debounce';\nimport { LogLevel } from '../models/log-level.enum';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LogService {\n  private coreService = inject(CaucaCoreService);\n\n  private config: Configuration;\n  private httpClient: HttpClient;\n  private errors: HttpError[] = [];\n  private activeSending = new Subject<void>();\n  private timer: any;\n\n  public constructor() {\n    const coreService = this.coreService;\n    const handler = inject(HttpBackend);\n\n    this.config = coreService.getConfig();\n    this.httpClient = new HttpClient(handler);\n    this.activeSending.subscribe(() => {\n      this.sendErrors();\n    });\n  }\n\n  public get errorCount(): number {\n    return this.errors.length;\n  }\n\n  public get waitToSendAgain(): boolean {\n    return this.timer ? true : false;\n  }\n\n  public information(message: string, data: any = null): void {\n    const config = this.coreService.getConfig();\n    config.logError(LogLevel.information, message, data);\n  }\n\n  public warning(message: string, data: any = null): void {\n    const config = this.coreService.getConfig();\n    config.logError(LogLevel.warning, message, data);\n  }\n\n  public error(message: string, data: any = null): void {\n    const config = this.coreService.getConfig();\n    config.logError(LogLevel.error, message, data);\n  }\n\n  public disconnection(message: string, data: any = null): void {\n    const config = this.coreService.getConfig();\n    config.logError(LogLevel.disconnection, message, data);\n  }\n\n  public publishInformation(error: any, data: any = null): void {\n    if (error instanceof HttpErrorResponse) {\n      const httpError = new HttpError(error);\n      httpError.setData(data);\n\n      this.httpClient.post(`${this.config.apiUrl}Error/LogInformation`, httpError).subscribe();\n    }\n  }\n\n  public publishWarning(error: any, data: any = null): void {\n    if (error instanceof HttpErrorResponse) {\n      const httpError = new HttpError(error);\n      httpError.setData(data);\n\n      this.httpClient.post(`${this.config.apiUrl}Error/LogWarning`, httpError).subscribe();\n    }\n  }\n\n  public publishError(error: any, data: any = null): void {\n    if (error instanceof HttpErrorResponse) {\n      const httpError = new HttpError(error);\n      httpError.setData(data);\n\n      this.errors.push(httpError);\n      this.activeSending.next();\n    }\n  }\n\n  @Debounce(1000)\n  private sendErrors(): void {\n    if (!navigator.onLine) {\n      return;\n    }\n\n    this.stopTimer();\n    this.httpClient.post(`${this.config.apiUrl}Error/LogErrors`, this.errors).subscribe({\n      next: () => {\n        this.errors = [];\n      },\n      error: () => {\n        this.httpClient.post(`${this.config.apiUrl}logErrors`, this.errors).subscribe({\n          next: () => {\n            this.errors = [];\n          },\n          error: () => {\n            const minuteToWait = 5 * 60 * 1000;\n            this.timer = setTimeout(() => this.sendErrors(), minuteToWait);\n          }\n        });\n      }\n    });\n  }\n\n  private stopTimer(): void {\n    if (this.timer) {\n      clearTimeout(this.timer);\n      this.timer = null;\n    }\n  }\n}\n","import { InjectionToken } from '@angular/core';\r\nimport { BaseLogoutHandler } from '../services/logout-handler';\r\nimport { RefreshUrlService } from '../services/refresh-url.service';\r\n\r\nexport const LOGOUT_HANDLER_TOKEN = new InjectionToken<BaseLogoutHandler>('CoreLogoutHandlerService');\r\nexport const REFRESH_URL_SERVICE_TOKEN = new InjectionToken<RefreshUrlService>('CoreRefreshUrlService');\r\n","import { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { CaucaCoreService } from '../../cauca-core.service';\nimport { RefreshToken } from '../models/refresh-token';\nimport { LogService } from './log.service';\nimport { Router } from '@angular/router';\nimport { LOGOUT_HANDLER_TOKEN, REFRESH_URL_SERVICE_TOKEN } from '../tokens/injection-tokens';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RefreshTokenService {\n  private coreService = inject(CaucaCoreService);\n  private logService = inject(LogService);\n  private router = inject(Router);\n  private logoutHandler = inject(LOGOUT_HANDLER_TOKEN, { optional: true }) ?? null;\n  private refreshUrlService = inject(REFRESH_URL_SERVICE_TOKEN, { optional: true }) ?? null;\n\n  private http: HttpClient;\n  private errorPrefix: string = 'Interceptor - HttpTokenWriter - ';\n\n  public constructor() {\n    const handler = inject(HttpBackend);\n\n    this.http = new HttpClient(handler);\n  }\n\n  public refreshToken(): Observable<boolean> {\n    const config = this.coreService.getConfig();\n\n    return this.postRefreshToken().pipe(\n        retry(3),\n        map((data: RefreshToken) => {\n            this.logService.information(`${this.errorPrefix}Response from refreshing token.`, data);\n\n            config.accessToken = data.accessToken || '';\n            if (config.updateToken) {\n              config.updateToken(data);\n            }\n            return data.accessToken ? true : false;\n        }),\n        catchError((error: any) => {\n            this.logService.information(`${this.errorPrefix}Error when refreshing token.`, error);\n\n            if (error.status === 0 || error.status === 408) {\n                return of(true);\n            }\n            config.accessToken = '';\n            if (config.updateToken) {\n              config.updateToken(null);\n            }\n            return of(false);\n        })\n    );\n  }\n\n  public refreshTokenWithRedirect(): Observable<boolean> {\n    const config = this.coreService.getConfig();\n    const loginUrl = config.loginURL();\n    return this.refreshToken().pipe(\n      map((response: any) => {\n          if (!response && location.pathname !== loginUrl) {\n              this.logout();\n          }\n          this.logService.information(`${this.errorPrefix}Refresh accessToken work.`);\n          return response;\n      })\n    );\n  }\n\n  private logout(): void {\n    const currentUrl = this.router.routerState.snapshot.url;\n    const config = this.coreService.getConfig();\n    this.logService.disconnection(`${this.errorPrefix}Could not refresh access token, redirect to login page.`);\n    if (config.useLogoutService) {\n        this.logoutHandler?.logoutWithMessage(currentUrl);\n    } else {\n        const params = config.keepReturnUrlWhenRedirectingToLogin ? { returnUrl: currentUrl } : {};\n        this.router.navigate([config.loginURL()], { queryParams: params });\n    }\n  }\n\n  private postRefreshToken(): Observable<RefreshToken> {\n    const config = this.coreService.getConfig();\n    const host = config.refreshLoginURL();\n    const token = {\n        accessToken: config.accessToken,\n        refreshToken: config.refreshToken,\n    } as RefreshToken;\n\n    let refreshUrl = this.refreshUrlService?.getRefreshUrl() || host;\n    if (!refreshUrl) {\n        refreshUrl = `/api/Authentication/Refresh`;\n    }\n\n    return this.http.post<RefreshToken>(refreshUrl, token);\n  }\n}\n","import { Injectable, Signal, inject } from \"@angular/core\";\r\nimport { toSignal } from \"@angular/core/rxjs-interop\";\r\n\r\nimport { BehaviorSubject, Observable, take, switchMap, finalize, filter, map } from \"rxjs\";\r\nimport { CaucaCoreService } from \"../../cauca-core.service\";\r\nimport { RefreshTokenService } from \"./refresh-token.service\";\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class HttpTokenProvider {\r\n    public isRefreshing: Signal<boolean>;\r\n\r\n    private isRefreshingToken: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n    private readonly core = inject(CaucaCoreService);\r\n    private readonly tokenRefresher = inject(RefreshTokenService);\r\n\r\n    public constructor() {\r\n        this.isRefreshing = toSignal(this.isRefreshingToken);\r\n    }\r\n\r\n    public getNewToken(): Observable<string> {\r\n        return this.isRefreshingToken.pipe(\r\n            take(1),\r\n            switchMap((refreshing) => refreshing ? this.getToken() : this.refreshToken().pipe(switchMap(() => this.getToken())))\r\n        );\r\n    }\r\n\r\n    public getToken(): Observable<string> {\r\n        return this.isRefreshingToken\r\n            .pipe(\r\n                filter(refreshing => !refreshing),\r\n                take(1),\r\n                map(() => this.core.getConfig().accessToken)\r\n            );\r\n    }\r\n\r\n    private refreshToken(): Observable<boolean> {\r\n        this.isRefreshingToken.next(true);\r\n        return this.tokenRefresher.refreshToken()\r\n            .pipe(finalize(() => this.isRefreshingToken.next(false)));\r\n    }\r\n}","import { inject, Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpRequest, HttpHeaders, HttpInterceptor } from '@angular/common/http';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { CaucaCoreService } from '../../cauca-core.service';\nimport { LogService } from '../services/log.service';\nimport { Router } from '@angular/router';\nimport { HttpTokenProvider } from '../services/http-token-provider';\nimport { LOGOUT_HANDLER_TOKEN } from '../tokens/injection-tokens';\n\n@Injectable()\nexport class HttpTokenWriterInterceptor implements HttpInterceptor {\n    private logoutHandler = inject(LOGOUT_HANDLER_TOKEN, { optional: true }) ?? null;\n\n    private errorPrefix: string = 'Interceptor - HttpTokenWriter - ';\n\n    private readonly tokenProvider = inject(HttpTokenProvider);\n    private readonly coreService = inject(CaucaCoreService);\n    private readonly logService = inject(LogService);\n    private readonly router = inject(Router);\n\n    public intercept(request: HttpRequest<any>, next: HttpHandler,): Observable<HttpEvent<any>> {\n        return this.getRequestWithToken(request)\n            .pipe(switchMap((requestWithToken: HttpRequest<any>)=> this.executeRequest(requestWithToken, next, request)));\n    }\n\n    private executeRequest(request: HttpRequest<any>, next: HttpHandler, originalRequest: HttpRequest<any>): Observable<HttpEvent<any>> {\n        return next.handle(request).pipe(\n            catchError((error: any) => {\n                this.logService.information(`${this.errorPrefix}An error has been catch.`);\n                return this.checkIfWeCanManageError(error, originalRequest).pipe(\n                    switchMap((handledRequest: HttpRequest<any>) => this.handleRetry(handledRequest, next)),\n                    catchError((unHandleError: any) => this.handleExecutionError(unHandleError))\n                );\n            })\n        );\n    }\n\n    private handleRetry(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        this.logService.information(`${this.errorPrefix}Occur error can be managed, we resend the original request.`);\n        return this.getRequestWithToken(request).pipe(switchMap((clonedRequest) => next.handle(clonedRequest)));\n    }\n\n    private handleExecutionError(unhandledError: any): Observable<never> {\n        this.logService.warning(`${this.errorPrefix}Occur error can't be managed.`, unhandledError);\n        return throwError(() => unhandledError);\n    }\n\n    private getRequestWithToken(request: HttpRequest<any>): Observable<HttpRequest<any>> {\n        return this.generateHeaders(request)\n            .pipe(map((headers: HttpHeaders) => request = request.clone({ headers, })));\n    }\n\n    private generateHeaders(request: HttpRequest<any>): Observable<HttpHeaders> {\n        const config = this.coreService.getConfig();\n        if (config.accessToken) {\n            return this.tokenProvider.getToken()\n                .pipe(map((token: string) => this.setupHeaders(request, token)));\n        } else {\n            return of(this.setupHeaders(request, null));\n        }\n    }\n\n    private setupHeaders(request: HttpRequest<any>, token: string): HttpHeaders {\n        let headers = request.headers;\n        const config = this.coreService.getConfig();\n        const isFormData = request.body instanceof FormData;\n\n        this.logService.information(`${this.errorPrefix}The request has a header authorization.`, config);\n\n        if (!headers.has('Authorization') && token) {\n            headers = headers.set('Authorization', `${config.authorizationType} ${token}`);\n        }\n        if (!headers.has('X-CSRF-Token') && config.CSRFToken) {\n            headers = headers.set('X-CSRF-Token', `${config.CSRFToken}`);\n\n            if (config.CSRFCookie) {\n                headers = headers.set('X-CSRF-Cookie', `${config.CSRFCookie}`);\n            }\n        }\n        if (!headers.has('Content-Type') && !isFormData) {\n            headers = headers.set('Content-Type', `application/json; charset=${config.charset}`);\n        }\n        if (!headers.has('Language-Code')) {\n            headers = headers.set('Language-Code', config.locale);\n        }\n        return headers;\n    }\n\n    private checkIfWeCanManageError(error: any, originalRequest: HttpRequest<any>): Observable<HttpRequest<any>> {\n        const config = this.coreService.getConfig();\n        const loginUrl = config.loginURL();\n        this.logService.information(`${this.errorPrefix}Check if we can refresh the accessToken.`, error);\n        if (error.status === 401 && config.accessToken && config.allowRefreshToken) {\n            this.logService.information(`${this.errorPrefix}Try to refresh the user access token.`);\n            return this.retryWithNewToken(originalRequest, loginUrl);\n        } else if (error.status === 401 && config.accessToken && location.pathname !== loginUrl) {\n            this.logout();\n        } else if (error.status === 200) {\n            if (error.message && error.message.indexOf('Http failure during parsing for') === 0) {\n                this.logService.information(`${this.errorPrefix}Does not receive a JSON, so the call is send with \"text/html\".`);\n                return of(this.resendAsHTML(originalRequest));\n            }\n        }\n\n        this.logService.information(`${this.errorPrefix}Error receive can't be manage.`);\n        return throwError(() => error);\n    }\n\n    private retryWithNewToken(request: HttpRequest<any>, loginUrl: string): Observable<HttpRequest<any>> {\n        return this.tokenProvider.getNewToken().pipe(map((token: string) => this.handleRefreshResponse(request, token, loginUrl)));\n    }\n\n    private handleRefreshResponse(request: HttpRequest<any>, token: any, loginUrl: string): HttpRequest<any> {\n        if (!token && location.pathname !== loginUrl) {\n            this.logout();\n        }\n        this.logService.information(`${this.errorPrefix}Refresh accessToken work.`);\n        return request;\n    }\n\n    private logout(): void {\n        const currentUrl = this.router.routerState.snapshot.url;\n        const config = this.coreService.getConfig();\n        this.logService.disconnection(`${this.errorPrefix}Could not refresh access token, redirect to login page.`);\n        if (config.useLogoutService) {\n            this.logoutHandler?.logoutWithMessage(currentUrl);\n        } else {\n            const params = config.keepReturnUrlWhenRedirectingToLogin ? { returnUrl: currentUrl } : {};\n            this.router.navigate([config.loginURL()], { queryParams: params });\n        }\n    }\n\n    private resendAsHTML(originalRequest: HttpRequest<any>): HttpRequest<any> {\n        const config = this.coreService.getConfig();\n        let headers = originalRequest.headers;\n        headers = headers.set('Content-Type', `text/html; charset=${config.charset}`);\n        return originalRequest.clone({ responseType: 'text', headers, });\n    }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {CaucaCoreService} from '../../cauca-core.service';\n\n@Injectable()\nexport class HttpTokenReaderInterceptor implements HttpInterceptor {\n    private coreService = inject(CaucaCoreService);\n\n\n    public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        return next.handle(request).pipe(\n            map((response: HttpResponse<any>) => {\n                if (response.headers && response.headers.get('x-csrf-token')) {\n                    this.coreService.getConfig().CSRFToken = response.headers.get('x-csrf-token');\n                }\n                if (response.headers && response.headers.get('x-csrf-cookie')) {\n                    this.coreService.getConfig().CSRFCookie = response.headers.get('x-csrf-cookie');\n                }\n\n                return response;\n            })\n        );\n    }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpInterceptor, HttpErrorResponse, HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError, timer } from 'rxjs';\nimport { catchError, retry } from 'rxjs/operators';\nimport { Configuration } from '../classes/configuration';\nimport { CaucaCoreService } from '../../cauca-core.service';\nimport { InterceptorErrorService } from './interceptor-error.service';\nimport { LogService } from '../services/log.service';\n\n@Injectable()\nexport class HttpErrorInterceptor implements HttpInterceptor {\n    private logService = inject(LogService);\n    private interceptorErrorService = inject(InterceptorErrorService);\n\n    private config: Configuration;\n\n    public constructor() {\n        const coreService = inject(CaucaCoreService);\n\n        this.config = coreService.getConfig();\n    }\n\n    public intercept(\n        request: HttpRequest<any>,\n        next: HttpHandler,\n    ): Observable<HttpEvent<any>> {\n        return next.handle(request).pipe(\n            retry({\n                count: this.config.nbRetryOnNetworkError,\n                delay: (error: HttpErrorResponse) => this.handleRetry(error)\n            }),\n            catchError((error: any) => this.handleError(error, request))\n        );\n    }\n\n    private handleRetry(error: HttpErrorResponse): Observable<any> {\n        const isNetworkError = [0, 408, 502, 503, 504].includes(error.status);\n\n        this.logService.information(`Interceptor - HttpErrorInterceptor - Status code \"${error.status}\"`);\n        if (isNetworkError) {\n            return timer(100);\n        }\n\n        throw error;\n    }\n\n    private handleError(error: any, request: HttpRequest<any>): Observable<never> {\n        if (error instanceof HttpErrorResponse) {\n            if (error.status === 0) {\n                this.interceptorErrorService.append(0, 'La demande ne peut être complétée.');\n            } else if (error.status === 400) {\n                if (error.error && error.error.message) {\n                    this.interceptorErrorService.append(400, error.error.message);\n                } else if (error.error && error.error.title) {\n                    this.interceptorErrorService.append(400, error.error.title);\n                } else if (error.error) {\n                    if (typeof error.error === 'string') {\n                        this.interceptorErrorService.append(400, error.error);\n                    }\n                } else if (error.statusText) {\n                    this.interceptorErrorService.append(400, error.statusText);\n                } else {\n                    this.interceptorErrorService.append(400, 'La demande ne peut pas être complétée.');\n                }\n            } else if (error.status === 404) {\n                this.interceptorErrorService.append(404, 'Le URL demandé n\\'existe pas.');\n            } else if (error.status === 500) {\n                this.interceptorErrorService.append(500, 'Erreur de communication.');\n            } else if (error.status !== 200 && error.status !== 401) {\n                this.interceptorErrorService.append(error.status, error.statusText);\n            }\n        }\n        if (this.config.onHttpError != null) {\n            this.config.onHttpError(error, request.method, request.urlWithParams);\n        }\n        return throwError(() => error);\n    }\n}\n","\nexport class CustomMissingTranslationHandler {\n    public handle(params: any): string {\n        return `i18n \"${params.key}\" is missing`;\n    }\n}\n","import { HttpClient, HttpBackend } from '@angular/common/http';\nimport {forkJoin, of, Observable} from 'rxjs';\nimport {catchError, map} from 'rxjs/operators';\nimport {CoreModuleOptions} from '../models/core-module-options';\nimport {ResourceOptions} from './resource-options';\nimport { TranslateLoader } from '@ngx-translate/core';\n\nexport class CustomMultiTranslateHttpLoader implements TranslateLoader {\n    private http: HttpClient;\n    private resources: ResourceOptions[] = [{\n        prefix: '/assets/i18n/',\n        suffix: '.json',\n    }, {\n        prefix: '/assets/i18n/cauca/',\n        suffix: '-core.json',\n    }];\n\n    public constructor(\n        httpBackend: HttpBackend,\n        options: CoreModuleOptions\n    ) {\n        this.http = new HttpClient(httpBackend);\n\n        if (options && options.libraries) {\n            options.libraries.forEach((library: string) => {\n                this.resources.push({\n                    prefix: '/assets/i18n/cauca/',\n                    suffix: `-${library}.json`,\n                } as ResourceOptions);\n            });\n        }\n        if (options && options.i18nPaths) {\n            options.i18nPaths.forEach((path: string) => {\n                this.resources.push({\n                    prefix: `/assets/i18n/${path}/`,\n                    suffix: `.json`,\n                } as ResourceOptions);\n            });\n        }\n    }\n\n    public getTranslation(lang: string): Observable<any> {\n        return forkJoin(\n            this.resources.map((config: ResourceOptions) => this.getOneResourceTranslation(lang, config))\n        ).pipe(\n            map((response: any) => response.reduce((a: any, b: any) => Object.assign(a, b)))\n        );\n    }\n\n    public getOneResourceTranslation(lang: string, config: ResourceOptions): Observable<any> {\n        return this.http.get(`${config.prefix}${lang}${config.suffix}`).pipe(\n            catchError(() => of({}))\n        );\n    }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpBackend } from '@angular/common/http';\nimport { forkJoin, Observable, Observer } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { TranslateService as NgxTranslateService } from '@ngx-translate/core';\nimport { CaucaCoreService } from '../../cauca-core.service';\n\n/**\n* @deprecated Use TranslateService from @ngx-translate/core instead. You need to use provideCaucaCore to make it work.\n* You can also use the `provideTestingTranslation()` function in your tests to provide a mock TranslateService.\n*/\n@Injectable({\n    providedIn: 'root'\n})\nexport class TranslateService extends NgxTranslateService {\n    private coreService = inject(CaucaCoreService);\n\n    private http: HttpClient;\n    private multiLangDictionary: any = {};\n\n    public constructor() {\n        super();\n        this.http = new HttpClient(inject(HttpBackend));\n    }\n\n    public async appInitializer(): Promise<void> {\n        const config = this.coreService.getConfig();\n        this.addLangs(config.languages);\n        this.setFallbackLang(config.locale);\n        return new Promise((resolve: any) => {\n            this.use(config.locale)\n                .subscribe({ complete: () => resolve() });\n        });\n    }\n\n    public getMultilingualTranslations(languages: string[], wordsToTranslate: string[]): Observable<any> {\n        if (!this.multiLangDictionary[languages[0]]) {\n            return forkJoin(\n                this.coreService.getConfig().languages.map((lang: string) => this.loadOneLanguage(lang))\n            ).pipe(\n                map(() => this.getTranslationForSpecificLanguages(languages, wordsToTranslate))\n            );\n        }\n\n        return new Observable((observer: Observer<any>) => {\n            observer.next(this.getTranslationForSpecificLanguages(languages, wordsToTranslate));\n            observer.complete();\n        });\n    }\n\n    private loadOneLanguage(lang: string): Observable<void> {\n        return this.currentLoader.getTranslation(lang).pipe(\n            catchError(() => of({})),\n            map((result: any) => {\n                this.multiLangDictionary[lang] = result;\n            })\n        );\n    }\n\n    private getTranslationForSpecificLanguages(languages: string[], wordsToTranslate: string[]): any {\n        const objectToReturn = {};\n\n        languages.forEach((lang: string) => {\n            objectToReturn[lang] = {};\n            wordsToTranslate.forEach((word: string) => {\n                const levels = word.split('.');\n                let translation = this.multiLangDictionary[lang];\n                levels.forEach((level: string) => {\n                    translation = translation[level];\n                });\n                objectToReturn[lang][word] = translation;\n            });\n        });\n\n        return objectToReturn;\n    }\n}\n","import { EnvironmentProviders, Injector, LOCALE_ID, NgModule, Provider, inject, provideAppInitializer } from '@angular/core';\nimport { LOCATION_INITIALIZED } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpBackend, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { MissingTranslationHandler, TranslateLoader, TranslateModule, provideTranslateService } from '@ngx-translate/core';\nimport { CaucaCoreComponent } from './cauca-core.component';\nimport { CaucaCoreService } from './cauca-core.service';\nimport { CAUCA_CORE_MODULE_OPTIONS } from './shared/constants/cauca-core-module-options';\nimport { CaucaPageNotFoundComponent } from './cauca-page-not-found/cauca-page-not-found.component';\nimport { HttpOfflineInterceptor } from './shared/interceptors/http-offline-interceptor';\nimport { HttpTokenWriterInterceptor } from './shared/interceptors/http-token-writer-interceptor';\nimport { HttpTokenReaderInterceptor } from './shared/interceptors/http-token-reader-interceptor';\nimport { HttpErrorInterceptor } from './shared/interceptors/http-error-interceptor';\nimport { CustomMissingTranslationHandler } from './shared/ngx-translate/custom-missing-translation-handler';\nimport { CustomMultiTranslateHttpLoader } from './shared/ngx-translate/custom-multi-translate-http-loader';\nimport { TranslateService } from './shared/services/translate.service';\nimport { CoreModuleOptions } from './shared/models/core-module-options';\nimport { LogService } from './shared/services/log.service';\nimport { RefreshTokenService } from './shared/services/refresh-token.service';\nimport { LOGOUT_HANDLER_TOKEN, REFRESH_URL_SERVICE_TOKEN } from './shared/tokens/injection-tokens';\n\nconst configFactory = (coreService: CaucaCoreService): string => (\n    coreService.getConfig().locale\n);\n\n const translateFactory = (\n    translateService: TranslateService,\n    coreOptions: CoreModuleOptions,\n    coreService: CaucaCoreService,\n    logService: LogService,\n    injector: Injector\n): any => {\n    const promise = async () => {\n        await coreService.appInitializer(coreOptions);\n        await injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n        logService.information(`CaucaCoreModule - Use config.`, coreService.getConfig());\n\n        return translateService.appInitializer();\n    };\n    return promise;\n};\n\nconst TRANSLATE_CONFIGURATION = {\n    loader: {\n        provide: TranslateLoader,\n        useClass: CustomMultiTranslateHttpLoader,\n        deps: [HttpBackend, CAUCA_CORE_MODULE_OPTIONS]\n    },\n    missingTranslationHandler: {\n        provide: MissingTranslationHandler,\n        useClass: CustomMissingTranslationHandler,\n    },\n};\n\nexport function provideCaucaCore(options: CoreModuleOptions): (Provider|EnvironmentProviders)[] {\n    const providers: (Provider|EnvironmentProviders)[] = [\n        CaucaCoreService,\n        RefreshTokenService,\n        { provide: CAUCA_CORE_MODULE_OPTIONS, useValue: options },\n        {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpOfflineInterceptor,\n            multi: true\n        }, {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpTokenWriterInterceptor,\n            multi: true\n        }, {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpTokenReaderInterceptor,\n            multi: true\n        }, {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpErrorInterceptor,\n            multi: true\n        }, {\n            provide: options.locale,\n            useFactory: configFactory,\n            deps: [CaucaCoreService]\n        },\n        provideAppInitializer(() => {\n            const initializerFn = (translateFactory)(inject(TranslateService), inject(CAUCA_CORE_MODULE_OPTIONS), inject(CaucaCoreService), inject(LogService), inject(Injector));\n            return initializerFn();\n        }),\n        { provide: LOCALE_ID, useFactory: configFactory, deps: [CaucaCoreService] },\n        ...provideTranslateService(TRANSLATE_CONFIGURATION),\n    ];\n\n    if (options.logoutService) {\n        providers.push({ provide: LOGOUT_HANDLER_TOKEN, useClass: options.logoutService });\n    }\n    if (options.refreshUrlService) {\n        providers.push({ provide: REFRESH_URL_SERVICE_TOKEN, useClass: options.refreshUrlService });\n    }\n\n    return providers;\n}\n\n/**\n * @deprecated Use provideCaucaCore() instead\n */\n@NgModule({ declarations: [\n    CaucaCoreComponent,\n    CaucaPageNotFoundComponent,\n    ],\n    exports: [\n        CaucaCoreComponent,\n        CaucaPageNotFoundComponent,\n        TranslateModule,\n    ],\n    imports: [\n        TranslateModule.forRoot(TRANSLATE_CONFIGURATION)], providers: [\n        CaucaCoreService,\n        RefreshTokenService,\n        {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpOfflineInterceptor,\n            multi: true\n        }, {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpTokenWriterInterceptor,\n            multi: true\n        }, {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpTokenReaderInterceptor,\n            multi: true\n        }, {\n            provide: HTTP_INTERCEPTORS,\n            useClass: HttpErrorInterceptor,\n            multi: true\n        }, {\n            provide: LOCALE_ID,\n            useFactory: configFactory,\n            deps: [CaucaCoreService]\n        },\n        provideAppInitializer(() => {\n        const initializerFn = (translateFactory)(inject(TranslateService), inject(CAUCA_CORE_MODULE_OPTIONS), inject(CaucaCoreService), inject(LogService), inject(Injector));\n        return initializerFn();\n        }),\n        provideHttpClient(withInterceptorsFromDi())\n    ] })\nexport class CaucaCoreModule {\n}","import { NgModule } from '@angular/core';\nimport { HttpBackend } from '@angular/common/http';\nimport { MissingTranslationHandler, TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { CaucaCoreService } from './cauca-core.service';\nimport { CAUCA_CORE_MODULE_OPTIONS } from './shared/constants/cauca-core-module-options';\nimport { CustomMissingTranslationHandler } from './shared/ngx-translate/custom-missing-translation-handler';\nimport { CustomMultiTranslateHttpLoader } from './shared/ngx-translate/custom-multi-translate-http-loader';\n\nexport const configFactoryForLazyLoading = (coreService: CaucaCoreService): string => (\n    coreService.getConfig().locale\n);\n\nconst TRANSLATE_CONFIGURATION = {\n    loader: {\n        provide: TranslateLoader,\n        useClass: CustomMultiTranslateHttpLoader,\n        deps: [HttpBackend, CAUCA_CORE_MODULE_OPTIONS]\n    },\n    missingTranslationHandler: {\n        provide: MissingTranslationHandler,\n        useClass: CustomMissingTranslationHandler,\n    },\n};\n\n/**\n * @deprecated Import TranslatePipe directly in your standalone components and use the `provideTestingTranslation()` function in your tests.\n */\n@NgModule({\n    declarations: [],\n    exports: [\n        TranslateModule,\n    ],\n    imports: [\n        TranslateModule.forChild(TRANSLATE_CONFIGURATION),\n    ],\n    providers: [],\n})\nexport class CaucaCoreForChildModule {\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, Observer } from 'rxjs';\nimport { ApiLookup } from '../models/api-lookup';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiLookupService {\n  private http = inject(HttpClient);\n\n\n  public constructor() {\n    const http = this.http;\n\n    this.http = http;\n  }\n\n  public getIpInformation(): Observable<ApiLookup> {\n    return new Observable((observer: Observer<ApiLookup>) => {\n      this.lookupIpWithIpApi().subscribe((result: ApiLookup) => {\n        observer.next(result);\n        observer.complete();\n      }, () => {\n        this.lookupIpWithGeoIpDb().subscribe((result: ApiLookup) => {\n          observer.next(result);\n          observer.complete();\n        }, () => {\n          observer.error('Can\\'t lookup the IP address');\n        });\n      });\n    });\n  }\n\n  private lookupIpWithGeoIpDb(): Observable<ApiLookup> {\n    return new Observable((observer: Observer<ApiLookup>) => {\n      this.http.get('http://geoip-db.com/json').subscribe((response: any) => {\n        observer.next({\n          country: response['country_code'],\n          countryName: response['country_name'],\n          stateName: response['state'],\n          cityName: response['city'],\n          longitude: response['longitude'],\n          latitude: response['latitude'],\n          ipAddress: response['IPv4'],\n        } as ApiLookup);\n        observer.complete();\n      }, (error: any) => {\n        observer.error(error);\n      });\n    });\n  }\n\n  private lookupIpWithIpApi(): Observable<ApiLookup> {\n    return new Observable((observer: Observer<ApiLookup>) => {\n      this.http.get('http://ip-api.com/json').subscribe((response: any) => {\n        observer.next({\n          country: response['countryCode'],\n          countryName: response['country'],\n          state: response['region'],\n          stateName: response['regionName'],\n          cityName: response['city'],\n          isp: response['isp'],\n          longitude: response['lon'],\n          latitude: response['lat'],\n          ipAddress: response['query'],\n        } as ApiLookup);\n        observer.complete();\n      }, (error: any) => {\n        observer.error(error);\n      });\n    });\n  }\n}\n","import {NetworkQuality} from '../models/network-quality';\n\nexport class NetworkEstimates {\n    public qualities: NetworkQuality[] = [{\n        type: 'GPRS',\n        minimum: (20 * 1024),\n        estimate: '50 Kb/s (max estimate)',\n    }, {\n        type: 'Regular2G',\n        minimum: (50 * 1024),\n        estimate: '250 Kb/s (max estimate)',\n    }, {\n        type: 'Good2G',\n        minimum: (250 * 1024),\n        estimate: '450 Kb/s (max estimate)',\n    }, {\n        type: 'Regular3G',\n        minimum: (450 * 1024),\n        estimate: '750 Kb/s (max estimate)',\n    }, {\n        type: 'Good3G',\n        minimum: (750 * 1024),\n        estimate: '1.5 Mb/s (max estimate)',\n    }, {\n        type: 'DSL',\n        minimum: (1.5 * 1024 * 1024),\n        estimate: '',\n    }, {\n        type: 'Regular4G',\n        minimum: (3 * 1024 * 1024),\n        estimate: '4 Mb/s (max estimate)',\n    }, {\n        type: 'WIFI',\n        minimum: (15 * 1024 * 1024),\n        estimate: '30 Mb/s (min estimate)',\n    }, {\n        type: 'Fiber',\n        minimum: (30 * 1024 * 1024),\n        estimate: '30 Mb/s (max estimate)',\n    }, {\n        type: 'LAN',\n        minimum: (0.5 * 1024 * 1024 * 1024),\n        estimate: '500 Mb/s (min estimate)',\n    }];\n\n    public estimate(speedBps: number): string {\n        let estimate = '';\n\n        this.qualities.forEach((quality: NetworkQuality) => {\n            if (speedBps > quality.minimum) {\n                estimate = quality.estimate;\n            }\n        });\n\n        return estimate;\n    }\n}\n","import { EventEmitter, Injectable, inject } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ApiLookupService } from './api-lookup.service';\nimport { ApiLookup } from '../models/api-lookup';\nimport { NetworkEstimates } from '../classes/network-estimates';\nimport { LogService } from './log.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NetworkInformationService {\n\n  public statusChange = new EventEmitter();\n\n  private estimates: NetworkEstimates = new NetworkEstimates();\n  private readonly apiLookupService = inject(ApiLookupService);\n  private readonly logService = inject(LogService);\n\n  public constructor() {\n    window.addEventListener('online', () => this.onStatusChange(true));\n    window.addEventListener('offline', () => this.onStatusChange(false));\n  }\n\n  public getConnectionSpeed(): Observable<string> {\n    return new Observable<string>((observer: Observer<string>) => {\n      if (navigator && navigator['connection'] && navigator['connection']['downlink']) {\n        observer.next(`${navigator['connection']['downlink']} Mb/s`);\n        observer.complete();\n      } else {\n        this.estimateDownlink(observer);\n      }\n    });\n  }\n\n  public getIpAddress(): Observable<string> {\n    return this.apiLookupService.getIpInformation().pipe(\n      map((info: ApiLookup) => info.ipAddress)\n    );\n  }\n\n  private estimateDownlink(observer: Observer<string>): void {\n    const startTime = (new Date()).getTime();\n    const download = new Image();\n    const imageUrl = 'https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73751/world.topo.bathy.200407.3x21600x10800.jpg';\n\n    download.onload = () => {\n      const duration = ((new Date()).getTime() - startTime) / 1000;\n      const downloadSize = 27201049;\n      const bitsLoaded = downloadSize * 8;\n      const speedBps = (bitsLoaded / duration);\n\n      observer.next(this.estimates.estimate(speedBps));\n      observer.complete();\n    };\n    download.onerror = (error: any) => {\n      this.logService.warning('Error when estimate connection speed', error);\n      observer.error(error);\n    };\n    download.src = `${imageUrl}?_=${startTime}`;\n  }\n\n  private onStatusChange(online: boolean): void {\n    this.statusChange.emit(online);\n  }\n}\n","import { EventEmitter, NgModule } from '@angular/core';\nimport { provideHttpClientTesting } from '@angular/common/http/testing';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CaucaCoreModule } from './cauca-core.module';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from './shared/services/translate.service';\nimport { NetworkInformationService } from './shared/services/network-information.service';\nimport { ApiLookupService } from './shared/services/api-lookup.service';\nimport { ApiLookup } from './shared/models/api-lookup';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n\nconst getIpInformation = () => new Observable<ApiLookup>();\nexport const createApiLookupServiceSpy = (): any => ({\n  getIpInformation\n});\n\nconst getConnectionSpeed = () => new Observable<string>();\nconst getIpAddress = () => new Observable<string>();\nexport const createNetworkInformationServiceSpy = (): any => ({\n  statusChange: new EventEmitter(),\n  getConnectionSpeed,\n  getIpAddress,\n});\n\nconst get = (): Observable<any> => new Observable();\nconst appInitializer = (): Promise<void> => Promise.resolve();\nconst getMultilingualTranslations = (): Observable<any> => new Observable();\nconst instant = (): string => '';\nexport const createTranslateServiceSpy = (): any => ({\n  get,\n  appInitializer,\n  getMultilingualTranslations,\n  instant\n});\n\n/**\n * @deprecated This was mocking CaucaCoreModule which is deprecated.\n * - You can create your own mock for ApiLookupService, NetworkInformationService.\n * - You should not use CaucaCore's TranslateService.\n * - You can mock TranslateService and TranslatePipe if needed.\n * - You can use provideHttpclient(..) and provideHttpclientTesting() for http testing.\n */\n@NgModule({ exports: [\n        CaucaCoreModule,\n    ], imports: [CaucaCoreModule,\n        TranslateModule.forRoot()], providers: [\n        { provide: ApiLookupService, useValue: createApiLookupServiceSpy() },\n        { provide: NetworkInformationService, useValue: createNetworkInformationServiceSpy() },\n        { provide: TranslateService, useValue: createTranslateServiceSpy() },\n        provideHttpClient(withInterceptorsFromDi()),\n        provideHttpClientTesting()\n    ] })\nexport class CaucaCoreTestingModule {\n}\n","import { Provider } from '@angular/core';\nimport {\n  MissingTranslationHandler,\n  MissingTranslationHandlerParams,\n  provideTranslateService,\n  TranslateLoader,\n} from '@ngx-translate/core';\nimport { of } from 'rxjs';\n\nclass FakeMissingTranslationHandler implements MissingTranslationHandler {\n  public handle(params: MissingTranslationHandlerParams): string {\n    return params.key;\n  }\n}\n\nexport function provideTestingTranslation(\n  translations: Record<string, string> = {}\n): Provider[] {\n  return [\n    provideTranslateService({\n      lang: 'en',\n      fallbackLang: 'en',\n      loader: {\n        provide: TranslateLoader,\n        useValue: {\n          getTranslation: () => of(translations),\n        } satisfies TranslateLoader,\n      },\n      missingTranslationHandler: {\n        provide: MissingTranslationHandler,\n        useClass: FakeMissingTranslationHandler,\n      },\n    }),\n  ];\n}","export class Browser {\n    public browserName = 'unknown';\n    public browserVersion = 'unknown';\n    public engineName = 'unknown';\n    public engineVersion = 'unknown';\n\n    private agent = (typeof(navigator) === 'object' ? navigator.userAgent.toLowerCase() : '' );\n    private pattern: {\n        browser: RegExp;\n        engine: RegExp;\n    };\n\n    public constructor() {\n        this.detectBrowser();\n        this.detectVersion();\n    }\n\n    public toString(): string {\n        return `Browser: ${this.browserName} (${this.browserVersion}), Engine: ${this.engineName} (${this.engineVersion})`;\n    }\n\n    private detectVersion(): void {\n        if (this.browserVersion === 'unknown') {\n            const browserVersion = this.agent.match(this.pattern.browser);\n            this.browserVersion = (browserVersion ? (browserVersion[2] ? browserVersion[2] : browserVersion[1]) : 'unknown');\n        }\n\n        if (this.engineVersion === 'unknown') {\n            const engineVersion = this.agent.match(this.pattern.engine);\n            this.engineVersion = (engineVersion ? engineVersion[1] : 'unknown');\n        }\n    }\n\n    private detectBrowser(): void {\n        if (this.agent.match(/webkit/)) {\n            this.detectWebkitBrowser();\n        } else if (this.agent.match(/trident|msie/)) {\n            this.detectTridentBrowser();\n        } else if (this.agent.match(/gecko/)) {\n            this.detectGeckoBrowser();\n        } else if (this.agent.match(/presto/)) {\n            this.pattern = {\n                browser: /version\\/([0-9\\.]+)/,\n                engine: /presto\\/([0-9\\.]+)/,\n            };\n            this.engineName = 'presto';\n            this.browserName = 'opera';\n        }\n    }\n\n    private detectGeckoBrowser(): void {\n        this.pattern = {\n            browser: /gecko\\/([0-9\\.]+)/,\n            engine: /rv:([0-9\\.]+)/,\n        };\n        this.engineName = 'gecko';\n\n        if (this.agent.match(/firefox/)) {\n            this.pattern.browser = /firefox\\/([0-9\\.]+)/;\n            this.browserName = 'firefox';\n        }\n    }\n\n    private detectTridentBrowser(): void {\n        this.pattern = {\n            browser: /msie ([0-9\\.]+)/,\n            engine: /trident\\/([0-9\\.]+)/,\n        };\n        this.engineName = 'trident';\n        this.browserName = 'msie';\n\n        if (this.agent.match(/rv:/)) {\t\t\t\t// Internet Explorer 11 et +\n            this.pattern.browser = /rv:([0-9\\.]+)/;\n        } else if (!this.agent.match(/msie/)) {      // No \"rv:\" and no \"msie\", we assume that it's IE 11\n            this.browserVersion = '11.0';\n        }\n    }\n\n    private detectWebkitBrowser(): void {\n        this.pattern = {\n            browser: /webkit\\/([0-9\\.]+)/,\n            engine: /applewebkit\\/([0-9\\.]+)/,\n        };\n        this.engineName = 'webkit';\n\n        if (this.agent.match(/edge/)) {              // Microsoft Edge\n            this.pattern.browser = /edge\\/([0-9\\.]+)/;\n            this.engineName = 'edgeHTML';\n            this.browserName = 'edge';\n        } else if (this.agent.match(/chrome/)) {\n            // The web engine \"blink\" is used on many browser (Chrome, Opera, Vivaldi)\n            this.engineName = 'blink';\n\n            if (this.agent.match(/vivaldi/)) {\t\t// Vivaldi\n                this.pattern.browser = /vivaldi\\/([0-9\\.]+)/;\n                this.browserName = 'vivaldi';\n            } else if (this.agent.match(/opr/)) {\t\t// Opera\n                this.pattern.browser = /opr\\/([0-9\\.]+)/;\n                this.browserName = 'opera';\n            } else if (this.agent.match(/crios/)) {  // Chrome on iOS\n                this.pattern.browser = /crios\\/([0-9\\.]+)/;\n                this.browserName = 'chrome';\n            } else {\t\t\t\t\t\t\t\t\t    // Chrome\n                this.pattern.browser = /chrom(e|ium)\\/([0-9\\.]+)/;\n                this.browserName = 'chrome';\n            }\n        } else if (this.agent.match(/safari/)) {\t   \t// Safari\n            this.pattern.browser = /version\\/([0-9\\.]+)/;\n            this.browserName = 'safari';\n        }\n    }\n}\n","export class OperatingSystem {\n    public name = 'unknown';\n    public version = 'unknown';\n\n    private agent = (typeof(navigator) === 'object' ? navigator.userAgent.toLowerCase() : '' );\n\n    public constructor() {\n        this.detect();\n    }\n\n    public toString(): string {\n        return `OS: ${this.name} (${this.version})`;\n    }\n\n    private detect(): void {\n        const os = [\n            {name: 'iOS', pattern: /iphone|ipad|ipod/},\n            {name: 'Android', pattern: /android/},\n            {name: 'Blackberry', pattern: /blackberry/},\n            {name: 'Windows', pattern: /win/},\n            {name: 'Chrome OS', pattern: /cros/},\n            {name: 'Mac OS', pattern: /mac/},\n            {name: 'Linux', pattern: /linux|x11/},\n            {name: 'Open BSD', pattern: /openbsd/},\n            {name: 'Unix', pattern: /unix/},\n            {name: 'Sun OS', pattern: /sunos/},\n            {name: 'beOS', pattern: /beos/},\n            {name: 'QNX', pattern: /qnx/},\n            {name: 'os2', pattern: /os\\/2/}\n        ];\n\n        for (let i = 0, j = os.length; i < j; i++) {\n            if (this.agent.match(os[i].pattern)) {\n                this.name = os[i].name;\n                break;\n            }\n        }\n\n        this.detectVersion();\n    }\n\n    private detectVersion(): void {\n        if (this.name === 'Windows') {\n            if (this.agent.match(/phone/)) {\n                this.detectVersionWindowsPhone();\n            } else {\n                this.detectVersionWindows();\n            }\n        } else if (this.name === 'Mac OS') {\n            this.detectVersionMac();\n        } else if (this.name === 'Android') {\n            const androidVersion = this.agent.match(/android ([0-9\\.]+)/);\n\n            this.version = (androidVersion ? ' ' + androidVersion[1] : '');\n        } else if (this.name === 'iOS') {\n            const iOSVersion = this.agent.match(/os ([0-9\\_]+)/);\n\n            this.version = (iOSVersion ? ' ' + iOSVersion[1].replace('_', '.') : '');\n        }\n    }\n\n    private detectVersionWindows(): void {\n        this.name = 'Windows';\n\n        const windows = [\n            {name: '10', pattern: /windows nt 10.0|windows 10.0/},\n            {name: '10 Technical Preview', pattern: /windows nt 6.4/},\n            {name: '8.1', pattern: /windows nt 6.3|windows 8.1/},\n            {name: '8', pattern: /windows nt 6.2|windows 8.0|wow64/},\n            {name: '7 / Server 2008 RC2', pattern: /windows nt 6.1|windows 7/},\n            {name: 'Vista', pattern: /windows nt 6.0/},\n            {name: 'Server 2003', pattern: /windows nt 5.2/},\n            {name: 'XP', pattern: /windows nt 5.1|windows xp/},\n            {name: '2000', pattern: /windows nt 5.0|windows 2000/},\n            {name: 'NT 4.0', pattern: /windows nt 4.0|winnt4.0|winnt|windows nt/},\n            {name: 'CE', pattern: /windows ce/},\n            {name: 'ME', pattern: /windows me/},\n            {name: '98', pattern: /windows 98|win98/},\n            {name: '95', pattern: /windows 95|win95|windows_95/},\n            {name: '3.11', pattern: /win16/}\n        ];\n\n        for (let i = 0, j = windows.length; i < j; i++) {\n            if (this.agent.match(windows[i].pattern)) {\n                this.version = windows[i].name;\n                break;\n            }\n        }\n    }\n\n    private detectVersionWindowsPhone(): void {\n        this.name = 'Windows Phone';\n\n        const windows = [\n            {name: '10', pattern: /windows phone 10/},\n            {name: '8.1', pattern: /windows phone 8.1/},\n            {name: '8', pattern: /windows phone 8/},\n            {name: '7.5', pattern: /windows phone os 7.5/},\n            {name: '7', pattern: /windows phone os 7/},\n        ];\n\n        for (let i = 0, j = windows.length; i < j; i++) {\n            if (this.agent.match(windows[i].pattern)) {\n                this.version = windows[i].name;\n                break;\n            }\n        }\n    }\n\n    private detectVersionMac(): void {\n        if (this.agent.match(/mac os x/)) {\n            const macVersion = this.agent.match(/mac os x ([0-9\\_]+)/);\n\n            this.name = 'Mac OS X';\n            this.version = (macVersion ? ' ' + macVersion[1].replace('_', '.') : '');\n        } else if (this.agent.match(/macppc|macintel|mac_powerpc|macintosh/)) {\n            this.name = 'Mac OS';\n        }\n    }\n}\n","import { EventEmitter, Injectable, inject } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { ApiLookupService } from './api-lookup.service';\nimport { Configuration } from '../classes/configuration';\nimport { Browser } from '../classes/browser';\nimport { OperatingSystem } from '../classes/operating-system';\nimport { CaucaCoreService } from './../../cauca-core.service';\nimport { ApiLookup } from '../models/api-lookup';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ClientInformationService {\n\n  public visibilityChange = new EventEmitter();\n\n  private config: Configuration;\n  private readonly apiLookup = inject(ApiLookupService);\n\n  public constructor() {\n    const coreService = inject(CaucaCoreService);\n\n    this.config = coreService.getConfig();\n\n    document.addEventListener('visibilitychange webkitvisibilitychange mozvisibilitychange msvisibilitychange',\n        () => this.onVisibilityChange(document.visibilityState === 'visible')\n    );\n  }\n\n  public getCoordinates(): Observable<number[]> {\n    return new Observable((observer: Observer<number[]>) => {\n      if (navigator && 'geolocation' in navigator) {\n        navigator.geolocation.getCurrentPosition((position: any) => {\n          observer.next([\n            position.coords.longitude,\n            position.coords.latitude,\n          ]);\n          observer.complete();\n        }, () => this.getCoordinatesWithClientIP(observer));\n      } else {\n        this.getCoordinatesWithClientIP(observer);\n      }\n    });\n  }\n\n  public getLanguage(): Observable<string[]> {\n    return new Observable((observer: Observer<string[]>) => {\n      let lang = [this.config.locale];\n\n      if (navigator && 'languages' in navigator) {\n        lang = navigator.languages as string[];\n      } else if (navigator && 'language' in navigator) {\n        lang = [navigator.language];\n      } else if (navigator && 'userLanguage' in navigator) {\n        lang = [navigator['userLanguage'].toString()];\n      }\n\n      observer.next(lang);\n      observer.complete();\n    });\n  }\n\n  public getBrowser(): Observable<Browser> {\n    return new Observable((observer: Observer<Browser>) => {\n      const browser = new Browser();\n\n      observer.next(browser);\n      observer.complete();\n    });\n  }\n\n  public getOperatingSystem(): Observable<OperatingSystem> {\n    return new Observable((observer: Observer<OperatingSystem>) => {\n      const os = new OperatingSystem();\n\n      observer.next(os);\n      observer.complete();\n    });\n  }\n\n  private getCoordinatesWithClientIP(observer: Observer<number[]>): void {\n    this.apiLookup.getIpInformation().subscribe((info: ApiLookup) => {\n      observer.next([\n        info.longitude,\n        info.latitude,\n      ]);\n      observer.complete();\n    }, () => {\n      observer.next([-71.00, 48.00]);\n      observer.error('Can\\'t find the client location');\n    });\n  }\n\n  private onVisibilityChange(visible: boolean): void {\n    this.visibilityChange.emit(visible);\n  }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FullscreenService {\n  public statusChange = new EventEmitter();\n\n  public constructor() {\n    document.addEventListener('fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange',\n    () => this.onChange()\n    );\n  }\n\n  public show(element: any): void {\n    if (!element) {\n      element = document.querySelector('body');\n    }\n    if (element.requestFullscreen) {\n      element.requestFullscreen();\n    } else if (element.webkitRequestFullscreen) {\n      element.webkitRequestFullscreen();\n    } else if (element.mozRequestFullScreen) {\n      element.mozRequestFullScreen();\n    } else if (element.msRequestFullscreen) {\n      element.msRequestFullscreen();\n    }\n  }\n\n  public exit(): void {\n    document.querySelector('body').classList.remove('is-fullscreen');\n\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document['webkitExitFullscreen']) {\n      document['webkitExitFullscreen']();\n    } else if (document['mozCancelFullScreen']) {\n      document['mozCancelFullScreen']();\n    } else if (document['msRequestFullscreen']) {\n      document['msRequestFullscreen']();\n    }\n  }\n\n  public isActive(): boolean {\n    if ((screen.availHeight || screen.height - 30) <= window.innerHeight) {\n      return true;\n    }\n\n    return false;\n  }\n\n  private onChange(): void {\n    if (this.isActive()) {\n      document.querySelector('body').classList.add('is-fullscreen');\n    } else {\n      document.querySelector('body').classList.remove('is-fullscreen');\n    }\n\n    this.statusChange.emit(this.isActive());\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subscriber } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ImageService {\n\n  public compress(file: File, maxWidth: number = 0, maxHeight: number = 0): Observable<File> {\n    const fileName = file.name;\n    const reader = new FileReader();\n\n    return new Observable((observer: Subscriber<File>) => {\n      reader.readAsDataURL(file);\n      reader.onload = (e: any) => {\n        const image = new Image();\n\n        image.src = e.target['result'].toString();\n        image.onload = () => {\n          const ratio = this.findRatio(image, maxWidth, maxHeight);\n\n          if (ratio !== null) {\n            const elem = document.createElement('canvas');\n            elem.width = ratio.width;\n            elem.height = ratio.height;\n\n            const ctx = elem.getContext('2d');\n            ctx.drawImage(image, 0, 0, ratio.width, ratio.height);\n            ctx.canvas.toBlob((blob: any) => {\n              const resizeFile = new File([blob], fileName, {\n                type: file.type,\n                lastModified: Date.now()\n              });\n\n              observer.next(resizeFile);\n            }, file.type, 1);\n          } else {\n            observer.next(file);\n          }\n        };\n      };\n    });\n  }\n\n  private findRatio(image: HTMLImageElement, maxWidth: number = 0, maxHeight: number = 0): { width: number; height: number } {\n    if (maxWidth === 0 && maxHeight === 0) {\n      return null;\n    }\n\n    const aspectRatio = (image.width / image.height);\n    const aspect = aspectRatio > 1 ? 'horizontal' : 'vertical';\n\n    maxWidth = maxWidth || image.width;\n    maxHeight = maxHeight || image.height;\n\n    if (image.width < maxWidth && image.height < maxHeight) {\n      return null;\n    }\n\n    if (aspect === 'horizontal' && maxWidth < image.width) {\n      return {\n        width: maxWidth,\n        height: (maxWidth / aspectRatio)\n      };\n    } else {\n      return {\n        width: (maxHeight * aspectRatio),\n        height: maxHeight\n      };\n    }\n  }\n}\n","export class Version {\n    public major: number;\n    public minor: number;\n    public maintenance: number;\n    public build: number;\n\n    public constructor(private version: string) {\n        [this.major, this.minor, this.maintenance, this.build] = this.stringToVar(this.version);\n    }\n\n    public areEqual(compareVersionTo: Version): boolean {\n        if (\n            this.major === compareVersionTo.major &&\n            this.minor === compareVersionTo.minor &&\n            this.maintenance === compareVersionTo.maintenance &&\n            this.build === compareVersionTo.build\n        ) {\n            return true;\n        }\n\n        return false;\n    }\n\n    public moreRecent(compareToVersion: Version): boolean {\n        if (\n            this.major < compareToVersion.major ||\n            (this.major === compareToVersion.major && this.minor < compareToVersion.minor) ||\n            (\n                this.major === compareToVersion.major && this.minor === compareToVersion.minor &&\n                this.maintenance < compareToVersion.maintenance\n            ) ||\n            (\n                this.major === compareToVersion.major && this.minor === compareToVersion.minor &&\n                this.maintenance === compareToVersion.maintenance && this.build < compareToVersion.build\n            )\n        ) {\n            return true;\n        }\n\n        return false;\n    }\n\n    private stringToVar(version: string): number[] {\n        const sequences = version.split('.');\n        const major = parseInt(sequences[0] || '0', 10);\n        const minor = parseInt(sequences[1] || '0', 10);\n        let maintenance = 0;\n        let build = 0;\n\n        if (sequences[2].includes('-')) {\n            const info = sequences[2].split('-');\n            maintenance = parseInt(info[0] || '0', 10);\n            build = parseInt(info[1] || '0', 10);\n        } else {\n            maintenance = parseInt(sequences[2] || '0', 10);\n            build = parseInt(sequences[3] || '0', 10);\n        }\n\n        return [major, minor, maintenance, build];\n    }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpBackend } from '@angular/common/http';\nimport { Version } from '../models/version';\nimport { PackageJson } from '../models/package-json';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class VersionCheckService {\n  private httpClient: HttpClient;\n  private activeVersion: Version;\n  private timeInMinute: number;\n\n  public constructor() {\n    const handler = inject(HttpBackend);\n\n    this.httpClient = new HttpClient(handler);\n  }\n\n  public initVersionCheck(activeVersion: string, url: string = '/assets/config/package.json', frequency: number = 30): void {\n    this.activeVersion = new Version(activeVersion);\n    this.timeInMinute = frequency * 1000 * 60;\n\n    setInterval(() => {\n      this.checkVersion(url);\n    }, this.timeInMinute);\n  }\n\n  public checkVersion(url: string): void {\n    this.httpClient.get(`${url}?t=${new Date().getTime()}`).subscribe((data: PackageJson) => {\n      const newVersion = new Version(data.version);\n      if (this.activeVersion.moreRecent(newVersion)) {\n        this.activeVersion = newVersion;\n\n        if (confirm(`Une nouvelle version est disponible, voulez-vous recharger pour y accèder?`)) {\n          window.location.reload();\n        }\n      }\n    });\n  }\n}\n","export abstract class RefreshUrlService {\n  public abstract getRefreshUrl();\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { InterceptorDelay } from '../interfaces/interceptor-delay';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class InterceptorDelayService {\n  public delay = new EventEmitter<InterceptorDelay>();\n\n  private listOfDelay: InterceptorDelay[] = [];\n\n  public append(interceptorDelay: InterceptorDelay): void {\n    this.listOfDelay = this.listOfDelay.splice(-100);\n    this.listOfDelay.push(interceptorDelay);\n\n    this.delay.emit(interceptorDelay);\n  }\n\n  public getLongestRequest(): InterceptorDelay {\n    const delays = [...this.listOfDelay];\n\n    delays.sort((delayA: InterceptorDelay, delayB: InterceptorDelay) => delayA.totalInMilliseconds > delayB.totalInMilliseconds ? -1 : 1);\n\n    return delays.slice(0, 1)[0];\n  }\n\n  public getLatestRequests(): InterceptorDelay[] {\n    return this.listOfDelay.slice(-50);\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { InterceptorDelayService } from './interceptor-delay.service';\nimport { LogService } from '../services/log.service';\n\n@Injectable()\nexport class HttpDelayInterceptor implements HttpInterceptor {\n  private logService = inject(LogService);\n  private interceptorDelayService = inject(InterceptorDelayService);\n\n  private startingTime: Date;\n\n  public intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n    this.startingTime = new Date();\n\n    return next.handle(request).pipe(\n      map((data: any) => {\n        const endingTime = new Date();\n        const time = endingTime.getTime() - this.startingTime.getTime();\n\n        this.logService.information(`Interceptor - HttpDelay - Delay for HTTP request on \"${request.url}\" is ${time}ms`);\n        this.interceptorDelayService.append({\n          url: request.url,\n          startingTime: this.startingTime,\n          endingTime,\n          totalInMilliseconds: time,\n        });\n\n        return data;\n      })\n    );\n  }\n}\n","export class Color {\n    public hslToRgb(h: number, s: number, l: number): number[] {\n        let r; let g; let b;\n\n        if (s === 0) {\n            r = g = b = l;\n        } else {\n            const q1 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n            const p1 = 2 * l - q1;\n            const hue2rgb = (p2: number, q2: number, t: number) => {\n                if (t < 0) {\n                    t += 1;\n                }\n                if (t > 1) {\n                    t -= 1;\n                }\n                if (t < 1 / 6) {\n                    return p2 + (q2 - p2) * 6 * t;\n                }\n                if (t < 1 / 2) {\n                    return q2;\n                }\n                if (t < 2 / 3) {\n                    return p2 + (q2 - p2) * (2 / 3 - t) * 6;\n                }\n                return p2;\n            };\n\n            r = hue2rgb(p1, q1, h + 1 / 3);\n            g = hue2rgb(p1, q1, h);\n            b = hue2rgb(p1, q1, h - 1 / 3);\n        }\n\n        return [Math.floor(r * 255), Math.floor(g * 255), Math.floor(b * 255)];\n    }\n\n    public getContrast50(hexColor: string): string {\n        return (parseInt(hexColor, 16) > 0xffffff / 2) ? 'black' : 'white';\n    }\n\n    public getContrastYIQ(hexColor: string): string {\n        const r = parseInt(hexColor.substr(0, 2), 16);\n        const g = parseInt(hexColor.substr(2, 2), 16);\n        const b = parseInt(hexColor.substr(4, 2), 16);\n        const yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;\n\n        return (yiq >= 128) ? 'black' : 'white';\n    }\n}\n","  export function toLowerCaseAndWithoutDiacritics(value: string): string {\r\n    return (value??'').normalize('NFD').replace(/\\p{Diacritic}/gu, '').toLowerCase();\r\n  }\r\n","/*\n * Public API Surface of cauca-core\n */\n\nexport * from './lib/cauca-core.service';\nexport * from './lib/cauca-core.component';\nexport * from './lib/cauca-core.module';\nexport * from './lib/cauca-core-for-child.module';\nexport * from './lib/cauca-core-testing.module';\nexport { provideTestingTranslation } from './lib/testing/provide-testing-translation';\nexport * from './lib/cauca-page-not-found/cauca-page-not-found.component';\n\nexport { TranslatePipe, TranslateDirective } from '@ngx-translate/core';\nexport { CAUCA_CORE_MODULE_OPTIONS } from './lib/shared/constants/cauca-core-module-options';\nexport { LOGOUT_HANDLER_TOKEN, REFRESH_URL_SERVICE_TOKEN } from './lib/shared/tokens/injection-tokens';\n\nexport { Debounce } from './lib/shared/decorators/debounce';\n\nexport { LogLevel } from './lib/shared/models/log-level.enum';\n\nexport { RefreshTokenService } from './lib/shared/services/refresh-token.service';\nexport { ClientInformationService } from './lib/shared/services/client-information.service';\nexport { FullscreenService } from './lib/shared/services/fullscreen.service';\nexport { ImageService } from './lib/shared/services/image.service';\nexport { LogService } from './lib/shared/services/log.service';\nexport { NetworkInformationService } from './lib/shared/services/network-information.service';\nexport { VersionCheckService } from './lib/shared/services/version-check.service';\nexport { TranslateService } from './lib/shared/services/translate.service';\nexport { RefreshUrlService } from './lib/shared/services/refresh-url.service';\nexport { BaseLogoutHandler } from './lib/shared/services/logout-handler';\n\nexport { InterceptorError } from './lib/shared/interfaces/interceptor-error';\nexport { InterceptorDelay } from './lib/shared/interfaces/interceptor-delay';\nexport { InterceptorErrorService } from './lib/shared/interceptors/interceptor-error.service';\nexport { InterceptorDelayService } from './lib/shared/interceptors/interceptor-delay.service';\nexport { HttpDelayInterceptor } from './lib/shared/interceptors/http-delay.interceptor';\n\nexport { Configuration } from './lib/shared/classes/configuration';\nexport { Browser } from './lib/shared/classes/browser';\nexport { Color } from './lib/shared/classes/color';\nexport { OperatingSystem } from './lib/shared/classes/operating-system';\nexport { toLowerCaseAndWithoutDiacritics } from './lib/functions/to-lower-case-and-without-diacritics';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TranslateService","map","switchMap","NgxTranslateService","TRANSLATE_CONFIGURATION"],"mappings":"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"}