{"version":3,"file":"catrx-ui.mjs","sources":["../../../../projects/catrx/ui/src/core/factory/token.factory.ts","../../../../projects/catrx/ui/src/core/services/openid/cat-oauth2.config.ts","../../../../projects/catrx/ui/src/core/components/logotype/logotype.component.ts","../../../../projects/catrx/ui/src/core/guard/cat-logged-user.ts","../../../../projects/catrx/ui/src/core/services/token/cat-token.service.ts","../../../../projects/catrx/ui/src/core/services/openid/cat-oauth2.service.ts","../../../../projects/catrx/ui/src/core/services/notifications/notification.service.ts","../../../../projects/catrx/ui/src/core/guard/cat-route.police.ts","../../../../projects/catrx/ui/src/core/components/menu/components/tool/tool.component.ts","../../../../projects/catrx/ui/src/core/components/menu/components/tool/tool.component.html","../../../../projects/catrx/ui/src/core/components/menu/components/module/module.component.ts","../../../../projects/catrx/ui/src/core/components/menu/components/module/module.component.html","../../../../projects/catrx/ui/src/core/components/menu/menu.component.ts","../../../../projects/catrx/ui/src/core/components/menu/menu.component.html","../../../../projects/catrx/ui/src/core/components/app-container/templates/desktop/template-desktop.component.ts","../../../../projects/catrx/ui/src/core/components/app-container/templates/desktop/template-desktop.component.html","../../../../projects/catrx/ui/src/core/components/app-container/templates/mobile/template-mobile.component.ts","../../../../projects/catrx/ui/src/core/components/app-container/templates/mobile/template-mobile.component.html","../../../../projects/catrx/ui/src/core/components/app-container/templates/template-container.component.ts","../../../../projects/catrx/ui/src/core/components/app-container/templates/template-container.component.html","../../../../projects/catrx/ui/src/core/components/app-container/app-container.component.ts","../../../../projects/catrx/ui/src/core/components/app-container/app-container.component.html","../../../../projects/catrx/ui/src/core/components/menu/menu.module.ts","../../../../projects/catrx/ui/src/core/components/app-container/app-container.module.ts","../../../../projects/catrx/ui/src/core/factory/app.factory.ts","../../../../projects/catrx/ui/src/core/services/app/cat-app.service.ts","../../../../projects/catrx/ui/src/core/guard/cat-auth.guard.ts","../../../../projects/catrx/ui/src/core/interfaces/xlsx.config.ts","../../../../projects/catrx/ui/src/core/services/openid/cat-oauth2-hash-location-stategy.ts","../../../../projects/catrx/ui/src/core/catui.module.ts","../../../../projects/catrx/ui/src/core/factory/app-config.interface.ts","../../../../projects/catrx/ui/catrx-ui.ts"],"sourcesContent":["import { CatEnvironment } from '@catrx/ui/common';\n\n// @dynamic\nexport class TokenFactory {\n  private static token?: string;\n\n  public static init() {\n    if (localStorage.getItem(CatEnvironment.environment?.storageTokenName)) {\n      TokenFactory.setToken(\n        localStorage.getItem(CatEnvironment.environment?.storageTokenName)\n      );\n    }\n  }\n\n  public static setToken(token: string) {\n    localStorage.setItem(CatEnvironment.environment?.storageTokenName, token);\n    this.token = token;\n  }\n\n  public static getToken() {\n    return this.token;\n  }\n\n  public static removeToken() {\n    localStorage.removeItem(CatEnvironment.environment?.storageTokenName);\n    this.token = null;\n  }\n\n  public static hasToken() {\n    return (\n      !!this.token &&\n      !!localStorage.getItem(CatEnvironment.environment?.storageTokenName)\n    );\n  }\n\n  public static logout() {\n    this.removeToken();\n  }\n}\n","import { CatEnvironment, CatOAuth2ConfigInterface } from '@catrx/ui/common';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n// @dynamic\nexport class CatOAuth2Config {\n  public static config = new BehaviorSubject<CatOAuth2ConfigInterface>(\n    CatOAuth2Config.getOAuthConfig(CatOAuth2Config.getConfig())\n  );\n\n  public static getConfig() {\n    return localStorage.getItem(\n      CatEnvironment.environment?.storageOpenIDTypeName\n    );\n  }\n\n  public static hasConfig() {\n    return !!this.getConfig();\n  }\n\n  public static setConfig(type: string) {\n    localStorage.setItem(\n      CatEnvironment.environment?.storageOpenIDTypeName,\n      type\n    );\n    this.config.next(this.getOAuthConfig(type));\n  }\n\n  private static getOAuthConfig(type?: string) {\n    const environment =\n      CatEnvironment.environment?.oauthConfig?.find(\n        (config) => config.name === type\n      ) ?? null;\n\n    return (\n      environment ?? {\n        customQueryParams: {\n          client_secret: null,\n        },\n        clientId: null,\n        scope: null,\n        domain: null,\n        strictDiscoveryDocumentValidation: false,\n        indexLoginName: 'name',\n      }\n    );\n  }\n}\n","import { Component } from '@angular/core';\nimport { CatDynamicComponentDataInterface } from '@catrx/ui/dynamic-component';\nimport { AppContainerConfig } from '../../factory/app-config.interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  template: ` <img\n    class=\"logotype\"\n    [src]=\"\n      (data.themeActive$ | async) === 'dark' && data.config.logotype.negative\n        ? data.config.logotype.negative\n        : data.config.logotype.default\n    \"\n    [alt]=\"'Logotipo' + data.config.appName\"\n  />`,\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class LogotypeComponent implements CatDynamicComponentDataInterface {\n  data: AppContainerConfig;\n}\n","export class CatLoggedUser {\n  static claims?: any;\n}\n","import jwtDecode from 'jwt-decode';\nimport jwtEncode from 'jwt-encode';\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { interval } from 'rxjs/internal/observable/interval';\nimport { TokenFactory } from '../../factory/token.factory';\n\nexport interface CatOAuth2TokenInterface {\n  accessToken: string;\n  idToken: string;\n  refreshToken: string;\n  login: string;\n  expired: number;\n  code: string;\n}\n\nexport interface CatJwtTokenInterface {\n  id: number;\n  login: string;\n  iat: number;\n  exp: number;\n}\n\n@Injectable({ providedIn: 'any' })\nexport class CatTokenService implements OnDestroy {\n  private token$ = new BehaviorSubject<string>(null);\n  private intervalToken: Subscription;\n\n  constructor() {\n    this.verifySession();\n  }\n\n  ngOnDestroy() {\n    this.intervalToken?.unsubscribe();\n  }\n\n  public setToken(token: string) {\n    if (TokenFactory.hasToken()) {\n    }\n    this.token$.next(token);\n    TokenFactory.setToken(token);\n  }\n\n  public setDecodedToken(data: any, secret: string) {\n    this.setToken(jwtEncode(data, secret));\n  }\n\n  public getToken(): BehaviorSubject<string | null> {\n    return this.token$;\n  }\n\n  public getDecodedToken<T>(): T | null {\n    return TokenFactory.hasToken() ? jwtDecode(TokenFactory.getToken()) : null;\n  }\n\n  public getOAuth2Token(): CatOAuth2TokenInterface | null {\n    return TokenFactory.hasToken() ? jwtDecode(TokenFactory.getToken()) : null;\n  }\n\n  public getOAuth2DecodedToken() {\n    return jwtDecode(this.getOAuth2Token().idToken) as any;\n  }\n\n  public removeToken() {\n    TokenFactory.removeToken();\n    this.token$.next(null);\n  }\n\n  private verifySession() {\n    TokenFactory.init();\n    this.token$.next(TokenFactory.getToken());\n    this.intervalToken?.unsubscribe();\n    this.intervalToken = interval(300).subscribe(() => {\n      if (!TokenFactory.hasToken() && this.token$.getValue()) {\n        this.token$.next(null);\n      } else if (TokenFactory.hasToken() && !this.token$.getValue()) {\n        this.token$.next(TokenFactory.getToken());\n      }\n    });\n  }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { klDelay } from '@koalarx/utils/operators/delay';\nimport { randomString } from '@koalarx/utils/operators/string';\nimport { CatTokenService } from '../token/cat-token.service';\nimport { CatOAuth2Config } from './cat-oauth2.config';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { klObject } from '@koalarx/utils/operators/object';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { interval } from 'rxjs/internal/observable/interval';\n\nexport interface CatOpenIDConfigInterface {\n  redirectUri: string;\n  responseType: string;\n  clientId: string;\n  scope: string;\n  scopeName?: 'scope' | 'resource';\n  issuer: string;\n  redirectUriAfterAuth?: string;\n  customQueryParams?: object;\n  endpointToken?: string;\n  endpointClaims?: string;\n  indexPictureName?: string;\n}\n\nexport interface CatOpenIdConfig {\n  authorization_endpoint: string;\n  check_session_iframe: string;\n  claim_types_supported: string[];\n  claims_parameter_supported: boolean;\n  claims_supported: string[];\n  code_challenge_methods_supported: string[];\n  end_session_endpoint: string;\n  grant_types_supported: string[];\n  id_token_encryption_alg_values_supported: string[];\n  id_token_encryption_enc_values_supported: string[];\n  id_token_signing_alg_values_supported: string[];\n  introspection_endpoint: string;\n  issuer: string;\n  jwks_uri: string;\n  registration_endpoint: string;\n  request_object_signing_alg_values_supported: string[];\n  request_parameter_supported: boolean;\n  request_uri_parameter_supported: boolean;\n  response_modes_supported: string[];\n  response_types_supported: string[];\n  scopes_supported: string[];\n  subject_types_supported: string[];\n  tls_client_certificate_bound_access_tokens: boolean;\n  token_endpoint: string;\n  token_endpoint_auth_methods_supported: string[];\n  token_endpoint_auth_signing_alg_values_supported: string[];\n  token_introspection_endpoint: string;\n  userinfo_endpoint: string;\n  userinfo_signing_alg_values_supported: string[];\n}\n\nexport type EventType =\n  | 'loadedConfig'\n  | 'getToken'\n  | 'getTokenError'\n  | 'refreshToken'\n  | 'getClaims'\n  | 'userAuthenticated'\n  | 'authenticate'\n  | 'logout'\n  | 'errorLoadConfig';\n\nconst STATE_STORAGE_NAME = 'cat_openid_state';\n\n@Injectable()\nexport class CatOAuth2Service implements OnDestroy {\n  public events = new BehaviorSubject<EventType>(null);\n  private config: CatOpenIDConfigInterface;\n  private openIdOptions: CatOpenIdConfig;\n  private eventSubscription: Subscription;\n  private state?: string;\n  private code?: string;\n  private token?: any = {};\n  private claims?: any;\n  private refreshTokenInterval?: Subscription;\n\n  constructor(\n    private http: HttpClient,\n    private router: Router,\n    private tokenService: CatTokenService,\n    private sanitizer: DomSanitizer\n  ) {\n    this.generateState();\n  }\n\n  ngOnDestroy() {\n    this.eventSubscription?.unsubscribe();\n    this.refreshTokenInterval?.unsubscribe();\n  }\n\n  public hasOpenIdConfig() {\n    return !!this.openIdOptions;\n  }\n\n  public configure(options: CatOpenIDConfigInterface) {\n    this.config = options;\n  }\n\n  public loadDiscoveryDocumentAndTryLogin() {\n    if (this.eventSubscription) {\n      this.eventSubscription.unsubscribe();\n    }\n    this.eventSubscription = this.events.subscribe((event) => {\n      if (event === 'authenticate') {\n        this.generateState();\n        localStorage.setItem(STATE_STORAGE_NAME, this.state);\n        window.location.href = `${this.openIdOptions.authorization_endpoint}?response_type=${this.config.responseType}&client_id=${this.config.clientId}&state=${this.state}&redirect_uri=${this.config.redirectUri}&${this.config.scopeName}=${this.config.scope}`;\n      } else if (event === 'getToken') {\n        const urlParams = new URLSearchParams(window.location.search);\n        const state = urlParams.get('state');\n        if (state === this.state) {\n          const code = urlParams.get('code');\n          this.getToken(code);\n        } else {\n          this.logout();\n        }\n      } else if (\n        event === 'getClaims' ||\n        (event === 'refreshToken' && !this.claims)\n      ) {\n        this.getClaims();\n      }\n    });\n\n    return new Promise((resolve, reject) => {\n      this.http\n        .get<CatOpenIdConfig>(\n          `${this.config.issuer}/.well-known/openid-configuration`\n        )\n        .subscribe({\n          next: (options) => {\n            this.openIdOptions = options;\n            if (window.location.href.indexOf(`state=${this.state}`) >= 0) {\n              this.events.next('getToken');\n            } else if (!this.tokenService.getOAuth2Token()) {\n              this.events.next('loadedConfig');\n            }\n            resolve(true);\n          },\n          error: (e) => {\n            console.error(e);\n            this.events.next('errorLoadConfig');\n            reject(e);\n          },\n        });\n    });\n  }\n\n  public async initLoginFlow(name?: string) {\n    if (name) {\n      CatOAuth2Config.setConfig(name);\n      await klDelay(1000);\n    }\n\n    this.events.next('authenticate');\n  }\n\n  public getIdentityClaims() {\n    return this.claims;\n  }\n\n  public getAccessToken() {\n    return this.token.access_token;\n  }\n\n  public getIdToken() {\n    return this.token.id_token;\n  }\n\n  public getRefreshToken() {\n    return this.token.refresh_token;\n  }\n\n  public getAccessTokenExpiration() {\n    const expires_in = new Date();\n    expires_in.setSeconds(this.token.expires_in);\n    return expires_in.toString();\n  }\n\n  public getCode() {\n    return this.code;\n  }\n\n  public getPicture(): SafeUrl | null {\n    if (this.config.indexPictureName) {\n      return this.sanitizer.bypassSecurityTrustResourceUrl(\n        this.tokenService.getOAuth2DecodedToken()[this.config.indexPictureName]\n      );\n    }\n\n    return null;\n  }\n\n  public logout() {\n    const logoutInterval = setInterval(() => {\n      if (this.hasOpenIdConfig()) {\n        if (this.openIdOptions.end_session_endpoint) {\n          this.claims = null;\n          this.token = null;\n          const iframeLogout = document.createElement('iframe');\n          iframeLogout.style.display = 'none';\n          iframeLogout.src = this.openIdOptions.end_session_endpoint;\n          document.querySelector('body').appendChild(iframeLogout);\n        }\n        this.events.next('logout');\n        clearInterval(logoutInterval);\n      }\n    }, 300);\n  }\n\n  public initRefreshTokenInterval(code: string, refreshToken: string) {\n    this.refreshTokenInterval?.unsubscribe();\n    this.refreshTokenInterval = interval(1000).subscribe(() => {\n      const refreshTokenDate = new Date();\n      refreshTokenDate.setMinutes(refreshTokenDate.getMinutes() + 1);\n      const token = this.tokenService.getOAuth2Token();\n      if (token) {\n        const expires_in = token.expired;\n        if (expires_in) {\n          if (new Date(expires_in) <= refreshTokenDate) {\n            this.getToken(code, refreshToken);\n          }\n        }\n      }\n    });\n  }\n\n  private getToken(code: string, refreshToken?: string) {\n    if (refreshToken) {\n      this.refreshTokenInterval?.unsubscribe();\n    }\n\n    const formData = new URLSearchParams();\n    let data = klObject({\n      grant_type: refreshToken ? 'refresh_token' : 'authorization_code',\n      code,\n      redirect_uri: this.config.redirectUri,\n      client_id: this.config.clientId,\n    })\n      .merge(this.config.customQueryParams ?? {})\n      .getValue();\n\n    if (refreshToken) {\n      data = klObject(data).merge({ refresh_token: refreshToken }).getValue();\n    }\n\n    if (!this.code) {\n      this.code = code;\n    }\n\n    Object.keys(data).forEach((indexName) => {\n      formData.append(indexName, data[indexName]);\n    });\n\n    this.http\n      .post(\n        this.config.endpointToken ?? this.openIdOptions.token_endpoint,\n        formData.toString(),\n        {\n          headers: {\n            'Content-Type': 'application/x-www-form-urlencoded',\n          },\n        }\n      )\n      .subscribe(\n        (token: any) => {\n          this.token = token;\n          this.events.next(refreshToken ? 'refreshToken' : 'getClaims');\n        },\n        () => this.events.next('getTokenError')\n      );\n  }\n\n  private getClaims() {\n    this.http\n      .get(this.config.endpointClaims ?? this.openIdOptions.userinfo_endpoint, {\n        headers: {\n          Authorization: `Bearer ${this.getAccessToken()}`,\n        },\n      })\n      .subscribe({\n        next: (userInfo) => {\n          this.claims = userInfo;\n          this.state = null;\n          localStorage.removeItem(STATE_STORAGE_NAME);\n          this.events.next(\n            this.events.getValue() === 'refreshToken'\n              ? 'refreshToken'\n              : 'userAuthenticated'\n          );\n        },\n        error: () => this.events.next('loadedConfig'),\n      });\n  }\n\n  private generateState() {\n    this.state = localStorage.getItem(STATE_STORAGE_NAME)\n      ? localStorage.getItem(STATE_STORAGE_NAME)\n      : randomString(30, {\n          numbers: true,\n          uppercase: true,\n          lowercase: true,\n        });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { klObject } from '@koalarx/utils/operators/object';\n\nexport declare type Permission = 'denied' | 'granted' | 'default';\n\nexport interface PushNotification {\n  body?: string;\n  icon?: string;\n  tag?: string;\n  data?: any;\n  renotify?: boolean;\n  silent?: boolean;\n  sound?: string;\n  noscreen?: boolean;\n  sticky?: boolean;\n  dir?: 'auto' | 'ltr' | 'rtl';\n  lang?: string;\n  vibrate?: number[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationService {\n  private permission = false;\n\n  public notify(\n    title: string,\n    options: PushNotification\n  ): Observable<{\n    notification: Notification;\n    event: Event;\n  }> {\n    return this.create(title, options);\n  }\n\n  public requestPermission(): void {\n    if (Notification.permission === 'granted') {\n      this.permission = true;\n    } else {\n      Notification.requestPermission().then();\n    }\n  }\n\n  private create(title: string, options: PushNotification): any {\n    return new Observable((obs) => {\n      if (!this.permission) {\n        obs.complete();\n      }\n\n      if (!document.hasFocus()) {\n        options = klObject(options)\n          .merge({\n            requireInteraction: false,\n            renotify: false,\n            tag: 'ChatBot Alexia',\n          })\n          .getValue();\n        const notify = new Notification(title, options);\n        notify.onshow = (e) => {\n          return obs.next({\n            notification: notify,\n            event: e,\n          });\n        };\n        notify.onclick = (e) => {\n          window.focus();\n          return obs.next({\n            notification: notify,\n            event: e,\n          });\n        };\n        notify.onerror = (e) => {\n          return obs.error({\n            notification: notify,\n            event: e,\n          });\n        };\n      }\n    });\n  }\n}\n","import { klDelay } from \"@koalarx/utils/operators/delay\";\nimport { CatLoggedUser } from \"./cat-logged-user\";\n\nexport class CatRoutePolice {\n  static enableRoutes: string[] = [];\n  static police?: (routePath: string) => boolean;\n\n  static async hasPermission(routePath: string) {\n    do {\n      await klDelay(50);\n    } while(!CatLoggedUser.claims);\n\n    if (this.enableRoutes.find((route) => route === routePath)) {\n      return true;\n    } else if (CatRoutePolice.police) {\n      return CatRoutePolice.police(routePath);\n    }\n\n    return false;\n  }\n}\n","import { AppConfigMenuTool } from './../../../../factory/app-config.interface';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'cat-menu-tool[tools]',\n  templateUrl: './tool.component.html',\n  styleUrls: ['./tool.component.css'],\n})\nexport class ToolComponent {\n  @Input() tools: AppConfigMenuTool[];\n\n  closeAllTools() {\n    const tools = document.querySelectorAll('cat-menu .tool.collapsed');\n    tools.forEach((tool) => tool.classList.remove('collapsed'));\n  }\n}\n","<ul>\n  <li\n    #toolElement\n    *ngFor=\"let tool of tools\"\n    class=\"tool\"\n    [ngClass]=\"{ 'has-tools': tool.tools?.length > 0 }\"\n  >\n    <a\n      [routerLink]=\"tool.routerLink\"\n      routerLinkActive=\"active\"\n      class=\"dropdown-item\"\n      (click)=\"closeAllTools(); toolElement.classList.toggle('collapsed')\"\n    >\n      <i *ngIf=\"tool.icon\" [ngClass]=\"tool.icon\"></i>\n      <span>{{ tool.name }}</span>\n    </a>\n    <cat-menu-tool *ngIf=\"tool.tools?.length > 0\" [tools]=\"tool.tools\">\n    </cat-menu-tool>\n  </li>\n</ul>\n","import {\n  AppConfigMenuModule,\n  AppConfigMenuTool,\n} from './../../../../factory/app-config.interface';\nimport { Component, Input } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n  selector: 'cat-menu-module[modules][menuCollapsed]',\n  templateUrl: './module.component.html',\n})\nexport class ModuleComponent {\n  @Input() modules: AppConfigMenuModule[];\n  @Input() menuCollapsed: BehaviorSubject<boolean>;\n\n  isActive(module: AppConfigMenuModule) {\n    const pathname = location.hash\n      ? location.hash.replace('/#/', '')\n      : location.pathname;\n    if (pathname.includes(module.routerLink)) {\n      return true;\n    } else if (module.tools?.length > 0) {\n      return this.hasActiveTool(module.tools);\n    }\n  }\n\n  closeAllModules() {\n    const modules = document.querySelectorAll('cat-menu .module.collapsed');\n    modules.forEach((module) => module.classList.remove('collapsed'));\n  }\n\n  private hasActiveTool(tools: AppConfigMenuTool[]) {\n    return !!tools.find((tool) => {\n      const pathname = location.hash\n        ? location.hash.replace('/#/', '')\n        : location.pathname;\n      if (pathname.includes(tool.routerLink)) {\n        return true;\n      } else if (tool.tools?.length > 0) {\n        return this.hasActiveTool(tool.tools);\n      } else {\n        return false;\n      }\n    });\n  }\n}\n","<ul\n  *ngIf=\"modules?.length > 0\"\n  [ngClass]=\"{ collapsed: menuCollapsed | async }\"\n>\n  <ng-container *ngFor=\"let module of modules; let i = index\">\n    <li\n      #moduleElement\n      class=\"module\"\n      *ngIf=\"module.routerLink || module.tools?.length > 0\"\n      [ngClass]=\"{\n        'has-tools': module.tools?.length > 0,\n        active: isActive(module)\n      }\"\n    >\n      <ng-container *ngIf=\"menuCollapsed | async; else showMenuClosed\">\n        <a\n          [routerLink]=\"module.routerLink\"\n          routerLinkActive=\"active\"\n          (click)=\"\n            closeAllModules(); moduleElement.classList.toggle('collapsed')\n          \"\n        >\n          <i *ngIf=\"module.icon\" [ngClass]=\"module.icon\"></i>\n          <span>{{ module.name }}</span>\n        </a>\n        <cat-menu-tool\n          *ngIf=\"module.tools?.length > 0\"\n          [tools]=\"module.tools\"\n        />\n      </ng-container>\n\n      <ng-template #showMenuClosed>\n        <ng-container\n          *ngIf=\"(module.tools?.length ?? 0) === 0; else menuWithDropdown\"\n        >\n          <a\n            [routerLink]=\"module.routerLink\"\n            [catTooltip]=\"module.name\"\n            catTooltipPosition=\"right\"\n            routerLinkActive=\"active\"\n            (click)=\"\n              closeAllModules(); moduleElement.classList.toggle('collapsed')\n            \"\n          >\n            <i *ngIf=\"module.icon\" [ngClass]=\"module.icon\"></i>\n            <span>{{ module.name }}</span>\n          </a>\n        </ng-container>\n\n        <ng-template #menuWithDropdown>\n          <cat-dropdown [insideClick]=\"false\" position=\"right\">\n            <a\n              trigger\n              [routerLink]=\"module.routerLink\"\n              [catTooltip]=\"module.name\"\n              catTooltipPosition=\"right\"\n              routerLinkActive=\"active\"\n              (click)=\"\n                closeAllModules(); moduleElement.classList.toggle('collapsed')\n              \"\n            >\n              <i *ngIf=\"module.icon\" [ngClass]=\"module.icon\"></i>\n              <span>{{ module.name }}</span>\n            </a>\n\n            <ng-container content>\n              <cat-menu-tool [tools]=\"module.tools\" />\n            </ng-container>\n          </cat-dropdown>\n        </ng-template>\n      </ng-template>\n    </li>\n  </ng-container>\n</ul>\n","import { startWith } from 'rxjs/internal/operators/startWith';\nimport {\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  AppConfigMenu,\n  AppConfigMenuModule,\n  AppConfigMenuTool,\n} from '../../factory/app-config.interface';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { CatToolbarBreadcrumb } from '@catrx/ui/toolbar';\nimport { CatMenuContext } from '@catrx/ui/common';\nimport { CatRoutePolice } from '../../guard/cat-route.police';\nimport { klArray } from '@koalarx/utils/operators/array';\nimport { klString } from '@koalarx/utils/operators/string';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n  selector: 'cat-menu[appName][config][menuCollapsed]',\n  templateUrl: './menu.component.html',\n})\nexport class MenuComponent implements OnInit, OnChanges {\n  @Input() appName: string;\n  @Input() config: AppConfigMenu;\n  @Input() menuCollapsed: BehaviorSubject<boolean>;\n\n  public menuOptions$ = new BehaviorSubject<AppConfigMenu | null>(null);\n\n  constructor(private router: Router) {}\n\n  ngOnInit() {\n    this.router.events\n      .pipe(startWith(new NavigationEnd(1, location.hash, location.hash)))\n      .subscribe((event) => {\n        if (event instanceof NavigationEnd) {\n          const activeModule = this.getActiveModule();\n          const activeTool = this.getActiveTool();\n          this.setInContext(activeTool, activeModule);\n        }\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['config']) {\n      this.buildMenu();\n    }\n  }\n\n  public setInContext(\n    toolOption?: AppConfigMenuTool,\n    moduleOption?: AppConfigMenuModule\n  ) {\n    let breadcrumb: CatToolbarBreadcrumb[];\n\n    if (moduleOption && toolOption) {\n      breadcrumb = [\n        { name: moduleOption.name, routerLink: moduleOption.routerLink },\n        { name: toolOption.name, routerLink: toolOption.routerLink },\n      ];\n    } else if (moduleOption && !toolOption) {\n      breadcrumb = [\n        { name: moduleOption.name, routerLink: moduleOption.routerLink },\n      ];\n    } else if (toolOption) {\n      breadcrumb = [\n        { name: toolOption.name, routerLink: toolOption.routerLink },\n      ];\n    }\n\n    if (\n      this.router.url !== moduleOption?.routerLink &&\n      this.router.url !== toolOption?.routerLink\n    ) {\n      breadcrumb = klArray(breadcrumb)\n        .pipe((klArray) => {\n          let pathRoute = '';\n          return klArray\n            .merge(\n              klString(this.router.url)\n                .split('/')\n                .clearEmptyValues()\n                .map<CatToolbarBreadcrumb>((toolName) => {\n                  pathRoute += `/${toolName}`;\n                  if (\n                    toolOption?.routerLink &&\n                    toolOption.routerLink.indexOf(pathRoute) < 0\n                  ) {\n                    const toolByPath = this.getToolByPath(\n                      toolOption,\n                      pathRoute\n                    );\n                    if (toolByPath) {\n                      return {\n                        name: toolByPath.name,\n                        routerLink: toolByPath.routerLink,\n                      };\n                    }\n                    return { name: toolName };\n                  } else if (\n                    moduleOption?.routerLink &&\n                    moduleOption.routerLink.indexOf(pathRoute) < 0\n                  ) {\n                    const moduleByPath = this.getToolByPath(\n                      moduleOption,\n                      pathRoute\n                    );\n                    if (moduleByPath) {\n                      return {\n                        name: moduleByPath.name,\n                        routerLink: moduleByPath.routerLink,\n                      };\n                    }\n                    return { name: toolName };\n                  }\n                  return null;\n                })\n                .clearEmptyValues()\n                .getValue()\n            )\n            .getValue();\n        })\n        .getValue();\n    }\n\n    let title: string;\n    if (moduleOption && toolOption) {\n      title = `${moduleOption.name} | ${toolOption.name}`;\n    } else if (moduleOption && !toolOption) {\n      title = moduleOption.name;\n    } else if (toolOption) {\n      title = toolOption.name;\n    }\n\n    CatMenuContext.context = {\n      icon: moduleOption?.icon ?? toolOption?.icon,\n      title,\n      breadcrumb,\n    };\n\n    if (title) {\n      document.title = `${title} | ${this.appName}`;\n    } else {\n      document.title = `${this.appName}`;\n    }\n  }\n\n  private buildMenu() {\n    if (this.config?.modules?.length > 0)\n      this.config.modules = klArray(this.config.modules)\n        .map((module) => {\n          if (module.hasPermission && !module.hasPermission()) {\n            return null;\n          }\n          if (module.tools?.length > 0) {\n            module.tools = this.getTools(module.tools);\n          }\n          if (module.routerLink) {\n            CatRoutePolice.enableRoutes.push(module.routerLink);\n          }\n          return module;\n        })\n        .clearEmptyValues()\n        .getValue();\n\n    if (this.config?.tools?.length > 0)\n      this.config.tools = this.getTools(this.config.tools);\n\n    this.menuOptions$.next(this.config);\n  }\n\n  private getTools(tools: AppConfigMenuTool[]) {\n    return klArray(tools)\n      .map((tool) => {\n        if (tool.hasPermission && !tool.hasPermission()) {\n          return null;\n        }\n        if (tool.tools?.length > 0) {\n          tool.tools = this.getTools(tool.tools);\n        }\n        if (tool.routerLink) {\n          CatRoutePolice.enableRoutes.push(tool.routerLink);\n        }\n        return tool;\n      })\n      .clearEmptyValues()\n      .getValue();\n  }\n\n  private getActiveModule() {\n    return (\n      this.config.modules?.find((module) => {\n        if (this.router.url.indexOf(module.routerLink) >= 0) {\n          return module;\n        }\n\n        return module.tools?.find(\n          (tool) => this.router.url.indexOf(tool.routerLink) >= 0\n        );\n      }) ?? null\n    );\n  }\n\n  private getActiveTool() {\n    const activeModule = this.getActiveModule();\n\n    if (activeModule) {\n      return (\n        activeModule.tools?.find(\n          (tool) => this.router.url.indexOf(tool.routerLink) >= 0\n        ) ?? null\n      );\n    }\n\n    return (\n      this.config.tools?.find(\n        (tool) => this.router.url.indexOf(tool.routerLink) >= 0\n      ) ?? null\n    );\n  }\n\n  private getToolByPath(\n    toolConfig: AppConfigMenuTool,\n    path: string\n  ): AppConfigMenuTool | null {\n    if (toolConfig.routerLink === path) {\n      return toolConfig;\n    } else {\n      return toolConfig.tools?.find((tool) => {\n        if (tool.routerLink === path) {\n          return tool;\n        } else if (tool.tools?.length > 0) {\n          return tool.tools.find((subTool) =>\n            this.getToolByPath(subTool, path)\n          );\n        } else {\n          return null;\n        }\n      });\n    }\n  }\n}\n","<nav\n  *ngIf=\"menuOptions$ | async as menuOptions\"\n  [ngClass]=\"{ collapsed: menuCollapsed | async }\"\n>\n  <div class=\"menu-container\">\n    <cat-menu-module\n      *ngIf=\"menuOptions.modules?.length > 0\"\n      [modules]=\"menuOptions.modules\"\n      [menuCollapsed]=\"menuCollapsed\"\n    />\n\n    <cat-menu-tool\n      *ngIf=\"menuOptions.tools?.length > 0\"\n      [tools]=\"menuOptions.tools\"\n    />\n  </div>\n</nav>\n","import {\n  Component,\n  Input,\n  OnInit,\n  ViewChild,\n  ElementRef,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport {\n  AppConfig,\n  AppMenuState,\n  CatThemeType,\n} from '../../../../factory/app-config.interface';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\n@Component({\n  selector: 'cat-template-desktop[themeActive]',\n  templateUrl: './template-desktop.component.html',\n})\nexport class TemplateDesktopComponent implements OnInit {\n  @Input() appConfig: AppConfig;\n  @Input() themeActive: BehaviorSubject<CatThemeType>;\n  @Output() menuCollapse = new EventEmitter<boolean>();\n\n  @ViewChild('menuToolbar') menuToolbar: ElementRef<HTMLDivElement>;\n\n  public menuCollapsed$ = new BehaviorSubject<boolean>(true);\n\n  ngOnInit() {\n    const savedMenuState = localStorage.getItem(\n      this.getLocalStorageMenuStateName()\n    ) as AppMenuState;\n    const isCollapsed = savedMenuState\n      ? savedMenuState === 'collapsed'\n      : this.appConfig.options?.menuStartState === 'collapsed'\n\n    this.menuCollapsed$.next(isCollapsed);\n    this.menuCollapse.emit(this.menuCollapsed$.getValue());\n  }\n\n  public collapseMenu() {\n    this.menuCollapsed$.next(!this.menuCollapsed$.getValue());\n    this.menuCollapse.emit(this.menuCollapsed$.getValue());\n    localStorage.setItem(\n      this.getLocalStorageMenuStateName(),\n      this.menuCollapsed$.getValue()\n        ? 'collapsed'\n        : 'closed'\n    );\n  }\n\n  public getLogotype() {\n    const isCollapsed = this.menuCollapsed$.getValue();\n    const darkMode = this.themeActive.getValue() === 'dark';\n\n    if (this.appConfig.logotype) {\n      if (isCollapsed) {\n        if (darkMode) {\n          return (\n            this.appConfig.logotype.negative ?? this.appConfig.logotype.default\n          );\n        } else {\n          return this.appConfig.logotype.default;\n        }\n      } else {\n        if (darkMode) {\n          return (\n            this.appConfig.logotype.negativeForUncollapse ??\n            this.appConfig.logotype.default\n          );\n        } else {\n          return (\n            this.appConfig.logotype.defaultForUncollapse ??\n            this.appConfig.logotype.default\n          );\n        }\n      }\n    }\n\n    return null;\n  }\n\n  private getLocalStorageMenuStateName() {\n    return `${this.getDefaultAliasStorageName()}:menu-state`;\n  }\n\n  private getDefaultAliasStorageName() {\n    return `@${this.appConfig.appName.replace(/ /g, '-').toLocaleLowerCase()}`;\n  }\n}\n","<div class=\"template-content\">\n  <ng-container>\n    <ng-container>\n      <aside\n        *ngIf=\"appConfig.options?.hideSideMenu !== true\"\n        #asideElement\n        [ngClass]=\"{ show: menuCollapsed$ | async }\">\n        <button\n          *ngIf=\"!(appConfig.options?.disableCollapseMenuButton ?? false)\"\n          type=\"button\"\n          class=\"btn-menu-collapse\"\n          (click)=\"collapseMenu()\">\n          <i *ngIf=\"(menuCollapsed$ | async) === false\"\n            class=\"fa-solid fa-chevron-right\"></i>\n          <i *ngIf=\"menuCollapsed$ | async\"\n            class=\"fa-solid fa-chevron-left\"></i>\n        </button>\n\n        <img #logotypeImage\n          class=\"logotype\"\n          [src]=\"getLogotype()\"\n          alt=\"Logotipo\" />\n\n        <ng-content\n          select=\"[menu-content]\"></ng-content>\n        <div class=\"space\"></div>\n        <div #menuToolbar\n          class=\"btn-group\">\n          <ng-content\n            select=\"[menu-toolbar]\"></ng-content>\n        </div>\n      </aside>\n      <section id=\"cat-content-app\">\n        <ng-content\n          select=\"[router-container]\"></ng-content>\n      </section>\n    </ng-container>\n  </ng-container>\n</div>","import {\n  Component,\n  Input,\n  OnInit,\n  ViewChild,\n  ElementRef,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport {\n  AppConfig,\n  CatThemeType,\n} from '../../../../factory/app-config.interface';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { NavigationEnd, Router } from '@angular/router';\n\n@Component({\n  selector: 'cat-template-mobile[themeActive]',\n  templateUrl: './template-mobile.component.html',\n})\nexport class TemplateMobileComponent implements OnInit {\n  @Input() appConfig: AppConfig;\n  @Input() themeActive: BehaviorSubject<CatThemeType>;\n  @Output() menuCollapse = new EventEmitter<boolean>();\n\n  @ViewChild('menuToolbar') menuToolbar: ElementRef<HTMLDivElement>;\n\n  public menuCollapsed$ = new BehaviorSubject<boolean>(false);\n\n  constructor(private router: Router) {}\n\n  ngOnInit() {\n    this.router.events.subscribe((event) => {\n      if (event instanceof NavigationEnd) {\n        if (this.menuCollapsed$.getValue()) {\n          this.collapseMenu();\n        }\n      }\n    });\n\n    if (this.appConfig.options?.menuStartState === 'closed') {\n      this.menuCollapsed$.next(false);\n    }\n    this.menuCollapse.emit(this.menuCollapsed$.getValue());\n  }\n\n  public collapseMenu() {\n    this.menuCollapsed$.next(!this.menuCollapsed$.getValue());\n    this.menuCollapse.emit(this.menuCollapsed$.getValue());\n\n    document.getElementById('cat-content-app').style.overflow =\n      this.menuCollapsed$.getValue() ? 'hidden' : 'auto';\n  }\n}\n","<div class=\"template-content\">\n  <ng-container>\n    <ng-container>\n      <aside\n        *ngIf=\"appConfig.options?.hideSideMenu !== true\"\n        #asideElement\n        [ngClass]=\"{ show: menuCollapsed$ | async }\">\n        <button\n          *ngIf=\"menuCollapsed$ | async\"\n          type=\"button\"\n          class=\"btn-menu-collapse\"\n          (click)=\"collapseMenu()\">\n          <i\n            class=\"fa-solid fa-chevron-left\"></i>\n        </button>\n\n        <img #logotypeImage\n          class=\"logotype\" [src]=\"\n            (themeActive | async) === 'dark' && appConfig.logotype.negative\n              ? appConfig.logotype.negative\n              : appConfig.logotype.default\n          \" alt=\"Logotipo\" />\n\n        <ng-content\n          *ngIf=\"menuCollapsed$ | async\"\n          select=\"[menu-content]\">\n        </ng-content>\n\n        <div class=\"space\"></div>\n      </aside>\n\n      <section id=\"cat-content-app\">\n        <ng-content\n          select=\"[router-container]\"></ng-content>\n      </section>\n\n      <nav class=\"toolbar-content\">\n        <button type=\"button\"\n          (click)=\"collapseMenu()\">\n          <i\n            class=\"fa-solid fa-bars\"></i>\n        </button>\n\n        <ng-content\n          select=\"[menu-toolbar]\"></ng-content>\n      </nav>\n    </ng-container>\n  </ng-container>\n</div>","import { TemplateDesktopComponent } from './desktop/template-desktop.component';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { AppConfig, CatThemeType } from '../../../factory/app-config.interface';\nimport { TemplateMobileComponent } from './mobile/template-mobile.component';\nimport { klDelay } from '@koalarx/utils/operators/delay';\n\ntype TemplateType = 'desktop' | 'mobile';\n\n@Component({\n  selector: 'cat-template-container[themeActive]',\n  templateUrl: './template-container.component.html',\n})\nexport class TemplateContainerComponent implements OnInit {\n  @Input() appConfig: AppConfig;\n  @Input() themeActive: BehaviorSubject<CatThemeType>;\n  @Output() menuCollapse = new EventEmitter<boolean>();\n\n  @ViewChild('desktopTemplate') desktopTemplate: TemplateDesktopComponent;\n  @ViewChild('mobileTemplate') mobileTemplate: TemplateMobileComponent;\n\n  template$ = new BehaviorSubject<TemplateType>('desktop');\n\n  async ngOnInit() {\n    let windowsWidth = 0;\n    do {\n      windowsWidth = document.body.clientWidth;\n      if (windowsWidth <= 980 && this.template$.getValue() === 'desktop') {\n        this.template$.next('mobile');\n        this.menuCollapse.emit(false);\n      } else if (windowsWidth > 980 && this.template$.getValue() === 'mobile') {\n        this.template$.next('desktop');\n        this.menuCollapse.emit(true);\n      }\n      await klDelay(50);\n    } while (windowsWidth);\n  }\n}\n","<cat-template-desktop\n  *ngIf=\"(template$ | async) === 'desktop'\"\n  #desktopTemplate\n  [appConfig]=\"appConfig\"\n  [themeActive]=\"themeActive\"\n  (menuCollapse)=\"menuCollapse.emit($event)\"\n>\n  <ng-container menu-content>\n    <ng-container *ngTemplateOutlet=\"menuContent\"></ng-container>\n  </ng-container>\n  <ng-container menu-toolbar>\n    <ng-container *ngTemplateOutlet=\"menuToolbar\"></ng-container>\n  </ng-container>\n  <ng-container router-container>\n    <ng-container *ngTemplateOutlet=\"routerContainer\"></ng-container>\n  </ng-container>\n</cat-template-desktop>\n\n<cat-template-mobile\n  *ngIf=\"(template$ | async) === 'mobile'\"\n  #mobileTemplate\n  [appConfig]=\"appConfig\"\n  [themeActive]=\"themeActive\"\n  (menuCollapse)=\"menuCollapse.emit($event)\"\n>\n  <ng-container menu-content>\n    <ng-container *ngTemplateOutlet=\"menuContent\"></ng-container>\n  </ng-container>\n  <ng-container menu-toolbar>\n    <ng-container *ngTemplateOutlet=\"menuToolbar\"></ng-container>\n  </ng-container>\n  <ng-container router-container>\n    <ng-container *ngTemplateOutlet=\"routerContainer\"></ng-container>\n  </ng-container>\n</cat-template-mobile>\n\n<ng-template #menuContent>\n  <ng-content select=\"[menu-content]\"></ng-content>\n</ng-template>\n\n<ng-template #menuToolbar>\n  <ng-content select=\"[menu-toolbar]\"></ng-content>\n</ng-template>\n\n<ng-template #routerContainer>\n  <ng-content select=\"[router-container]\"></ng-content>\n</ng-template>\n","import { TokenFactory } from './../../factory/token.factory';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { klDelay } from '@koalarx/utils/operators/delay';\nimport {\n  AppConfig,\n  CatThemeType,\n  AppConfigMenu,\n  AppNotification,\n  AppContainerConfig,\n} from '../../factory/app-config.interface';\nimport { CatOAuth2Config } from '../../services/openid/cat-oauth2.config';\nimport { CatOAuth2Service } from '../../services/openid/cat-oauth2.service';\nimport {\n  CatJwtTokenInterface,\n  CatOAuth2TokenInterface,\n  CatTokenService,\n} from '../../services/token/cat-token.service';\nimport jwtEncode from 'jwt-encode';\nimport { Router } from '@angular/router';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { NotificationService } from '../../services/notifications/notification.service';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { LogotypeComponent } from '../logotype/logotype.component';\nimport { CatDynamicComponent } from '@catrx/ui/dynamic-component';\nimport { CatOAuth2ConfigInterface } from '@catrx/ui/common';\nimport { CatLoggedUser } from '../../guard/cat-logged-user';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { interval } from 'rxjs/internal/observable/interval';\nimport { first } from 'rxjs/internal/operators/first';\nimport { takeUntil } from 'rxjs/internal/operators/takeUntil';\nimport { startWith } from 'rxjs/internal/operators/startWith';\nimport { TemplateContainerComponent } from './templates/template-container.component';\n\n@Component({\n  selector: 'cat-app-container[config]',\n  templateUrl: './app-container.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppContainerComponent implements OnInit {\n  @Input() config: AppConfig;\n\n  public menuCollapsed$ = new BehaviorSubject<boolean>(true);\n  public themeActive$ = new BehaviorSubject<CatThemeType>('light');\n  public logged$ = new BehaviorSubject<boolean>(TokenFactory.hasToken());\n  public validatingScope$ = new BehaviorSubject<boolean>(false);\n  public errorLoadConfig$ = new BehaviorSubject<boolean>(false);\n  public sideMenuConfig$ = new BehaviorSubject<AppConfigMenu>(null);\n  public username: string;\n  public userPicture$ = new BehaviorSubject<SafeUrl | null>(null);\n  public loadingNotifications$ = new BehaviorSubject<boolean>(false);\n  public notifications$ = new BehaviorSubject<AppNotification[] | null>(null);\n  public forceLogin$ = new BehaviorSubject<boolean>(false);\n  public loadingClaims$ = new BehaviorSubject<boolean>(false);\n\n  private intervalNotifications?: Subscription;\n  private destroyLoggedSubscriptions$ = new Subject<boolean>();\n  private destroySubscriptions$ = new Subject<boolean>();\n\n  @ViewChild('templateContainer') templateContainer: TemplateContainerComponent;\n\n  constructor(\n    private router: Router,\n    private oauth2Service: CatOAuth2Service,\n    private tokenService: CatTokenService,\n    private notificationService: NotificationService\n  ) { }\n\n  ngOnInit() {\n    if (window.matchMedia && this.config.darkMode) {\n      const savedTheme = localStorage.getItem(\n        this.getLocalStorageThemeName()\n      ) as CatThemeType;\n\n      if (savedTheme) {\n        this.themeActive$.next(savedTheme);\n      } else {\n        if (window.matchMedia('(prefers-color-scheme: dark)').matches) {\n          this.themeActive$.next('dark');\n        } else {\n          this.themeActive$.next('light');\n        }\n      }\n    } else {\n      this.themeActive$.next(this.config.defaultTheme ?? 'light');\n    }\n\n    if (this.config.authSettings.openId) {\n      this.startOpenID();\n    }\n\n    if (this.config.sideBarMenu) {\n      this.sideMenuConfig$.next(this.config.sideBarMenu);\n    }\n\n    if (this.config.pushNotifications?.getPermissionToNotifyOnBrowser) {\n      this.notificationService.requestPermission();\n    }\n\n    if (this.config.options?.menuStartState === 'closed') {\n      this.menuCollapsed$.next(false);\n    }\n\n    this.startTokenFlow();\n  }\n\n  public switchTheme() {\n    const currentTheme = this.themeActive$.getValue();\n    this.themeActive$.next(currentTheme === 'dark' ? 'light' : 'dark');\n    localStorage.setItem(\n      this.getLocalStorageThemeName(),\n      this.themeActive$.getValue()\n    );\n  }\n\n  public logout(clearToken = false) {\n    let isLogged = false\n\n    if (this.config.authSettings.onLogout) {\n      const logoutResponse = this.config.authSettings.onLogout(\n        !!this.tokenService.getDecodedToken()\n          ? this.verifyTokenIsExpired()\n          : false\n      )\n      isLogged = logoutResponse.isLogged\n      clearToken = logoutResponse.clearToken\n    }\n\n    if (!isLogged) {\n      this.destroyLoggedSubscriptions$.next(true);\n      this.intervalNotifications?.unsubscribe();\n      this.logged$.next(isLogged);\n    }\n\n    if (clearToken) {\n      this.tokenService.removeToken();\n      this.oauth2Service.logout();\n\n      this.username = null;\n      this.userPicture$.next(null);\n\n      this.router.navigate(['/']);\n    }\n  }\n\n  public login() {\n    if (this.config.authSettings.openId) {\n      this.oauth2Service.events.next('authenticate');\n    } else if (this.config.authSettings.jwt) {\n      this.forceLogin$.next(true);\n    }\n  }\n\n  public logoutAndTryAgain() {\n    this.errorLoadConfig$.next(false);\n    this.logout(true);\n  }\n\n  public reloadNotifications() {\n    this.intervalNotifications?.unsubscribe();\n    this.loadingNotifications$.next(true);\n    this.observeNotifications();\n  }\n\n  public removeNotification(id: number) {\n    this.intervalNotifications?.unsubscribe();\n    this.loadingNotifications$.next(true);\n    this.config.pushNotifications\n      .onDelete(id)\n      .pipe(first())\n      .subscribe({\n        next: () => {\n          this.loadingNotifications$.next(false);\n          this.observeNotifications();\n        },\n        error: (err) => {\n          console.error(err);\n          this.loadingNotifications$.next(false);\n        },\n      });\n  }\n\n  public removeAllNotifications() {\n    this.intervalNotifications?.unsubscribe();\n    this.loadingNotifications$.next(true);\n    this.config.pushNotifications\n      .onAllDelete(\n        this.notifications$.getValue().map((notification) => notification.id)\n      )\n      .pipe(first())\n      .subscribe({\n        next: () => {\n          this.loadingNotifications$.next(false);\n          this.observeNotifications();\n        },\n        error: (err) => {\n          console.error(err);\n          this.loadingNotifications$.next(false);\n        },\n      });\n  }\n\n  public getLoginComponent() {\n    if (this.config.authSettings.jwt) {\n      return new CatDynamicComponent(\n        this.config.authSettings.jwt.loginComponent,\n        new CatDynamicComponent(LogotypeComponent, {\n          config: this.config,\n          themeActive$: this.themeActive$,\n        } as AppContainerConfig)\n      );\n    }\n    return null;\n  }\n\n  private getLocalStorageThemeName() {\n    return `${this.getDefaultAliasStorageName()}:theme`;\n  }\n\n  private getDefaultAliasStorageName() {\n    return `@${this.config.appName.replace(/ /g, '-').toLocaleLowerCase()}`;\n  }\n\n  private startOpenID() {\n    if (!CatOAuth2Config.hasConfig()) {\n      setTimeout(() => {\n        if (this.config.authSettings.autoAuth) {\n          this.oauth2Service.initLoginFlow(\n            this.config.authSettings.openId.service\n          );\n        }\n      }, 3000);\n    }\n\n    this.oauth2Service.events.subscribe(async (event) => {\n      switch (event) {\n        case 'refreshToken':\n          this.oauth2Service.initRefreshTokenInterval(\n            this.tokenService.getOAuth2Token().code,\n            this.tokenService.getOAuth2Token().refreshToken\n          );\n          break;\n        case 'loadedConfig':\n        case 'logout':\n          if (\n            (event === 'loadedConfig' &&\n              !this.validatingScope() &&\n              !this.tokenService.getOAuth2Token()) ||\n            (event === 'logout' && !this.errorLoadConfig$.getValue())\n          ) {\n            if (this.config.authSettings.autoAuth) {\n              if (event === 'logout') {\n                await klDelay(3000);\n                this.oauth2Service.events.next('authenticate');\n              } else {\n                this.oauth2Service.events.next('authenticate');\n              }\n            }\n          }\n          break;\n        case 'getTokenError':\n        case 'errorLoadConfig':\n          this.errorLoadConfig$.next(true);\n          break;\n      }\n    });\n\n    this.initOAuth2();\n  }\n\n  private startTokenFlow() {\n    this.tokenService.getToken().subscribe(async (token) => {\n      if (token) {\n        if (this.verifyTokenIsExpired()) {\n          this.logout(true);\n        } else {\n          this.oauth2Service.initRefreshTokenInterval(\n            this.tokenService.getOAuth2Token().code,\n            this.tokenService.getOAuth2Token().refreshToken\n          );\n\n          await this.getClaimsAndBuildMenu(true);\n\n          if (\n            this.config?.authSettings?.startedPage &&\n            ((!location.hash && location.pathname === '/') ||\n              (!!location.hash && location.hash === '#/'))\n          ) {\n            this.router.navigate([this.config?.authSettings?.startedPage()]);\n          }\n        }\n      } else {\n        this.logout();\n        await this.getClaimsAndBuildMenu(false);\n      }\n    });\n  }\n\n  private getClaimsAndBuildMenu(logged: boolean) {\n    return new Promise((resolve) => {\n      if (logged) {\n        this.getClaims()\n          .then(() => this.buildMenu())\n          .then(() => resolve(true))\n          .catch(() => this.validatingScope$.next(true));\n      } else {\n        this.buildMenu().then();\n      }\n    });\n  }\n\n  private buildMenu() {\n    return new Promise((resolve, reject) => {\n      this.config.authSettings\n        .onAuth(this.tokenService.getDecodedToken<CatOAuth2TokenInterface>())\n        .pipe(first())\n        .subscribe({\n          next: async (sideMenuConfig) => {\n            this.sideMenuConfig$.next(sideMenuConfig);\n\n            if (TokenFactory.hasToken()) {\n              this.username = this.tokenService.getOAuth2Token()?.login;\n\n              if (this.config.authSettings.openId) {\n                this.userPicture$.next(this.oauth2Service.getPicture());\n              }\n\n              interval(1)\n                .pipe(takeUntil(this.destroyLoggedSubscriptions$))\n                .subscribe(() => this.verifyToken());\n\n              if (this.config.pushNotifications) {\n                this.observeNotifications();\n              }\n\n              await klDelay(300);\n              this.logged$.next(true);\n              this.forceLogin$.next(false);\n              resolve(true);\n            }\n          },\n          error: reject,\n        });\n    });\n  }\n\n  private getClaims() {\n    return new Promise((resolve, reject) => {\n      if (this.config.authSettings.openId) {\n        CatLoggedUser.claims = this.oauth2Service.getIdentityClaims();\n        this.loadingClaims$.next(false);\n        resolve(true);\n      } else if (this.config.authSettings.jwt?.claims) {\n        this.loadingClaims$.next(true);\n        this.config.authSettings.jwt.claims.pipe(first()).subscribe({\n          next: (claims) => {\n            CatLoggedUser.claims = claims;\n            this.forceLogin$.next(false);\n            this.logged$.next(true);\n            this.loadingClaims$.next(false);\n            resolve(true);\n          },\n          error: (err) => {\n            this.loadingClaims$.next(false);\n            this.errorLoadConfig$.next(true);\n            reject(err);\n          },\n        });\n      } else {\n        this.loadingClaims$.next(false);\n        resolve(true);\n      }\n    });\n  }\n\n  private validatingScope() {\n    return location.href.indexOf('/?state=') >= 0;\n  }\n\n  private verifyToken() {\n    if (this.verifyTokenIsExpired()) {\n      this.logout(true);\n      this.oauth2Service.logout();\n    }\n  }\n\n  private verifyTokenIsExpired() {\n    const user = this.tokenService.getDecodedToken<\n      CatOAuth2TokenInterface | CatJwtTokenInterface\n    >();\n    if (user) {\n      const exp = user['expired'] ?? user['exp'];\n      if (typeof exp === 'string') {\n        return new Date(exp) < new Date();\n      } else if (typeof exp === 'number') {\n        return new Date(exp * 1000) < new Date();\n      }\n    }\n\n    return true;\n  }\n\n  private observeNotifications() {\n    this.intervalNotifications = interval(\n      this.config.pushNotifications.intervalToGet\n    )\n      .pipe(startWith(0))\n      .subscribe(() => this.pushNotifications());\n  }\n\n  private pushNotifications() {\n    if (this.config.pushNotifications) {\n      this.loadingNotifications$.next(true);\n      this.config.pushNotifications.getNotifications.pipe(first()).subscribe({\n        next: (notifications) => {\n          if (notifications.length > 0) {\n            notifications.forEach((notification) => {\n              if (notification.notifyOnBrowser) {\n                this.notificationService\n                  .notify(notification.title, {\n                    icon: this.config.logotype.default,\n                    body: notification.message,\n                  })\n                  .subscribe((notify) => {\n                    if (\n                      notify.event.type === 'click' &&\n                      notification.routerLink\n                    ) {\n                      this.router.navigate([notification.routerLink]);\n                    }\n                  });\n              }\n            });\n\n            this.notifications$.next(notifications);\n          } else {\n            this.notifications$.next(null);\n          }\n          this.loadingNotifications$.next(false);\n        },\n        error: (err) => {\n          console.error(err);\n          this.notifications$.next(null);\n          this.loadingNotifications$.next(false);\n        },\n      });\n    }\n  }\n\n  private initOAuth2() {\n    CatOAuth2Config.config.subscribe((config) => this.startConfig(config));\n    if (CatOAuth2Config.hasConfig()) {\n      CatOAuth2Config.setConfig(CatOAuth2Config.getConfig());\n    }\n  }\n\n  private startConfig(config: CatOAuth2ConfigInterface) {\n    if (config.clientId) {\n      this.oauth2Service.configure({\n        redirectUri: window.location.origin,\n        redirectUriAfterAuth: '',\n        responseType: config.responseType ?? 'code',\n        clientId: config.clientId,\n        scope: config.scope,\n        scopeName: config.scopeName ?? 'scope',\n        issuer: config.domain,\n        customQueryParams: config.customQueryParams,\n        endpointToken: config.endpointToken ?? null,\n        endpointClaims: config.endpointClaims ?? null,\n        indexPictureName: config.indexPictureName,\n      });\n      this.oauth2Service.loadDiscoveryDocumentAndTryLogin().then();\n\n      this.oauth2Service.events\n        .pipe(takeUntil(this.destroySubscriptions$))\n        .subscribe((event) => {\n          if (event === 'userAuthenticated' || event === 'refreshToken') {\n            const claims = this.oauth2Service.getIdentityClaims();\n            if (\n              claims &&\n              (!TokenFactory.hasToken() ||\n                (TokenFactory.hasToken() && event === 'refreshToken'))\n            ) {\n              this.tokenService.setToken(\n                jwtEncode(\n                  {\n                    accessToken: this.oauth2Service.getAccessToken(),\n                    idToken: this.oauth2Service.getIdToken(),\n                    refreshToken: this.oauth2Service.getRefreshToken(),\n                    login: claims[config.indexLoginName] ?? 'Undefined',\n                    expired: this.oauth2Service.getAccessTokenExpiration(),\n                    code: this.oauth2Service.getCode(),\n                  },\n                  'secret'\n                )\n              );\n            }\n\n            if (event === 'userAuthenticated') {\n              setTimeout(() => this.validatingScope$.next(false), 300);\n            }\n          } else if (event === 'getToken') {\n            this.validatingScope$.next(true);\n          }\n        });\n    }\n  }\n}\n","<main [ngClass]=\"themeActive$ | async\">\n  <ng-container\n    *ngIf=\"\n      (validatingScope$ | async) === false &&\n        (loadingClaims$ | async) === false;\n      else loginTemplate\">\n    <ng-container\n      *ngIf=\"\n        (forceLogin$ | async) === false &&\n          (!this.config.authSettings.autoAuth || (logged$ | async));\n        else loginTemplate\">\n      <cat-template-container\n        #templateContainer\n        [appConfig]=\"config\"\n        [themeActive]=\"themeActive$\"\n        (menuCollapse)=\"menuCollapsed$.next($event)\">\n        <div menu-content>\n          <cat-menu\n            *ngIf=\"sideMenuConfig$ | async as sideMenuConfig\"\n            [appName]=\"config.appName\"\n            [config]=\"sideMenuConfig\"\n            [style.height]=\"\n              templateContainer.desktopTemplate\n                ? 'calc(100% - ' +\n                  this.templateContainer?.desktopTemplate?.menuToolbar\n                    ?.nativeElement?.style?.height +\n                  ')'\n                : '100%'\"\n            [menuCollapsed]=\"menuCollapsed$\">\n          </cat-menu>\n        </div>\n\n        <div menu-toolbar>\n          <button\n            type=\"button\"\n            *ngIf=\"config.darkMode && (themeActive$ | async) as themeActive\"\n            (click)=\"switchTheme()\"\n            [catTooltip]=\"\n              'Ativar modo ' +\n              ((themeActive$ | async) === 'light' ? 'escuro' : 'claro')\">\n            <i *ngIf=\"themeActive === 'light'\" class=\"fa-solid fa-moon\"></i>\n            <i *ngIf=\"themeActive === 'dark'\" class=\"fa-solid fa-sun\"></i>\n          </button>\n\n          <ng-content select=\"[bottom-buttons]\"></ng-content>\n\n          <cat-dropdown\n            *ngIf=\"config.pushNotifications && (logged$ | async)\"\n            [position]=\"(menuCollapsed$ | async) === true ? 'top' : 'right'\">\n            <button\n              trigger\n              type=\"button\"\n              catTooltip=\"Notificações\"\n              [ngClass]=\"{ 'has-notification': notifications$ | async }\">\n              <i class=\"fa-solid fa-bell\"></i>\n            </button>\n\n            <div content>\n              <div class=\"notifications-head\">\n                <span class=\"mr-15\">Notificações</span>\n                <cat-loader *ngIf=\"loadingNotifications$ | async\"></cat-loader>\n                <div class=\"space\"></div>\n                <button\n                  (click)=\"reloadNotifications()\"\n                  class=\"btn-icon\"\n                  type=\"button\"\n                  catTooltip=\"Buscar Notificaçoes\">\n                  <i class=\"fa-solid fa-rotate\"></i>\n                </button>\n                <button\n                  *ngIf=\"(notifications$ | async)?.length > 0\"\n                  (click)=\"removeAllNotifications()\"\n                  class=\"btn-icon\"\n                  type=\"button\"\n                  catTooltip=\"Remover todos\">\n                  <i class=\"fa-solid fa-trash-can\"></i>\n                </button>\n              </div>\n\n              <hr class=\"dropdown-divider\" />\n\n              <ng-container\n                *ngIf=\"\n                  notifications$ | async as notifications;\n                  else emptyNotifications\">\n                <div\n                  *ngFor=\"let notification of notifications\"\n                  class=\"notification-item dropdown-item\">\n                  <i class=\"notification-icon fa-solid fa-message\"></i>\n\n                  <div\n                    class=\"notification-item-message\"\n                    [routerLink]=\"notification.routerLink\"\n                    [ngClass]=\"{ noAction: !notification.routerLink }\">\n                    <small>{{ notification.title }}</small>\n                    <p>{{ notification.message }}</p>\n                  </div>\n\n                  <div class=\"space\"></div>\n\n                  <button\n                    (click)=\"removeNotification(notification.id)\"\n                    class=\"ml-5 mr-10 btn-icon\"\n                    type=\"button\"\n                    catTooltip=\"Excluir\">\n                    <i class=\"fa-solid fa-trash-can\"></i>\n                  </button>\n                </div>\n              </ng-container>\n\n              <ng-template #emptyNotifications>\n                <ng-container\n                  *ngIf=\"\n                    config.pushNotifications.emptyTemplate;\n                    else emptyNotificationsDefaultTemplate\n                  \">\n                  <cat-dynamic-component\n                    [component]=\"config.pushNotifications.emptyTemplate\"\n                  ></cat-dynamic-component>\n                </ng-container>\n\n                <ng-template #emptyNotificationsDefaultTemplate>\n                  <div class=\"cat-empty-notifications-content\">\n                    <i class=\"fa-solid fa-envelope-open\"></i>\n                    <h2>Nenhuma notificação recebida até o momento.</h2>\n                  </div>\n                </ng-template>\n              </ng-template>\n            </div>\n          </cat-dropdown>\n\n          <button\n            *ngIf=\"(logged$ | async) === false\"\n            (click)=\"login()\"\n            type=\"button\"\n            catTooltip=\"Entrar\">\n            <i class=\"fa-solid fa-arrow-right-to-bracket\"></i>\n          </button>\n\n          <cat-dropdown\n            *ngIf=\"logged$ | async\"\n            [position]=\"(menuCollapsed$ | async) === true ? 'top' : 'right'\">\n            <button\n              trigger\n              class=\"btn-avatar\"\n              type=\"button\"\n              catTooltip=\"Perfil\">\n              <div class=\"avatar-container\">\n                <img\n                  *ngIf=\"\n                    userPicture$ | async as userPicture;\n                    else loggedUserAvatar\"\n                  [src]=\"userPicture\"\n                  [alt]=\"'Bem-Vindo ' + username\"\n                  referrerpolicy=\"no-referrer\"\n                />\n              </div>\n            </button>\n\n            <div class=\"dropdown-user\" content>\n              <div class=\"avatar-container\">\n                <img\n                  *ngIf=\"\n                    userPicture$ | async as userPicture;\n                    else loggedUserAvatar\n                  \"\n                  [src]=\"userPicture\"\n                  [alt]=\"'Bem-Vindo ' + username\"\n                  referrerpolicy=\"no-referrer\"\n                />\n                <h2>{{ username }}</h2>\n              </div>\n              <ng-content select=\"[user-menu]\"></ng-content>\n              <hr class=\"dropdown-divider\" />\n              <a\n                href=\"#\"\n                class=\"dropdown-item\"\n                (click)=\"logout(true)\"\n                type=\"button\">\n                <i class=\"fa-solid fa-arrow-right-from-bracket mr-8\"></i>\n                Sair\n              </a>\n            </div>\n\n            <ng-template #loggedUserAvatar>\n              <i class=\"fa-solid fa-circle-user\"></i>\n            </ng-template>\n          </cat-dropdown>\n        </div>\n\n        <ng-container\n          *ngIf=\"(loadingClaims$ | async) === false\"\n          router-container>\n          <ng-content select=\"[router-container]\"></ng-content>\n        </ng-container>\n      </cat-template-container>\n    </ng-container>\n  </ng-container>\n</main>\n\n<ng-template #loginTemplate>\n  <div *ngIf=\"errorLoadConfig$ | async; else loadingData\" class=\"loading-info\">\n    <div class=\"loading-info\">\n      <i class=\"icon-session-expired fa-solid fa-triangle-exclamation\"></i>\n      <h2>Ocorreu um erro ao tentar carregar seus dados.</h2>\n      <small> Certifique-se de que esteja conectado à internet. </small>\n      <div class=\"btn-group\">\n        <button (click)=\"logoutAndTryAgain()\" class=\"btn btn-primary btn-sm\">\n          Tentar Novamente\n        </button>\n      </div>\n    </div>\n  </div>\n  <ng-template #loadingData>\n    <ng-container\n      *ngIf=\"\n        config.authSettings.jwt?.loginComponent &&\n          (loadingClaims$ | async) === false;\n        else templateDefault\n      \"\n    >\n      <div class=\"content-login\">\n        <cat-dynamic-component\n          [component]=\"getLoginComponent()\"\n        ></cat-dynamic-component>\n      </div>\n    </ng-container>\n\n    <ng-template #templateDefault>\n      <div class=\"loading-info\">\n        <img\n          [src]=\"\n            config.logotype.loadingClaims\n              ? config.logotype.loadingClaims\n              : (themeActive$ | async) === 'dark' && config.logotype.negative\n              ? config.logotype.negative\n              : config.logotype.default\n          \"\n          alt=\"Logotipo\"\n        />\n        <h1>Bem-Vindo ao {{ config.appName }}!</h1>\n        <small>Validando seus dados...</small>\n        <cat-loader></cat-loader>\n      </div>\n    </ng-template>\n  </ng-template>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MenuComponent } from './menu.component';\nimport { RouterModule } from '@angular/router';\nimport { ToolComponent } from './components/tool/tool.component';\nimport { ModuleComponent } from './components/module/module.component';\nimport { CatDropdownModule } from '@catrx/ui/dropdown';\nimport { CatTooltipModule } from '@catrx/ui/tooltip';\n\n@NgModule({\n  declarations: [MenuComponent, ModuleComponent, ToolComponent],\n  exports: [MenuComponent],\n  imports: [CommonModule, RouterModule, CatDropdownModule, CatTooltipModule],\n})\nexport class MenuModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppContainerComponent } from './app-container.component';\nimport { MenuModule } from '../menu/menu.module';\nimport { CatLoaderModule } from '@catrx/ui/loader';\nimport { CatDynamicComponentModule } from '@catrx/ui/dynamic-component';\nimport { RouterModule } from '@angular/router';\nimport { CatDropdownModule } from '@catrx/ui/dropdown';\nimport { CatTooltipModule } from '@catrx/ui/tooltip';\nimport { TemplateDesktopComponent } from './templates/desktop/template-desktop.component';\nimport { TemplateContainerComponent } from './templates/template-container.component';\nimport { TemplateMobileComponent } from './templates/mobile/template-mobile.component';\n\n@NgModule({\n  declarations: [\n    AppContainerComponent,\n    TemplateContainerComponent,\n    TemplateDesktopComponent,\n    TemplateMobileComponent,\n  ],\n  exports: [AppContainerComponent],\n  imports: [\n    CommonModule,\n    MenuModule,\n    CatLoaderModule,\n    CatDynamicComponentModule,\n    CatTooltipModule,\n    CatDropdownModule,\n    RouterModule,\n  ],\n})\nexport class AppContainerModule {}\n","import {\n  AppAuthSettings,\n  AppConfig,\n  AppConfigLogotype,\n  AppConfigMenu,\n  AppNotificationsConfig,\n  AppOptions,\n  CatThemeType,\n} from './app-config.interface';\n\nexport class AppFactory {\n  private config = {} as AppConfig;\n\n  constructor(\n    appName: string,\n    authSettings: AppAuthSettings,\n    options?: AppOptions\n  ) {\n    this.config.authSettings = authSettings;\n    this.config.appName = appName;\n    this.config.options = options;\n  }\n\n  public setDefaultTheme(theme: CatThemeType) {\n    this.config.defaultTheme = theme;\n    return this;\n  }\n\n  public setLogotype(options: AppConfigLogotype) {\n    this.config.logotype = options;\n    return this;\n  }\n\n  public enableDarkMode(enable = true) {\n    this.config.darkMode = enable;\n    return this;\n  }\n\n  public setSideMenu(options: AppConfigMenu) {\n    this.config.sideBarMenu = options;\n    return this;\n  }\n\n  public pushNotifications(config: AppNotificationsConfig) {\n    this.config.pushNotifications = config;\n    return this;\n  }\n\n  public generate() {\n    return this.config;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  AppAuthSettings,\n  AppOptions,\n} from '../../factory/app-config.interface';\nimport { AppFactory } from '../../factory/app.factory';\n\n@Injectable()\nexport class CatAppService {\n  public build(\n    appName: string,\n    authSettings: AppAuthSettings,\n    options?: AppOptions\n  ) {\n    return new AppFactory(appName, authSettings, options);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  ActivatedRouteSnapshot,\n  RouterStateSnapshot,\n  UrlTree,\n} from '@angular/router';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { TokenFactory } from '../factory/token.factory';\nimport { CatRoutePolice } from './cat-route.police';\nimport { CatEnvironment } from '@catrx/ui/common';\n\n@Injectable()\nexport class CatAuthGuard {\n  canActivate(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot\n  ):\n    | boolean\n    | UrlTree\n    | Observable<boolean | UrlTree>\n    | Promise<boolean | UrlTree> {\n    if (localStorage.getItem(CatEnvironment.environment?.storageTokenName)) {\n      return CatRoutePolice.hasPermission(state.url);\n    }\n\n    return false;\n  }\n}\n","export class CatXlsxConfig {\n  static config: CatXlsxConfigInterface = {\n    headerBackgroundColor: '#ffffff',\n    headerFontColor: '#000000',\n    normalizeHeader: true,\n  };\n}\n\nexport interface CatXlsxConfigInterface {\n  headerFontColor?: string;\n  headerBackgroundColor?: string;\n  password?: string;\n  normalizeHeader?: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { HashLocationStrategy } from '@angular/common';\nimport { CatEnvironment } from '@catrx/ui/common';\n\n@Injectable()\nexport class CatOAuth2HashLocationStrategy extends HashLocationStrategy {\n  override prepareExternalUrl(internal: string): string {\n    const hasToken = !!localStorage.getItem(\n      CatEnvironment.environment?.storageTokenName\n    );\n    return !hasToken\n      ? window.location.search + super.prepareExternalUrl(internal)\n      : super.prepareExternalUrl(internal);\n  }\n}\n","import { AppContainerModule } from './components/app-container/app-container.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LOCALE_ID, ModuleWithProviders, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { LocationStrategy, registerLocaleData } from '@angular/common';\nimport ptBr from '@angular/common/locales/pt';\nimport { CatAppService } from './services/app/cat-app.service';\nimport { CatOAuth2Service } from './services/openid/cat-oauth2.service';\nimport { CatAuthGuard } from './guard/cat-auth.guard';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CatEnvironment, CatEnvironmentInterface } from '@catrx/ui/common';\nimport {\n  CatXlsxConfig,\n  CatXlsxConfigInterface,\n} from './interfaces/xlsx.config';\nimport { CatOAuth2HashLocationStrategy } from './services/openid/cat-oauth2-hash-location-stategy';\n\nregisterLocaleData(ptBr);\n\n@NgModule({\n  exports: [HttpClientModule, AppContainerModule],\n  imports: [\n    BrowserModule,\n    BrowserAnimationsModule,\n    HttpClientModule,\n    AppContainerModule,\n  ],\n  providers: [CatAppService, CatOAuth2Service, CatAuthGuard],\n})\nexport class CatUiModule {\n  static forRoot(\n    environment: CatEnvironmentInterface,\n    options?: {\n      xlsxConfig?: CatXlsxConfigInterface;\n    }\n  ): ModuleWithProviders<CatUiModule> {\n    environment.storageOpenIDTypeName =\n      environment.storageOpenIDTypeName ?? 'catui_oauth_type';\n    environment.storageTokenName =\n      environment.storageTokenName ?? 'catui_token';\n\n    CatEnvironment.environment = environment;\n\n    if (options?.xlsxConfig) {\n      CatXlsxConfig.config = options.xlsxConfig;\n    }\n\n    return {\n      ngModule: CatUiModule,\n      providers: [\n        { provide: LocationStrategy, useClass: CatOAuth2HashLocationStrategy },\n        { provide: LOCALE_ID, useValue: 'pt-BR' },\n      ],\n    };\n  }\n}\n","import { Type } from '@angular/core';\nimport { CatDynamicComponent } from '@catrx/ui/dynamic-component';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { CatOAuth2TokenInterface } from '../services/token/cat-token.service';\n\nexport class CatLogotypeApp extends CatDynamicComponent { }\n\nexport class CatLogoutResponse {\n  isLogged: boolean\n  clearToken: boolean\n}\n\nexport interface AppContainerConfig {\n  config: AppConfig;\n  themeActive$: BehaviorSubject<CatThemeType>;\n}\n\nexport interface AppConfig {\n  appName: string;\n  logotype: AppConfigLogotype;\n  authSettings: AppAuthSettings;\n  options?: AppOptions;\n  defaultTheme?: CatThemeType;\n  darkMode?: boolean;\n  sideBarMenu?: AppConfigMenu;\n  pushNotifications?: AppNotificationsConfig;\n}\n\nexport interface AppAuthSettings {\n  autoAuth: boolean;\n  onAuth: (decodedToken: CatAppDecodedToken) => Observable<AppConfigMenu>;\n  onLogout?: (expiredToken: boolean) => CatLogoutResponse;\n  startedPage?: () => string;\n  openId?: {\n    service: string;\n  };\n  jwt?: {\n    loginComponent: Type<any>;\n    claims?: Observable<any>;\n  };\n}\n\nexport type AppMenuState = 'closed' | 'collapsed';\n\nexport interface AppOptions {\n  hideSideMenu?: boolean;\n  menuStartState?: AppMenuState;\n  disableCollapseMenuButton?: boolean;\n}\n\nexport interface AppNotificationsConfig {\n  getNotifications: Observable<AppNotification[]>;\n  getPermissionToNotifyOnBrowser: boolean;\n  intervalToGet: number;\n  emptyTemplate?: CatDynamicComponent;\n  onDelete: (id: number) => Observable<any>;\n  onAllDelete: (ids: number[]) => Observable<any>;\n}\n\nexport interface AppNotification {\n  id: number;\n  title: string;\n  message: string;\n  notifyOnBrowser: boolean;\n  routerLink?: string;\n}\n\nexport interface AppConfigLogotype {\n  default: string;\n  defaultForUncollapse?: string;\n  negative?: string;\n  negativeForUncollapse?: string;\n  loadingClaims?: string;\n}\n\nexport interface AppConfigMenu {\n  modules?: AppConfigMenuModule[];\n  tools?: AppConfigMenuTool[];\n}\n\nexport interface AppConfigMenuModule {\n  icon?: string;\n  name: string;\n  hasPermission?: () => boolean;\n  routerLink?: string;\n  tools?: AppConfigMenuTool[];\n}\n\nexport interface AppConfigMenuTool {\n  name: string;\n  hasPermission?: () => boolean;\n  icon?: string;\n  routerLink?: string;\n  tools?: AppConfigMenuTool[];\n  fnAction?: () => void;\n}\n\nexport type CatThemeType = 'light' | 'dark';\nexport type CatAppDecodedToken =\n  | CatOAuth2TokenInterface\n  | { [key: string]: any };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.CatTokenService","i4","i5.ToolComponent","i3.ModuleComponent","i4.ToolComponent","i2.TemplateDesktopComponent","i3.TemplateMobileComponent","i2.CatOAuth2Service","i4.NotificationService","i5","i6.MenuComponent","i9","i10","i11.TemplateContainerComponent"],"mappings":"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"}