{"version":3,"file":"ngx-gem-spaas.mjs","sources":["../../../projects/ngx-gem-spaas/src/base/base.component.ts","../../../projects/ngx-gem-spaas/src/_models/okta.model.ts","../../../projects/ngx-gem-spaas/src/_models/new-version.model.ts","../../../projects/ngx-gem-spaas/src/_models/config.model.ts","../../../projects/ngx-gem-spaas/src/_services/config.service.ts","../../../projects/ngx-gem-spaas/src/_models/embed-mode.model.ts","../../../projects/ngx-gem-spaas/src/_services/embed-mode.service.ts","../../../projects/ngx-gem-spaas/src/_services/utils.service.ts","../../../projects/ngx-gem-spaas/src/_services/local-storage.service.ts","../../../projects/ngx-gem-spaas/src/_services/session-storage.service.ts","../../../projects/ngx-gem-spaas/src/_services/okta.service.ts","../../../projects/ngx-gem-spaas/src/_models/bg.model.ts","../../../projects/ngx-gem-spaas/src/bg/bg.component.ts","../../../projects/ngx-gem-spaas/src/bg/bg.component.html","../../../projects/ngx-gem-spaas/src/intro/intro.component.ts","../../../projects/ngx-gem-spaas/src/intro/intro.component.html","../../../projects/ngx-gem-spaas/src/_interceptors/okta-auth.interceptor.ts","../../../projects/ngx-gem-spaas/src/_models/settings.model.ts","../../../projects/ngx-gem-spaas/src/_services/settings.service.ts","../../../projects/ngx-gem-spaas/src/_models/theme.model.ts","../../../projects/ngx-gem-spaas/src/_services/theme.service.ts","../../../projects/ngx-gem-spaas/src/toggle/toggle.component.ts","../../../projects/ngx-gem-spaas/src/toggle/toggle.component.html","../../../projects/ngx-gem-spaas/src/settings/settings.component.ts","../../../projects/ngx-gem-spaas/src/settings/settings.component.html","../../../projects/ngx-gem-spaas/src/_services/preloader.service.ts","../../../projects/ngx-gem-spaas/src/preloader/preloader.component.ts","../../../projects/ngx-gem-spaas/src/preloader/preloader.component.html","../../../projects/ngx-gem-spaas/src/_services/slide-out.service.ts","../../../projects/ngx-gem-spaas/src/slide-out/slide-out.component.ts","../../../projects/ngx-gem-spaas/src/slide-out/slide-out.component.html","../../../projects/ngx-gem-spaas/src/slide-out/slide-out-content.component.ts","../../../projects/ngx-gem-spaas/src/slide-out/slide-out-content.component.html","../../../projects/ngx-gem-spaas/src/material.module.ts","../../../projects/ngx-gem-spaas/src/new-version/new-version.component.ts","../../../projects/ngx-gem-spaas/src/new-version/new-version.component.html","../../../projects/ngx-gem-spaas/src/_services/new-version.service.ts","../../../projects/ngx-gem-spaas/src/pwa-install/pwa-install.component.ts","../../../projects/ngx-gem-spaas/src/pwa-install/pwa-install.component.html","../../../projects/ngx-gem-spaas/src/_services/pwa-install.service.ts","../../../projects/ngx-gem-spaas/src/_services/app-init.service.ts","../../../projects/ngx-gem-spaas/src/menu/menu.component.ts","../../../projects/ngx-gem-spaas/src/menu/menu.component.html","../../../projects/ngx-gem-spaas/src/_models/active-route.model.ts","../../../projects/ngx-gem-spaas/src/_services/active-route.service.ts","../../../projects/ngx-gem-spaas/src/menu-side-bar/menu-side-bar.component.ts","../../../projects/ngx-gem-spaas/src/menu-side-bar/menu-side-bar.component.html","../../../projects/ngx-gem-spaas/src/menu-side-bar/menu-side-bar-icon.component.ts","../../../projects/ngx-gem-spaas/src/menu-side-bar/menu-side-bar-icon.component.html","../../../projects/ngx-gem-spaas/src/embed/embed.component.ts","../../../projects/ngx-gem-spaas/src/embed/embed.component.html","../../../projects/ngx-gem-spaas/src/_models/sync-scroll.model.ts","../../../projects/ngx-gem-spaas/src/_services/sync-scroll.service.ts","../../../projects/ngx-gem-spaas/src/_directives/sync-scroll.directive.ts","../../../projects/ngx-gem-spaas/src/resizer/resizer.component.ts","../../../projects/ngx-gem-spaas/src/resizer/resizer.component.html","../../../projects/ngx-gem-spaas/src/spaas.module.ts","../../../projects/ngx-gem-spaas/src/_guards/embedded-only.guard.ts","../../../projects/ngx-gem-spaas/src/_guards/okta-auth.guard.ts","../../../projects/ngx-gem-spaas/src/_models/post-message.model.ts","../../../projects/ngx-gem-spaas/src/_models/regex.model.ts","../../../projects/ngx-gem-spaas/src/_services/post-message.service.ts","../../../projects/ngx-gem-spaas/src/_services/snackbar.service.ts","../../../projects/ngx-gem-spaas/src/public-api.ts","../../../projects/ngx-gem-spaas/src/ngx-gem-spaas.ts"],"sourcesContent":["import {Component, OnDestroy} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'spaas-base',\r\n  template: '',\r\n})\r\n\r\nexport class BaseComponent implements OnDestroy {\r\n\r\n  onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n  ngOnDestroy(): void {\r\n    this.onDestroy$.next();\r\n    this.onDestroy$.complete();\r\n  }\r\n\r\n}\r\n","/**\r\n * Okta configuration object to be provided via \"forRoot\" method of the SpaasModule.\r\n *\r\n * @property {string[]} additionalScopes the scopes needed for your particular back-end\r\n * @property {string} clientId the client id of your SPA\r\n * @property {string[]} interceptUrls the urls to intercept and add an Authorization - Bearer header to\r\n * @property {string} tenantId the tenant id of your Okta issuer\r\n * @property {string} url the url of your Okta issuer\r\n * @property {boolean} withPath false for subdomains, true for context (optional, default is true)\r\n */\r\n\r\nexport class OktaConfigModel {\r\n  additionalScopes: string[] = [];\r\n  clientId: string = '';\r\n  interceptUrls: string[] = [];\r\n  tenantId: string = '';\r\n  url: string = '';\r\n  withPath?: boolean = true;\r\n\r\n  constructor(objIn: any) {\r\n    this.additionalScopes = objIn.additionalScopes || [];\r\n    this.clientId = objIn.clientId || '';\r\n    this.interceptUrls = objIn.interceptUrls || [];\r\n    this.tenantId = objIn.tenantId || '';\r\n    this.url = objIn.url || '';\r\n    this.withPath = objIn.withPath || true;\r\n  }\r\n\r\n}\r\n\r\nexport class OktaUserModel {\r\n  email: string;\r\n  firstName: string;\r\n  lastName: string;\r\n  groups: string[];\r\n  userId: string;\r\n\r\n  constructor(props: any) {\r\n    const nameArr = OktaUserModel.stripMail(props.email).split('.');\r\n    this.email = props.email || '';\r\n    this.firstName = nameArr.length ? nameArr[0] : '';\r\n    this.groups = props.groups || [];\r\n    this.lastName = nameArr.length ? nameArr[1] : '';\r\n    this.userId = props.userid || props.userId || ''; // props.userId is for when OktaUserModel is extended and fed itself as props\r\n  }\r\n\r\n  static stripMail(strIn: string): string {\r\n    return strIn ? strIn.replace('@engie.com', '').replace('@external.engie.com', '') : '';\r\n  }\r\n\r\n  checkGroup(group: string): boolean {\r\n    return this.groups.some((g) => g.toLowerCase().startsWith((group || '').toLowerCase()));\r\n  }\r\n\r\n}\r\n","/**\r\n * New version configuration object to be provided via \"forRoot\" method of the SpaasModule.\r\n *\r\n * @property {number} reminder default is zero. If not zero and hasBackdrop === true, this sets the interval\r\n * (in minutes) at which to prompt the user to load the newly deployed version. Will be floored to a 5-minute minimum.\r\n * @property {boolean} hasBackdrop default is true. If false, no backdrop is shown for the bottom-sheet pop-up (and\r\n * so the pop-up can only be dismissed by accepting the new version).\r\n */\r\n\r\nexport class NewVersionConfigModel {\r\n  reminder?: number = 0;\r\n  hasBackdrop?: boolean = true;\r\n\r\n  constructor(objIn: any) {\r\n    this.reminder = objIn.reminder ? Math.max(objIn.reminder, 5) : 0;\r\n    this.hasBackdrop = objIn.hasOwnProperty('hasBackdrop') ? objIn.hasBackdrop : true;\r\n  }\r\n\r\n}\r\n","import {OktaConfigModel} from \"./okta.model\";\r\nimport {NewVersionConfigModel} from \"./new-version.model\";\r\n\r\n/**\r\n * Library configuration object to be provided via \"forRoot\" method of the SpaasModule.\r\n *\r\n * @property {string} appName the application name. Will be shown in browser tab and will be used as storage prefix\r\n * @property {string} environment will be used as storage prefix, in combination with appName\r\n * @property {OktaConfigModel} oktaConfig the Okta configuration for this project\r\n * @property {NewVersionConfigModel} newVersionConfig the configuration for the new version handling\r\n */\r\nexport class SpaasConfigModel {\r\n  appName: string = '';\r\n  environment: string = '';\r\n  oktaConfig = new OktaConfigModel({});\r\n  newVersionConfig? = new NewVersionConfigModel({});\r\n\r\n  constructor(objIn: SpaasConfigModel) {\r\n    this.appName = objIn.appName || '';\r\n    this.environment = objIn.environment || '';\r\n    this.oktaConfig = new OktaConfigModel(objIn.oktaConfig || {})\r\n    this.newVersionConfig = new NewVersionConfigModel(objIn.newVersionConfig || {})\r\n  }\r\n\r\n}\r\n\r\nexport class SpaasExtConfigModel extends SpaasConfigModel {\r\n  cleanAppName: string;\r\n  storagePrefix: string;\r\n\r\n  constructor(conf: SpaasConfigModel) {\r\n    super(conf);\r\n    this.cleanAppName = this.appName.charAt(0).toUpperCase() + this.appName.substring(1, this.appName.length).toLowerCase();\r\n    this.storagePrefix = (this.appName || this.oktaConfig?.clientId) + '-' + this.environment + '-';\r\n  }\r\n\r\n}\r\n","import {Inject, Injectable, Optional} from '@angular/core';\r\nimport {SpaasConfigModel, SpaasExtConfigModel} from \"../_models/config.model\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ConfigService {\r\n\r\n  config: SpaasExtConfigModel;\r\n\r\n  constructor(\r\n    @Optional() @Inject(SpaasConfigModel) private readonly spaasConfig: SpaasConfigModel,\r\n  ) {\r\n    if (!spaasConfig) {\r\n      throw new Error('please provide a SpaasConfigModel using the forRoot method of the SpaasModule');\r\n    }\r\n    this.config = new SpaasExtConfigModel(this.spaasConfig);\r\n  }\r\n\r\n  getConfig(): SpaasExtConfigModel {\r\n    return this.config;\r\n  }\r\n\r\n}\r\n","export declare type EmbedModeType = '' | 'iframe';\r\nexport enum EmbedModeEnum {\r\n  none = '',\r\n  iframe = 'iframe',\r\n}\r\n\r\nexport class EmbedModeModel {\r\n  parent: string;\r\n  pwd: string;\r\n  type: EmbedModeType;\r\n  usr: string;\r\n\r\n  constructor() {\r\n    this.parent = '';\r\n    this.pwd = '';\r\n    this.type = EmbedModeEnum.none;\r\n    this.usr = '';\r\n  }\r\n\r\n  isIframe(): boolean {\r\n    return this.type === EmbedModeEnum.iframe;\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, ReplaySubject} from 'rxjs';\r\nimport {EmbedModeEnum, EmbedModeModel} from '../_models/embed-mode.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class EmbedModeService {\r\n\r\n  readonly POST_MESSAGE_GETTHEME = 'getTheme';\r\n\r\n  private embedMode = new EmbedModeModel();\r\n  private embedMode$ = new ReplaySubject<EmbedModeModel>(1);\r\n\r\n  embeddedWindow: Window | null = null;\r\n\r\n  private static getIframeParent(): string {\r\n    const ref = document.referrer || '';\r\n    if (ref) {\r\n      const url = new URL(ref);\r\n      if (url.pathname !== '/') {\r\n        return url.pathname.replace(/\\//g, '');\r\n      } else {\r\n        const subdomain = url.hostname.split('.')[0] || '';\r\n        if (!subdomain.includes('cylon')) {\r\n          return subdomain;\r\n        }\r\n      }\r\n    }\r\n    return '';\r\n  }\r\n\r\n  // setEmbedMode is called from the app-init.service\r\n  setEmbedMode(): void {\r\n    if (window.location !== window.parent.location) {\r\n      // iframe mode\r\n      this.embedMode.type = EmbedModeEnum.iframe;\r\n      this.embedMode.parent = EmbedModeService.getIframeParent();\r\n    }\r\n    this.newEmbedMode();\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // LOAD DATA\r\n  // ********************************************************************************************************\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  private newEmbedMode() {\r\n    // console.log('embed mode set: ' + (this.embedMode.type || 'none'));\r\n    this.embedMode$.next(this.embedMode);\r\n  }\r\n\r\n  onNewEmbedMode(): Observable<EmbedModeModel> {\r\n    return this.embedMode$.asObservable();\r\n  }\r\n\r\n  getEmbedMode(): EmbedModeModel {\r\n    return this.embedMode;\r\n  }\r\n\r\n  getEmbeddedWindow(): Window | null {\r\n    return this.embeddedWindow;\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UtilsService {\r\n\r\n  static copy<T>(objIn: T): T {\r\n    return JSON.parse(JSON.stringify(objIn));\r\n  }\r\n\r\n  // DISTINCT SORTED LIST WITHOUT NULL/UNDEFINED VALUES\r\n  static distinct(listIn: string[], prefix = '', sortAsc = true): string[] {\r\n    const sortCorr = sortAsc ? 1 : -1;\r\n    let listOut = listIn\r\n      .filter((value, index, self) => value && self.indexOf(value) === index)\r\n      .sort((a, b) => a < b ? -1 * sortCorr : 1 * sortCorr);\r\n    if (prefix) {\r\n      listOut = listOut.map((c) => prefix + c);\r\n    }\r\n    return listOut;\r\n  }\r\n\r\n  static round(num: number, dec: number): number | null {\r\n    if (num === null || num === undefined) {\r\n      return null;\r\n    }\r\n    return Number((num).toFixed(dec));\r\n  }\r\n\r\n  static checkJSON(itemToCheck: string): boolean {\r\n    let item = {};\r\n    try {\r\n      item = JSON.parse(itemToCheck);\r\n    } catch (e) {\r\n      return false;\r\n    }\r\n    return typeof item === 'object' && item !== null;\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ConfigService} from \"./config.service\";\r\nimport {UtilsService} from \"./utils.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LocalStorageService {\r\n\r\n  private readonly storagePrefix: string;\r\n\r\n  constructor(\r\n    private configService: ConfigService,\r\n  ) {\r\n    this.storagePrefix = this.configService.getConfig().storagePrefix;\r\n  }\r\n\r\n  getItem(lsKey: string): any {\r\n    const lsVal = localStorage.getItem(this.storagePrefix + lsKey) || '';\r\n    return UtilsService.checkJSON(lsVal) ? JSON.parse(lsVal) : Number.isNaN(Number(lsVal)) ? lsVal : Number(lsVal);\r\n  }\r\n\r\n  getItems(searchString: string): any[] {\r\n    const tempResults = [];\r\n    for (const key in localStorage) {\r\n      if (localStorage.hasOwnProperty(key)) {\r\n        if (key.indexOf(searchString) > -1) {\r\n          if (UtilsService.checkJSON(localStorage[key])) {\r\n            tempResults.push(JSON.parse(localStorage[key]));\r\n          } else {\r\n            tempResults.push(localStorage[key]);\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return tempResults;\r\n  }\r\n\r\n  setItem(lsKey: string, lsValue: any): void {\r\n    if (typeof lsValue === 'object') {\r\n      localStorage.setItem(this.storagePrefix + lsKey, JSON.stringify(lsValue));\r\n    } else {\r\n      localStorage.setItem(this.storagePrefix + lsKey, lsValue);\r\n    }\r\n  }\r\n\r\n  removeItem(lsKey: string): void {\r\n    localStorage.removeItem(this.storagePrefix + lsKey);\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ConfigService} from \"./config.service\";\r\nimport {UtilsService} from \"./utils.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SessionStorageService {\r\n\r\n  private readonly storagePrefix: string;\r\n\r\n  constructor(\r\n    private configService: ConfigService,\r\n  ) {\r\n    this.storagePrefix = this.configService.getConfig().storagePrefix;\r\n  }\r\n\r\n  getItem(lsKey: string): any {\r\n    const lsVal = sessionStorage.getItem(this.storagePrefix + lsKey) || '';\r\n    return UtilsService.checkJSON(lsVal) ? JSON.parse(lsVal) : Number.isNaN(Number(lsVal)) ? lsVal : Number(lsVal);\r\n  }\r\n\r\n  getItems(searchString: string): any[] {\r\n    const tempResults = [];\r\n    for (const key in sessionStorage) {\r\n      if (sessionStorage.hasOwnProperty(key)) {\r\n        if (key.indexOf(searchString) > -1) {\r\n          if (UtilsService.checkJSON(sessionStorage[key])) {\r\n            tempResults.push(JSON.parse(sessionStorage[key]));\r\n          } else {\r\n            tempResults.push(sessionStorage[key]);\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return tempResults;\r\n  }\r\n\r\n  setItem(lsKey: string, lsValue: any): void {\r\n    if (typeof lsValue === 'object') {\r\n      sessionStorage.setItem(this.storagePrefix + lsKey, JSON.stringify(lsValue));\r\n    } else {\r\n      sessionStorage.setItem(this.storagePrefix + lsKey, lsValue);\r\n    }\r\n  }\r\n\r\n  removeItem(lsKey: string): void {\r\n    sessionStorage.removeItem(this.storagePrefix + lsKey);\r\n  }\r\n\r\n}\r\n","import {BehaviorSubject, Observable, ReplaySubject, Subject} from 'rxjs';\r\nimport {Injectable, OnDestroy} from '@angular/core';\r\nimport {NavigationStart, Router} from '@angular/router';\r\nimport {\r\n  OAuthError,\r\n  OktaAuth,\r\n  OktaAuthOptions,\r\n  TokenManagerInterface,\r\n  TokenParams,\r\n  UserClaims\r\n} from '@okta/okta-auth-js';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {ConfigService} from \"./config.service\";\r\nimport {LocalStorageService} from \"./local-storage.service\";\r\nimport {SessionStorageService} from \"./session-storage.service\";\r\nimport {OktaUserModel} from \"../_models/okta.model\";\r\nimport {UtilsService} from \"./utils.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class OktaService implements OnDestroy {\r\n\r\n  readonly LS_ACTIVEROUTE = 'activeRoute';\r\n  readonly SS_ERROR = 'oktaError';\r\n\r\n  private oktaError: OAuthError | null = null;\r\n  private oktaError$: BehaviorSubject<OAuthError | null> = new BehaviorSubject<OAuthError | null>(null);\r\n\r\n  private oktaUserInfo = new OktaUserModel({});\r\n  private oktaUserInfo$ = new ReplaySubject<OktaUserModel>(1);\r\n\r\n  private readonly oktaClient: OktaAuth;\r\n  private readonly oktaClientConfig: OktaAuthOptions;\r\n  private readonly tokenManager: TokenManagerInterface;\r\n  private readonly tokenParams: TokenParams;\r\n\r\n  private onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n  constructor(\r\n    private configService: ConfigService,\r\n    private lsService: LocalStorageService,\r\n    private router: Router,\r\n    private ssService: SessionStorageService,\r\n  ) {\r\n    this.oktaClientConfig = this.setConfig();\r\n    // CLIENT, TOKENPARAMS AND TOKENMANAGER\r\n    this.oktaClient = new OktaAuth(this.oktaClientConfig);\r\n    this.oktaClient.start(); // as of v5, needs to be started as a service to auto-renew\r\n    this.tokenParams = {scopes: this.oktaClientConfig.scopes};\r\n    this.tokenManager = this.oktaClient.tokenManager;\r\n    this.tokenManager.on('error', (error) => {\r\n        // auto-renew failed, usually cuz user deleted cookies or something (no more valid okta session), so sign out\r\n        console.log(error);\r\n        this.oktaClient.signOut({postLogoutRedirectUri: null}).catch((err) => console.log(err));\r\n      }\r\n    );\r\n    // SUBSCRIBE TO ROUTING\r\n    this.onRouting();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.onDestroy$.next();\r\n    this.onDestroy$.complete();\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // GENERIC STUFF\r\n  // ********************************************************************************************************\r\n\r\n  private setConfig(): OktaAuthOptions {\r\n    const spaasConfig = this.configService.getConfig();\r\n    if (!spaasConfig?.oktaConfig) {\r\n      throw new Error('please provide a valid Okta configuration via the \"forRoot\" method of the SpaasModule');\r\n    }\r\n    if (spaasConfig?.oktaConfig?.url?.slice(-1) === '/') {\r\n      throw new Error('the okta url should not have a trailing slash');\r\n    }\r\n    if (spaasConfig?.oktaConfig?.tenantId.includes('/')) {\r\n      throw new Error('the okta tenant id should not contain slashes');\r\n    }\r\n    return {\r\n      clientId: spaasConfig.oktaConfig.clientId,\r\n      issuer: spaasConfig.oktaConfig.url + '/oauth2/' + spaasConfig.oktaConfig.tenantId,\r\n      pkce: true,\r\n      redirectUri: spaasConfig.oktaConfig.withPath ? window.location.origin + window.location.pathname : window.location.origin,\r\n      responseType: ['id_token', 'token'],\r\n      scopes: ['openid', 'email'].concat(spaasConfig.oktaConfig.additionalScopes || []),\r\n      tokenManager: {\r\n        storage: 'sessionStorage',\r\n        storageKey: spaasConfig.storagePrefix + 'tokens',\r\n        expireEarlySeconds: 300\r\n      },\r\n      transactionManager: {\r\n        saveNonceCookie: false,\r\n        saveParamsCookie: false,\r\n        saveStateCookie: false,\r\n      },\r\n    };\r\n  }\r\n\r\n  private onRouting(): void {\r\n    this.router.events\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (event) => {\r\n          if (event instanceof NavigationStart) {\r\n            // set active route here, so we know where to route to after token redirection\r\n            if (event.url !== '/') {\r\n              this.setActiveRoute(event.url);\r\n            }\r\n            // BECAUSE WE HANDLE THE CALLBACK BEFORE ROUTING, THE HIDDEN IFRAME REMAINS EMPTY\r\n            this.handleRedirect();\r\n          }\r\n        });\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // OKTA STUFF\r\n  // ********************************************************************************************************\r\n\r\n  private handleRedirect(): void {\r\n    if (this.oktaClient.token.isLoginRedirect() || window.location.search.includes('error=')) {\r\n      // IS REDIRECT OR OKTA ERROR\r\n      this.updateOktaError(null);\r\n      this.parseFromUrl();\r\n    } else if (!this.oktaError) {\r\n      // IS REGULAR NAVIGATION: CHECK USER INFO\r\n      this.getUserInfoFromToken();\r\n    }\r\n  }\r\n\r\n  private parseFromUrl() {\r\n    this.oktaClient.token.parseFromUrl()\r\n      .then((tokenResponse) => {\r\n        this.tokenManager.setTokens(tokenResponse.tokens);\r\n        // NOW SET USER INFO FROM THE TOKEN\r\n        // IT'S THE USER INFO OBSERVABLE THAT OTHER COMPONENTS OR SERVICES SHOULD USE AS INDICATION THAT ALL IS GOOD TO GO\r\n        this.getUserInfoFromToken();\r\n      })\r\n      .catch((err: OAuthError) => {\r\n        this.updateOktaError(err);\r\n      });\r\n  }\r\n\r\n  private getUserInfoFromToken(): void {\r\n    if (this.oktaUserInfo.email) {\r\n      return;\r\n    }\r\n    this.tokenManager.getTokens()\r\n      .then((tokens) => {\r\n        this.newUserInfo(tokens?.accessToken?.claims);\r\n        // set a default url. If it exists, fine, if not, it will force the configured redirects to kick in\r\n        this.router.navigate([this.getActiveRoute() || '/home']);\r\n      })\r\n      .catch(() => {\r\n        this.getTokenWithRedirect();\r\n      });\r\n  }\r\n\r\n  private getTokenWithRedirect(): void {\r\n    this.oktaClient.token.getWithRedirect(this.tokenParams)\r\n      .catch((e) => console.log(e));\r\n  }\r\n\r\n  getCachedAccessToken(): string {\r\n    // TO BE USED IN CANACTIVE AND/OR CANLOAD AND/OR HTTP INTERCEPTOR\r\n    if (this.oktaClient && this.tokenManager) {\r\n      return this.oktaClient.getAccessToken() || '';\r\n    } else {\r\n      console.log('should never happen: tokenmanager is null! Nothing left to do but redirect');\r\n      this.getTokenWithRedirect();\r\n      return '';\r\n    }\r\n  }\r\n\r\n  updateOktaError(newState: OAuthError | null): void {\r\n    this.oktaError = newState;\r\n    this.ssService.setItem(this.SS_ERROR, this.oktaError);\r\n    this.newOktaError();\r\n  }\r\n\r\n  forceRetry(): void {\r\n    // METHOD THAT CAN BE CALLED BY WHICHEVER COMPONENT YOU HAVE TO HANDLE/DISPLAY OKTA ERRORS\r\n    // FOR EXAMPLE ON A BUTTON CLICK 'TRY AGAIN' SO USER CAN FORCE AN OKTA RETRY\r\n    this.updateOktaError(null);\r\n    this.getTokenWithRedirect();\r\n  }\r\n\r\n  private setActiveRoute(url: string): void {\r\n    this.lsService.setItem(this.LS_ACTIVEROUTE, url);\r\n  }\r\n\r\n  private getActiveRoute(): string {\r\n    return this.lsService.getItem(this.LS_ACTIVEROUTE) || '';\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  private newUserInfo(userInfo: UserClaims | undefined): void {\r\n    this.oktaUserInfo = new OktaUserModel(userInfo);\r\n    this.oktaUserInfo$.next(this.oktaUserInfo);\r\n  }\r\n\r\n  onNewUserInfo(): Observable<OktaUserModel> {\r\n    return this.oktaUserInfo$.asObservable();\r\n  }\r\n\r\n  getUserInfo(): OktaUserModel {\r\n    return UtilsService.copy(this.oktaUserInfo);\r\n  }\r\n\r\n  private newOktaError(): void {\r\n    this.oktaError$.next(this.oktaError);\r\n  }\r\n\r\n  onNewOktaError(): Observable<OAuthError | null> {\r\n    return this.oktaError$.asObservable();\r\n  }\r\n\r\n}\r\n","export declare type BgType = 'employee_solar' | 'kathu_mirrors' | 'outeiro_ccgt' | 'shem_mareges' | 'shem_thues' | 'tarfaya_windfarm';\r\n\r\nexport const BG_LIST = {\r\n  employee_solar: {url: './assets/images/bgs/employee_solar', alt: 'Employee at a solar plant'},\r\n  kathu_mirrors: {\r\n    url: './assets/images/bgs/kathu_mirrors',\r\n    alt: 'Cylindro-parabolic mirrors of Kathu Solar Park in South Africa'\r\n  },\r\n  outeiro_ccgt: {\r\n    url: './assets/images/bgs/outeiro_ccgt',\r\n    alt: 'Portugal Tapada do Outeiro combined cycle gas turbine power station'\r\n  },\r\n  shem_mareges: {url: './assets/images/bgs/shem_mareges', alt: 'SHEM Mareges hydro station'},\r\n  shem_thues: {url: './assets/images/bgs/shem_thues', alt: 'SHEM Thues hydro dam'},\r\n  tarfaya_windfarm: {url: './assets/images/bgs/tarfaya_windfarm', alt: 'The Tarfaya wind farm'},\r\n};\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {BG_LIST, BgType} from \"../_models/bg.model\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\n\r\n@Component({\r\n  selector: 'spaas-bg',\r\n  templateUrl: './bg.component.html',\r\n  styleUrls: ['./bg.component.scss']\r\n})\r\nexport class BgComponent extends BaseComponent implements OnInit {\r\n\r\n  imgExt = '.webp';\r\n  imgList = BG_LIST;\r\n\r\n  // LEFT: ALIGN BG IMG LEFT INSTEAD OF DEFAULT RIGHT\r\n  // PORTRAIT: SWITCHES BACKGROUND-SIZE FROM COVER TO AUTO (SO PORTRAIT IMGS ARE NOT STRETCHED OVER FULL WIDTH OF SCREEN)\r\n  @Input() bgX = 100;\r\n  @Input() bgY = 50;\r\n  @Input() bgPortrait = false;\r\n  @Input() bgImg: BgType = 'employee_solar';\r\n  @Input() bgAnimate = true;\r\n\r\n  bg: any;\r\n\r\n  ngOnInit(): void {\r\n    this.bg = this.imgList[this.bgImg];\r\n  }\r\n\r\n}\r\n","<div class=\"bg\">\r\n  <div class=\"bg__img-wrapper\"\r\n       [title]=\"bg.alt\"\r\n       [class.with-anim]=\"bgAnimate\"\r\n       [style.background-position-x.%]=\"bgX\"\r\n       [style.background-position-y.%]=\"bgY\"\r\n       [class.portrait]=\"bgPortrait\"\r\n       [style.background-image]=\"'url(' + bg.url + imgExt + ')'\">\r\n  </div>\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {timer} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {OktaService} from \"../_services/okta.service\";\r\nimport {BgType} from \"../_models/bg.model\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\nimport {EmbedModeService} from \"../_services/embed-mode.service\";\r\nimport {ConfigService} from \"../_services/config.service\";\r\nimport {SpaasExtConfigModel} from \"../_models/config.model\";\r\nimport {OAuthError} from \"@okta/okta-auth-js\";\r\n\r\n@Component({\r\n  selector: 'spaas-okta-intro',\r\n  templateUrl: './intro.component.html',\r\n  styleUrls: ['./intro.component.scss']\r\n})\r\n\r\nexport class IntroComponent extends BaseComponent {\r\n\r\n  @Input() introText = 'all good, loading your data';\r\n  @Input() checkingAccessText = 'checking your access';\r\n  @Input() tryAgainButtonTitle = 'try again';\r\n  @Input() contactGuardButtonTitle = 'contact guard';\r\n  @Input() goToSnowButtonTitle = 'request access in Snow';\r\n  @Input() bgImg: BgType = 'employee_solar';\r\n\r\n  isDone = false;\r\n  @Output() public introDone = new EventEmitter<boolean>();\r\n\r\n  oktaError: OAuthError | null = null;\r\n  userReceived = false;\r\n\r\n  isIframe = false;\r\n  config: SpaasExtConfigModel;\r\n\r\n  constructor(\r\n    private configService: ConfigService,\r\n    private embedModeService: EmbedModeService,\r\n    private oktaService: OktaService,\r\n  ) {\r\n    super();\r\n    this.config = this.configService.getConfig();\r\n    this.isIframe = this.embedModeService.getEmbedMode().isIframe();\r\n    this.onUserInfo();\r\n    this.onOktaError();\r\n  }\r\n\r\n  private onUserInfo(): void {\r\n    this.oktaService.onNewUserInfo()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (user) => {\r\n          if (user?.email) {\r\n            this.userReceived = true;\r\n            // emit that all is well, so the screen can already start rendering\r\n            this.introDone.emit(true);\r\n            // and only hide the okta itself after n ms\r\n            timer(1400)\r\n              .pipe(takeUntil(this.onDestroy$))\r\n              .subscribe(() => {\r\n                this.isDone = true;\r\n              });\r\n          }\r\n        }\r\n      );\r\n  }\r\n\r\n  private onOktaError(): void {\r\n    this.oktaService.onNewOktaError()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (error) => {\r\n          this.oktaError = error;\r\n        }\r\n      );\r\n  }\r\n\r\n  oktaTryAgain(): void {\r\n    this.oktaService.forceRetry();\r\n  }\r\n\r\n  contactGuard(): void {\r\n    const body = 'Following error was received trying to sign in to ' + this.config?.cleanAppName + ':\\r\\n\\r\\n' +\r\n      JSON.stringify(this.oktaError);\r\n    window.location.href = `mailto:5939@engie.com?subject=Okta sign-in error for ${this.config?.cleanAppName}&body=${encodeURIComponent(body)}`;\r\n  }\r\n\r\n  goToSnow(): void {\r\n   window.open('https://gemprod.service-now.com/gem', '_blank');\r\n  }\r\n\r\n}\r\n","@if (!isDone) {\r\n  <div [class.in-iframe]=\"isIframe\"\r\n       class=\"intro\">\r\n    @if (!isIframe) {\r\n      <div class=\"half-screen flex col center\">\r\n        <!-- LOGO -->\r\n        <div class=\"half-screen__logo flex center\">\r\n          <svg viewBox=\"0 0 512 256\">\r\n            <use [attr.xlink:href]=\"'../../assets/images/logo-engie.svg#svg1'\"></use>\r\n          </svg>\r\n        </div>\r\n        @if (oktaError) {\r\n          <!-- HAS OKTA ERROR -->\r\n          <div class=\"txt-center\">\r\n            <div class=\"txt-bold\">Bumped into an error:</div>\r\n            <div>{{ oktaError.message }}</div>\r\n            <div class=\"flex center pad-big-top column-gap-10\">\r\n              <button (click)=\"oktaTryAgain()\" class=\"primary\">\r\n                {{ tryAgainButtonTitle }}\r\n              </button>\r\n              @if ((oktaError.errorCode | lowercase) === 'access_denied') {\r\n                <button (click)=\"goToSnow()\" class=\"error\">\r\n                  {{ goToSnowButtonTitle }}\r\n                </button>\r\n              } @else {\r\n                <button (click)=\"contactGuard()\" class=\"error\">\r\n                  {{ contactGuardButtonTitle }}\r\n                </button>\r\n              }\r\n            </div>\r\n          </div>\r\n        } @else {\r\n          <!-- NO OKTA ERROR -->\r\n          <div class=\"txt-center pad-big-bottom\">\r\n            <div class=\"pad-big-bottom\">\r\n              {{ userReceived ? introText : checkingAccessText }}\r\n            </div>\r\n            <mat-progress-bar [mode]=\"'indeterminate'\"></mat-progress-bar>\r\n          </div>\r\n        }\r\n      </div>\r\n      <spaas-bg [bgImg]=\"bgImg\"></spaas-bg>\r\n    } @else {\r\n      <div>\r\n        loading embedded {{ config.cleanAppName }}\r\n        <mat-progress-bar [mode]=\"'indeterminate'\"></mat-progress-bar>\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n","import {Observable} from 'rxjs';\r\nimport {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\r\nimport {Inject, Injectable} from '@angular/core';\r\nimport {OktaService} from \"../_services/okta.service\";\r\nimport {SpaasConfigModel} from \"../_models/config.model\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class OktaAuthInterceptor implements HttpInterceptor {\r\n\r\n  private static checkUrlsToIntercept(urlsToIntercept: string[], url: string): boolean {\r\n    for (const curUrl of urlsToIntercept) {\r\n      if (url.startsWith(curUrl)) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  constructor(\r\n    @Inject(SpaasConfigModel) private readonly spaasConfig: SpaasConfigModel,\r\n    private oktaService: OktaService,\r\n  ) {\r\n  }\r\n\r\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n    let headers = req.headers;\r\n    if (req.method !== 'GET') {\r\n      headers = headers.set('Content-type', 'application/json');\r\n    }\r\n\r\n    if (\r\n      req.url.startsWith(this.spaasConfig.oktaConfig.url) ||\r\n      OktaAuthInterceptor.checkUrlsToIntercept(this.spaasConfig.oktaConfig.interceptUrls, req.url)\r\n    ) {\r\n\r\n      const token = this.oktaService.getCachedAccessToken();\r\n      headers = headers.set('Authorization', `Bearer ${token}`);\r\n      const authRequest = req.clone({headers: headers});\r\n      return next.handle(authRequest);\r\n\r\n    } else {\r\n\r\n      const authRequest = req.clone();\r\n      return next.handle(authRequest);\r\n\r\n    }\r\n  }\r\n\r\n}\r\n","export type ExportExtensionType = 'csv' | 'xlsx';\r\nexport type DecimalSeparatorType = 'dot' | 'comma';\r\n\r\n/**\r\n * Settings model, used by the settings component to store data on user settings and preferences\r\n *\r\n * @property {boolean} dark the application theme, defaults to light\r\n * @property {ExportExtensionType} exportExtension the preferred extension for data exports, either xlsx or csv\r\n * @property {DecimalSeparatorType} decimalSeparator the user's decimal separator in Excel, used for exporting and\r\n * importing data\r\n * @property {any} extraData any extra data that you want the user to set and store via the settings component\r\n */\r\n\r\nexport class SettingsModel {\r\n  dark: boolean;\r\n  exportExtension: ExportExtensionType;\r\n  decimalSeparator: DecimalSeparatorType;\r\n  extraData: any;\r\n\r\n  constructor(objIn: any) {\r\n    this.dark = objIn.hasOwnProperty('dark') ? objIn.dark : false; // if you update the default, also update material.scss default!!\r\n    this.decimalSeparator = objIn.decimalSeparator || 'dot';\r\n    this.exportExtension = objIn.exportExtension || 'xlsx';\r\n    this.extraData = objIn.extraData || {};\r\n  }\r\n\r\n  getCsvDelimiter(): string {\r\n    return this.decimalSeparator === 'comma' ? ';' : ',';\r\n  }\r\n\r\n}\r\n","import {BehaviorSubject, Observable} from 'rxjs';\r\nimport {Injectable} from '@angular/core';\r\nimport {LocalStorageService} from './local-storage.service';\r\nimport {SettingsModel} from '../_models/settings.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SettingsService {\r\n\r\n  private readonly LS_SETTINGS = 'settings';\r\n  private settings$ = new BehaviorSubject<SettingsModel>(new SettingsModel(this.lsService.getItem(this.LS_SETTINGS) || {}));\r\n\r\n  constructor(\r\n    private lsService: LocalStorageService,\r\n  ) {\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // LOAD DATA\r\n  // ********************************************************************************************************\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  newSettings(settings: SettingsModel) {\r\n    this.lsService.setItem(this.LS_SETTINGS, settings);\r\n    this.settings$.next(settings);\r\n  }\r\n\r\n  onNewSettings(): Observable<SettingsModel> {\r\n    return this.settings$.asObservable();\r\n  }\r\n\r\n  getSettings(): SettingsModel {\r\n    return this.settings$.getValue();\r\n  }\r\n\r\n}\r\n","export declare type ThemeType = '' | 'dark' | 'light';\r\nexport const DATA__HAS_MENU = {menu: 'yes'};\r\nexport const DATA__THEME_DARK = {theme: 'dark'};\r\nexport const DATA__THEME_LIGHT = {theme: 'light'};\r\n\r\nexport class ThemeModel {\r\n  name: ThemeType;\r\n  properties: any;\r\n\r\n  constructor(name: ThemeType, props: any) {\r\n    this.name = name;\r\n    this.properties = props;\r\n  }\r\n\r\n  getRgb(color: string, alpha = 1): string {\r\n    const h = Number(this.properties['--' + color + '-h']);\r\n    let s = Number(this.properties['--' + color + '-s'].replace('%', ''));\r\n    let l = Number(this.properties['--' + color + '-l'].replace('%', ''));\r\n\r\n    // Must be fractions of 1\r\n    s /= 100;\r\n    l /= 100;\r\n\r\n    const c = (1 - Math.abs(2 * l - 1)) * s,\r\n      x = c * (1 - Math.abs((h / 60) % 2 - 1)),\r\n      m = l - c / 2;\r\n    let r = 0,\r\n      g = 0,\r\n      b = 0;\r\n\r\n    if (0 <= h && h < 60) {\r\n      r = c;\r\n      g = x;\r\n      b = 0;\r\n    } else if (60 <= h && h < 120) {\r\n      r = x;\r\n      g = c;\r\n      b = 0;\r\n    } else if (120 <= h && h < 180) {\r\n      r = 0;\r\n      g = c;\r\n      b = x;\r\n    } else if (180 <= h && h < 240) {\r\n      r = 0;\r\n      g = x;\r\n      b = c;\r\n    } else if (240 <= h && h < 300) {\r\n      r = x;\r\n      g = 0;\r\n      b = c;\r\n    } else if (300 <= h && h < 360) {\r\n      r = c;\r\n      g = 0;\r\n      b = x;\r\n    }\r\n    r = Math.round((r + m) * 255);\r\n    g = Math.round((g + m) * 255);\r\n    b = Math.round((b + m) * 255);\r\n\r\n    return 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')';\r\n  }\r\n\r\n}\r\n\r\n// THEMES\r\n\r\n// IMPORTANT: IF YOU UPDATE THE SETTINGS FOR PRIMARY, ACCENT OR ERROR HERE,\r\n// ALSO UPDATE THEM IN MATERIAL.SCSS !\r\nexport const light = new ThemeModel(\r\n  'light',\r\n  {\r\n    '--primary-h': 204,\r\n    '--primary-s': '100%',\r\n    '--primary-l': '40%',\r\n    '--primary-op-min': 0.8,\r\n    '--primary-op-max': 0.4,\r\n    '--secondary-h': 27,\r\n    '--secondary-s': '93%',\r\n    '--secondary-l': '58%',\r\n    '--secondary-op-min': 0.8,\r\n    '--secondary-op-max': 0.4,\r\n    '--accent-h': 144,\r\n    '--accent-s': '100%',\r\n    '--accent-l': '27%',\r\n    '--accent-op-min': 0.95,\r\n    '--accent-op-max': 0.4,\r\n    '--error-h': 1,\r\n    '--error-s': '70%',\r\n    '--error-l': '53%',\r\n    '--error-op-min': 0.6,\r\n    '--error-op-max': 0.4,\r\n    '--bg-h': 0,\r\n    '--bg-s': '0%',\r\n    '--bg-l': '98%',\r\n    '--bg-accent': '-6%',\r\n    '--bg-lighten': '6%',\r\n    '--bg-darken': '-14%',\r\n    '--bg-op-overlay': 0.4,\r\n    '--bg-op-min': 0.84,\r\n    '--bg-op-max': 0.2,\r\n    '--color-h': 0,\r\n    '--color-s': '0%',\r\n    '--color-l': '13.4%',\r\n    '--color-op-min': 0.8,\r\n    '--color-op-max': 0.4,\r\n    '--disabled-h': 0,\r\n    '--disabled-s': '0%',\r\n    '--disabled-l': '62%',\r\n    '--disabled-op-min': 0.8,\r\n    '--disabled-op-max': 0.4,\r\n    '--table-even': '-8%',\r\n    '--table-odd': '-3%',\r\n    '--hover-lighten': '-12%',\r\n  }\r\n);\r\n\r\n// IMPORTANT: IF YOU UPDATE THE SETTINGS FOR PRIMARY, ACCENT OR ERROR HERE,\r\n// ALSO UPDATE THEM IN MATERIAL.SCSS !\r\nexport const dark = new ThemeModel(\r\n  'dark',\r\n  {\r\n    '--primary-h': 200,\r\n    '--primary-s': '75%',\r\n    '--primary-l': '55%',\r\n    '--primary-op-min': 0.8,\r\n    '--primary-op-max': 0.4,\r\n    '--secondary-h': 27,\r\n    '--secondary-s': '93%',\r\n    '--secondary-l': '58%',\r\n    '--secondary-op-min': 0.8,\r\n    '--secondary-op-max': 0.4,\r\n    '--accent-h': 136,\r\n    '--accent-s': '80%',\r\n    '--accent-l': '38%',\r\n    '--accent-op-min': 0.95,\r\n    '--accent-op-max': 0.4,\r\n    '--error-h': 1,\r\n    '--error-s': '70%',\r\n    '--error-l': '56%',\r\n    '--error-op-min': 0.6,\r\n    '--error-op-max': 0.4,\r\n    '--bg-h': 210,\r\n    '--bg-s': '16%',\r\n    '--bg-l': '10%',\r\n    '--bg-accent': '10%',\r\n    '--bg-lighten': '4%',\r\n    '--bg-darken': '-8%',\r\n    '--bg-op-overlay': 0.4,\r\n    '--bg-op-min': 0.84,\r\n    '--bg-op-max': 0.2,\r\n    '--color-h': 0,\r\n    '--color-s': '0%',\r\n    '--color-l': '98%',\r\n    '--color-op-min': 0.8,\r\n    '--color-op-max': 0.4,\r\n    '--disabled-h': 0,\r\n    '--disabled-s': '0%',\r\n    '--disabled-l': '49.4%',\r\n    '--disabled-op-min': 0.8,\r\n    '--disabled-op-max': 0.4,\r\n    '--table-even': '10%',\r\n    '--table-odd': '3%',\r\n    '--hover-lighten': '22%',\r\n  }\r\n);\r\n","import {Injectable} from '@angular/core';\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {Observable, ReplaySubject} from \"rxjs\";\r\nimport {dark, DATA__THEME_DARK, DATA__THEME_LIGHT, light, ThemeModel, ThemeType} from \"../_models/theme.model\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ThemeService {\r\n\r\n  private activeTheme = new ThemeModel('', {});\r\n  private activeTheme$ = new ReplaySubject<ThemeModel>(1);\r\n\r\n  constructor(\r\n    private settingsService: SettingsService,\r\n  ) {\r\n  }\r\n\r\n  // initTheme is called from the app-init.service\r\n  initTheme(): void {\r\n    if (!this.activeTheme?.name) {\r\n      this.setActiveTheme(this.settingsService.getSettings().dark ? 'dark' : 'light');\r\n    }\r\n  }\r\n\r\n  toggleTheme(): void {\r\n    if (this.activeTheme?.name === 'light') {\r\n      this.setActiveTheme('dark');\r\n    } else {\r\n      this.setActiveTheme('light');\r\n    }\r\n  }\r\n\r\n  setActiveTheme(theme: ThemeType): void {\r\n    // console.log('setting theme to ' + theme);\r\n    this.activeTheme = theme === 'dark' ? dark : light;\r\n    this.setCssVariables(this.activeTheme.properties);\r\n    this.setBodyData(theme === 'dark' ? DATA__THEME_DARK : DATA__THEME_LIGHT)\r\n    this.newTheme();\r\n  }\r\n\r\n  setCssVariables(props: any): void {\r\n    for (const prop in props) {\r\n      if (props.hasOwnProperty(prop)) {\r\n        document.documentElement.style.setProperty(prop, props[prop]);\r\n      }\r\n    }\r\n  }\r\n\r\n  setBodyData(props: any): void {\r\n    for (const prop in props) {\r\n      if (props.hasOwnProperty(prop)) {\r\n        document.body.dataset[prop] = props[prop];\r\n      }\r\n    }\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  private newTheme() {\r\n    this.activeTheme$.next(this.activeTheme);\r\n  }\r\n\r\n  onNewActiveTheme(): Observable<ThemeModel> {\r\n    return this.activeTheme$.asObservable();\r\n  }\r\n\r\n  getActiveTheme(): ThemeModel {\r\n    return this.activeTheme;\r\n  }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {FormControl} from \"@angular/forms\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\n\r\n/**\r\n * The toggle component provides a custom toggle-look for checkboxes,\r\n * in line with the Fluid UI theming.\r\n */\r\n@Component({\r\n  selector: 'spaas-toggle',\r\n  templateUrl: './toggle.component.html',\r\n})\r\n\r\nexport class ToggleComponent extends BaseComponent {\r\n\r\n  /** The boolean form control to bind to the toggle (checkbox) */\r\n  @Input({required: true}) ctrl: FormControl<boolean> = new FormControl<boolean>(false, {nonNullable: true});\r\n  /**\r\n   * The unique id to reference the input with (necessary for label binding). If you have multiple\r\n   *  toggles, like in each row of a table, you'd typically use the for-index for this\r\n   */\r\n  @Input({required: true}) id: string = '';\r\n\r\n  /** The label to display next to the toggle (clickable) */\r\n  @Input() label = '';\r\n  /** The label position, to the left or right of the toggle */\r\n  @Input() labelPosition: 'left' | 'right' = 'right';\r\n  /** Smaller subtext for underneath the label, usually to provide a more detailed description */\r\n  @Input() subText = '';\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n}\r\n","<div class=\"flex column-gap-7 width-fit-content\"\r\n     [ngClass]=\"labelPosition === 'right' ? 'row' : 'row-reverse txt-right'\">\r\n\r\n  <input type=\"checkbox\"\r\n         class=\"tgl tgl-flat\"\r\n         [formControl]=\"ctrl\"\r\n         [id]=\"'toggle_' + id\">\r\n  <label [for]=\"'toggle_' + id\" class=\"tgl-btn\"></label>\r\n\r\n  @if (label) {\r\n    <label [for]=\"'toggle_' + id\">\r\n      {{ label }}\r\n      @if (subText) {\r\n        <div class=\"tgl-subtxt\">\r\n          {{ subText }}\r\n        </div>\r\n      }\r\n    </label>\r\n  }\r\n\r\n</div>\r\n","import {Component, Input} from '@angular/core';\r\nimport {DecimalSeparatorType, ExportExtensionType, SettingsModel} from \"../_models/settings.model\";\r\nimport {SettingsService} from \"../_services/settings.service\";\r\nimport {OktaService} from \"../_services/okta.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {OktaUserModel} from \"../_models/okta.model\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\nimport {ThemeService} from \"../_services/theme.service\";\r\nimport {FormControl, FormGroup} from \"@angular/forms\";\r\n\r\nclass SettingsFormModel {\r\n  dark: FormControl<boolean>;\r\n  decimalSeparator: FormControl<DecimalSeparatorType>;\r\n  exportExtension: FormControl<ExportExtensionType>;\r\n\r\n  constructor(settings: SettingsModel) {\r\n    this.dark = new FormControl<boolean>(settings.dark, {nonNullable: true});\r\n    this.decimalSeparator = new FormControl<DecimalSeparatorType>(settings.decimalSeparator, {nonNullable: true});\r\n    this.exportExtension = new FormControl<ExportExtensionType>(settings.exportExtension, {nonNullable: true});\r\n  }\r\n}\r\n\r\n/**\r\n * Settings component that you can simply inject in an otherwise empty 'settings' screen.\r\n * To let the user choose some basic preferences like dark or light theme.\r\n * The component uses content projection to allow you to add any app-specific settings you want to persist.\r\n */\r\n\r\n@Component({\r\n  selector: 'spaas-settings',\r\n  templateUrl: './settings.component.html',\r\n  styleUrls: ['./settings.component.scss']\r\n})\r\nexport class SettingsComponent extends BaseComponent {\r\n\r\n  @Input() settingTitle = 'These are your settings';\r\n\r\n  @Input() darkModeButtonTitle = 'dark mode';\r\n  @Input() darkModeHintText = ' rest your eyes a bit, switch to dark mode';\r\n\r\n  @Input() exportDescriptionText = 'When downloading data, save as';\r\n  @Input() excelExportRadioText = 'Excel Workbook (.xlsx)';\r\n  @Input() csvExportRadioText = 'CSV file (.csv)';\r\n\r\n  @Input() decimalSeparatorText = 'Your decimal separator in Excel';\r\n  @Input() dotRadioText = 'dot';\r\n  @Input() commaRadioText = 'comma';\r\n\r\n  user = new OktaUserModel({});\r\n  settings: SettingsModel;\r\n  settingsForm: FormGroup<SettingsFormModel>;\r\n\r\n  constructor(\r\n    private oktaService: OktaService,\r\n    private settingsService: SettingsService,\r\n    private themeService: ThemeService,\r\n  ) {\r\n    super();\r\n    this.onNewUser();\r\n    this.settings = this.settingsService.getSettings();\r\n    this.settingsForm = new FormGroup<SettingsFormModel>(new SettingsFormModel(this.settings));\r\n  }\r\n\r\n  private onNewUser(): void {\r\n    this.oktaService.onNewUserInfo()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (user) => {\r\n          this.user = user;\r\n        }\r\n      );\r\n  }\r\n\r\n  onToggleTheme(): void {\r\n    this.updateSettings();\r\n    this.themeService.toggleTheme();\r\n  }\r\n\r\n  updateSettings(): void {\r\n    // update settings with the form values. Leave extraData untouched, not handled by this component\r\n    this.settings.dark = this.settingsForm.controls.dark.value;\r\n    this.settings.decimalSeparator = this.settingsForm.controls.decimalSeparator.value;\r\n    this.settings.exportExtension = this.settingsForm.controls.exportExtension.value;\r\n    // broadcast the new settings\r\n    this.settingsService.newSettings(this.settings);\r\n  }\r\n\r\n}\r\n","<div class=\"settings\">\r\n\r\n  <div class=\"half-screen\"\r\n       [formGroup]=\"settingsForm\">\r\n\r\n    <h3>{{ settingTitle }} {{ user.firstName ? ', ' + (user.firstName | titlecase) : '' }}</h3>\r\n\r\n    <!-- dark mode -->\r\n    <div>\r\n      <spaas-toggle id=\"dark\"\r\n                    [ctrl]=\"settingsForm.controls.dark\"\r\n                    [label]=\"darkModeButtonTitle\"\r\n                    [subText]=\"darkModeHintText\"\r\n                    (change)=\"onToggleTheme()\">\r\n      </spaas-toggle>\r\n    </div>\r\n\r\n    <!-- export type -->\r\n    <div>\r\n      {{ exportDescriptionText }}\r\n      <mat-radio-group aria-label=\"select an export type\"\r\n                       class=\"flex col\"\r\n                       [formControl]=\"settingsForm.controls.exportExtension\"\r\n                       (change)=\"updateSettings()\">\r\n        <mat-radio-button value=\"xlsx\">{{ excelExportRadioText }}</mat-radio-button>\r\n        <mat-radio-button value=\"csv\">{{ csvExportRadioText }}</mat-radio-button>\r\n      </mat-radio-group>\r\n    </div>\r\n\r\n    <!-- decimal separator -->\r\n    <div>\r\n      {{ decimalSeparatorText }}\r\n      <mat-radio-group aria-label=\"select a decimal separator\"\r\n                       class=\"flex col\"\r\n                       [formControl]=\"settingsForm.controls.decimalSeparator\"\r\n                       (change)=\"updateSettings()\">\r\n        <mat-radio-button value=\"dot\">{{ dotRadioText }}</mat-radio-button>\r\n        <mat-radio-button value=\"comma\">{{ commaRadioText }}</mat-radio-button>\r\n      </mat-radio-group>\r\n    </div>\r\n\r\n    <!-- projected content -->\r\n    <div>\r\n      <ng-content></ng-content>\r\n    </div>\r\n\r\n  </div>\r\n\r\n  <spaas-bg bgImg=\"employee_solar\"></spaas-bg>\r\n\r\n</div>\r\n","import {BehaviorSubject, Observable} from 'rxjs';\r\nimport {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class PreloaderService {\r\n\r\n  private preloaderMsgs: string[] = [];\r\n  private preloaderMsgs$ = new BehaviorSubject<string[]>([]);\r\n\r\n  // ********************************************************************************************************\r\n  // SAVE DATA\r\n  // ********************************************************************************************************\r\n\r\n  /**\r\n   * Activates the preloader overlay (\"<spaas-preloader>\" to be added to your app.component.html).\r\n   *\r\n   * @param preloaderMsg will be added to the list of messages, to be shown as feedback to the user.\r\n   */\r\n  start(preloaderMsg: string): void {\r\n    this.preloaderMsgs.push(preloaderMsg);\r\n    this.newPreloaderMsg();\r\n  }\r\n\r\n  /**\r\n   * Removes the \"preloaderMsg\" from the list of preloader messages.\r\n   *\r\n   * @param preloaderMsg message to be removed from the list. If the \"preloaderMsg\" was the last one on the list,\r\n   * the preloader overlay will be hidden.\r\n   */\r\n  stop(preloaderMsg: string): void {\r\n    this.preloaderMsgs = this.preloaderMsgs.filter((l) => l !== preloaderMsg);\r\n    this.newPreloaderMsg();\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  private newPreloaderMsg() {\r\n    this.preloaderMsgs$.next(this.preloaderMsgs);\r\n  }\r\n\r\n  onNewPreloaderMsg(): Observable<string[]> {\r\n    return this.preloaderMsgs$.asObservable();\r\n  }\r\n\r\n  getPreloaderMsgs(): string[] {\r\n    return JSON.parse(JSON.stringify(this.preloaderMsgs$.getValue()));\r\n  }\r\n\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {PreloaderService} from '../_services/preloader.service';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {BaseComponent} from \"../base/base.component\";\r\n\r\n@Component({\r\n  selector: 'spaas-preloader',\r\n  templateUrl: './preloader.component.html',\r\n  styleUrls: ['./preloader.component.scss']\r\n})\r\n\r\nexport class PreloaderComponent extends BaseComponent {\r\n\r\n  isActive = false;\r\n  mostRecent = '';\r\n\r\n  constructor(\r\n    private preloaderService: PreloaderService,\r\n  ) {\r\n    super();\r\n    this.preloaderService.onNewPreloaderMsg()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (msgs) => {\r\n          this.isActive = msgs.length > 0;\r\n          this.mostRecent = msgs[msgs.length - 1] || '';\r\n        }\r\n      );\r\n  }\r\n\r\n}\r\n","@if (isActive) {\r\n  <div class=\"preloader\">\r\n    <mat-progress-bar [mode]=\"'indeterminate'\" class=\"preloader__progbar\">\r\n    </mat-progress-bar>\r\n    <div class=\"preloader__text\">\r\n      {{ mostRecent }}\r\n    </div>\r\n  </div>\r\n}\r\n","import {BehaviorSubject, Observable} from 'rxjs';\r\nimport {Injectable} from '@angular/core';\r\n\r\n/*\r\nconst SLIDE_OUTS = {\r\n  dagResults: 'dag-results',\r\n  taskLogs: 'task-logs'\r\n} as const;\r\n\r\nexport type SlideOutType = typeof SLIDE_OUTS[keyof typeof SLIDE_OUTS];\r\n*/\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SlideOutService {\r\n\r\n  private soActive$ = new BehaviorSubject<string>('');\r\n\r\n  newSlideOut(slideOut: string): void {\r\n    if (slideOut === this.getSlideOut()) {\r\n      slideOut = '';\r\n    }\r\n    this.soActive$.next(slideOut);\r\n  }\r\n\r\n  onNewSlideOut(): Observable<string> {\r\n    return this.soActive$.asObservable();\r\n  }\r\n\r\n  getSlideOut(): string {\r\n    return this.soActive$.getValue();\r\n  }\r\n\r\n}\r\n","import {Component, OnDestroy} from '@angular/core';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {SlideOutService} from '../_services/slide-out.service';\r\nimport {BaseComponent} from \"../base/base.component\";\r\n\r\n@Component({\r\n  selector: 'spaas-slide-out',\r\n  templateUrl: './slide-out.component.html',\r\n  styleUrls: ['./slide-out.component.scss']\r\n})\r\n\r\nexport class SlideOutComponent extends BaseComponent implements OnDestroy {\r\n\r\n  soActive = '';\r\n\r\n  constructor(\r\n    private slideOutService: SlideOutService,\r\n  ) {\r\n    super();\r\n    this.getSmActive();\r\n  }\r\n\r\n  override ngOnDestroy() {\r\n    this.slideOutService.newSlideOut('');\r\n    super.ngOnDestroy()\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // LOAD DATA\r\n  // ********************************************************************************************************\r\n\r\n  private getSmActive(): void {\r\n    this.slideOutService.onNewSlideOut()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (sm) => {\r\n          this.soActive = sm;\r\n        }\r\n      );\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // UI\r\n  // ********************************************************************************************************\r\n\r\n  onClose(): void {\r\n    this.slideOutService.newSlideOut('');\r\n  }\r\n\r\n}\r\n","<div class=\"slide-out\"\r\n     [class.visible]=\"soActive\">\r\n  <div class=\"slide-out__close\"\r\n       [class.visible]=\"soActive\">\r\n    <mat-icon (click)=\"onClose()\">clear</mat-icon>\r\n  </div>\r\n  <ng-content select=\"spaas-slide-out-content\"></ng-content>\r\n</div>\r\n\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'spaas-slide-out-content',\r\n  templateUrl: './slide-out-content.component.html',\r\n  styleUrls: ['./slide-out.component.scss']\r\n})\r\n\r\nexport class SlideOutContentComponent {\r\n}\r\n","<div class=\"slide-out__content\">\r\n  <ng-content></ng-content>\r\n</div>\r\n","import {MatSnackBarModule} from \"@angular/material/snack-bar\";\r\nimport {MAT_RADIO_DEFAULT_OPTIONS, MatRadioModule} from \"@angular/material/radio\";\r\nimport {MatProgressBarModule} from \"@angular/material/progress-bar\";\r\nimport {NgModule} from \"@angular/core\";\r\nimport {MatIconModule} from \"@angular/material/icon\";\r\nimport {MatTooltipModule} from \"@angular/material/tooltip\";\r\nimport {MAT_FORM_FIELD_DEFAULT_OPTIONS} from \"@angular/material/form-field\";\r\nimport {MatBottomSheetModule} from \"@angular/material/bottom-sheet\";\r\nimport {DragDropModule} from \"@angular/cdk/drag-drop\";\r\n\r\n@NgModule({\r\n  exports: [\r\n    DragDropModule,\r\n    MatBottomSheetModule,\r\n    MatIconModule,\r\n    MatProgressBarModule,\r\n    MatRadioModule,\r\n    MatSnackBarModule,\r\n    MatTooltipModule,\r\n  ],\r\n  imports: [\r\n    DragDropModule,\r\n    MatBottomSheetModule,\r\n    MatIconModule,\r\n    MatProgressBarModule,\r\n    MatRadioModule,\r\n    MatSnackBarModule,\r\n    MatTooltipModule,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\r\n      useValue: {\r\n        subscriptSizing: 'dynamic'\r\n      }\r\n    },\r\n    {\r\n      provide: MAT_RADIO_DEFAULT_OPTIONS,\r\n      useValue: { color: 'primary' },\r\n    }\r\n  ]\r\n})\r\nexport class MaterialModule {\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {MatBottomSheetRef} from \"@angular/material/bottom-sheet\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\n\r\n@Component({\r\n  selector: 'spaas-new-version',\r\n  templateUrl: './new-version.component.html',\r\n  styleUrls: ['./new-version.component.scss']\r\n})\r\nexport class NewVersionComponent extends BaseComponent {\r\n\r\n  constructor(\r\n    private bottomSheetRef: MatBottomSheetRef<NewVersionComponent>,\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  reload(): void {\r\n    this.bottomSheetRef.dismiss();\r\n    window.location.reload();\r\n  }\r\n\r\n}\r\n","<div class=\"txt-center\">\r\n  new version available\r\n  <div class=\"flex center pad-big-top\">\r\n    <button class=\"primary bold\" (click)=\"reload()\">\r\n      load it now\r\n    </button>\r\n  </div>\r\n</div>\r\n","import {filter, timer} from 'rxjs';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {MatBottomSheet} from \"@angular/material/bottom-sheet\";\nimport {SwUpdate, VersionReadyEvent} from \"@angular/service-worker\";\nimport {NewVersionComponent} from \"../new-version/new-version.component\";\nimport {SpaasConfigModel} from \"../_models/config.model\";\nimport {NewVersionConfigModel} from \"../_models/new-version.model\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NewVersionService {\n\n  constructor(\n    @Optional() @Inject(SpaasConfigModel) private readonly spaasConfig: SpaasConfigModel,\n    private bottomSheet: MatBottomSheet,\n    private swUpdate: SwUpdate,\n  ) {\n    // we get the raw spaasConfig provided by the client app, not the one from the ConfigService (because\n    // this is called from appInit, so we cannot rely on the NewVersionConfigModel constructor making things clean.\n    // Hence, always do a new NewVersionConfigModel\n  }\n\n  getNewVersion(): void {\n    // LISTEN FOR NEW VERSIONS\n    if (!this.swUpdate?.isEnabled) {\n      return;\n    }\n    this.swUpdate.versionUpdates\n      .pipe(filter((evt): evt is VersionReadyEvent => evt.type === 'VERSION_READY'))\n      .subscribe(\n        () => {\n          const cfg = new NewVersionConfigModel(this.spaasConfig?.newVersionConfig || {});\n          this.bottomSheet.open(NewVersionComponent, {hasBackdrop: cfg.hasBackdrop});\n          this.startTimer();\n        }\n      );\n  }\n\n  private startTimer(): void {\n    const cfg = new NewVersionConfigModel(this.spaasConfig?.newVersionConfig || {});\n    if (cfg.reminder && cfg.hasBackdrop) {\n      // if reminder is set and hasBackdrop is true, just start the timer (if no backdrop, the pop-up will stay open, no need for a reminder)\n      // if the user has accepted the new version anyway, the page will reload\n      // and after page reload, the timer will not be started again, because there will no longer be a new version\n      timer(cfg.reminder * 60000, cfg.reminder * 60000)\n        .subscribe(() => {\n          this.bottomSheet.open(NewVersionComponent, {hasBackdrop: cfg.hasBackdrop});\n        })\n    }\n  }\n\n}\n","import {Component} from '@angular/core';\nimport {PwaInstallService} from '../_services/pwa-install.service';\nimport {MatBottomSheetRef} from \"@angular/material/bottom-sheet\";\nimport {BaseComponent} from \"../base/base.component\";\n\n@Component({\n  selector: 'spaas-pwa-install',\n  templateUrl: './pwa-install.component.html',\n  styleUrls: ['./pwa-install.component.scss']\n})\nexport class PwaInstallComponent extends BaseComponent {\n\n  constructor(\n    private bottomSheetRef: MatBottomSheetRef<PwaInstallComponent>,\n    private pwaInstallService: PwaInstallService,\n  ) {\n    super();\n  }\n\n  doInstall(): void {\n    this.pwaInstallService.doInstall();\n    this.bottomSheetRef.dismiss();\n  }\n\n  ignoreInstall(): void {\n    this.pwaInstallService.ignoreInstall();\n    this.bottomSheetRef.dismiss();\n  }\n\n}\n","<div class=\"txt-center\">\n  install as an app?\n  <div class=\"flex center column-gap-10 pad-big-top\">\n    <button class=\"error bold\" (click)=\"ignoreInstall()\">\n      no thanx\n    </button>\n    <button class=\"primary bold\" (click)=\"doInstall()\">\n      yes please\n    </button>\n  </div>\n</div>\n","import {fromEvent, timer} from 'rxjs';\nimport {Injectable} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {take} from 'rxjs/operators';\nimport {MatBottomSheet} from \"@angular/material/bottom-sheet\";\nimport {PwaInstallComponent} from \"../pwa-install/pwa-install.component\";\nimport {LocalStorageService} from \"./local-storage.service\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PwaInstallService {\n\n  private readonly LS_ALREADY_PROMPTED = 'installPrompted';\n\n  private promptEvent: any;\n\n  constructor(\n    private bottomSheet: MatBottomSheet,\n    private lsService: LocalStorageService,\n    private platform: Platform,\n  ) {\n  }\n\n  installPrompt() {\n    if (!this.platform.IOS) {\n      fromEvent(window, 'beforeinstallprompt')\n        .subscribe(\n          (e) => {\n            e.preventDefault();\n            this.promptEvent = e;\n            this.openBottomSheet();\n          }\n        );\n    } else {\n      const isInStandaloneMode = ('standalone' in window.navigator) && (window.navigator['standalone']);\n      if (!isInStandaloneMode) {\n        this.openBottomSheet();\n      }\n    }\n  }\n\n  private openBottomSheet() {\n    console.log('will prompt install');\n    if (this.lsService.getItem(this.LS_ALREADY_PROMPTED) === 'true') {\n      return;\n    }\n    timer(3000)\n      .pipe(take(1))\n      .subscribe(() => {\n        this.bottomSheet.open(PwaInstallComponent);\n      });\n  }\n\n  doInstall(): void {\n    this.promptEvent.prompt();\n  }\n\n  ignoreInstall(): void {\n    this.lsService.setItem(this.LS_ALREADY_PROMPTED, true);\n  }\n\n}\n","import {Injectable} from '@angular/core';\r\nimport {ThemeService} from \"./theme.service\";\r\nimport {EmbedModeService} from \"./embed-mode.service\";\r\nimport {PwaInstallService} from \"./pwa-install.service\";\r\nimport {NewVersionService} from \"./new-version.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AppInitService {\r\n\r\n  constructor(\r\n    private embedModeService: EmbedModeService,\r\n    private newVersionService: NewVersionService,\r\n    private pwaInstallService: PwaInstallService,\r\n    private themeService: ThemeService,\r\n  ) {\r\n  }\r\n\r\n  // initApp is called from the spaas.module using APP_INITIALIZER\r\n  initApp(): void {\r\n    this.embedModeService.setEmbedMode();\r\n    this.themeService.initTheme();\r\n    this.pwaInstallService.installPrompt();\r\n    this.newVersionService.getNewVersion();\r\n  }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {SlideOutService} from \"../_services/slide-out.service\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\nimport {MenuItemModel} from \"../_models/menu-item.model\";\r\nimport {ThemeService} from \"../_services/theme.service\";\r\nimport {DATA__HAS_MENU} from \"../_models/theme.model\";\r\nimport {EmbedModeService} from \"../_services/embed-mode.service\";\r\n\r\n@Component({\r\n  selector: 'spaas-menu',\r\n  templateUrl: './menu.component.html',\r\n  styleUrls: ['./menu.component.scss']\r\n})\r\n\r\nexport class MenuComponent extends BaseComponent {\r\n\r\n  /** The menu items to render in the DOM. */\r\n  @Input() menuItems: MenuItemModel[] = [];\r\n\r\n  mmActive = false;\r\n  so = '';\r\n  isIframe = false;\r\n\r\n  constructor(\r\n    private embedModeService: EmbedModeService,\r\n    private slideOutService: SlideOutService,\r\n    private themeService: ThemeService,\r\n  ) {\r\n    super();\r\n    this.isIframe = this.embedModeService.getEmbedMode().isIframe();\r\n    if (!this.isIframe) {\r\n      this.themeService.setBodyData(DATA__HAS_MENU);\r\n    }\r\n    this.onSo();\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // LOAD\r\n  // ********************************************************************************************************\r\n\r\n  private onSo(): void {\r\n    this.slideOutService.onNewSlideOut()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (so) => {\r\n          if (so) {\r\n            this.mmActive = false;\r\n          }\r\n        }\r\n      );\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // UI\r\n  // ********************************************************************************************************\r\n\r\n  // EVENT LISTENERS\r\n  onToggleMenu(): void {\r\n    this.mmActive = !this.mmActive;\r\n    if (this.mmActive) {\r\n      // menu active: close open slide-outs\r\n      this.slideOutService.newSlideOut('');\r\n    }\r\n  }\r\n\r\n}\r\n","@if (!isIframe) {\r\n  <div class=\"mm\">\r\n\r\n    <div (click)=\"onToggleMenu()\"\r\n         [class.active]=\"mmActive\"\r\n         class=\"mm__burger\">\r\n      <span></span>\r\n      <span></span>\r\n    </div>\r\n    <div [class.visible]=\"mmActive\"\r\n         class=\"mm__slide-out\">\r\n      @if (mmActive) {\r\n        <div class=\"mm__slide-out__items\">\r\n          @for (item of menuItems; track item) {\r\n            <div (click)=\"onToggleMenu()\"\r\n                 [routerLink]=\"item.rtrLink\"\r\n                 routerLinkActive=\"accent\">\r\n              {{ item.label }}\r\n            </div>\r\n          }\r\n        </div>\r\n        <div class=\"mm__slide-out__logo\">\r\n          <svg viewBox=\"0 0 512 256\">\r\n            <use [attr.xlink:href]=\"'assets/images/logo-engie.svg#svg1'\"></use>\r\n          </svg>\r\n        </div>\r\n      }\r\n    </div>\r\n  </div>\r\n}\r\n","export class ActiveRouteModel {\r\n  params: any;\r\n  queryParams: any;\r\n  url: string;\r\n\r\n  constructor(url: string, queryParams: any, params: any) {\r\n    this.params = params || {};\r\n    this.queryParams = queryParams || {};\r\n    this.url = url && url.startsWith('/') ? url.replace(/\\//g, ' ') : '';\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, ReplaySubject} from 'rxjs';\r\nimport {ActiveRouteModel} from '../_models/active-route.model';\r\nimport {Title} from '@angular/platform-browser';\r\nimport {ConfigService} from \"./config.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ActiveRouteService {\r\n\r\n  private activeRoute = new ActiveRouteModel('', {}, {});\r\n  private activeRoute$ = new ReplaySubject<ActiveRouteModel>(1);\r\n\r\n  constructor(\r\n    private configService: ConfigService,\r\n    private titleService: Title,\r\n  ) {\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  newActiveRoute(url: string, queryParams: any, params: any) {\r\n    this.activeRoute = new ActiveRouteModel(url, queryParams, params);\r\n    this.titleService.setTitle(\r\n      this.configService.getConfig().cleanAppName + ' - ' + this.activeRoute.url + ' | Engie'\r\n    );\r\n    this.activeRoute$.next(this.activeRoute);\r\n  }\r\n\r\n  onNewActiveRoute(): Observable<ActiveRouteModel> {\r\n    return this.activeRoute$.asObservable();\r\n  }\r\n\r\n  getActiveRoute(): ActiveRouteModel {\r\n    return this.activeRoute;\r\n  }\r\n\r\n}\r\n","import {ActiveRouteService} from '../_services/active-route.service';\r\nimport {Component, Input, OnInit} from '@angular/core';\r\nimport {BaseComponent} from \"../base/base.component\";\r\nimport {ThemeService} from \"../_services/theme.service\";\r\nimport {DATA__HAS_MENU} from \"../_models/theme.model\";\r\nimport {ConfigService} from \"../_services/config.service\";\r\n\r\n@Component({\r\n  selector: 'spaas-menu-side-bar',\r\n  templateUrl: './menu-side-bar.component.html',\r\n  styleUrls: ['./menu-side-bar.component.scss']\r\n})\r\nexport class MenuSideBarComponent extends BaseComponent implements OnInit {\r\n\r\n  @Input() titleText = '';\r\n\r\n  env = '';\r\n  fullEnv: string = ''\r\n\r\n  constructor(\r\n    private activeRouteService: ActiveRouteService,\r\n    private configService: ConfigService,\r\n    private themeService: ThemeService,\r\n  ) {\r\n    super();\r\n    // enable menu gutter and notify parent that iframe has menu\r\n    this.themeService.setBodyData(DATA__HAS_MENU);\r\n    this.setEnv();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.titleText) {\r\n      this.titleText = this.activeRouteService.getActiveRoute()?.url;\r\n    }\r\n  }\r\n\r\n  private setEnv(): void {\r\n    const config = this.configService.getConfig();\r\n    if (\r\n      config.environment &&\r\n      !config.environment.startsWith('local') &&\r\n      !config.environment.startsWith('prod')\r\n    ) {\r\n      this.env = config.environment.slice(0, 3);\r\n      this.fullEnv = config.environment;\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"mm-side-bar\">\r\n\r\n  @if (env) {\r\n    <div class=\"mm-side-bar__env {{env}}\"\r\n         matTooltipPosition=\"right\"\r\n         matTooltipClass=\"bg-error\"\r\n         matTooltip=\"you are on the {{fullEnv | uppercase}} environment\">\r\n      {{ env }}\r\n    </div>\r\n  }\r\n\r\n  <div class=\"mm-side-bar__title\">\r\n    {{ titleText }}\r\n  </div>\r\n\r\n  <ng-content select=\"spaas-menu-side-bar-icon\"></ng-content>\r\n\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {SlideOutService} from \"../_services/slide-out.service\";\r\nimport {BaseComponent} from \"../base/base.component\";\r\n\r\n@Component({\r\n  selector: 'spaas-menu-side-bar-icon',\r\n  templateUrl: './menu-side-bar-icon.component.html',\r\n  styleUrls: ['./menu-side-bar.component.scss']\r\n})\r\nexport class MenuSideBarIconComponent extends BaseComponent {\r\n\r\n  @Input() tooltipMsg = '';\r\n  @Input() withTopMargin = false;\r\n  @Input() withHover = true;\r\n  @Input() withDivider = false;\r\n\r\n  // GENERIC STATE INDICATORS FROM PARENT\r\n  @Input() isDisabled = false;\r\n\r\n  // TYPE TO INDICATE WHAT THIS ICON SHOULD DO WHEN CLICKED\r\n  @Input() soType = '';\r\n\r\n  // MOUSE-EVENT EMITTER IF NOT SO-TYPE\r\n  @Output() clicked = new EventEmitter<MouseEvent>();\r\n\r\n  activeSo = '';\r\n  isActive = false;\r\n\r\n  constructor(\r\n    private slideOutService: SlideOutService,\r\n  ) {\r\n    super();\r\n    this.getSoActive();\r\n  }\r\n\r\n  private getSoActive(): void {\r\n    this.slideOutService.onNewSlideOut()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      .subscribe(\r\n        (so) => {\r\n          this.activeSo = so;\r\n          this.isActive = this.soType !== '' && this.activeSo === this.soType;\r\n        }\r\n      );\r\n  }\r\n\r\n  onClick(e: MouseEvent): void {\r\n    if (this.soType) {\r\n      this.slideOutService.newSlideOut(this.soType);\r\n    } else if (!this.isDisabled) {\r\n      this.clicked.emit(e);\r\n    }\r\n  }\r\n\r\n}\r\n","<div class=\"mm-side-bar__icon\"\r\n     [style.--margin-top]=\"withTopMargin || withDivider ? '24px' : '0px'\"\r\n     [class.active]=\"isActive\"\r\n     [class.disabled]=\"isDisabled\"\r\n     [class.with-hover]=\"withHover\"\r\n     [class.with-divider]=\"withDivider\"\r\n     [matTooltip]=\"tooltipMsg\"\r\n     matTooltipPosition=\"right\"\r\n     (click)=\"onClick($event)\">\r\n  <ng-content></ng-content>\r\n</div>\r\n","import {AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\r\nimport {BaseComponent} from \"../base/base.component\";\r\nimport {EmbedModeService} from \"../_services/embed-mode.service\";\r\nimport {DomSanitizer, SafeResourceUrl} from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n  selector: 'spaas-embed',\r\n  templateUrl: './embed.component.html',\r\n  styleUrls: ['./embed.component.scss']\r\n})\r\n\r\nexport class EmbedComponent extends BaseComponent implements OnInit, AfterViewInit {\r\n\r\n  /** The url of the application to embed */\r\n  @Input() url: string = '';\r\n\r\n  /** Use as fullscreen component, or within parent div */\r\n  @Input() takeOver: boolean = false;\r\n\r\n  @ViewChild('iframe_div') iframeDiv: ElementRef | undefined;\r\n  safeUrl: SafeResourceUrl | undefined;\r\n\r\n  constructor(\r\n    private embedModeService: EmbedModeService,\r\n    private sanitizer: DomSanitizer,\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.url) {\r\n      this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.url);\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.embedModeService.embeddedWindow = this.iframeDiv?.nativeElement.contentWindow || null;\r\n  }\r\n\r\n}\r\n","@if (safeUrl) {\r\n  <div [class.fullscreen]=\"takeOver\"\r\n       class=\"embed flex\">\r\n    <iframe #iframe_div [src]=\"safeUrl\"></iframe>\r\n  </div>\r\n}\r\n","export class SyncScrollModel {\r\n  absX: number;\r\n  ratioVisible: number;\r\n  relX: number;\r\n\r\n  constructor() {\r\n    this.absX = 0;\r\n    this.ratioVisible = 0;\r\n    this.relX = 0;\r\n  }\r\n\r\n}\r\n","import {BehaviorSubject, Observable} from 'rxjs';\r\nimport {Injectable} from '@angular/core';\r\nimport {SyncScrollModel} from '../_models/sync-scroll.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SyncScrollService {\r\n\r\n  private scrollX$ = new BehaviorSubject<SyncScrollModel>({absX: 0, relX: 0, ratioVisible: 1});\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  newScrollX(x: SyncScrollModel) {\r\n    // console.log(x);\r\n    this.scrollX$.next(x);\r\n  }\r\n\r\n  onNewScrollX(): Observable<SyncScrollModel> {\r\n    return this.scrollX$.asObservable();\r\n  }\r\n\r\n}\r\n","import {Directive, ElementRef, HostListener, OnDestroy} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {SyncScrollService} from '../_services/sync-scroll.service';\r\nimport {SyncScrollModel} from '../_models/sync-scroll.model';\r\n\r\n@Directive({\r\n  selector: '[spaasSyncScroll]'\r\n})\r\nexport class SyncScrollDirective implements OnDestroy {\r\n\r\n  private curSync = new SyncScrollModel();\r\n\r\n  private onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private syncScrollService: SyncScrollService,\r\n  ) {\r\n    this.syncScrollService.onNewScrollX()\r\n      .pipe(takeUntil(this.onDestroy$))\r\n      // .pipe(debounceTime(40)) // TODO: evaluate whether to debounce or not\r\n      .subscribe(\r\n        (x) => {\r\n          this.curSync = x;\r\n          this.el.nativeElement.scrollLeft = x.absX;\r\n        }\r\n      );\r\n  }\r\n\r\n  @HostListener('scroll', ['$event']) onScroll(e: any) {\r\n    // only broadcast event if different scroll (to prevent slave components from also firing an update)\r\n    if (e.target.scrollLeft !== this.curSync?.absX) {\r\n      this.syncScrollService.newScrollX({\r\n        absX: e.target.scrollLeft,\r\n        relX: e.target.scrollLeft / e.target.scrollWidth,\r\n        ratioVisible: e.target.clientWidth / e.target.scrollWidth,\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.onDestroy$.next();\r\n  }\r\n\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {CdkDragEnd} from \"@angular/cdk/drag-drop\";\r\nimport {LocalStorageService} from \"../_services/local-storage.service\";\r\nimport {SessionStorageService} from \"../_services/session-storage.service\";\r\n\r\n@Component({\r\n  selector: 'spaas-resizer',\r\n  templateUrl: './resizer.component.html',\r\n  styleUrls: ['./resizer.component.scss']\r\n})\r\n\r\nexport class ResizerComponent implements OnInit {\r\n\r\n  @Input() sizePx = 324;\r\n  @Output() sizePxChange = new EventEmitter<number>();\r\n\r\n  @Input() minSizePx = 144;\r\n  @Input() maxSizePx = 9999;\r\n  @Input() resizeAxis: 'x' | 'y' = 'y';\r\n  @Input() storage: 'session' | 'local' = 'local';\r\n  @Input() storageId = '';\r\n\r\n  constructor(\r\n    private localStorageService: LocalStorageService,\r\n    private sessionStorageService: SessionStorageService,\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (Number.isNaN(Number(this.sizePx))) {\r\n      throw new Error('the value you provided for sizePx is not a number');\r\n    }\r\n  }\r\n\r\n  onDragResizeEnd(e: CdkDragEnd): void {\r\n    e.source.reset();\r\n    const inc = this.resizeAxis === 'y' ? e.distance.y : e.distance.x;\r\n    this.sizePx += inc;\r\n    this.sizePx = Math.min(Math.max(this.sizePx, this.minSizePx), this.maxSizePx);\r\n    this.sizePxChange.emit(this.sizePx);\r\n    if (this.storageId) {\r\n      if (this.storage === 'local') {\r\n        this.localStorageService.setItem(this.storageId, this.sizePx);\r\n      } else {\r\n        this.sessionStorageService.setItem(this.storageId, this.sizePx);\r\n      }\r\n    }\r\n  }\r\n\r\n}\r\n","<div (cdkDragEnded)=\"onDragResizeEnd($event)\"\r\n     [cdkDragLockAxis]=\"resizeAxis\"\r\n     [class.resize-x]=\"resizeAxis === 'x'\"\r\n     cdkDrag\r\n     class=\"resizer\">\r\n</div>\r\n","import {APP_INITIALIZER, ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from \"@angular/common/http\";\r\nimport {IntroComponent} from \"./intro/intro.component\";\r\nimport {OktaAuthInterceptor} from \"./_interceptors/okta-auth.interceptor\";\r\nimport {BgComponent} from \"./bg/bg.component\";\r\nimport {SpaasConfigModel} from \"./_models/config.model\";\r\nimport {SettingsComponent} from \"./settings/settings.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {PreloaderComponent} from \"./preloader/preloader.component\";\r\nimport {BaseComponent} from \"./base/base.component\";\r\nimport {SlideOutComponent} from \"./slide-out/slide-out.component\";\r\nimport {SlideOutContentComponent} from \"./slide-out/slide-out-content.component\";\r\nimport {MaterialModule} from \"./material.module\";\r\nimport {AppInitService} from \"./_services/app-init.service\";\r\nimport {MenuComponent} from \"./menu/menu.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {MenuSideBarComponent} from \"./menu-side-bar/menu-side-bar.component\";\r\nimport {MenuSideBarIconComponent} from \"./menu-side-bar/menu-side-bar-icon.component\";\r\nimport {EmbedComponent} from \"./embed/embed.component\";\r\nimport {SyncScrollDirective} from \"./_directives/sync-scroll.directive\";\r\nimport {NewVersionComponent} from \"./new-version/new-version.component\";\r\nimport {PwaInstallComponent} from \"./pwa-install/pwa-install.component\";\r\nimport {ResizerComponent} from \"./resizer/resizer.component\";\r\nimport {ServiceWorkerModule} from \"@angular/service-worker\";\r\nimport {ToggleComponent} from \"./toggle/toggle.component\";\r\n\r\n/**\r\n * The SpaasModule offers all building blocks needed for a bespoke SPaaS SPA.\r\n *\r\n *  <spaas-okta-intro> to display an intro for okta handling\r\n *  <spaas-preloader> to add a preloader to your app\r\n *  OktaAuthGuard to protect your routing\r\n *  OktaAuthInterceptor to automatically include the token in your http requests\r\n */\r\n@NgModule({\r\n  declarations: [\r\n    BaseComponent,\r\n    BgComponent,\r\n    EmbedComponent,\r\n    IntroComponent,\r\n    MenuComponent,\r\n    MenuSideBarComponent,\r\n    MenuSideBarIconComponent,\r\n    NewVersionComponent,\r\n    PreloaderComponent,\r\n    PwaInstallComponent,\r\n    ResizerComponent,\r\n    SettingsComponent,\r\n    SlideOutComponent,\r\n    SlideOutContentComponent,\r\n    SyncScrollDirective,\r\n    ToggleComponent,\r\n  ],\r\n  exports: [\r\n    BaseComponent,\r\n    BgComponent,\r\n    EmbedComponent,\r\n    IntroComponent,\r\n    MenuComponent,\r\n    MenuSideBarComponent,\r\n    MenuSideBarIconComponent,\r\n    PreloaderComponent,\r\n    ResizerComponent,\r\n    SettingsComponent,\r\n    SlideOutComponent,\r\n    SlideOutContentComponent,\r\n    SyncScrollDirective,\r\n    ToggleComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    HttpClientModule,\r\n    MaterialModule,\r\n    ReactiveFormsModule,\r\n    RouterModule,\r\n    ServiceWorkerModule.register('ngsw-worker.js', {enabled: !window.location.host.includes('localhost')}),\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: APP_INITIALIZER,\r\n      useFactory: (appInitService: AppInitService) => () => {\r\n        return appInitService.initApp();\r\n      },\r\n      deps: [AppInitService],\r\n      multi: true\r\n    },\r\n    {provide: HTTP_INTERCEPTORS, useClass: OktaAuthInterceptor, multi: true},\r\n  ]\r\n})\r\nexport class SpaasModule {\r\n  static forRoot(config: SpaasConfigModel): ModuleWithProviders<SpaasModule> {\r\n    return {\r\n      ngModule: SpaasModule,\r\n      providers: [{provide: SpaasConfigModel, useValue: config}]\r\n    };\r\n  }\r\n}\r\n","import { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {EmbedModeService} from \"../_services/embed-mode.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class EmbeddedOnlyGuard  {\r\n\r\n  constructor(\r\n    private embedModeService: EmbedModeService,\r\n    private router: Router,\r\n  ) {\r\n  }\r\n\r\n  private isIframe(): boolean | UrlTree {\r\n    const isIframe = this.embedModeService.getEmbedMode().isIframe();\r\n    if (!isIframe) {\r\n      // set default url to \"home\". If \"home\" does not exist, router will fall back to redirect config\r\n      return this.router.parseUrl('/home');\r\n    }\r\n    return isIframe;\r\n  }\r\n\r\n  // CAN LOAD: FOR FEATURE MODULES SECURITY\r\n  canLoad(route: Route) {\r\n    return this.isIframe();\r\n  }\r\n\r\n  // CAN ACTIVATE: FOR ROUTES SECURITY\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    return this.isIframe();\r\n  }\r\n\r\n  canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    return this.canActivate(route, state);\r\n  }\r\n\r\n}\r\n","import { ActivatedRouteSnapshot, Route, RouterStateSnapshot } from '@angular/router';\r\nimport {Injectable} from '@angular/core';\r\nimport {OktaService} from '../_services/okta.service';\r\nimport {ActiveRouteService} from \"../_services/active-route.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class OktaAuthGuard  {\r\n\r\n  constructor(\r\n    private activeRouteService: ActiveRouteService,\r\n    private oktaService: OktaService,\r\n  ) {\r\n  }\r\n\r\n  // CAN LOAD: FOR FEATURE MODULES SECURITY\r\n  canLoad(route: Route) {\r\n    return !!this.oktaService.getCachedAccessToken();\r\n  }\r\n\r\n  // CAN ACTIVATE: FOR ROUTES SECURITY\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    this.activeRouteService.newActiveRoute(state.url, route.queryParams, route.params);\r\n    return !!this.oktaService.getCachedAccessToken();\r\n  }\r\n\r\n  canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    return this.canActivate(route, state);\r\n  }\r\n\r\n}\r\n","/**\r\n * Enum used as msgType in the PostMessageModel. Will be used to know how to respond to a certain message.\r\n */\r\nexport enum PostMessageEnum {\r\n  'getTheme' = '1_getTheme',\r\n  'setTheme' = '2_setTheme',\r\n}\r\n\r\n/**\r\n * Model used to post messages from and to an iframe child app.\r\n *\r\n * @property {PostMessageEnum} msgType the type defined by PostMessageEnum. Will be used to know how\r\n * to respond to a certain message\r\n * @property {any} msgData any data you want to include in the PostMessage\r\n */\r\nexport class PostMessageModel {\r\n  msgType: PostMessageEnum;\r\n  msgData: any;\r\n\r\n  constructor(type: PostMessageEnum, data: any = '') {\r\n    this.msgType = type;\r\n    this.msgData = data;\r\n  }\r\n\r\n}\r\n","export const REGEX_DEC = '^-?(0|[1-9]\\\\d*)(\\\\.\\\\d+)?$';\r\nexport const REGEX_DEC_OR_HASH = '^[#]{1}$|^-?(0|[1-9]\\\\d*)(\\\\.\\\\d+)?$';\r\nexport const REGEX_INT = '^[-]?\\\\d*$'; // only integers, also negative\r\nexport const REGEX_INT_OR_1DEC = '^-?\\\\d+([.]\\\\d)?$';\r\nexport const REGEX_POSITIVE_INT = '^\\\\d+$';\r\n","import {Injectable} from '@angular/core';\r\nimport {fromEvent, Observable} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport {PostMessageEnum, PostMessageModel} from \"../_models/post-message.model\";\r\nimport {ThemeService} from \"./theme.service\";\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {EmbedModeService} from \"./embed-mode.service\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class PostMessageService {\r\n\r\n  constructor(\r\n    private embedModeService: EmbedModeService,\r\n    private settingsService: SettingsService,\r\n    private themeService: ThemeService,\r\n  ) {\r\n    this.onEmbedMode();\r\n    this.startListening();\r\n  }\r\n\r\n  private onEmbedMode(): void {\r\n    this.embedModeService.onNewEmbedMode()\r\n      .subscribe(\r\n        (mode) => {\r\n          if (mode?.isIframe()) {\r\n            // ask for theme from parent\r\n            this.postMessage(\r\n              window.parent,\r\n              new PostMessageModel(PostMessageEnum.getTheme)\r\n            );\r\n          }\r\n        }\r\n      );\r\n  }\r\n\r\n  private startListening(): void {\r\n    this.listenToPostMessages()\r\n      .subscribe(\r\n        (msg) => {\r\n\r\n          // **************************************\r\n          // MESSAGES TO BE PROCESSED BY PARENT\r\n\r\n          // request for theme\r\n          if (msg.msgType === PostMessageEnum.getTheme) {\r\n            console.log('parent received request for theme');\r\n            this.postMessage(\r\n              this.embedModeService.embeddedWindow,\r\n              new PostMessageModel(\r\n                PostMessageEnum.setTheme,\r\n                this.themeService.getActiveTheme().name\r\n              )\r\n            );\r\n          }\r\n\r\n          // **************************************\r\n          // MESSAGES TO BE PROCESSED BY CHILD\r\n\r\n          // set theme received from parent\r\n          if (msg.msgType === PostMessageEnum.setTheme) {\r\n            console.log('child received theme from parent: ' + msg.msgData);\r\n            const settings = this.settingsService.getSettings();\r\n            settings.dark = msg.msgData === 'dark';\r\n            this.settingsService.newSettings(settings);\r\n            this.themeService.setActiveTheme(msg.msgData);\r\n          }\r\n\r\n        }\r\n      );\r\n  }\r\n\r\n  /**\r\n   * When you've embedded a SPaaS app using an iframe, you can use this method to listen to\r\n   * the messages it will post. Some messages are automatically processed, check the doc.\r\n   */\r\n  listenToPostMessages(): Observable<PostMessageModel> {\r\n    return fromEvent<MessageEvent>(window, 'message')\r\n      .pipe(\r\n        map((m) =>\r\n          new PostMessageModel(m?.data?.msgType || '', m?.data?.msgData || '')\r\n        )\r\n      );\r\n  }\r\n\r\n  /**\r\n   * When you've embedded a SPaaS app in an iframe and want to reply to some messages it will post,\r\n   * you can use this method to do so.\r\n   *\r\n   * @param source the MessageEventSource of the iframe. You can retrieve its source by using\r\n   * '@ViewChild('your_iframe_div') iframeDiv: ElementRef;' and then get 'this.iframeDiv.nativeElement.contentWindow'\r\n   * @param msg the actual message to send to the child app in the iframe\r\n   */\r\n  postMessage(source: MessageEventSource | Window | null, msg: PostMessageModel): void {\r\n    if (source) {\r\n      source.postMessage(msg, {targetOrigin: '*'});\r\n    }\r\n  }\r\n\r\n}\r\n","import {Injectable, NgZone} from '@angular/core';\r\nimport {MatSnackBar, MatSnackBarConfig} from '@angular/material/snack-bar';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SnackbarService {\r\n\r\n  private confirm$: BehaviorSubject<string>;\r\n  private readonly sbConfig: MatSnackBarConfig;\r\n\r\n  private readonly DEF_DURATION = 6000;\r\n  private duration = this.DEF_DURATION;\r\n\r\n  static getConfirmId(type: string): string {\r\n    return type + '_' + performance.now();\r\n  }\r\n\r\n  constructor(\r\n    public snackbar: MatSnackBar,\r\n    private zone: NgZone,\r\n  ) {\r\n    this.confirm$ = new BehaviorSubject<string>('');\r\n    this.sbConfig = new MatSnackBarConfig();\r\n  }\r\n\r\n  /**\r\n   * Shows a Material snackbar.\r\n   *\r\n   * @param message the message to show in the snackbar\r\n   * @param action (optional) the message to show in the snackbar action button. When no action is provided, the button\r\n   * will not show\r\n   * @param append (optional, default true) specifies whether to append the new snackbar message to the previous one\r\n   * if a previous snackbar is still active\r\n   * @param duration (optional) set a one-time specific duration in milliseconds, just for this snackbar instance\r\n   */\r\n  message(\r\n    message: string,\r\n    action = '',\r\n    append = true,\r\n    duration = this.duration,\r\n  ) {\r\n    this.open(\r\n      message,\r\n      action,\r\n      append,\r\n      duration,\r\n      false,\r\n    )\r\n  }\r\n\r\n  /**\r\n   * Shows a Material snackbar as an error (red background).\r\n   *\r\n   * @param message the message to show in the snackbar\r\n   * @param action (optional) the message to show in the snackbar action button. When no action is provided, the button\r\n   * will not show\r\n   * @param append (optional, default true) specifies whether to append the new snackbar message to the previous one\r\n   * if a previous snackbar is still active\r\n   * @param duration (optional) set a one-time specific duration in milliseconds, just for this snackbar instance\r\n   */\r\n  error(\r\n    message: string,\r\n    action = '',\r\n    append = true,\r\n    duration = this.duration,\r\n  ) {\r\n    this.open(\r\n      message,\r\n      action,\r\n      append,\r\n      duration,\r\n      true,\r\n    )\r\n  }\r\n\r\n  private open(\r\n    message: string,\r\n    action: string,\r\n    append: boolean,\r\n    duration: number,\r\n    isError: boolean,\r\n  ) {\r\n    this.zone.run(() => {\r\n      if (append && this.snackbar._openedSnackBarRef?.instance?.data?.message) {\r\n        message = this.snackbar._openedSnackBarRef.instance.data.message + '\\n------\\n' + message;\r\n      }\r\n      // reset panelClass in case the previous snackbar was an error\r\n      this.sbConfig.panelClass = isError ? 'bg-error' : '';\r\n      this.sbConfig.duration = duration;\r\n      this.snackbar.open(message, action, this.sbConfig);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Shows a Material snackbar which awaits confirmation.\r\n   *\r\n   * @param message the message to show in the snackbar\r\n   * @param action the message to show in the snackbar action button. When no action is provided, the button\r\n   * will show \"Got it\"\r\n   * @param confirmId a unique identifier by which you can recognise the confirmation response\r\n   * that you get when listening to \"onNewConfirm\". Use static method \"SnackbarService.getConfirmId\" to get a unique id.\r\n   * @param duration (optional) set a one-time specific duration in milliseconds, just for this snackbar instance\r\n   */\r\n  confirm(\r\n    message: string,\r\n    action: string = 'Got it',\r\n    confirmId: string,\r\n    duration = this.duration,\r\n  ) {\r\n    this.zone.run(() => {\r\n      // reset panelClass in case the previous snackbar was an error\r\n      this.sbConfig.panelClass = '';\r\n      this.sbConfig.duration = duration;\r\n      const snack = this.snackbar.open(message, action, this.sbConfig);\r\n      snack.onAction()\r\n        .subscribe(\r\n          () => {\r\n            this.newConfirm(confirmId);\r\n          });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Set the global duration for all snackbars\r\n   *\r\n   * @param ms duration in milliseconds\r\n   */\r\n  setDuration(\r\n    ms: number,\r\n  ): void {\r\n    this.duration = ms;\r\n  }\r\n\r\n  /**\r\n   * Reset the global duration for all snackbars to default (6000)\r\n   */\r\n  resetDuration(): void {\r\n    this.duration = this.DEF_DURATION;\r\n  }\r\n\r\n  // ********************************************************************************************************\r\n  // BROADCAST DATA\r\n  // ********************************************************************************************************\r\n\r\n  private newConfirm(newConfirm: string) {\r\n    this.confirm$.next(newConfirm);\r\n  }\r\n\r\n  onNewConfirm(): Observable<string> {\r\n    return this.confirm$.asObservable();\r\n  }\r\n\r\n  close() {\r\n    this.zone.run(() => {\r\n      this.snackbar.dismiss();\r\n    });\r\n  }\r\n\r\n}\r\n","// MODULE\r\nexport * from './spaas.module';\r\n\r\n// COMPONENTS\r\nexport * from './base/base.component';\r\nexport * from './bg/bg.component';\r\nexport * from './embed/embed.component';\r\nexport * from './intro/intro.component';\r\nexport * from './menu-side-bar/menu-side-bar-icon.component';\r\nexport * from './menu-side-bar/menu-side-bar.component';\r\nexport * from './menu/menu.component';\r\nexport * from './preloader/preloader.component';\r\nexport * from './resizer/resizer.component';\r\nexport * from './settings/settings.component';\r\nexport * from './slide-out/slide-out-content.component';\r\nexport * from './slide-out/slide-out.component';\r\nexport * from './toggle/toggle.component';\r\n\r\n// DIRECTIVES\r\nexport * from './_directives/sync-scroll.directive';\r\n\r\n// GUARDS\r\nexport * from './_guards/embedded-only.guard';\r\nexport * from './_guards/okta-auth.guard';\r\n\r\n// MODELS AND CONSTANTS\r\nexport * from './_models/config.model';\r\nexport * from './_models/new-version.model';\r\nexport * from './_models/okta.model';\r\nexport * from './_models/post-message.model';\r\nexport * from './_models/regex.model';\r\nexport * from './_models/settings.model';\r\nexport * from './_models/theme.model';\r\n\r\n// SERVICES\r\nexport * from './_services/active-route.service';\r\nexport * from './_services/config.service';\r\nexport * from './_services/local-storage.service';\r\nexport * from './_services/new-version.service';\r\nexport * from './_services/okta.service';\r\nexport * from './_services/post-message.service';\r\nexport * from './_services/preloader.service';\r\nexport * from './_services/session-storage.service';\r\nexport * from './_services/settings.service';\r\nexport * from './_services/slide-out.service';\r\nexport * from './_services/snackbar.service';\r\nexport * from './_services/sync-scroll.service';\r\nexport * from './_services/theme.service';\r\nexport * from './_services/utils.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigService","i2.LocalStorageService","i4.SessionStorageService","i2.EmbedModeService","i3.OktaService","i5.BgComponent","i1.OktaService","i1.LocalStorageService","i1.SettingsService","i1","i2","i2.SettingsService","i3.ThemeService","i4","i6.BgComponent","i7.ToggleComponent","i8","i1.PreloaderService","i1.SlideOutService","i2.PwaInstallService","i3","i1.EmbedModeService","i2.NewVersionService","i3.PwaInstallService","i4.ThemeService","i2.SlideOutService","i1.ActiveRouteService","i2.ConfigService","i5","i1.SyncScrollService","i2.SessionStorageService","i2.OktaService"],"mappings":"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"}