{"version":3,"file":"ieeesa-npm-utility.mjs","sources":["../../../projects/utility/src/lib/assets/validations/date-and-time-validation.ts","../../../projects/utility/src/lib/assets/validations/time-format-validation.ts","../../../projects/utility/src/lib/components/alert/alert.component.ts","../../../projects/utility/src/lib/components/alert/alert.component.html","../../../projects/utility/src/lib/guards/deactivate.guard.ts","../../../projects/utility/src/lib/interceptors/error-handler.interceptor.ts","../../../projects/utility/src/lib/services/loader-notification.service.ts","../../../projects/utility/src/lib/interceptors/loader.interceptor.ts","../../../projects/utility/src/lib/services/storage.service.ts","../../../projects/utility/src/lib/services/auth.service.ts","../../../projects/utility/src/lib/interceptors/token.interceptor.ts","../../../projects/utility/src/lib/services/alerts.service.ts","../../../projects/utility/src/lib/services/app-insights.service.ts","../../../projects/utility/src/lib/services/config.service.ts","../../../projects/utility/src/lib/services/country-and-timezone.service.ts","../../../projects/utility/src/lib/services/error-logging.service.ts","../../../projects/utility/src/lib/services/error-message.service.ts","../../../projects/utility/src/lib/services/global-error-handler.service.ts","../../../projects/utility/src/lib/services/http.service.ts","../../../projects/utility/src/lib/services/user-idle-session.service.ts","../../../projects/utility/src/lib/services/loader.service.ts","../../../projects/utility/src/lib/utility.module.ts","../../../projects/utility/src/public-api.ts","../../../projects/utility/src/ieeesa-npm-utility.ts"],"sourcesContent":["import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport moment, { Moment } from 'moment';\r\n\r\n/**\r\n * Custom validator to validate startDateTime and endDateTime and return custom validation object.\r\n * @export\r\n * @param {string} controlName\r\n * @param {(string | null | Moment)} value\r\n * @return {*}  {ValidatorFn}\r\n */\r\n// TODO: Currently, below logic works for specific scenarios, need to revisit to make it reusable\r\nexport function dateAndTimeValidator(\r\n  controlName: string,\r\n  value: string | null | Moment,\r\n  startDate?: string | number | null,\r\n  endDate?: string | number | null\r\n): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    const formGroupValues = control?.parent?.value;\r\n    if (!formGroupValues || !controlName) {\r\n      return null;\r\n    }\r\n    if (formGroupValues && control.value) {\r\n      formGroupValues[controlName] = value ?? control.value;\r\n      if (\r\n        (formGroupValues.startDate || formGroupValues.endDate) &&\r\n        startDate &&\r\n        endDate\r\n      ) {\r\n        // Compare only the date portion (YYYY-MM-DD) to avoid timezone shift issues.\r\n        // Extract date strings and compare them lexicographically so that local/UTC\r\n        // offset differences do not cause false validation failures on boundary dates.\r\n        const startDateStr = moment(formGroupValues?.startDate).format('YYYY-MM-DD');\r\n        const endDateStr = moment(formGroupValues?.endDate).format('YYYY-MM-DD');\r\n        const eventStDateStr = moment(String(startDate)).format('YYYY-MM-DD');\r\n        const eventEdDateStr = moment(String(endDate)).format('YYYY-MM-DD');\r\n        // Meeting startDate must be >= event startDate AND <= event endDate (inclusive)\r\n        if (\r\n          controlName === 'startDate' &&\r\n          (startDateStr < eventStDateStr || startDateStr > eventEdDateStr)\r\n        ) {\r\n          return { invalidStartDateRange: true };\r\n        }\r\n        // Meeting endDate must be >= event startDate AND <= event endDate (inclusive)\r\n        if (\r\n          controlName === 'endDate' &&\r\n          (endDateStr < eventStDateStr || endDateStr > eventEdDateStr)\r\n        ) {\r\n          return { invalidEndDateRange: true };\r\n        }\r\n      }\r\n      if (\r\n        formGroupValues.startDate &&\r\n        formGroupValues.endDate &&\r\n        formGroupValues.startTime &&\r\n        formGroupValues.endTime\r\n      ) {\r\n        // Handle both plain string values and autocomplete object values ({ id, name })\r\n        const startTimeStr = typeof formGroupValues.startTime === 'object'\r\n          ? formGroupValues.startTime?.name\r\n          : formGroupValues.startTime;\r\n        const endTimeStr = typeof formGroupValues.endTime === 'object'\r\n          ? formGroupValues.endTime?.name\r\n          : formGroupValues.endTime;\r\n        if (!startTimeStr || !endTimeStr) {\r\n          return null;\r\n        }\r\n        const startDateTime = new Date(\r\n          formGroupValues?.startDate.format('YYYY-MM-DD') +\r\n            ' ' +\r\n            startTimeStr\r\n        );\r\n        const endDateTime = new Date(\r\n          formGroupValues?.endDate.format('YYYY-MM-DD') +\r\n            ' ' +\r\n            endTimeStr\r\n        );\r\n        if (\r\n          Date.parse(endDateTime.toString()) <=\r\n          Date.parse(startDateTime.toString())\r\n        ) {\r\n          return controlName === 'startDate'\r\n            ? { validStartDate: true }\r\n            : controlName === 'endDate'\r\n            ? { validEndDate: true }\r\n            : controlName === 'startTime'\r\n            ? { validStartTime: true }\r\n            : { validEndTime: true };\r\n        }\r\n        return null;\r\n      }\r\n      return null;\r\n    }\r\n    return null;\r\n  };\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\n/**\r\n * Shared validator for 24-hour time format (HH:mm).\r\n * Validates both plain string values and autocomplete object values ({ id, name }).\r\n *\r\n * Valid examples: \"00:00\", \"09:30\", \"23:59\"\r\n * Invalid examples: \"00:67\", \"24:00\", \"9:30\", \"abc\", \"\"\r\n *\r\n * Hours must be 00–23, minutes must be 00–59.\r\n *\r\n * @export\r\n * @return {ValidatorFn} Angular validator function that returns { invalidTimeFormat: true } on failure\r\n */\r\nexport function timeFormatValidator(): ValidatorFn {\r\n  const timeRegex = /^([01]\\d|2[0-3]):[0-5]\\d$/;\r\n\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    const value = control.value;\r\n\r\n    if (!value) {\r\n      return null; // Empty is valid (use Validators.required separately if needed)\r\n    }\r\n\r\n    // If value is an object from autocomplete selection (e.g., { id: \"09:30\", name: \"09:30\" })\r\n    if (typeof value === 'object' && value?.name) {\r\n      return timeRegex.test(value.name) ? null : { invalidTimeFormat: true };\r\n    }\r\n\r\n    // If value is a raw string (user typed)\r\n    if (typeof value === 'string') {\r\n      return timeRegex.test(value) ? null : { invalidTimeFormat: true };\r\n    }\r\n\r\n    return { invalidTimeFormat: true };\r\n  };\r\n}\r\n","import {\r\n  Component,\r\n  Inject,\r\n  NgIterable,\r\n  OnInit,\r\n  SecurityContext,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MAT_DIALOG_DATA,\r\n  MatDialogRef,\r\n  MatDialogModule,\r\n} from '@angular/material/dialog';\r\nimport { AlertType } from '@ieeesa-npm/models';\r\nimport { AlertData } from '../../models/alert-data.model';\r\nimport * as alertInfo from '../../assets/constants.json';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n/**\r\n * AlertComponent is used to show alert message for client side or server side success, error and warnings messages and this component should be invoked by using Angular material MatDialog open method.\r\n * @usageNotes -Pass AlertComponent data options as parameters to MatDialog open method as given below\r\n this.dialog.open(AlertComponent, {data: {}})\r\n * @class AlertComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-alert',\r\n  standalone: true,\r\n  imports: [CommonModule, MatDialogModule],\r\n  templateUrl: './alert.component.html',\r\n  styleUrls: ['./alert.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AlertComponent implements OnInit {\r\n  message!: string | NgIterable<string> | Array<string>;\r\n  alertType!: AlertType;\r\n  alertTypes = AlertType;\r\n  isCloseNeeded = false;\r\n  isHtmlContent = false;\r\n  closeAriaLabel = alertInfo?.ariaLabel?.close;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-explicit-any\r\n    @Inject(MAT_DIALOG_DATA) public alertData: AlertData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<AlertComponent>,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private sanitizer: DomSanitizer\r\n  ) {}\r\n\r\n  /**\r\n   * Initializes the component.\r\n   * @return -returns nothing\r\n   */\r\n  ngOnInit(): void {\r\n    const { message, alertType, isCloseNeeded, isHtmlContent } = this.alertData;\r\n    this.message = message;\r\n    this.alertType = alertType;\r\n    this.isCloseNeeded = isCloseNeeded || this.isCloseNeeded;\r\n    this.isHtmlContent = isHtmlContent || this.isHtmlContent;\r\n  }\r\n\r\n  /**\r\n   * Takes the index as argument and needs to return the unique identifier.\r\n   * @param {number} index -The index of the item in the ngFor loop.\r\n   * @return {number} -The index itself.\r\n   * @memberof AlertComponent\r\n   */\r\n  trackByFn(index: number): number {\r\n    return index;\r\n  }\r\n\r\n  /**\r\n   * Sanitizes HTML content for safe rendering.\r\n   * @param {string} value - The HTML string to sanitize.\r\n   * @return {string} - The sanitized HTML string.\r\n   * @memberof AlertComponent\r\n   */\r\n  sanitizeHtml(value: string): string {\r\n    return this.sanitizer.sanitize(SecurityContext.HTML, value) || '';\r\n  }\r\n\r\n  /**\r\n   * Checks if a value is an array.\r\n   * @param {(string | NgIterable<string> | Array<string>)} value -The value to be verified whether its an array or not.\r\n   * @return {boolean} -returns true if the value is an array, else false.\r\n   * @memberof AlertComponent\r\n   */\r\n  isArray(value: string | NgIterable<string> | Array<string>): boolean {\r\n    return Array.isArray(value);\r\n  }\r\n}\r\n","<div\r\n  *ngIf=\"message\"\r\n  mat-dialog-content\r\n  class=\"ieeesa-alert-box row m-0 flex-align-center\"\r\n  [ngClass]=\"{\r\n    'ieeesa-alert-box--error': alertType === alertTypes.ERROR,\r\n    'ieeesa-alert-box--success': alertType === alertTypes.SUCCESS,\r\n    'ieeesa-alert-box--warning': alertType === alertTypes.WARNING,\r\n    'ieeesa-alert-box--info': alertType === alertTypes.INFO\r\n  }\"\r\n>\r\n  <ng-container *ngIf=\"isArray(message); else singleMessage\">\r\n    <ul\r\n      class=\"ieeesa-alert-box__message ieeesa-body-md-16 col-10 col-sm-11 m-0\"\r\n    >\r\n      <ng-container\r\n        *ngIf=\"\r\n          isHtmlContent;\r\n          then multiMessageHtmlContent;\r\n          else multiMessageNonHtmlContent\r\n        \"\r\n      >\r\n      </ng-container>\r\n      <ng-template #multiMessageNonHtmlContent>\r\n        <li\r\n          class=\"ieeesa-alert-box__message__item\"\r\n          [ngClass]=\"{\r\n            'ieeesa-alert-box__message--info': alertType === alertTypes.INFO,\r\n            'ieeesa-alert-box__message--error': alertType === alertTypes.ERROR\r\n          }\"\r\n          *ngFor=\"let item of message; trackBy: trackByFn\"\r\n        >\r\n          {{ item }}\r\n        </li>\r\n      </ng-template>\r\n      <ng-template #multiMessageHtmlContent>\r\n        <li\r\n          class=\"ieeesa-alert-box__message__item\"\r\n          [ngClass]=\"{\r\n            'ieeesa-alert-box__message--info': alertType === alertTypes.INFO,\r\n            'ieeesa-alert-box__message--error': alertType === alertTypes.ERROR\r\n          }\"\r\n          *ngFor=\"let item of message; trackBy: trackByFn\"\r\n          [innerHTML]=\"sanitizeHtml(item)\"\r\n        ></li>\r\n      </ng-template>\r\n    </ul>\r\n  </ng-container>\r\n\r\n  <ng-template #singleMessage>\r\n    <ng-container *ngIf=\"isHtmlContent; then htmlContent; else nonHtmlContent\">\r\n    </ng-container>\r\n  </ng-template>\r\n  <ng-template #htmlContent>\r\n    <p\r\n      class=\"ieeesa-alert-box__message ieeesa-body-md-16 col-10 col-sm-11 m-0\"\r\n      [ngClass]=\"{\r\n        'ieeesa-alert-box__message--info': alertType === alertTypes.INFO,\r\n        'ieeesa-alert-box__message--error': alertType === alertTypes.ERROR\r\n      }\"\r\n      [innerHTML]=\"sanitizeHtml(message + '')\"\r\n    ></p>\r\n  </ng-template>\r\n  <ng-template #nonHtmlContent>\r\n    <p\r\n      class=\"ieeesa-alert-box__message ieeesa-body-md-16 col-10 col-sm-11 m-0\"\r\n      [ngClass]=\"{\r\n        'ieeesa-alert-box__message--info': alertType === alertTypes.INFO,\r\n        'ieeesa-alert-box__message--error': alertType === alertTypes.ERROR\r\n      }\"\r\n    >\r\n      {{ message }}\r\n    </p>\r\n  </ng-template>\r\n  <button\r\n    type=\"button\"\r\n    *ngIf=\"isCloseNeeded\"\r\n    class=\"ieeesa-alert-box__close-button col-2 col-sm-1\"\r\n    [aria-label]=\"closeAriaLabel\"\r\n    [mat-dialog-close]=\"true\"\r\n  >\r\n    <i\r\n      class=\"ieeesa-alert-box__close-icon fa fa-close\"\r\n      [ngClass]=\"{\r\n        'ieeesa-alert-box__close-icon--info': alertType === alertTypes.INFO,\r\n        'ieeesa-alert-box__close-icon--error': alertType === alertTypes.ERROR\r\n      }\"\r\n    ></i>\r\n  </button>\r\n</div>\r\n","import { Observable } from 'rxjs';\r\nimport { CanDeactivateFn, UrlTree } from '@angular/router';\r\ntype CanDeactivateType =\r\n  | Observable<boolean | UrlTree>\r\n  | Promise<boolean | UrlTree>\r\n  | boolean\r\n  | UrlTree;\r\nexport interface DeactivateComponent {\r\n  canDeactivate: () => CanDeactivateType;\r\n}\r\n\r\n/**\r\n * DeactivateGuard method gets the instance of the component being deactivated as first argument.\r\n * @param {deactivateGuard} Guard\r\n * @return {boolean} Returns true or false based on the component canDeactivate method & its return value. Redirection on routing is allowed when the method returns true, else route will be deactivated.\r\n */\r\n\r\nexport const deactivateGuard: CanDeactivateFn<DeactivateComponent> = (\r\n  component: DeactivateComponent\r\n) => {\r\n  return component.canDeactivate();\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n  HttpRequest,\r\n  HttpHandler,\r\n  HttpEvent,\r\n  HttpInterceptor,\r\n  HttpErrorResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, catchError, map, retry, throwError } from 'rxjs';\r\n/**\r\n * This service is defined to catch the errors of every Http requests.\r\n * @export\r\n * @class ErrorHandlerInterceptorService\r\n * @implements {HttpInterceptor}\r\n */\r\n@Injectable()\r\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\r\n  intercept(\r\n    request: HttpRequest<unknown>,\r\n    next: HttpHandler\r\n  ): Observable<HttpEvent<unknown>> {\r\n    return next\r\n      .handle(request)\r\n      .pipe(\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        map((event: HttpEvent<any>) => {\r\n          return event;\r\n        })\r\n      )\r\n      .pipe(retry(1), catchError(this.handleError));\r\n  }\r\n  /**\r\n   * HandleError method receives the error response and throws the error for global handler to handle further\r\n   * @param {HttpErrorResponse} error\r\n   * @return {error}\r\n   * @memberof ErrorHandlerInterceptorService\r\n   */\r\n  handleError(error: HttpErrorResponse): Observable<HttpEvent<unknown>> {\r\n    return throwError(() => error);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, share } from 'rxjs';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class LoaderNotificationService {\r\n  loading$ = new BehaviorSubject<boolean>(false);\r\n  show(): void {\r\n    this.loading$.next(true);\r\n  }\r\n  hide(): void {\r\n    this.loading$.next(false);\r\n  }\r\n\r\n  isLoading(): Observable<boolean> {\r\n    return this.loading$.asObservable().pipe(share());\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n  HttpEvent,\r\n  HttpHandler,\r\n  HttpInterceptor,\r\n  HttpRequest,\r\n  HttpResponse,\r\n} from '@angular/common/http';\r\nimport { LoaderNotificationService } from '../services/loader-notification.service';\r\n\r\nimport { finalize, Observable, tap } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  httpRequests: any[] = [];\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(public loaderNotificationService: LoaderNotificationService) {}\r\n\r\n  intercept(\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    request: HttpRequest<any>,\r\n    next: HttpHandler\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<HttpEvent<any>> {\r\n    this.loaderNotificationService.show();\r\n    this.httpRequests.push(request);\r\n    return next.handle(request).pipe(\r\n      tap({\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        next: (event: HttpEvent<any>) => {\r\n          if (event instanceof HttpResponse) {\r\n            this.removeCompletedRequest(request);\r\n          }\r\n        },\r\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars, @typescript-eslint/no-explicit-any\r\n        error: (err: any) => {\r\n          this.removeCompletedRequest(request);\r\n        },\r\n      }),\r\n      // Ensures the request is removed even when the subscriber unsubscribes\r\n      // (e.g., resolver Observable cancelled on back navigation) so the\r\n      // spinner does not stay stuck indefinitely.\r\n      finalize(() => {\r\n        const index = this.httpRequests.indexOf(request);\r\n        if (index >= 0) {\r\n          this.httpRequests.splice(index, 1);\r\n          if (this.httpRequests.length === 0) {\r\n            this.loaderNotificationService.hide();\r\n          }\r\n        }\r\n      })\r\n    );\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n  removeCompletedRequest(request: HttpRequest<any>): void {\r\n    this.httpRequests.pop();\r\n    if (this.httpRequests.length === 0) {\r\n      this.loaderNotificationService.hide();\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * @enum StorageKeys creates keys and values and these keys are used to storage a value to storage.\r\n * @enum {string}\r\n */\r\nexport enum StorageKeys {\r\n  // eslint-disable-next-line no-unused-vars\r\n  USER_INFO = 'USER_INFO',\r\n  // eslint-disable-next-line no-unused-vars\r\n  AUTH_TOKEN = 'PAT',\r\n  // eslint-disable-next-line no-unused-vars\r\n  VISITED_ROUTE = 'VISITED_ROUTE',\r\n}\r\n\r\n/**\r\n * StorageService provides methods to interact with the browser's storage (localStorage).\r\n * It allows storing and retrieving data using key-value pairs.\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class StorageService {\r\n  /**\r\n   * Retrieves the value associated with the given key from the storage\r\n   * @param {string} key -The key used to identify the value.\r\n   * @returns {any | null} -The value associated with the key, or null if the key is not found.\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  getValue(key: string): any | null {\r\n    try {\r\n      const value = localStorage.getItem(key);\r\n      return value ? JSON.parse(value) : value;\r\n    } catch (e) {\r\n      if (e instanceof SyntaxError) {\r\n        return localStorage.getItem(key);\r\n      }\r\n      throw new Error('Error in getting item from local storage : ' + e);\r\n    }\r\n  }\r\n  /**\r\n   * Sets the value associated with the given key in the storage\r\n   * @param {string} key -The key used to identify the value.\r\n   * @param {any} value -The value to be stored.\r\n   * @return -returns nothing\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  setValue(key: string, value: any): void {\r\n    try {\r\n      if (typeof value === 'string') {\r\n        localStorage.setItem(key, value);\r\n      } else {\r\n        localStorage.setItem(key, JSON.stringify(value));\r\n      }\r\n    } catch (e) {\r\n      throw new Error('Error in setting item to local storage : ' + e);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Removes the value associated with the given key from the storage.\r\n   * @param {string} key -The key used to identify the value.\r\n   * @return -returns nothing\r\n   */\r\n  removeValue(key: string): void {\r\n    try {\r\n      localStorage.removeItem(key);\r\n    } catch (e) {\r\n      throw new Error('Error in removing item from local storage : ' + e);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Clears all key-value pairs from the storage.\r\n   * @return -returns nothing\r\n   */\r\n  clearStorage(): void {\r\n    try {\r\n      localStorage.clear();\r\n    } catch (e) {\r\n      throw new Error('Error in clearing local storage : ' + e);\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CookieOptions, CookieService } from 'ngx-cookie-service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n  constructor(\r\n    /* eslint-disable no-unused-vars */\r\n    public cookieService: CookieService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * This method extracts the cookie from browser and returns it.\r\n   * @return {cookieToken}\r\n   * @memberof AuthService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  getCookie(cookieName: string): any | null {\r\n    try {\r\n      return this.cookieService.get(cookieName);\r\n    } catch (e) {\r\n      throw new Error('Error in retrieving the cookie : ' + e);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * This method sets cookie in the browser\r\n   * @return {void}\r\n   * @memberof AuthService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  setCookie(cookieName: string, cookieValue: string, cookieOptions?: CookieOptions) {\r\n    try {\r\n      if (cookieOptions) {\r\n        this.cookieService.set(cookieName, cookieValue, cookieOptions);\r\n      } else {\r\n        this.cookieService.set(cookieName, cookieValue);\r\n      }\r\n    } catch (e) {\r\n      throw new Error('Error in setting the cookie : ' + e);\r\n    }\r\n  }\r\n\r\n\r\n   /**\r\n   * This method deletes the cookie from browser.\r\n   * @return {void}\r\n   * @memberof AuthService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  deleteCookie(cookieName: string, path?: string, domain?: string) {\r\n    try {\r\n      if (path && domain) {\r\n        this.cookieService.delete(cookieName, path, domain);\r\n      } else {\r\n        this.cookieService.delete(cookieName);\r\n      }\r\n    } catch (e) {\r\n      throw new Error('Error in deleting the cookie : ' + e);\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n  HttpRequest,\r\n  HttpHandler,\r\n  HttpEvent,\r\n  HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { StorageKeys, StorageService } from '../services/storage.service';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n  cookieName!: string;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private authService: AuthService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private storageService: StorageService\r\n  ) {\r\n    this.cookieName = this.storageService.getValue(StorageKeys.AUTH_TOKEN);\r\n  }\r\n\r\n  /**\r\n   *It intercepts every http request and injects authorization token as bearer token of Http request header.\r\n   * @param {HttpRequest<any>} request\r\n   * @param {HttpHandler} next\r\n   * @return {Observable<HttpEvent<any>>}\r\n   * @memberof TokenInterceptor\r\n   */\r\n  intercept(\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    request: HttpRequest<any>,\r\n    next: HttpHandler\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<HttpEvent<any>> {\r\n    request = request.clone({\r\n      setHeaders: {\r\n        Authorization: `Bearer ${this.authService.getCookie(this.cookieName)}`,\r\n      },\r\n    });\r\n    return next.handle(request);\r\n  }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subject, of, takeUntil } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport * as errorInformation from '../assets/constants.json';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AlertComponent } from '../components/alert/alert.component';\r\nimport { AlertType } from '@ieeesa-npm/models';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AlertsService implements OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  message!: string | string[];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  errorInfo: any = errorInformation;\r\n  isAlertClosed: Subject<boolean> = new Subject<boolean>();\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private router: Router,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialog: MatDialog // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n  /**\r\n   * Show messages will route to the relevant error page based upon the error type and code\r\n   * It defines the specific error messages for each error code and displays notifier basis on the code types\r\n   * @param {any} error\r\n   * @return {Observable<any>}\r\n   * @memberof AlertsService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  showMessage(error: any, isCloseNeeded = true): Observable<any> {\r\n    const getErrorMessage = this.errorInfo['errorMessage'];\r\n    let isModalNeeded = true;\r\n    switch (error.status) {\r\n      case 'custom':\r\n        this.message = error.message;\r\n        break;\r\n      case 400:\r\n        this.message = getErrorMessage.ER400;\r\n        break;\r\n      case 401:\r\n        this.message = getErrorMessage.ER401;\r\n        isModalNeeded = false;\r\n        this.router.navigate(['renew-session']);\r\n        break;\r\n      case 403:\r\n        this.message = getErrorMessage.ER403;\r\n        isModalNeeded = false;\r\n        this.router.navigate(['access-denied']);\r\n        break;\r\n      case 404:\r\n        this.message = getErrorMessage.ER404;\r\n        break;\r\n      case 500:\r\n        this.message = getErrorMessage.ER500;\r\n        break;\r\n      case 503:\r\n        this.message = getErrorMessage.ER503;\r\n        break;\r\n      default:\r\n        this.message = getErrorMessage.default;\r\n    }\r\n    if (isModalNeeded) {\r\n      const dialogRef = this.dialog.open(AlertComponent, {\r\n        data: {\r\n          alertType: error?.alertType ?? AlertType.ERROR,\r\n          message: this.message,\r\n          isCloseNeeded: isCloseNeeded,\r\n          isHtmlContent: error?.isHtmlContent ?? false\r\n        },\r\n        width: 'auto',\r\n        position: { top: '48px' },\r\n        panelClass: 'ieeesa-alert-dialog',\r\n        hasBackdrop: true,\r\n        backdropClass:\r\n          error?.blockUiUntilClose === true\r\n            ? ''\r\n            : error?.alertType === AlertType.SUCCESS\r\n              ? 'cdk-overlay-transparent-backdrop'\r\n              : '',\r\n        disableClose: false,\r\n        role: 'alertdialog',\r\n        ariaLabel: errorInformation?.ariaLabel?.alert,\r\n        ariaModal: true,\r\n        autoFocus: error?.alertType === AlertType.SUCCESS ? false : 'dialog',\r\n      });\r\n      dialogRef\r\n        .afterClosed()\r\n        .pipe(takeUntil(this.destroy$))\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        .subscribe((result: any) => {\r\n          this.isAlertClosed.next(result);\r\n        });\r\n    }\r\n    return of(undefined);\r\n  }\r\n\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @return -returns nothing\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","/* eslint-disable no-empty-function */\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport { Injectable } from '@angular/core';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AppInsightsService {\r\n  /**\r\n   * This method Method integrates application insight API to log the error and exceptions to application insights or monitoring tool.\r\n   * @param {Error} exception\r\n   * @param {number} [severityLevel]\r\n   * @memberof AppInsightsService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars\r\n  logException(exception: Error, severityLevel?: number): void {}\r\n\r\n  /**\r\n   * This Method integrates application insight API to log stack trace to application insights or monitoring tool.\r\n   *\r\n   * @memberof AppInsightsService\r\n   * logTrace(): void {}\r\n   */\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpBackend, HttpClient } from '@angular/common/http';\r\nimport { Observable, catchError, map, of } from 'rxjs';\r\n\r\n/**\r\n * Loads the application configuration information. Uses HttpBackend to by pass interceptor and authentication token to the request.\r\n * @export\r\n * @class ConfigService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ConfigService {\r\n  httpClient!: HttpClient;\r\n  constructor(private handler: HttpBackend) {\r\n    this.httpClient = new HttpClient(handler);\r\n  }\r\n\r\n  /**\r\n   * Loads the application configuration using the given file/API URL\r\n   * @param {string} appConfigUrl\r\n   * @memberof ConfigService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  getAppConfig(appConfigUrl: string): Observable<any> {\r\n    return this.httpClient.get(appConfigUrl).pipe(\r\n      map((response) => {\r\n        return response;\r\n      }),\r\n      catchError(() => {\r\n        return of(false);\r\n      })\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SelectOption } from '@ieeesa-npm/models';\r\nimport countriesAndTimezones, { Timezone } from 'countries-and-timezones';\r\n\r\n/**\r\n * Utility service to handle countries and time zones.\r\n * @export\r\n * @class CountryAndTimezoneService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class CountryAndTimezoneService {\r\n  /**\r\n   * Returns all the countries\r\n   * @return {SelectOption[]}\r\n   * @memberof CountryService\r\n   */\r\n  getAllCountries(): SelectOption[] {\r\n    return Object.values(countriesAndTimezones.getAllCountries());\r\n  }\r\n  /**\r\n   * Returns all the timezones\r\n   * @return {Timezone[]}\r\n   * @memberof CountryService\r\n   */\r\n  getAllTimezones(): Timezone[] {\r\n    return Object.values(countriesAndTimezones.getAllTimezones());\r\n  }\r\n  /**\r\n   * Filters the timezone with UTC offsets and returns the timezone options as SelectOption[].\r\n   * The `id` retains the raw IANA identifier (e.g. `America/New_York`) so that saved values\r\n   * and edit prefill matching by id continue to work. The display `name` replaces underscores\r\n   * with spaces so options read naturally (e.g. `(UTC-05:00) America/New York`).\r\n   * @return {SelectOption[]}\r\n   * @memberof CountryAndTimezoneService\r\n   */\r\n  getUTCTimezoneOptions(): SelectOption[] {\r\n    const defaultTimezoneOptions: SelectOption[] = [];\r\n    this.getAllTimezones().forEach((item) => {\r\n      if (item.countries.length && item.dstOffsetStr !== '') {\r\n        defaultTimezoneOptions.push({\r\n          id: item.name,\r\n          name:\r\n            '(UTC' + item.dstOffsetStr + ') ' + item.name.replace(/_/g, ' '),\r\n        });\r\n      }\r\n    });\r\n    return defaultTimezoneOptions;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppInsightsService } from './app-insights.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ErrorLoggingService {\r\n  // eslint-disable-next-line no-empty-function, no-unused-vars\r\n  constructor(private appInsightsService: AppInsightsService) {}\r\n  /**\r\n   * LogError method is defined to log all the exceptions to the application Insights service.\r\n   * @param  {(Error | HttpErrorResponse)} error - Client-side exception or Http error response to be logged to application insight tool for troubleshooting\r\n   * @memberof ErrorLoggingService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  logError(error: any) :void{\r\n    this.appInsightsService.logException(error);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport * as errorInformation from '../assets/constants.json';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ErrorMessageService {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  errorInfo: any = errorInformation;\r\n  /**\r\n   * This method converts the client side error to string when the message not found in error; else returns the error message\r\n   * @param {Error} error\r\n   * @return {string}\r\n   * @memberof ErrorMessageService\r\n   */\r\n  getClientErrorMessage(error: Error): string {\r\n    return error.message ? error.message : error.toString();\r\n  }\r\n\r\n  /**\r\n   * This method detects whether the navigator is online or not, and returns the HttpErrorResponse when navigator is online else \"No internet connection\"\r\n   * @param {HttpErrorResponse} error\r\n   * @return {error}\r\n   * @memberof ErrorMessageService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/ban-types\r\n  getServerErrorMessage(error: HttpErrorResponse): {} {\r\n    return navigator.onLine ? error : this.errorInfo['errorMessage'].noInternet;\r\n  }\r\n}\r\n","import { ErrorHandler, Injectable, Injector } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorLoggingService } from './error-logging.service';\r\nimport { ErrorMessageService } from './error-message.service';\r\nimport { AlertsService } from './alerts.service';\r\n\r\n/**\r\n *\r\n * This class is defined to captures client and server side errors, as and when thrown anywhere in the application\r\n * @export\r\n * @class GlobalErrorHandlerService\r\n * @implements {ErrorHandler}\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class GlobalErrorHandlerService implements ErrorHandler {\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private injector: Injector) {}\r\n\r\n  /**\r\n   * This method is defined to capture the server and client side errors.\r\n   * @param {(Error | HttpErrorResponse)} error\r\n   * @memberof GlobalErrorHandlerService\r\n   */\r\n  handleError(error: Error | HttpErrorResponse): void {\r\n    const errorService = this.injector.get(ErrorMessageService);\r\n    const logger = this.injector.get(ErrorLoggingService);\r\n    const notifier = this.injector.get(AlertsService);\r\n    if (error instanceof HttpErrorResponse) {\r\n      const message = errorService.getServerErrorMessage(error);\r\n      notifier.showMessage(message);\r\n    } else {\r\n      errorService.getClientErrorMessage(error);\r\n    }\r\n    logger.logError(error);\r\n  }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Http service to fetch the data from and post data to API server.\r\n * @export\r\n * @class HttpService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class HttpService {\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private http: HttpClient // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Fetches the data from server using http get method.\r\n   * @param {string} url - API endpoint URL.\r\n   * @param {{ key: string; value: string }[]} [headers]\r\n   * @usageNotes headers: { key: string; value: string }[] = [\r\n      { key: 'Access-Control-Allow-Origin', value: '*' },\r\n    ]\r\n   * @param {{ key: string; value: string }[]} [params]\r\n   * @usageNotes params: { key: string; value: string }[] = [\r\n      { key: 'page', value: '2' },\r\n    ];\r\n   * @return {Observable<any>} - returns the response received from server and return type is Observable<any>\r\n   * @memberof HttpService\r\n   */\r\n  getData(\r\n    url: string,\r\n    params: { key: string; value: string }[] = [],\r\n    headers: { key: string; value: string }[] = []\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    const httpHeaders = this.getHeaders(headers);\r\n    const httpParams = this.getParams(params);\r\n    return this.http.get(url, {\r\n      headers: httpHeaders,\r\n      params: httpParams,\r\n      responseType: 'json',\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Post the data to the server using http post method.\r\n   * @param {string} url - API endpoint URL.\r\n   * @param {any} body - the data to be posted to the server as a body content.\r\n   * @param {{ key: string; value: string }[]} [headers]\r\n   * @usageNotes headers: { key: string; value: string }[] = [\r\n      { key: 'Access-Control-Allow-Origin', value: '*' },\r\n     ]\r\n  * @param {{ key: string; value: string }[]} [params]\r\n  * @usageNotes params: { key: string; value: string }[] = [\r\n      { key: 'page', value: '2' },\r\n    ];\r\n  * @return {Observable<any>} - returns the response received from server and return type is Observable<any>\r\n  * @memberof HttpService\r\n  */\r\n  postData(\r\n    url: string,\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    body: any,\r\n    headers: { key: string; value: string }[] = [],\r\n    params: { key: string; value: string }[] = []\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    const httpHeaders = this.getHeaders(headers);\r\n    const httpParams = this.getParams(params);\r\n    return this.http.post(url, body, {\r\n      headers: httpHeaders,\r\n      params: httpParams,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Update the existing data using http put method.\r\n   * @param {string} url - API endpoint URL.\r\n   * @param {any} body - the data to be updated to the server as a body content.\r\n   * @param {{ key: string; value: string }[]} [headers]\r\n   * @usageNotes headers: { key: string; value: string }[] = [\r\n      { key: 'Access-Control-Allow-Origin', value: '*' },\r\n    ]\r\n   * @param {{ key: string; value: string }[]} [params]\r\n   * @usageNotes params: { key: string; value: string }[] = [\r\n      { key: 'page', value: '2' },\r\n    ];\r\n   * @return {Observable<any>} - returns the response received from server and return type is Observable<any>\r\n   * @memberof HttpService\r\n   */\r\n  putData(\r\n    url: string,\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    body: any,\r\n    headers: { key: string; value: string }[] = [],\r\n    params: { key: string; value: string }[] = []\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    const httpHeaders = this.getHeaders(headers);\r\n    const httpParams = this.getParams(params);\r\n    return this.http.put(url, body, {\r\n      headers: httpHeaders,\r\n      params: httpParams,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Delete the data from server using http delete method.\r\n   * @param {string} url - API endpoint URL.\r\n   * @param body - the data to be deleted from the server as a body content.\r\n   * @param {{ key: string; value: string }[]} [headers]\r\n   * @usageNotes headers: { key: string; value: string }[] = [\r\n      { key: 'Access-Control-Allow-Origin', value: '*' },\r\n    ]\r\n   * @param {{ key: string; value: string }[]} [params]\r\n    @ @usageNotes params: { key: string; value: string }[] = [\r\n      { key: 'page', value: '2' },\r\n    ];\r\n   * @return {Observable<any>} - returns the response received from server and return type is Observable<any>\r\n   * @memberof HttpService\r\n   */\r\n  deleteData(\r\n    url: string,\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    body?: any,\r\n    headers: { key: string; value: string }[] = [],\r\n    params: { key: string; value: string }[] = []\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    const httpHeaders = this.getHeaders(headers);\r\n    const httpParams = this.getParams(params);\r\n\r\n    return this.http.delete(url, {\r\n      body: body,\r\n      headers: httpHeaders,\r\n      params: httpParams,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Post FormData (multipart) to the server using http post method.\r\n   * Does NOT set Content-Type header so the browser can set the correct multipart boundary.\r\n   * @param {string} url - API endpoint URL.\r\n   * @param {FormData} formData - the FormData payload.\r\n   * @param {{ key: string; value: string }[]} [headers]\r\n   * @param {{ key: string; value: string }[]} [params]\r\n   * @return {Observable<any>}\r\n   * @memberof HttpService\r\n   */\r\n  postFormData(\r\n    url: string,\r\n    formData: FormData,\r\n    headers: { key: string; value: string }[] = [],\r\n    params: { key: string; value: string }[] = []\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    let httpHeaders = new HttpHeaders();\r\n    if (headers?.length > 0) {\r\n      headers.forEach((param) => {\r\n        httpHeaders = httpHeaders.set(param.key, param.value);\r\n      });\r\n    }\r\n    const httpParams = this.getParams(params);\r\n    return this.http.post(url, formData, {\r\n      headers: httpHeaders,\r\n      params: httpParams,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Utility method to construct the headers that will be passed to the API requests.\r\n   * @param {({ key: string; value: string }[])} headers - Http headers that will be constructed and passed along with the API requests.\r\n   * @usageNotes headers: { key: string; value: string }[] = [\r\n      { key: 'Access-Control-Allow-Origin', value: '*' },\r\n     ]\r\n   * @return {HttpHeaders} - returns constructed http headers.\r\n   * @memberof HttpService\r\n   */\r\n  getHeaders(headers: { key: string; value: string }[]): HttpHeaders {\r\n    let httpHeaders = new HttpHeaders().set('Content-Type', 'application/json');\r\n    if (headers?.length > 0) {\r\n      headers.forEach((param) => {\r\n        httpHeaders = httpHeaders.set(param.key, param.value);\r\n      });\r\n    }\r\n    return httpHeaders;\r\n  }\r\n\r\n  /**\r\n   * Utility method to construct the params that will be passed to the API requests.\r\n   * @param {({ key: string; value: string }[])} params - Http headers that will be constructed and passed along with the API requests.\r\n   * @usageNotes params: { key: string; value: string }[] = [\r\n      { key: 'page', value: '2' },\r\n    ];\r\n   * @return {HttpParams} - returns constructed http params.\r\n   * @memberof HttpService\r\n   */\r\n  getParams(params: { key: string; value: string }[]): HttpParams {\r\n    let httpParams = new HttpParams();\r\n    if (params) {\r\n      params.forEach((param) => {\r\n        httpParams = httpParams.append(param.key, param.value);\r\n      });\r\n    }\r\n    return httpParams;\r\n  }\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nimport { Inject, Injectable, OnDestroy, Optional } from '@angular/core';\r\nimport { UserIdleService } from 'angular-user-idle';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n  UserIdleSessionMsg,\r\n  UserIdleSessionConfig,\r\n  ModalOptions,\r\n  ModalType,\r\n  IDLE_SESSION_MODAL_CONFIG,\r\n  IdleSessionModalConfig,\r\n} from '@ieeesa-npm/models';\r\nimport { Router } from '@angular/router';\r\nimport * as screenTexts from '../assets/constants.json';\r\n\r\n/**\r\n * Service for managing user idle sessions.\r\n * UserIdleSessionService allows tracking user inactivity and triggering actions based on user inactivity.\r\n * It provides methods for starting, pausing and stopping the idle session timer, as well as configuring its behavior.\r\n * @class UserIdleSessionService\r\n * @implements {OnDestroy}\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class UserIdleSessionService implements OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  timer = new BehaviorSubject('');\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  screenTexts: any = screenTexts;\r\n  isTimeoutDialogOpened = false;\r\n  userIdleSessionModalOptions!: ModalOptions;\r\n  isSessionExpired = false;\r\n  routeUrl!: string;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constructor(\r\n    public dialog: MatDialog,\r\n    private userIdle: UserIdleService,\r\n    private router: Router,\r\n    @Optional() @Inject(IDLE_SESSION_MODAL_CONFIG) private modalConfig: IdleSessionModalConfig\r\n  ) {}\r\n\r\n  /**\r\n   * Initializes the user idle session service.\r\n   * @param {UserIdleSessionConfig} userIdleSessionConfig - User idle session configuration data such as idleTimeInSeconds, idleTimeoutInSeconds, ping and idle session notification info.\r\n   * @return -returns nothing\r\n   */\r\n  init(\r\n    userIdleSessionConfig: UserIdleSessionConfig,\r\n    userIdleSessionMsg: UserIdleSessionMsg\r\n  ): void {\r\n    this.routeUrl = userIdleSessionConfig['routeUrl']\r\n      ? userIdleSessionConfig['routeUrl']\r\n      : 'session-expired';\r\n    this.startWatchingUserInactivity();\r\n    this.watchIdleTimeOutStart(userIdleSessionConfig, userIdleSessionMsg);\r\n    this.watchIdleTimedOutExpire();\r\n  }\r\n\r\n  /**\r\n   * Start watching for user inactivity\r\n   * @return -returns nothing\r\n   */\r\n  startWatchingUserInactivity(): void {\r\n    this.userIdle.startWatching();\r\n  }\r\n\r\n  /**\r\n   * Start watching when user idle is starting.\r\n   * @return -returns nothing\r\n   */\r\n  watchIdleTimeOutStart(\r\n    userIdleSessionConfig: UserIdleSessionConfig,\r\n    userIdleSessionMsg: UserIdleSessionMsg\r\n  ): void {\r\n    this.userIdle\r\n      .onTimerStart()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((timeInSeconds: number) => {\r\n        this.notifyUserInactivity(\r\n          timeInSeconds,\r\n          userIdleSessionConfig,\r\n          userIdleSessionMsg\r\n        );\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Reset timer to capture user inactivity\r\n   * @return -returns nothing\r\n   */\r\n  resetIdleTimer(): void {\r\n    this.userIdle.resetTimer();\r\n    this.isTimeoutDialogOpened = false;\r\n  }\r\n\r\n  /**\r\n   * Stops idle timer\r\n   * @return -returns nothing\r\n   */\r\n  stopIdleTimer(): void {\r\n    this.userIdle.stopTimer();\r\n    this.isTimeoutDialogOpened = false;\r\n  }\r\n\r\n  /**\r\n   * Stops watching user inactivity.\r\n   * @return -returns nothing\r\n   */\r\n  stopWatchingUserInactivity(): void {\r\n    this.userIdle.stopWatching();\r\n  }\r\n\r\n  /**\r\n   * It watches idle timeout expire.\r\n   * @return -returns nothing\r\n   */\r\n  watchIdleTimedOutExpire(): void {\r\n    // Start watch when time is up.\r\n    this.userIdle\r\n      .onTimeout()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(() => {\r\n        this.dialog.closeAll();\r\n        this.stopIdleTimer();\r\n        this.stopWatchingUserInactivity();\r\n        this.router.navigate([this.routeUrl]);\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Notifies user by opening modal with warning message that your session is about to expire!\r\n   * @param {number} idleSeconds -The time to convert.\r\n   * @param {UserIdleSessionConfig} userIdleSessionConfig - User idle session configuration data such as idleTimeInSeconds, idleTimeoutInSeconds, ping and idle session notification info.\r\n   * @return -returns nothing\r\n   */\r\n  notifyUserInactivity(\r\n    idleSeconds: number,\r\n    userIdleSessionConfig: UserIdleSessionConfig,\r\n    userIdleSessionMsg: UserIdleSessionMsg\r\n  ): void {\r\n    if (idleSeconds && this.modalConfig) {\r\n      this.timer.next(\r\n        this.convertSecondToTimeString(idleSeconds, userIdleSessionConfig)\r\n      );\r\n      if (!this.isTimeoutDialogOpened) {\r\n        this.isTimeoutDialogOpened = true;\r\n        const { heading, promptMessage, leftButtonLabel, rightButtonLabel } =\r\n          Object.keys(userIdleSessionConfig?.expiryNotificationInfo).length\r\n            ? userIdleSessionConfig.expiryNotificationInfo\r\n            : this.screenTexts['userSessionExpiredInfo'];\r\n        this.userIdleSessionModalOptions = {\r\n          heading,\r\n          promptMessage,\r\n          leftButtonLabel,\r\n          rightButtonLabel,\r\n          data2DynamicComponent: userIdleSessionMsg\r\n            ? userIdleSessionMsg\r\n            : this.screenTexts['userIdleSessionExpiryNotification'],\r\n          componentReference: this.modalConfig.notificationComponent,\r\n          dialogType: ModalType.DIALOG,\r\n        };\r\n        const dialogRef = this.dialog.open(this.modalConfig.modalComponent, {\r\n          data: this.userIdleSessionModalOptions,\r\n          width: '80%',\r\n        });\r\n\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        const modalConfirm$ = (dialogRef.componentInstance as any)?.modalConfirm;\r\n        if (!modalConfirm$) {\r\n          dialogRef.close();\r\n          this.isTimeoutDialogOpened = false;\r\n          return;\r\n        }\r\n\r\n        modalConfirm$\r\n          .pipe(takeUntil(this.destroy$))\r\n          .subscribe((result: boolean) => {\r\n            if (!result) {\r\n              dialogRef.close();\r\n              this.stopIdleTimer();\r\n              this.stopWatchingUserInactivity();\r\n              this.router.navigate([this.routeUrl]);\r\n            } else {\r\n              dialogRef.close();\r\n              this.resetIdleTimer();\r\n            }\r\n          });\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Converts given time to a time string.\r\n   * @private\r\n   * @param {number} time -The time to convert.\r\n   * @return {string} -Returns timeString\r\n   */\r\n  private convertSecondToTimeString(\r\n    time: number,\r\n    userIdleSessionConfig: UserIdleSessionConfig\r\n  ): string {\r\n    const idleSecondsLeft = userIdleSessionConfig.idleTimeoutInSeconds - time;\r\n    const date = new Date(idleSecondsLeft * 1000);\r\n    const hours = date.getUTCHours();\r\n    const minutes = date.getUTCMinutes();\r\n    const seconds = date.getSeconds();\r\n    const timeString =\r\n      hours.toString().padStart(2, '0') +\r\n      ':' +\r\n      minutes.toString().padStart(2, '0') +\r\n      ':' +\r\n      seconds.toString().padStart(2, '0');\r\n    return timeString;\r\n  }\r\n\r\n  /**\r\n   * Sets isSessionExpired to true or false.\r\n   * @param {boolean} status -Status true or false value\r\n   * @memberof UserIdleSessionService\r\n   */\r\n  setSessionExpiry(status: boolean): void {\r\n    this.isSessionExpired = status;\r\n  }\r\n\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @return -returns nothing\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * Loads file data from the passed url location\r\n * @export\r\n * @class LoaderService\r\n * @implements {OnDestroy}\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private httpService: HttpService) {}\r\n\r\n  /**\r\n   * Loads file data from the passed url location\r\n   * @param {string} url\r\n   * @return {Observable<any>}\r\n   * @memberof LoaderService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  loadFile(url: string): Observable<any> {\r\n    return this.httpService.getData(url);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { StorageService } from './services/storage.service';\r\nimport { HttpService } from './services/http.service';\r\nimport { LoaderService } from './services/loader.service';\r\nimport { CountryAndTimezoneService } from './services/country-and-timezone.service';\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [],\r\n  exports: [],\r\n  providers: [StorageService, HttpService, LoaderService, CountryAndTimezoneService],\r\n})\r\nexport class UtilityModule {}\r\n","/*\r\n * Public API Surface of utility\r\n */\r\nexport * from './lib/assets/validations/date-and-time-validation';\r\nexport * from './lib/assets/validations/time-format-validation';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/guards/deactivate.guard';\r\nexport * from './lib/interceptors/error-handler.interceptor';\r\nexport * from './lib/interceptors/loader.interceptor';\r\nexport * from './lib/interceptors/token.interceptor';\r\n\r\nexport * from './lib/models/alert-data.model';\r\n\r\nexport * from './lib/services/alerts.service';\r\nexport * from './lib/services/app-insights.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/config.service';\r\nexport * from './lib/services/country-and-timezone.service';\r\nexport * from './lib/services/error-logging.service';\r\nexport * from './lib/services/error-message.service';\r\nexport * from './lib/services/global-error-handler.service';\r\nexport * from './lib/services/http.service';\r\nexport * from './lib/services/storage.service';\r\nexport * from './lib/services/user-idle-session.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/loader-notification.service';\r\n\r\nexport * from './lib/utility.module';\r\n\r\n// Re-export from @ieeesa-npm/models (needed for ng serve with published packages in node_modules)\r\nexport { AlertType, ModalType, SafeType, UserIdleSessionMsg, UserIdleSessionConfig, ModalOptions } from '@ieeesa-npm/models';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["alertInfo?.ariaLabel","i1.LoaderNotificationService","i1","i1.AuthService","i2.StorageService","errorInformation","errorInformation?.ariaLabel","i2","i1.AppInsightsService","takeUntil","i1.HttpService"],"mappings":"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"}