vc-error-handlers 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2020/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +26 -6
  2. package/esm2020/lib/shared/components/error-modal/error-modal.component.mjs +61 -0
  3. package/esm2020/lib/shared/components/page-not-found/page-not-found.component.mjs +27 -25
  4. package/esm2020/lib/shared/components/server-error/server-error.component.mjs +63 -6
  5. package/esm2020/lib/shared/components/session-expired/session-expired.component.mjs +11 -11
  6. package/esm2020/lib/shared/components/unauthorized/unauthorized.component.mjs +21 -22
  7. package/esm2020/lib/shared/constants/error-handling.constants.mjs +19 -2
  8. package/esm2020/lib/shared/errorhandler/sentry-error.handler.mjs +15 -10
  9. package/esm2020/lib/shared/interceptors/http.interceptor.mjs +24 -6
  10. package/esm2020/lib/shared/types/global-error.types.mjs +1 -1
  11. package/esm2020/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.mjs +1 -2
  12. package/esm2020/lib/vc-error-handlers.component.mjs +58 -10
  13. package/esm2020/lib/vc-error-handlers.module.mjs +6 -6
  14. package/esm2020/public-api.mjs +2 -2
  15. package/fesm2015/vc-error-handlers.mjs +356 -189
  16. package/fesm2015/vc-error-handlers.mjs.map +1 -1
  17. package/fesm2020/vc-error-handlers.mjs +355 -189
  18. package/fesm2020/vc-error-handlers.mjs.map +1 -1
  19. package/lib/shared/components/chunk-unavailable/chunk-unavailable.component.d.ts +10 -2
  20. package/lib/shared/components/error-modal/error-modal.component.d.ts +17 -0
  21. package/lib/shared/components/page-not-found/page-not-found.component.d.ts +5 -1
  22. package/lib/shared/components/server-error/server-error.component.d.ts +12 -5
  23. package/lib/shared/components/session-expired/session-expired.component.d.ts +1 -3
  24. package/lib/shared/components/unauthorized/unauthorized.component.d.ts +3 -1
  25. package/lib/shared/constants/error-handling.constants.d.ts +18 -1
  26. package/lib/shared/errorhandler/sentry-error.handler.d.ts +5 -3
  27. package/lib/shared/interceptors/http.interceptor.d.ts +4 -1
  28. package/lib/shared/types/global-error.types.d.ts +1 -1
  29. package/lib/vc-error-handlers.component.d.ts +14 -2
  30. package/lib/vc-error-handlers.module.d.ts +2 -2
  31. package/package.json +2 -2
  32. package/public-api.d.ts +1 -1
  33. package/esm2020/lib/shared/components/session-expired-modal/session-expired-modal.component.mjs +0 -48
  34. package/lib/shared/components/session-expired-modal/session-expired-modal.component.d.ts +0 -18
@@ -1 +1 @@
1
- {"version":3,"file":"vc-error-handlers.mjs","sources":["../../../projects/vc-error-handlers/src/lib/vc-error-handlers.service.ts","../../../projects/vc-error-handlers/src/lib/shared/types/global-error.types.ts","../../../projects/vc-error-handlers/src/lib/shared/services/global-error.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/auth.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/router.service.ts","../../../projects/vc-error-handlers/src/lib/shared/constants/error-handling.constants.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/vc-error-handlers/src/lib/shared/components/session-expired-modal/session-expired-modal.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/vc-error-handlers/src/lib/shared/components/session-expired/session-expired.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/unauthorized/unauthorized.component.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/page-not-found/page-not-found.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/chunk-unavailable/chunk-unavailable.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/chunk-unavailable/chunk-unavailable.component.html","../../../projects/vc-error-handlers/src/lib/shared/components/server-error/server-error.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/server-error/server-error.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/vc-error-handlers/src/lib/configuration.ts","../../../projects/vc-error-handlers/src/lib/shared/errorhandler/sentry-error.handler.ts","../../../projects/vc-error-handlers/src/lib/shared/interceptors/http.interceptor.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.module.ts","../../../projects/vc-error-handlers/src/public-api.ts","../../../projects/vc-error-handlers/src/vc-error-handlers.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VcErrorHandlersService {\r\n\r\n constructor() { }\r\n}\r\n","export interface DialogData {\r\n header: string;\r\n description: string;\r\n buttonText: string;\r\n}\r\n\r\nexport enum ErrorStatusCode {\r\n URLNotFound = 404,\r\n UnauthorizedAccess = 403,\r\n Unauthenticated = 401,\r\n\r\n // Server-side errors\r\n InternalServerError = 500,\r\n ServiceUnavailable = 503,\r\n BadGateway = 502,\r\n RequestTimeout=504,\r\n\r\n // Network unavailability/offline case\r\n NetworkUnavailable = 0,\r\n\r\n // Application-specific errors\r\n JSChunkUnavailable = 600,\r\n}\r\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { ErrorStatusCode } from '../types/global-error.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GlobalErrorService {\r\n public globalError$: Subject<any> = new Subject();\r\n public localError$: Subject<any> = new Subject();\r\n\r\n public handleError(error: HttpErrorResponse, request: HttpRequest<any>) {\r\n if (\r\n this.isUnauthenticated(error) ||\r\n this.isUnauthorizedAccess(error) ||\r\n this.isNetworkUnavailable(error)\r\n ) {\r\n this.globalError$.next(error);\r\n }\r\n }\r\n\r\n private isUnauthenticated(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.Unauthenticated;\r\n }\r\n\r\n private isUnauthorizedAccess(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.UnauthorizedAccess;\r\n }\r\n\r\n private isNetworkUnavailable(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.NetworkUnavailable;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { AuthorizerService } from \"@vcomply/authorizer\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AuthService {\r\n constructor(private authorizer: AuthorizerService) {}\r\n\r\n public logoutUser() {\r\n this.authorizer.logout();\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 RouterService {\r\n public redirectToLogin() {\r\n window.location.href =\r\n `https://${window.location.host}/` +\r\n 'signin?redirectURL=' +\r\n encodeURIComponent(window.location.href);\r\n }\r\n}\r\n","export const VCOMPLY_IMAGE_URL =\r\n 'https://cdn.v-comply.com/logo/prod/v-logo.svg';\r\n\r\nexport const API_TIMEOUT_TIME = 1000 * 15;\r\n\r\nexport const ERROR_CONFIG = {\r\n PAGE_NOT_FOUND: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"The page you're looking for doesn't exist.\",\r\n details: 'Please check the URL or return to the homepage.',\r\n buttonText: 'GO TO DASHBOARD',\r\n },\r\n\r\n UNAUTHORIZED: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"You don't have permission to access this page.\",\r\n details: 'If you believe this is an error, please contact',\r\n email: 'help@v-comply.com',\r\n support: 'for support',\r\n buttonText: 'CONTACT SUPPORT',\r\n },\r\n\r\n SESSION_EXPIRED: {\r\n heading: 'Session Expired!',\r\n description:\r\n 'Your session has expired. Please log in again to continue using the app.',\r\n buttonText: 'LOGIN',\r\n },\r\n};\r\n","export class DialogConfig<D = any> {\r\n data?: D;\r\n position?: any;\r\n background?: any;\r\n pointer?: any;\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { DialogConfig } from '../../../ui-kit/dialog/dialog-config';\r\n\r\nimport { RouterService } from '../../services/router.service';\r\n\r\nimport { DialogData } from '../../types/global-error.types';\r\nimport { ERROR_CONFIG } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-session-expired-modal',\r\n template: ` <div class=\"error-dialog-box\">\r\n <div class=\"error-dialog-box-top\">{{ errorConfig.heading }}</div>\r\n <div class=\"error-dialog-box-mid\">\r\n {{ errorConfig.description }}\r\n </div>\r\n <div class=\"error-dialog-box-bottom\">\r\n <button (click)=\"onContinueAction()\" class=\"logIn-btn\">\r\n {{ errorConfig.buttonText }}\r\n </button>\r\n </div>\r\n </div>`,\r\n styleUrls: ['./session-expired-modal.component.less'],\r\n})\r\nexport class SessionExpiredModalComponent {\r\n errorConfig = ERROR_CONFIG.SESSION_EXPIRED;\r\n\r\n data: DialogData = {\r\n header: 'Message',\r\n description: 'Description',\r\n buttonText: 'Click Action',\r\n };\r\n\r\n constructor(\r\n private dialogConfig: DialogConfig,\r\n private routerService: RouterService\r\n ) {\r\n this.data = this.dialogConfig.data;\r\n }\r\n\r\n public onContinueAction() {\r\n this.routerService.redirectToLogin();\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n private readonly afterDialogClosed = new Subject<any>();\r\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n // debugger\r\n this.afterDialogClosed.next(result);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n componentRef!: ComponentRef<any>;\r\n position: any;\r\n background: any;\r\n pointer: any;\r\n @ViewChild(InsertionDirective, { static: true })\r\n insertionPoint!: InsertionDirective;\r\n animation = true;\r\n\r\n private readonly onDialogClose = new Subject<any>();\r\n public onClose = this.onDialogClose.asObservable();\r\n\r\n childComponentType!: Type<any>;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cd: ChangeDetectorRef,\r\n private dialogRef: DialogRef,\r\n public config: DialogConfig,\r\n private router: Router\r\n ) {\r\n // this.componentRef = this.componentRef;\r\n // this.animate = this.animate;\r\n // this.insertionPoint = this.insertionPoint;\r\n // this.childComponentType = this.childComponentType;\r\n }\r\n ngOnInit() {\r\n this.position = this.config.position;\r\n this.background = this.config.background;\r\n document.body.style.overflow = 'hidden';\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 200);\r\n this.routeAction();\r\n }\r\n\r\n routeAction() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n // Show loading indicator\r\n }\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n this.dialogRef.close();\r\n }\r\n if (event instanceof NavigationError) {\r\n // Hide loading indicator\r\n // Present error to user\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n // this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n loadChildComponent(componentType: Type<any>) {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n close(data?: any) {\r\n this.onDialogClose.next(data);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","<div\r\n class=\"overlay\"\r\n (click)=\"onOverlayClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER',\r\n black: background === 'black',\r\n whiteBlur: background === 'whiteBlur'\r\n }\" [class.pointer-none]=\"pointer === 'none'\"\r\n>\r\n <div\r\n class=\"dialog\"\r\n [class.animate]=\"animation\"\r\n (click)=\"onDialogClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER'\r\n }\"\r\n >\r\n <ng-template appInsertion></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { DialogRef } from './dialog-ref';\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DialogComponent, InsertionDirective],\r\n providers: [DialogRef],\r\n exports:[DialogComponent]\r\n})\r\nexport class DialogModule {}\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n // get(token: any, notFoundValue?: any){return; }\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n const value = this.dialogAdditionalTokens.get(token);\r\n if (value) {\r\n return value;\r\n }\r\n return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n }\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogModule } from './dialog.module';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { DialogInjector } from './dialog-injector';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { DialogRef } from './dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n dialogComponentRef!: ComponentRef<DialogComponent>;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {}\r\n\r\n public open(componentType: Type<any>, config: DialogConfig) {\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n private appendDialogComponentToBody(config: DialogConfig) {\r\n const map = new WeakMap();\r\n map.set(DialogConfig, config);\r\n\r\n const dialogRef = new DialogRef();\r\n map.set(DialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { SessionExpiredModalComponent } from '../session-expired-modal/session-expired-modal.component';\r\n\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport { ERROR_CONFIG } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-session-expired',\r\n template: ``,\r\n})\r\nexport class SessionExpiredComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.SESSION_EXPIRED;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private dialogService: DialogService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.authService.logoutUser();\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(SessionExpiredModalComponent, {\r\n data: this.errorConfig,\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_IMAGE_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-unauthorized',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img\r\n src=\"https://cdn.v-comply.com/logo/prod/v-logo.svg\"\r\n alt=\"VComply\"\r\n width=\"24\"\r\n height=\"24\"\r\n />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"256\"\r\n height=\"256\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">\r\n {{ errorConfig.details }}\r\n <a href=\"mailto:{help@v-comply.com}\">{{ errorConfig.email }}</a>\r\n {{ errorConfig.support }}.\r\n </div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToSupport()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['./unauthorized.component.less'],\r\n})\r\nexport class UnauthorizedComponent {\r\n errorConfig = ERROR_CONFIG.UNAUTHORIZED;\r\n VcomplyImage = VCOMPLY_IMAGE_URL;\r\n\r\n redirectToSupport() {}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { GlobalErrorService } from './shared/services/global-error.service';\r\n\r\nimport { ErrorStatusCode } from './shared/types/global-error.types';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-handlers',\r\n template: `\r\n <lib-vc-error-session-expired\r\n *ngIf=\"sessionExpired\"\r\n ></lib-vc-error-session-expired>\r\n <lib-vc-error-unauthorized *ngIf=\"unauthorized\"></lib-vc-error-unauthorized>\r\n `,\r\n})\r\nexport class VcErrorHandlersComponent {\r\n unauthorized: boolean = false;\r\n sessionExpired: boolean = false;\r\n networkUnavailable: boolean = false;\r\n\r\n constructor(private errorService: GlobalErrorService) {\r\n this.subscribeGlobalError();\r\n }\r\n\r\n private subscribeGlobalError() {\r\n this.errorService.globalError$.subscribe((error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n if (error.status === ErrorStatusCode.Unauthenticated) {\r\n this.sessionExpired = true;\r\n } else if (error.status === ErrorStatusCode.UnauthorizedAccess) {\r\n this.unauthorized = true;\r\n } else if (error.status === ErrorStatusCode.NetworkUnavailable) {\r\n this.networkUnavailable = true;\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_IMAGE_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-page-not-found',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img\r\n src=\"https://cdn.v-comply.com/logo/prod/v-logo.svg\"\r\n alt=\"VComply\"\r\n width=\"24\"\r\n height=\"24\"\r\n />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"256\"\r\n height=\"256\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToHome()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['./page-not-found.component.less'],\r\n})\r\nexport class PageNotFoundComponent {\r\n errorConfig = ERROR_CONFIG.PAGE_NOT_FOUND;\r\n VcomplyImage = VCOMPLY_IMAGE_URL;\r\n\r\n redirectToHome() {\r\n // Redirect to home page\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chunk-unavailable',\r\n templateUrl: './chunk-unavailable.component.html',\r\n styleUrls: ['./chunk-unavailable.component.css']\r\n})\r\nexport class ChunkUnavailableComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>chunk-unavailable works!</p>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-server-error',\r\n templateUrl: './server-error.component.html',\r\n styleUrls: ['./server-error.component.css']\r\n})\r\nexport class ServerErrorComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>server-error works!</p>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackBarService {\r\n public snackbarSubject = new Subject <any>();\r\n public snackbarState = this.snackbarSubject.asObservable();\r\n constructor() {}\r\n\r\n show(message: string, type?:'success'|'warning'|'info'|'alert'|'error') {\r\n this.snackbarSubject.next({\r\n show: true,\r\n message,\r\n icon:type,\r\n });\r\n }\r\n\r\n hide(){\r\n this.snackbarSubject.next({\r\n show: false,\r\n message: '',\r\n icon: '',\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SnackBarService } from '../snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-snack-bar',\r\n templateUrl: './snack-bar.component.html',\r\n styleUrls: ['./snack-bar.component.less'],\r\n})\r\nexport class SnackBarComponent implements OnInit, OnDestroy {\r\n show = false;\r\n message = '--';\r\n icon = '&#xe914;';\r\n type = 'alert';\r\n icons: any = {\r\n success: '&#xe93d;',\r\n warning: '&#xe914;',\r\n info: '&#xe932;',\r\n alert: '&#xe914;',\r\n error: '&#xeaae;',\r\n };\r\n snackbarSubscription!: Subscription;\r\n constructor(private snackbarService: SnackBarService) {}\r\n\r\n ngOnInit(): void {\r\n this.snackbarSubscription = this.snackbarService.snackbarState.subscribe(\r\n (state) => {\r\n if (state.icon && Object.keys(this.icons).includes(state?.icon)) {\r\n this.icon = this.icons[state.icon];\r\n this.type = state?.icon;\r\n }\r\n this.message = state.message;\r\n this.show = state.show;\r\n this.setAutoClose();\r\n }\r\n );\r\n }\r\n\r\n setAutoClose() {\r\n setTimeout(() => {\r\n this.show = false;\r\n this.close();\r\n }, 3000);\r\n }\r\n close() {\r\n this.show = false;\r\n this.snackbarService.hide();\r\n }\r\n ngOnDestroy() {\r\n this.snackbarSubscription.unsubscribe();\r\n }\r\n}\r\n","<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!-- &#xe914; -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\r\n\r\n@NgModule({\r\n declarations: [SnackBarComponent],\r\n imports: [CommonModule],\r\n exports: [SnackBarComponent],\r\n})\r\nexport class SnackBarModule {}\r\n","export class Configurations {\r\n public sentryConfig: any;\r\n\r\n constructor() {\r\n this.sentryConfig = {};\r\n }\r\n}\r\n","import { ErrorHandler, Injectable, Optional } from '@angular/core';\r\nimport * as Sentry from '@sentry/angular-ivy';\r\nimport { Configurations } from '../../configuration';\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\n\r\n@Injectable()\r\nexport class SentryErrorHandler implements ErrorHandler {\r\n constructor(\r\n private authorizerService: AuthorizerService,\r\n @Optional() config?: Configurations\r\n ) {\r\n if (config?.sentryConfig) {\r\n const SENTRY_CONFIG = config.sentryConfig;\r\n Sentry.init({\r\n dsn: SENTRY_CONFIG?.DSN,\r\n integrations: [\r\n new Sentry.BrowserTracing({\r\n tracePropagationTargets: SENTRY_CONFIG.ALLOW_ORIGIN,\r\n routingInstrumentation: Sentry.routingInstrumentation,\r\n }),\r\n ],\r\n tracesSampleRate: SENTRY_CONFIG.TRACES_SAMPLE_RATE,\r\n replaysSessionSampleRate: SENTRY_CONFIG.REPLAY_SESSION_SAMPLE_RATE,\r\n replaysOnErrorSampleRate: SENTRY_CONFIG.REPLAY_ON_ERROR_SAMPLE_RATE,\r\n });\r\n Sentry.setUser({ userDetails: this.authorizerService.getUser() });\r\n }\r\n }\r\n\r\n handleError(error: any) {\r\n const ERROR = error?.originalError || error;\r\n this.handleChunkError(ERROR);\r\n Sentry.captureException(ERROR);\r\n }\r\n\r\n handleChunkError(error: Error) {\r\n const chunkFailedMessage = /Loading chunk [\\d]+ failed/;\r\n if (chunkFailedMessage.test(error?.message)) {\r\n window.location.reload();\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 HttpErrorResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, timeout } from 'rxjs/operators';\r\n\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\n\r\nimport { API_TIMEOUT_TIME } from '../constants/error-handling.constants';\r\n\r\n@Injectable()\r\nexport class HttpReqInterceptor implements HttpInterceptor {\r\n constructor(private errorService: GlobalErrorService) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n return next.handle(req).pipe(\r\n timeout(API_TIMEOUT_TIME),\r\n catchError((error: HttpErrorResponse) => {\r\n this.errorService.handleError(error, req);\r\n\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n ErrorHandler,\r\n InjectionToken,\r\n ModuleWithProviders,\r\n NgModule,\r\n} from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component';\r\nimport { VcErrorHandlersComponent } from './vc-error-handlers.component';\r\n\r\nimport { DialogModule } from './ui-kit/dialog/dialog.module';\r\nimport { SnackBarModule } from './ui-kit/snack-bar/snack-bar.module';\r\n\r\nimport { BrowserOptions } from '@sentry/browser';\r\nimport { GlobalErrorHandler } from './shared/errorhandler/chunk-error.handler';\r\nimport { SentryErrorHandler } from './shared/errorhandler/sentry-error.handler';\r\nimport { Configurations } from './configuration';\r\nimport { UnauthorizedComponent } from './shared/components/unauthorized/unauthorized.component';\r\nimport { SessionExpiredComponent } from './shared/components/session-expired/session-expired.component';\r\nimport { ChunkUnavailableComponent } from './shared/components/chunk-unavailable/chunk-unavailable.component';\r\nimport { ServerErrorComponent } from './shared/components/server-error/server-error.component';\r\nimport { SessionExpiredModalComponent } from './shared/components/session-expired-modal/session-expired-modal.component';\r\n\r\nimport { HttpReqInterceptor } from './shared/interceptors/http.interceptor';\r\n\r\nexport const FOR_ROOT_SENTRY_OPTIONS_TOKEN = new InjectionToken<BrowserOptions>(\r\n 'forRoot() SentryErrorHandler options'\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n SessionExpiredModalComponent,\r\n ],\r\n imports: [CommonModule, DialogModule, SnackBarModule],\r\n exports: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n SessionExpiredModalComponent,\r\n ],\r\n providers: [\r\n { provide: ErrorHandler, useClass: SentryErrorHandler },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpReqInterceptor, multi: true },\r\n ],\r\n bootstrap: [VcErrorHandlersComponent],\r\n})\r\nexport class VcErrorHandlersModule {\r\n public static forRoot(\r\n environmentConfig: Configurations\r\n ): ModuleWithProviders<VcErrorHandlersModule> {\r\n return {\r\n ngModule: VcErrorHandlersModule,\r\n providers: [{ provide: Configurations, useValue: environmentConfig }],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of vc-error-handlers\r\n */\r\n\r\nexport * from './lib/vc-error-handlers.service';\r\nexport * from './lib/shared/services/global-error.service';\r\nexport * from './lib/shared/services/auth.service';\r\nexport * from './lib/shared/services/router.service';\r\nexport * from './lib/vc-error-handlers.component';\r\nexport * from './lib/shared/components/page-not-found/page-not-found.component';\r\nexport * from './lib/shared/components/unauthorized/unauthorized.component';\r\nexport * from './lib/shared/components/chunk-unavailable/chunk-unavailable.component';\r\nexport * from './lib/shared/components/server-error/server-error.component';\r\nexport * from './lib/shared/components/session-expired/session-expired.component';\r\nexport * from './lib/shared/components/session-expired-modal/session-expired-modal.component';\r\nexport * from './lib/vc-error-handlers.module';\r\nexport * from './lib/shared/interceptors/http.interceptor';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vc-error-handlers.mjs","sources":["../../../projects/vc-error-handlers/src/lib/vc-error-handlers.service.ts","../../../projects/vc-error-handlers/src/lib/shared/types/global-error.types.ts","../../../projects/vc-error-handlers/src/lib/shared/services/global-error.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/auth.service.ts","../../../projects/vc-error-handlers/src/lib/shared/services/router.service.ts","../../../projects/vc-error-handlers/src/lib/shared/constants/error-handling.constants.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.service.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-config.ts","../../../projects/vc-error-handlers/src/lib/shared/components/error-modal/error-modal.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/insertion.directive.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-ref.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.component.html","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.module.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog-injector.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/dialog/dialog.service.ts","../../../projects/vc-error-handlers/src/lib/shared/components/session-expired/session-expired.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/unauthorized/unauthorized.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/chunk-unavailable/chunk-unavailable.component.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/page-not-found/page-not-found.component.ts","../../../projects/vc-error-handlers/src/lib/shared/components/server-error/server-error.component.ts","../../../projects/vc-error-handlers/src/lib/ui-kit/snack-bar/snack-bar.module.ts","../../../projects/vc-error-handlers/src/lib/configuration.ts","../../../projects/vc-error-handlers/src/lib/shared/errorhandler/sentry-error.handler.ts","../../../projects/vc-error-handlers/src/lib/shared/interceptors/http.interceptor.ts","../../../projects/vc-error-handlers/src/lib/vc-error-handlers.module.ts","../../../projects/vc-error-handlers/src/public-api.ts","../../../projects/vc-error-handlers/src/vc-error-handlers.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VcErrorHandlersService {\r\n\r\n constructor() { }\r\n}\r\n","export interface DialogData {\r\n heading: string;\r\n description: string;\r\n buttonText: string;\r\n}\r\n\r\nexport enum ErrorStatusCode {\r\n URLNotFound = 404,\r\n UnauthorizedAccess = 403,\r\n Unauthenticated = 401,\r\n\r\n // Server-side errors\r\n InternalServerError = 500,\r\n ServiceUnavailable = 503,\r\n BadGateway = 502,\r\n RequestTimeout=504,\r\n\r\n // Network unavailability/offline case\r\n NetworkUnavailable = 0,\r\n\r\n // Application-specific errors\r\n JSChunkUnavailable = 600,\r\n}\r\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { ErrorStatusCode } from '../types/global-error.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GlobalErrorService {\r\n public globalError$: Subject<any> = new Subject();\r\n public localError$: Subject<any> = new Subject();\r\n\r\n public handleError(error: HttpErrorResponse, request: HttpRequest<any>) {\r\n if (\r\n this.isUnauthenticated(error) ||\r\n this.isUnauthorizedAccess(error) ||\r\n this.isNetworkUnavailable(error)\r\n ) {\r\n this.globalError$.next(error);\r\n }\r\n }\r\n\r\n private isUnauthenticated(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.Unauthenticated;\r\n }\r\n\r\n private isUnauthorizedAccess(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.UnauthorizedAccess;\r\n }\r\n\r\n private isNetworkUnavailable(error: HttpErrorResponse): boolean {\r\n return error.status === ErrorStatusCode.NetworkUnavailable;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { AuthorizerService } from \"@vcomply/authorizer\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AuthService {\r\n constructor(private authorizer: AuthorizerService) {}\r\n\r\n public logoutUser() {\r\n this.authorizer.logout();\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 RouterService {\r\n public redirectToLogin() {\r\n window.location.href =\r\n `https://${window.location.host}/` +\r\n 'signin?redirectURL=' +\r\n encodeURIComponent(window.location.href);\r\n }\r\n}\r\n","export const VCOMPLY_LOGO_URL = 'https://cdn.v-comply.com/logo/prod/v-logo.svg';\r\n\r\nexport const API_TIMEOUT_TIME = 1000 * 15;\r\n\r\nexport const ERROR_CONFIG = {\r\n PAGE_NOT_FOUND: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"The page you're looking for doesn't exist.\",\r\n details: 'Please check the URL or return to the homepage.',\r\n buttonText: 'GO TO DASHBOARD',\r\n },\r\n\r\n UNAUTHORIZED: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: \"You don't have permission to access this page.\",\r\n details: 'If you believe this is an error, please contact',\r\n email: 'help@v-comply.com',\r\n support: 'for support',\r\n buttonText: 'CONTACT SUPPORT',\r\n mail: 'mailto:help@v-comply.com',\r\n },\r\n\r\n SESSION_EXPIRED: {\r\n heading: 'Session Expired!',\r\n description:\r\n 'Your session has expired. Please log in again to continue using the app.',\r\n buttonText: 'LOGIN',\r\n },\r\n\r\n CHUNK_UNAVAILABLE: {\r\n heading: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n buttonText: 'REFRESH',\r\n },\r\n\r\n SERVER_ERROR: {\r\n imageUrl:\r\n 'https://cdn.v-comply.com/application/images/Error-page-illustration.svg',\r\n title: 'Oops!',\r\n description: 'We are unable to load the data.',\r\n details: 'Please refresh this page or try again later.',\r\n buttonText: 'REFRESH',\r\n snackBarMessage: `Oops! Something went wrong. Please try again later.`,\r\n },\r\n\r\n NETWORK_UNAVAILABLE: {\r\n offlineMessage:\r\n \"You're currently offline.Please check your internet connection and try again.\",\r\n },\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackBarService {\r\n public snackbarSubject = new Subject <any>();\r\n public snackbarState = this.snackbarSubject.asObservable();\r\n constructor() {}\r\n\r\n show(message: string, type?:'success'|'warning'|'info'|'alert'|'error') {\r\n this.snackbarSubject.next({\r\n show: true,\r\n message,\r\n icon:type,\r\n });\r\n }\r\n\r\n hide(){\r\n this.snackbarSubject.next({\r\n show: false,\r\n message: '',\r\n icon: '',\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SnackBarService } from '../snack-bar.service';\r\n\r\n@Component({\r\n selector: 'app-snack-bar',\r\n templateUrl: './snack-bar.component.html',\r\n styleUrls: ['./snack-bar.component.less'],\r\n})\r\nexport class SnackBarComponent implements OnInit, OnDestroy {\r\n show = false;\r\n message = '--';\r\n icon = '&#xe914;';\r\n type = 'alert';\r\n icons: any = {\r\n success: '&#xe93d;',\r\n warning: '&#xe914;',\r\n info: '&#xe932;',\r\n alert: '&#xe914;',\r\n error: '&#xeaae;',\r\n };\r\n snackbarSubscription!: Subscription;\r\n constructor(private snackbarService: SnackBarService) {}\r\n\r\n ngOnInit(): void {\r\n this.snackbarSubscription = this.snackbarService.snackbarState.subscribe(\r\n (state) => {\r\n if (state.icon && Object.keys(this.icons).includes(state?.icon)) {\r\n this.icon = this.icons[state.icon];\r\n this.type = state?.icon;\r\n }\r\n this.message = state.message;\r\n this.show = state.show;\r\n }\r\n );\r\n }\r\n\r\n setAutoClose() {\r\n setTimeout(() => {\r\n this.show = false;\r\n this.close();\r\n }, 3000);\r\n }\r\n close() {\r\n this.show = false;\r\n this.snackbarService.hide();\r\n }\r\n ngOnDestroy() {\r\n this.snackbarSubscription.unsubscribe();\r\n }\r\n}\r\n","<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!-- &#xe914; -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>","export class DialogConfig<D = any> {\r\n data?: D;\r\n position?: any;\r\n background?: any;\r\n pointer?: any;\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { DialogConfig } from '../../../ui-kit/dialog/dialog-config';\r\n\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { RouterService } from '../../services/router.service';\r\n\r\nimport { DialogData } from '../../types/global-error.types';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-modal',\r\n template: ` <div class=\"error-dialog-box\">\r\n <div class=\"error-dialog-box-top\">{{ data.heading }}</div>\r\n <div class=\"error-dialog-box-mid\">\r\n {{ data.description }}\r\n </div>\r\n <div class=\"error-dialog-box-bottom\">\r\n <button (click)=\"onContinueAction()\" class=\"logIn-btn\">\r\n {{ data.buttonText }}\r\n </button>\r\n </div>\r\n </div>`,\r\n styleUrls: ['./error-modal.component.less'],\r\n})\r\nexport class ErrorModalComponent {\r\n @Input() errorType: 'session_expired' | 'chunk_not_found' = 'session_expired';\r\n\r\n data: DialogData = {\r\n heading: 'Message',\r\n description: 'Description',\r\n buttonText: 'Click Action',\r\n };\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private dialogConfig: DialogConfig,\r\n private routerService: RouterService\r\n ) {\r\n this.setDataConfig();\r\n }\r\n\r\n private setDataConfig() {\r\n this.data = this.dialogConfig.data?.errorConfig;\r\n this.errorType = this.dialogConfig.data?.errorType;\r\n }\r\n\r\n public onContinueAction() {\r\n if (this.errorType === 'session_expired') {\r\n this.authService.logoutUser();\r\n this.routerService.redirectToLogin();\r\n } else if (this.errorType === 'chunk_not_found') {\r\n window.location.reload();\r\n }\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInsertion]',\r\n})\r\nexport class InsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport class DialogRef {\r\n private readonly afterDialogClosed = new Subject<any>();\r\n afterClosed: Observable<any> = this.afterDialogClosed.asObservable();\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n // debugger\r\n this.afterDialogClosed.next(result);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","import { Component, Type, ComponentFactoryResolver, ViewChild, OnDestroy, ComponentRef, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { NavigationEnd, NavigationError, NavigationStart, Router, ROUTER_CONFIGURATION } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n})\r\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnInit {\r\n componentRef!: ComponentRef<any>;\r\n position: any;\r\n background: any;\r\n pointer: any;\r\n @ViewChild(InsertionDirective, { static: true })\r\n insertionPoint!: InsertionDirective;\r\n animation = true;\r\n\r\n private readonly onDialogClose = new Subject<any>();\r\n public onClose = this.onDialogClose.asObservable();\r\n\r\n childComponentType!: Type<any>;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private cd: ChangeDetectorRef,\r\n private dialogRef: DialogRef,\r\n public config: DialogConfig,\r\n private router: Router\r\n ) {\r\n // this.componentRef = this.componentRef;\r\n // this.animate = this.animate;\r\n // this.insertionPoint = this.insertionPoint;\r\n // this.childComponentType = this.childComponentType;\r\n }\r\n ngOnInit() {\r\n this.position = this.config.position;\r\n this.background = this.config.background;\r\n document.body.style.overflow = 'hidden';\r\n setTimeout(() => {\r\n this.animation = false;\r\n }, 200);\r\n this.routeAction();\r\n }\r\n\r\n routeAction() {\r\n this.router.events.subscribe((event: any) => {\r\n if (event instanceof NavigationStart) {\r\n // Show loading indicator\r\n }\r\n if (event instanceof NavigationEnd) {\r\n // Hide loading indicator\r\n this.dialogRef.close();\r\n }\r\n if (event instanceof NavigationError) {\r\n // Hide loading indicator\r\n // Present error to user\r\n }\r\n });\r\n }\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n // this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n loadChildComponent(componentType: Type<any>) {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n const viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n close(data?: any) {\r\n this.onDialogClose.next(data);\r\n document.body.style.overflow = 'auto';\r\n }\r\n}\r\n","<div\r\n class=\"overlay\"\r\n (click)=\"onOverlayClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER',\r\n black: background === 'black',\r\n whiteBlur: background === 'whiteBlur'\r\n }\" [class.pointer-none]=\"pointer === 'none'\"\r\n>\r\n <div\r\n class=\"dialog\"\r\n [class.animate]=\"animation\"\r\n (click)=\"onDialogClicked($event)\"\r\n [ngClass]=\"{\r\n top: position === 'TOP',\r\n right: position === 'RIGHT',\r\n bottom: position === 'BOTTOM',\r\n left: position === 'LEFT',\r\n center: position === 'CENTER'\r\n }\"\r\n >\r\n <ng-template appInsertion></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { InsertionDirective } from './insertion.directive';\r\nimport { DialogRef } from './dialog-ref';\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DialogComponent, InsertionDirective],\r\n providers: [DialogRef],\r\n exports:[DialogComponent]\r\n})\r\nexport class DialogModule {}\r\n","import { Injector, Type, InjectionToken, InjectFlags } from '@angular/core';\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private parentDialogInjector: Injector, private dialogAdditionalTokens: WeakMap<any, any>) {}\r\n\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): T;\r\n // get(token: any, notFoundValue?: any){return; }\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n const value = this.dialogAdditionalTokens.get(token);\r\n if (value) {\r\n return value;\r\n }\r\n return this.parentDialogInjector.get<any>(token, notFoundValue);\r\n }\r\n}\r\n","import { Injectable, ComponentFactoryResolver, ApplicationRef, Injector, Type, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DialogModule } from './dialog.module';\r\nimport { DialogComponent } from './dialog.component';\r\nimport { DialogInjector } from './dialog-injector';\r\nimport { DialogConfig } from './dialog-config';\r\nimport { DialogRef } from './dialog-ref';\r\n\r\n@Injectable({\r\n providedIn: DialogModule,\r\n})\r\nexport class DialogService {\r\n dialogComponentRef!: ComponentRef<DialogComponent>;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private appRef: ApplicationRef, private injector: Injector) {}\r\n\r\n public open(componentType: Type<any>, config: DialogConfig) {\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n private appendDialogComponentToBody(config: DialogConfig) {\r\n const map = new WeakMap();\r\n map.set(DialogConfig, config);\r\n\r\n const dialogRef = new DialogRef();\r\n map.set(DialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DialogComponent);\r\n const componentRef = componentFactory.create(new DialogInjector(this.injector, map));\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ErrorModalComponent } from '../error-modal/error-modal.component';\r\n\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport { ERROR_CONFIG } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-session-expired',\r\n template: ``,\r\n})\r\nexport class SessionExpiredComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.SESSION_EXPIRED;\r\n\r\n constructor(\r\n private dialogService: DialogService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(ErrorModalComponent, {\r\n data: {\r\n errorType: 'session_expired',\r\n errorConfig: this.errorConfig,\r\n },\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-unauthorized',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img [src]=\"VcomplyLogo\" alt=\"VComply\" width=\"24\" height=\"24\" />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">\r\n {{ errorConfig.details }}\r\n <a href=\"mailto:{help@v-comply.com}\">{{ errorConfig.email }}</a>\r\n {{ errorConfig.support }}.\r\n </div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToSupport()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n &copy;&nbsp;{{ currentYear }}, VCOMPLY TECHNOLOGIES, INC.\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class UnauthorizedComponent {\r\n currentYear = new Date().getFullYear();\r\n errorConfig = ERROR_CONFIG.UNAUTHORIZED;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n\r\n public redirectToSupport() {\r\n window.location.href = this.errorConfig.mail;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ErrorModalComponent } from '../error-modal/error-modal.component';\r\n\r\nimport { DialogService } from '../../../ui-kit/dialog/dialog.service';\r\n\r\nimport { ERROR_CONFIG } from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-chunk-unavailable',\r\n template: ``,\r\n})\r\nexport class ChunkUnavailableComponent implements OnInit {\r\n errorConfig = ERROR_CONFIG.CHUNK_UNAVAILABLE;\r\n\r\n constructor(private dialogService: DialogService) {}\r\n\r\n ngOnInit() {\r\n this.openSessionExpiredModal();\r\n }\r\n\r\n private openSessionExpiredModal() {\r\n this.dialogService.open(ErrorModalComponent, {\r\n data: {\r\n errorType: 'chunk_not_found',\r\n errorConfig: this.errorConfig,\r\n },\r\n position: 'center',\r\n background: 'whiteBlur',\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { GlobalErrorService } from './shared/services/global-error.service';\r\nimport { SnackBarService } from './ui-kit/snack-bar/snack-bar.service';\r\n\r\nimport { ErrorStatusCode } from './shared/types/global-error.types';\r\nimport { ERROR_CONFIG } from './shared/constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-handlers',\r\n template: `\r\n <app-snack-bar></app-snack-bar>\r\n <lib-vc-error-session-expired\r\n *ngIf=\"sessionExpired\"\r\n ></lib-vc-error-session-expired>\r\n <lib-vc-error-unauthorized *ngIf=\"unauthorized\"></lib-vc-error-unauthorized>\r\n <lib-vc-error-chunk-unavailable\r\n *ngIf=\"chunkUnavailable\"\r\n ></lib-vc-error-chunk-unavailable>\r\n `,\r\n})\r\nexport class VcErrorHandlersComponent {\r\n private errorConfig = ERROR_CONFIG.NETWORK_UNAVAILABLE;\r\n\r\n unauthorized: boolean = false;\r\n sessionExpired: boolean = false;\r\n chunkUnavailable: boolean = false;\r\n isOnline: boolean = navigator.onLine;\r\n\r\n constructor(\r\n private errorService: GlobalErrorService,\r\n private snackBarService: SnackBarService\r\n ) {\r\n this.subscribeGlobalError();\r\n }\r\n\r\n ngOnInit() {\r\n this.subscribeNetworkDetection();\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener('online', this.onNetworkOnline);\r\n window.removeEventListener('offline', this.onNetworkOffline);\r\n }\r\n\r\n private subscribeGlobalError() {\r\n this.errorService.globalError$.subscribe((error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse) {\r\n if (error.status === ErrorStatusCode.Unauthenticated) {\r\n this.sessionExpired = true;\r\n } else if (error.status === ErrorStatusCode.UnauthorizedAccess) {\r\n this.unauthorized = true;\r\n } else if (error.status === ErrorStatusCode.JSChunkUnavailable) {\r\n this.chunkUnavailable = true;\r\n } else if (error.status === ErrorStatusCode.NetworkUnavailable) {\r\n this.handleNetworkError();\r\n }\r\n }\r\n\r\n private subscribeNetworkDetection() {\r\n window.addEventListener('online', this.onNetworkOnline);\r\n window.addEventListener('offline', this.onNetworkOffline);\r\n }\r\n\r\n private onNetworkOnline = () => {\r\n this.isOnline = true;\r\n this.hideSnackBar();\r\n };\r\n\r\n private onNetworkOffline = () => {\r\n this.isOnline = false;\r\n this.showOfflineSnackBar();\r\n };\r\n\r\n private handleNetworkError() {\r\n if (!this.isOnline) {\r\n this.showOfflineSnackBar();\r\n }\r\n }\r\n\r\n private showOfflineSnackBar() {\r\n this.snackBarService.show(this.errorConfig.offlineMessage, 'error');\r\n }\r\n\r\n private hideSnackBar() {\r\n this.snackBarService.hide();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-page-not-found',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img [src]=\"VcomplyLogo\" alt=\"VComply\" width=\"24\" height=\"24\" />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"redirectToHome()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe96a;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"errorPage-copyright\">\r\n &copy;&nbsp;{{ currentYear }}, VCOMPLY TECHNOLOGIES, INC.\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class PageNotFoundComponent {\r\n errorConfig = ERROR_CONFIG.PAGE_NOT_FOUND;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n currentYear = new Date().getFullYear();\r\n\r\n constructor(private router: Router) {}\r\n\r\n public redirectToHome() {\r\n const currentUrl = window.location.href;\r\n if (currentUrl.includes('organization')) {\r\n this.router.navigate(['/global-dashboard/compliance_dashboard']);\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport {\r\n ERROR_CONFIG,\r\n VCOMPLY_LOGO_URL,\r\n} from '../../constants/error-handling.constants';\r\n\r\n@Component({\r\n selector: 'lib-vc-error-server-error',\r\n template: `\r\n <div class=\"errorPage\">\r\n <div class=\"errorPage-top\">\r\n <img [src]=\"VcomplyLogo\" alt=\"VComply\" width=\"24\" height=\"24\" />\r\n </div>\r\n <div class=\"errorPage-container\">\r\n <div class=\"errorPage-inner\">\r\n <div class=\"errorPage-inner-image\">\r\n <img\r\n [src]=\"errorConfig.imageUrl\"\r\n alt=\"Error Image\"\r\n width=\"246\"\r\n height=\"178\"\r\n />\r\n </div>\r\n <div class=\"errorPage-inner-right\">\r\n <div class=\"errorPage-heading\">{{ errorConfig.title }}</div>\r\n <div class=\"errorPage-text\">{{ errorConfig.description }}</div>\r\n <div class=\"errorPage-details\">{{ errorConfig.details }}</div>\r\n <button class=\"errorPage-btn\" (click)=\"refreshPage()\">\r\n {{ errorConfig.buttonText }} <i class=\"icons\">&#xe92b;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styleUrls: ['../common-error-page.component.less'],\r\n})\r\nexport class ServerErrorComponent {\r\n errorConfig = ERROR_CONFIG.SERVER_ERROR;\r\n VcomplyLogo = VCOMPLY_LOGO_URL;\r\n\r\n public refreshPage() {\r\n window.location.reload();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SnackBarComponent } from './snack-bar/snack-bar.component';\r\n\r\n@NgModule({\r\n declarations: [SnackBarComponent],\r\n imports: [CommonModule],\r\n exports: [SnackBarComponent],\r\n})\r\nexport class SnackBarModule {}\r\n","export class Configurations {\r\n public sentryConfig: any;\r\n\r\n constructor() {\r\n this.sentryConfig = {};\r\n }\r\n}\r\n","import { ErrorHandler, Injectable, Optional } from '@angular/core';\r\nimport * as Sentry from '@sentry/angular-ivy';\r\nimport { Configurations } from '../../configuration';\r\n\r\nimport { AuthorizerService } from '@vcomply/authorizer';\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\n\r\nimport { ErrorStatusCode } from '../types/global-error.types';\r\n\r\n@Injectable()\r\nexport class SentryErrorHandler implements ErrorHandler {\r\n constructor(\r\n private authorizerService: AuthorizerService,\r\n private errorService: GlobalErrorService,\r\n @Optional() config?: Configurations\r\n ) {\r\n if (config?.sentryConfig) {\r\n const SENTRY_CONFIG = config.sentryConfig;\r\n Sentry.init({\r\n dsn: SENTRY_CONFIG?.DSN,\r\n integrations: [\r\n new Sentry.BrowserTracing({\r\n tracePropagationTargets: SENTRY_CONFIG.ALLOW_ORIGIN,\r\n routingInstrumentation: Sentry.routingInstrumentation,\r\n }),\r\n ],\r\n tracesSampleRate: SENTRY_CONFIG.TRACES_SAMPLE_RATE,\r\n replaysSessionSampleRate: SENTRY_CONFIG.REPLAY_SESSION_SAMPLE_RATE,\r\n replaysOnErrorSampleRate: SENTRY_CONFIG.REPLAY_ON_ERROR_SAMPLE_RATE,\r\n });\r\n Sentry.setUser({ userDetails: this.authorizerService.getUser() });\r\n }\r\n }\r\n\r\n handleError(error: any) {\r\n const ERROR = error?.originalError || error;\r\n this.handleChunkNotFoundError(ERROR);\r\n Sentry.captureException(ERROR);\r\n }\r\n\r\n private handleChunkNotFoundError(error: any) {\r\n const failedMessage = /Loading chunk [\\d]+ failed/;\r\n if (failedMessage.test(error.message)) {\r\n this.errorService.globalError$.next({\r\n status: ErrorStatusCode.JSChunkUnavailable,\r\n });\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 HttpErrorResponse,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, tap, timeout } from 'rxjs/operators';\r\n\r\nimport { GlobalErrorService } from '../services/global-error.service';\r\nimport { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';\r\n\r\nimport { API_TIMEOUT_TIME } from '../constants/error-handling.constants';\r\n\r\n@Injectable()\r\nexport class HttpReqInterceptor implements HttpInterceptor {\r\n constructor(\r\n private errorService: GlobalErrorService,\r\n private snackBarService: SnackBarService\r\n ) {}\r\n\r\n intercept(\r\n req: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n return next.handle(req).pipe(\r\n timeout(API_TIMEOUT_TIME),\r\n tap((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.handleSoftErrors(event);\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.errorService.handleError(error, req);\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n private handleSoftErrors(event: HttpResponse<any>) {\r\n const xData = event.headers.get('X-Data');\r\n\r\n if (xData) {\r\n const parsedData = JSON.parse(xData);\r\n const statusCode = parsedData.statusCode;\r\n const statusMessage = parsedData.message;\r\n\r\n if (statusCode && statusCode !== 0) {\r\n this.snackBarService.show(statusMessage || 'Error occurred', 'error');\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n ErrorHandler,\r\n InjectionToken,\r\n ModuleWithProviders,\r\n NgModule,\r\n} from '@angular/core';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component';\r\nimport { VcErrorHandlersComponent } from './vc-error-handlers.component';\r\n\r\nimport { DialogModule } from './ui-kit/dialog/dialog.module';\r\nimport { SnackBarModule } from './ui-kit/snack-bar/snack-bar.module';\r\n\r\nimport { BrowserOptions } from '@sentry/browser';\r\nimport { GlobalErrorHandler } from './shared/errorhandler/chunk-error.handler';\r\nimport { SentryErrorHandler } from './shared/errorhandler/sentry-error.handler';\r\nimport { Configurations } from './configuration';\r\nimport { UnauthorizedComponent } from './shared/components/unauthorized/unauthorized.component';\r\nimport { SessionExpiredComponent } from './shared/components/session-expired/session-expired.component';\r\nimport { ChunkUnavailableComponent } from './shared/components/chunk-unavailable/chunk-unavailable.component';\r\nimport { ServerErrorComponent } from './shared/components/server-error/server-error.component';\r\n\r\nimport { HttpReqInterceptor } from './shared/interceptors/http.interceptor';\r\nimport { ErrorModalComponent } from './shared/components/error-modal/error-modal.component';\r\n\r\nexport const FOR_ROOT_SENTRY_OPTIONS_TOKEN = new InjectionToken<BrowserOptions>(\r\n 'forRoot() SentryErrorHandler options'\r\n);\r\n\r\n@NgModule({\r\n declarations: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n ErrorModalComponent,\r\n ],\r\n imports: [CommonModule, DialogModule, SnackBarModule],\r\n exports: [\r\n VcErrorHandlersComponent,\r\n PageNotFoundComponent,\r\n UnauthorizedComponent,\r\n SessionExpiredComponent,\r\n ChunkUnavailableComponent,\r\n ServerErrorComponent,\r\n ErrorModalComponent,\r\n ],\r\n providers: [\r\n { provide: ErrorHandler, useClass: SentryErrorHandler },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpReqInterceptor, multi: true },\r\n ],\r\n bootstrap: [VcErrorHandlersComponent],\r\n})\r\nexport class VcErrorHandlersModule {\r\n public static forRoot(\r\n environmentConfig: Configurations\r\n ): ModuleWithProviders<VcErrorHandlersModule> {\r\n return {\r\n ngModule: VcErrorHandlersModule,\r\n providers: [{ provide: Configurations, useValue: environmentConfig }],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of vc-error-handlers\r\n */\r\n\r\nexport * from './lib/vc-error-handlers.service';\r\nexport * from './lib/shared/services/global-error.service';\r\nexport * from './lib/shared/services/auth.service';\r\nexport * from './lib/shared/services/router.service';\r\nexport * from './lib/vc-error-handlers.component';\r\nexport * from './lib/shared/components/page-not-found/page-not-found.component';\r\nexport * from './lib/shared/components/unauthorized/unauthorized.component';\r\nexport * from './lib/shared/components/chunk-unavailable/chunk-unavailable.component';\r\nexport * from './lib/shared/components/server-error/server-error.component';\r\nexport * from './lib/shared/components/session-expired/session-expired.component';\r\nexport * from './lib/shared/components/error-modal/error-modal.component';\r\nexport * from './lib/vc-error-handlers.module';\r\nexport * from './lib/shared/interceptors/http.interceptor';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,16 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { DialogService } from '../../../ui-kit/dialog/dialog.service';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class ChunkUnavailableComponent implements OnInit {
4
- constructor();
5
+ private dialogService;
6
+ errorConfig: {
7
+ heading: string;
8
+ description: string;
9
+ buttonText: string;
10
+ };
11
+ constructor(dialogService: DialogService);
5
12
  ngOnInit(): void;
13
+ private openSessionExpiredModal;
6
14
  static ɵfac: i0.ɵɵFactoryDeclaration<ChunkUnavailableComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<ChunkUnavailableComponent, "lib-chunk-unavailable", never, {}, {}, never, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChunkUnavailableComponent, "lib-vc-error-chunk-unavailable", never, {}, {}, never, never>;
8
16
  }
@@ -0,0 +1,17 @@
1
+ import { DialogConfig } from '../../../ui-kit/dialog/dialog-config';
2
+ import { AuthService } from '../../services/auth.service';
3
+ import { RouterService } from '../../services/router.service';
4
+ import { DialogData } from '../../types/global-error.types';
5
+ import * as i0 from "@angular/core";
6
+ export declare class ErrorModalComponent {
7
+ private authService;
8
+ private dialogConfig;
9
+ private routerService;
10
+ errorType: 'session_expired' | 'chunk_not_found';
11
+ data: DialogData;
12
+ constructor(authService: AuthService, dialogConfig: DialogConfig, routerService: RouterService);
13
+ private setDataConfig;
14
+ onContinueAction(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<ErrorModalComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<ErrorModalComponent, "lib-vc-error-modal", never, { "errorType": "errorType"; }, {}, never, never>;
17
+ }
@@ -1,5 +1,7 @@
1
+ import { Router } from '@angular/router';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class PageNotFoundComponent {
4
+ private router;
3
5
  errorConfig: {
4
6
  imageUrl: string;
5
7
  title: string;
@@ -7,7 +9,9 @@ export declare class PageNotFoundComponent {
7
9
  details: string;
8
10
  buttonText: string;
9
11
  };
10
- VcomplyImage: string;
12
+ VcomplyLogo: string;
13
+ currentYear: number;
14
+ constructor(router: Router);
11
15
  redirectToHome(): void;
12
16
  static ɵfac: i0.ɵɵFactoryDeclaration<PageNotFoundComponent, never>;
13
17
  static ɵcmp: i0.ɵɵComponentDeclaration<PageNotFoundComponent, "lib-vc-error-page-not-found", never, {}, {}, never, never>;
@@ -1,8 +1,15 @@
1
- import { OnInit } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
- export declare class ServerErrorComponent implements OnInit {
4
- constructor();
5
- ngOnInit(): void;
2
+ export declare class ServerErrorComponent {
3
+ errorConfig: {
4
+ imageUrl: string;
5
+ title: string;
6
+ description: string;
7
+ details: string;
8
+ buttonText: string;
9
+ snackBarMessage: string;
10
+ };
11
+ VcomplyLogo: string;
12
+ refreshPage(): void;
6
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ServerErrorComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<ServerErrorComponent, "lib-server-error", never, {}, {}, never, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ServerErrorComponent, "lib-vc-error-server-error", never, {}, {}, never, never>;
8
15
  }
@@ -1,16 +1,14 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { AuthService } from '../../services/auth.service';
3
2
  import { DialogService } from '../../../ui-kit/dialog/dialog.service';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class SessionExpiredComponent implements OnInit {
6
- private authService;
7
5
  private dialogService;
8
6
  errorConfig: {
9
7
  heading: string;
10
8
  description: string;
11
9
  buttonText: string;
12
10
  };
13
- constructor(authService: AuthService, dialogService: DialogService);
11
+ constructor(dialogService: DialogService);
14
12
  ngOnInit(): void;
15
13
  private openSessionExpiredModal;
16
14
  static ɵfac: i0.ɵɵFactoryDeclaration<SessionExpiredComponent, never>;
@@ -1,5 +1,6 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class UnauthorizedComponent {
3
+ currentYear: number;
3
4
  errorConfig: {
4
5
  imageUrl: string;
5
6
  title: string;
@@ -8,8 +9,9 @@ export declare class UnauthorizedComponent {
8
9
  email: string;
9
10
  support: string;
10
11
  buttonText: string;
12
+ mail: string;
11
13
  };
12
- VcomplyImage: string;
14
+ VcomplyLogo: string;
13
15
  redirectToSupport(): void;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<UnauthorizedComponent, never>;
15
17
  static ɵcmp: i0.ɵɵComponentDeclaration<UnauthorizedComponent, "lib-vc-error-unauthorized", never, {}, {}, never, never>;
@@ -1,4 +1,4 @@
1
- export declare const VCOMPLY_IMAGE_URL = "https://cdn.v-comply.com/logo/prod/v-logo.svg";
1
+ export declare const VCOMPLY_LOGO_URL = "https://cdn.v-comply.com/logo/prod/v-logo.svg";
2
2
  export declare const API_TIMEOUT_TIME: number;
3
3
  export declare const ERROR_CONFIG: {
4
4
  PAGE_NOT_FOUND: {
@@ -16,10 +16,27 @@ export declare const ERROR_CONFIG: {
16
16
  email: string;
17
17
  support: string;
18
18
  buttonText: string;
19
+ mail: string;
19
20
  };
20
21
  SESSION_EXPIRED: {
21
22
  heading: string;
22
23
  description: string;
23
24
  buttonText: string;
24
25
  };
26
+ CHUNK_UNAVAILABLE: {
27
+ heading: string;
28
+ description: string;
29
+ buttonText: string;
30
+ };
31
+ SERVER_ERROR: {
32
+ imageUrl: string;
33
+ title: string;
34
+ description: string;
35
+ details: string;
36
+ buttonText: string;
37
+ snackBarMessage: string;
38
+ };
39
+ NETWORK_UNAVAILABLE: {
40
+ offlineMessage: string;
41
+ };
25
42
  };
@@ -1,12 +1,14 @@
1
1
  import { ErrorHandler } from '@angular/core';
2
2
  import { Configurations } from '../../configuration';
3
3
  import { AuthorizerService } from '@vcomply/authorizer';
4
+ import { GlobalErrorService } from '../services/global-error.service';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class SentryErrorHandler implements ErrorHandler {
6
7
  private authorizerService;
7
- constructor(authorizerService: AuthorizerService, config?: Configurations);
8
+ private errorService;
9
+ constructor(authorizerService: AuthorizerService, errorService: GlobalErrorService, config?: Configurations);
8
10
  handleError(error: any): void;
9
- handleChunkError(error: Error): void;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<SentryErrorHandler, [null, { optional: true; }]>;
11
+ private handleChunkNotFoundError;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<SentryErrorHandler, [null, null, { optional: true; }]>;
11
13
  static ɵprov: i0.ɵɵInjectableDeclaration<SentryErrorHandler>;
12
14
  }
@@ -1,11 +1,14 @@
1
1
  import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
3
  import { GlobalErrorService } from '../services/global-error.service';
4
+ import { SnackBarService } from '../../ui-kit/snack-bar/snack-bar.service';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class HttpReqInterceptor implements HttpInterceptor {
6
7
  private errorService;
7
- constructor(errorService: GlobalErrorService);
8
+ private snackBarService;
9
+ constructor(errorService: GlobalErrorService, snackBarService: SnackBarService);
8
10
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
11
+ private handleSoftErrors;
9
12
  static ɵfac: i0.ɵɵFactoryDeclaration<HttpReqInterceptor, never>;
10
13
  static ɵprov: i0.ɵɵInjectableDeclaration<HttpReqInterceptor>;
11
14
  }
@@ -1,5 +1,5 @@
1
1
  export interface DialogData {
2
- header: string;
2
+ heading: string;
3
3
  description: string;
4
4
  buttonText: string;
5
5
  }
@@ -1,13 +1,25 @@
1
1
  import { GlobalErrorService } from './shared/services/global-error.service';
2
+ import { SnackBarService } from './ui-kit/snack-bar/snack-bar.service';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class VcErrorHandlersComponent {
4
5
  private errorService;
6
+ private snackBarService;
7
+ private errorConfig;
5
8
  unauthorized: boolean;
6
9
  sessionExpired: boolean;
7
- networkUnavailable: boolean;
8
- constructor(errorService: GlobalErrorService);
10
+ chunkUnavailable: boolean;
11
+ isOnline: boolean;
12
+ constructor(errorService: GlobalErrorService, snackBarService: SnackBarService);
13
+ ngOnInit(): void;
14
+ ngOnDestroy(): void;
9
15
  private subscribeGlobalError;
10
16
  private handleError;
17
+ private subscribeNetworkDetection;
18
+ private onNetworkOnline;
19
+ private onNetworkOffline;
20
+ private handleNetworkError;
21
+ private showOfflineSnackBar;
22
+ private hideSnackBar;
11
23
  static ɵfac: i0.ɵɵFactoryDeclaration<VcErrorHandlersComponent, never>;
12
24
  static ɵcmp: i0.ɵɵComponentDeclaration<VcErrorHandlersComponent, "lib-vc-error-handlers", never, {}, {}, never, never>;
13
25
  }
@@ -8,7 +8,7 @@ import * as i3 from "./shared/components/unauthorized/unauthorized.component";
8
8
  import * as i4 from "./shared/components/session-expired/session-expired.component";
9
9
  import * as i5 from "./shared/components/chunk-unavailable/chunk-unavailable.component";
10
10
  import * as i6 from "./shared/components/server-error/server-error.component";
11
- import * as i7 from "./shared/components/session-expired-modal/session-expired-modal.component";
11
+ import * as i7 from "./shared/components/error-modal/error-modal.component";
12
12
  import * as i8 from "@angular/common";
13
13
  import * as i9 from "./ui-kit/dialog/dialog.module";
14
14
  import * as i10 from "./ui-kit/snack-bar/snack-bar.module";
@@ -16,6 +16,6 @@ export declare const FOR_ROOT_SENTRY_OPTIONS_TOKEN: InjectionToken<BrowserOption
16
16
  export declare class VcErrorHandlersModule {
17
17
  static forRoot(environmentConfig: Configurations): ModuleWithProviders<VcErrorHandlersModule>;
18
18
  static ɵfac: i0.ɵɵFactoryDeclaration<VcErrorHandlersModule, never>;
19
- static ɵmod: i0.ɵɵNgModuleDeclaration<VcErrorHandlersModule, [typeof i1.VcErrorHandlersComponent, typeof i2.PageNotFoundComponent, typeof i3.UnauthorizedComponent, typeof i4.SessionExpiredComponent, typeof i5.ChunkUnavailableComponent, typeof i6.ServerErrorComponent, typeof i7.SessionExpiredModalComponent], [typeof i8.CommonModule, typeof i9.DialogModule, typeof i10.SnackBarModule], [typeof i1.VcErrorHandlersComponent, typeof i2.PageNotFoundComponent, typeof i3.UnauthorizedComponent, typeof i4.SessionExpiredComponent, typeof i5.ChunkUnavailableComponent, typeof i6.ServerErrorComponent, typeof i7.SessionExpiredModalComponent]>;
19
+ static ɵmod: i0.ɵɵNgModuleDeclaration<VcErrorHandlersModule, [typeof i1.VcErrorHandlersComponent, typeof i2.PageNotFoundComponent, typeof i3.UnauthorizedComponent, typeof i4.SessionExpiredComponent, typeof i5.ChunkUnavailableComponent, typeof i6.ServerErrorComponent, typeof i7.ErrorModalComponent], [typeof i8.CommonModule, typeof i9.DialogModule, typeof i10.SnackBarModule], [typeof i1.VcErrorHandlersComponent, typeof i2.PageNotFoundComponent, typeof i3.UnauthorizedComponent, typeof i4.SessionExpiredComponent, typeof i5.ChunkUnavailableComponent, typeof i6.ServerErrorComponent, typeof i7.ErrorModalComponent]>;
20
20
  static ɵinj: i0.ɵɵInjectorDeclaration<VcErrorHandlersModule>;
21
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vc-error-handlers",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "peerDependencies": {
5
5
  "@angular/common": " 13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x || 20.x",
6
6
  "@angular/core": "13.x || 14.x || 15.x || 16.x || 17.x || 18.x || 19.x || 20.x"
@@ -32,4 +32,4 @@
32
32
  "dependencies": {
33
33
  "tslib": "^2.3.0"
34
34
  }
35
- }
35
+ }
package/public-api.d.ts CHANGED
@@ -8,6 +8,6 @@ export * from './lib/shared/components/unauthorized/unauthorized.component';
8
8
  export * from './lib/shared/components/chunk-unavailable/chunk-unavailable.component';
9
9
  export * from './lib/shared/components/server-error/server-error.component';
10
10
  export * from './lib/shared/components/session-expired/session-expired.component';
11
- export * from './lib/shared/components/session-expired-modal/session-expired-modal.component';
11
+ export * from './lib/shared/components/error-modal/error-modal.component';
12
12
  export * from './lib/vc-error-handlers.module';
13
13
  export * from './lib/shared/interceptors/http.interceptor';
@@ -1,48 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { ERROR_CONFIG } from '../../constants/error-handling.constants';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../../ui-kit/dialog/dialog-config";
5
- import * as i2 from "../../services/router.service";
6
- export class SessionExpiredModalComponent {
7
- constructor(dialogConfig, routerService) {
8
- this.dialogConfig = dialogConfig;
9
- this.routerService = routerService;
10
- this.errorConfig = ERROR_CONFIG.SESSION_EXPIRED;
11
- this.data = {
12
- header: 'Message',
13
- description: 'Description',
14
- buttonText: 'Click Action',
15
- };
16
- this.data = this.dialogConfig.data;
17
- }
18
- onContinueAction() {
19
- this.routerService.redirectToLogin();
20
- }
21
- }
22
- SessionExpiredModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SessionExpiredModalComponent, deps: [{ token: i1.DialogConfig }, { token: i2.RouterService }], target: i0.ɵɵFactoryTarget.Component });
23
- SessionExpiredModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: SessionExpiredModalComponent, selector: "lib-vc-error-session-expired-modal", ngImport: i0, template: ` <div class="error-dialog-box">
24
- <div class="error-dialog-box-top">{{ errorConfig.heading }}</div>
25
- <div class="error-dialog-box-mid">
26
- {{ errorConfig.description }}
27
- </div>
28
- <div class="error-dialog-box-bottom">
29
- <button (click)="onContinueAction()" class="logIn-btn">
30
- {{ errorConfig.buttonText }}
31
- </button>
32
- </div>
33
- </div>`, isInline: true, styles: [".error-dialog-box{background:#fff;border-radius:.75rem;box-shadow:0 1px 10px #0003;width:27rem}.error-dialog-box-top{color:#000;font-size:16px;font-weight:500;border-radius:.75rem .75rem 0 0;display:flex;align-items:center;height:3.375rem;padding:0 1rem;margin-bottom:1rem}.error-dialog-box-mid{color:#565a6f;font-size:13px;min-height:5.5rem;padding:0 1rem}.error-dialog-box-bottom{display:flex;justify-content:end;padding:1rem}.error-dialog-box-bottom button.logIn-btn{background:#1e5dd3;border-radius:.125rem;border:none;color:#fff;cursor:pointer;font-size:11px;height:2rem;padding:.5rem .75rem}\n"] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SessionExpiredModalComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'lib-vc-error-session-expired-modal', template: ` <div class="error-dialog-box">
37
- <div class="error-dialog-box-top">{{ errorConfig.heading }}</div>
38
- <div class="error-dialog-box-mid">
39
- {{ errorConfig.description }}
40
- </div>
41
- <div class="error-dialog-box-bottom">
42
- <button (click)="onContinueAction()" class="logIn-btn">
43
- {{ errorConfig.buttonText }}
44
- </button>
45
- </div>
46
- </div>`, styles: [".error-dialog-box{background:#fff;border-radius:.75rem;box-shadow:0 1px 10px #0003;width:27rem}.error-dialog-box-top{color:#000;font-size:16px;font-weight:500;border-radius:.75rem .75rem 0 0;display:flex;align-items:center;height:3.375rem;padding:0 1rem;margin-bottom:1rem}.error-dialog-box-mid{color:#565a6f;font-size:13px;min-height:5.5rem;padding:0 1rem}.error-dialog-box-bottom{display:flex;justify-content:end;padding:1rem}.error-dialog-box-bottom button.logIn-btn{background:#1e5dd3;border-radius:.125rem;border:none;color:#fff;cursor:pointer;font-size:11px;height:2rem;padding:.5rem .75rem}\n"] }]
47
- }], ctorParameters: function () { return [{ type: i1.DialogConfig }, { type: i2.RouterService }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1leHBpcmVkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvc2Vzc2lvbi1leHBpcmVkLW1vZGFsL3Nlc3Npb24tZXhwaXJlZC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8xQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFpQnhFLE1BQU0sT0FBTyw0QkFBNEI7SUFTdkMsWUFDVSxZQUEwQixFQUMxQixhQUE0QjtRQUQ1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVZ0QyxnQkFBVyxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFFM0MsU0FBSSxHQUFlO1lBQ2pCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFdBQVcsRUFBRSxhQUFhO1lBQzFCLFVBQVUsRUFBRSxjQUFjO1NBQzNCLENBQUM7UUFNQSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzt5SEFsQlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsMEVBYjdCOzs7Ozs7Ozs7O1NBVUg7MkZBR0ksNEJBQTRCO2tCQWZ4QyxTQUFTOytCQUNFLG9DQUFvQyxZQUNwQzs7Ozs7Ozs7OztTQVVIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEaWFsb2dDb25maWcgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvZGlhbG9nL2RpYWxvZy1jb25maWcnO1xyXG5cclxuaW1wb3J0IHsgUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRlci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9nbG9iYWwtZXJyb3IudHlwZXMnO1xyXG5pbXBvcnQgeyBFUlJPUl9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXJyb3ItaGFuZGxpbmcuY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXZjLWVycm9yLXNlc3Npb24tZXhwaXJlZC1tb2RhbCcsXHJcbiAgdGVtcGxhdGU6IGAgPGRpdiBjbGFzcz1cImVycm9yLWRpYWxvZy1ib3hcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1kaWFsb2ctYm94LXRvcFwiPnt7IGVycm9yQ29uZmlnLmhlYWRpbmcgfX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1kaWFsb2ctYm94LW1pZFwiPlxyXG4gICAgICB7eyBlcnJvckNvbmZpZy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItZGlhbG9nLWJveC1ib3R0b21cIj5cclxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25Db250aW51ZUFjdGlvbigpXCIgY2xhc3M9XCJsb2dJbi1idG5cIj5cclxuICAgICAgICB7eyBlcnJvckNvbmZpZy5idXR0b25UZXh0IH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+YCxcclxuICBzdHlsZVVybHM6IFsnLi9zZXNzaW9uLWV4cGlyZWQtbW9kYWwuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlc3Npb25FeHBpcmVkTW9kYWxDb21wb25lbnQge1xyXG4gIGVycm9yQ29uZmlnID0gRVJST1JfQ09ORklHLlNFU1NJT05fRVhQSVJFRDtcclxuXHJcbiAgZGF0YTogRGlhbG9nRGF0YSA9IHtcclxuICAgIGhlYWRlcjogJ01lc3NhZ2UnLFxyXG4gICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicsXHJcbiAgICBidXR0b25UZXh0OiAnQ2xpY2sgQWN0aW9uJyxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcsXHJcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZGF0YSA9IHRoaXMuZGlhbG9nQ29uZmlnLmRhdGE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Db250aW51ZUFjdGlvbigpIHtcclxuICAgIHRoaXMucm91dGVyU2VydmljZS5yZWRpcmVjdFRvTG9naW4oKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,18 +0,0 @@
1
- import { DialogConfig } from '../../../ui-kit/dialog/dialog-config';
2
- import { RouterService } from '../../services/router.service';
3
- import { DialogData } from '../../types/global-error.types';
4
- import * as i0 from "@angular/core";
5
- export declare class SessionExpiredModalComponent {
6
- private dialogConfig;
7
- private routerService;
8
- errorConfig: {
9
- heading: string;
10
- description: string;
11
- buttonText: string;
12
- };
13
- data: DialogData;
14
- constructor(dialogConfig: DialogConfig, routerService: RouterService);
15
- onContinueAction(): void;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<SessionExpiredModalComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<SessionExpiredModalComponent, "lib-vc-error-session-expired-modal", never, {}, {}, never, never>;
18
- }