vc-error-handlers 0.4.32 → 0.5.0

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 (41) hide show
  1. package/README.md +27 -27
  2. package/esm2022/lib/configuration.mjs +1 -1
  3. package/esm2022/lib/featureFlag/feature-flag.directive.mjs +1 -1
  4. package/esm2022/lib/featureFlag/feature-flag.module.mjs +1 -1
  5. package/esm2022/lib/featureFlag/feature-flag.service.mjs +1 -1
  6. package/esm2022/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +1 -1
  7. package/esm2022/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +45 -45
  8. package/esm2022/lib/shared/components/error-modal/error-modal.component.mjs +21 -21
  9. package/esm2022/lib/shared/components/page-not-found/page-not-found.component.mjs +69 -69
  10. package/esm2022/lib/shared/components/server-error/server-error.component.mjs +63 -63
  11. package/esm2022/lib/shared/components/session-expired/session-expired.component.mjs +1 -1
  12. package/esm2022/lib/shared/components/unauthorized/unauthorized.component.mjs +81 -81
  13. package/esm2022/lib/shared/constants/api-config.constants.mjs +1 -1
  14. package/esm2022/lib/shared/constants/assets.constants.mjs +1 -1
  15. package/esm2022/lib/shared/constants/error-handling.constants.mjs +1 -1
  16. package/esm2022/lib/shared/constants/exclude-api-config.constants.mjs +1 -1
  17. package/esm2022/lib/shared/errorhandler/chunk-error.handler.mjs +1 -1
  18. package/esm2022/lib/shared/errorhandler/sentry-error.handler.mjs +1 -1
  19. package/esm2022/lib/shared/interceptors/http.interceptor.mjs +4 -15
  20. package/esm2022/lib/shared/services/global-error.service.mjs +1 -1
  21. package/esm2022/lib/shared/services/router.service.mjs +1 -1
  22. package/esm2022/lib/shared/services/util.service.mjs +1 -1
  23. package/esm2022/lib/shared/types/global-error.types.mjs +1 -1
  24. package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +1 -1
  25. package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +1 -1
  26. package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +1 -1
  27. package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +3 -3
  28. package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +1 -1
  29. package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +1 -1
  30. package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +1 -1
  31. package/esm2022/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.mjs +3 -3
  32. package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +1 -1
  33. package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +1 -1
  34. package/esm2022/lib/vc-error-handlers.component.mjs +38 -31
  35. package/esm2022/lib/vc-error-handlers.module.mjs +2 -2
  36. package/esm2022/lib/vc-error-handlers.service.mjs +1 -1
  37. package/esm2022/public-api.mjs +1 -1
  38. package/fesm2022/vc-error-handlers.mjs +420 -425
  39. package/fesm2022/vc-error-handlers.mjs.map +1 -1
  40. package/lib/vc-error-handlers.component.d.ts +7 -3
  41. package/package.json +1 -1
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, Input, Directive, ViewChild, NgModule, EventEmitter, Output, Optional, InjectionToken, ErrorHandler } from '@angular/core';
2
+ import { Injectable, Optional, Component, Input, Directive, ViewChild, NgModule, EventEmitter, Output, InjectionToken, ErrorHandler } from '@angular/core';
3
3
  import { Subject, throwError } from 'rxjs';
4
4
  import * as i3 from '@angular/router';
5
5
  import { NavigationStart, NavigationEnd, NavigationError } from '@angular/router';
6
- import * as i1 from '@angular/common';
7
- import { CommonModule, NgOptimizedImage } from '@angular/common';
8
- import * as i1$1 from '@vcomply/authorizer';
9
- import * as i1$2 from '@angular/common/http';
10
- import { HttpResponse, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
11
6
  import { retry, timeout, tap, catchError } from 'rxjs/operators';
7
+ import * as i1 from '@angular/common/http';
8
+ import { HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
9
+ import * as i1$1 from '@vcomply/authorizer';
10
+ import * as i1$2 from '@angular/common';
11
+ import { CommonModule, NgOptimizedImage } from '@angular/common';
12
12
  import * as Sentry from '@sentry/angular-ivy';
13
13
 
14
14
  class VcErrorHandlersService {
@@ -1322,6 +1322,105 @@ const ALT_IMAGE_TEXT = {
1322
1322
  VCOMPLY_LOGO: 'VComply',
1323
1323
  };
1324
1324
 
1325
+ class Configurations {
1326
+ constructor() {
1327
+ this.sentryConfig = {};
1328
+ this.envConfig = {};
1329
+ }
1330
+ }
1331
+
1332
+ class FeatureFlagService {
1333
+ constructor(http, authorizer, config) {
1334
+ this.http = http;
1335
+ this.authorizer = authorizer;
1336
+ this.flagFetchError = false;
1337
+ this.featuresMap = {};
1338
+ this.AWSFlags = {};
1339
+ this.environment = config?.envConfig;
1340
+ }
1341
+ fetchFlags() {
1342
+ return this.http.get(this.environment.baseUrl + 'features').pipe(retry(2));
1343
+ }
1344
+ loadConfig() {
1345
+ if (this.flagSubscription) {
1346
+ this.flagSubscription.unsubscribe();
1347
+ }
1348
+ return new Promise((resolve, reject) => {
1349
+ this.flagSubscription = this.fetchFlags().subscribe({
1350
+ next: (res) => {
1351
+ try {
1352
+ resolve(true);
1353
+ this.flagFetchError = false;
1354
+ this.AWSFlags = res;
1355
+ this.buildFeatureFlags(this.authorizer.getOrganizationId());
1356
+ }
1357
+ catch (error) {
1358
+ reject(error);
1359
+ }
1360
+ },
1361
+ error: (err) => {
1362
+ reject(true);
1363
+ this.flagFetchError = true;
1364
+ console.log('An error occurred while fetching feature flags', err);
1365
+ },
1366
+ });
1367
+ });
1368
+ }
1369
+ buildFeatureFlags(orgId) {
1370
+ orgId = orgId?.toString();
1371
+ const enabledFeatures = {};
1372
+ Object.keys(this.AWSFlags).forEach((flag) => {
1373
+ const flagObj = this.AWSFlags[flag];
1374
+ enabledFeatures[flag] = false;
1375
+ if (flagObj) {
1376
+ if (flagObj?.enabled && !flagObj.hasOwnProperty('enabledOrgIds')) {
1377
+ enabledFeatures[flag] = true;
1378
+ }
1379
+ else if (flagObj?.enabled &&
1380
+ flagObj.hasOwnProperty('enabledOrgIds') &&
1381
+ flagObj?.enabledOrgIds?.length > 0) {
1382
+ if (flagObj?.enabledOrgIds?.includes(orgId)) {
1383
+ enabledFeatures[flag] = true;
1384
+ }
1385
+ else {
1386
+ enabledFeatures[flag] = false;
1387
+ }
1388
+ }
1389
+ else {
1390
+ if (flagObj?.enabled) {
1391
+ enabledFeatures[flag] = true;
1392
+ }
1393
+ else {
1394
+ enabledFeatures[flag] = false;
1395
+ }
1396
+ }
1397
+ }
1398
+ else {
1399
+ enabledFeatures[flag] = true;
1400
+ }
1401
+ });
1402
+ this.featuresMap = enabledFeatures;
1403
+ }
1404
+ isFeatureEnabled(featureFlag) {
1405
+ if (this.featuresMap.hasOwnProperty(featureFlag)) {
1406
+ return this.featuresMap[featureFlag];
1407
+ }
1408
+ else {
1409
+ return true;
1410
+ }
1411
+ }
1412
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureFlagService, deps: [{ token: i1.HttpClient }, { token: i1$1.AuthorizerService }, { token: Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1413
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureFlagService, providedIn: 'root' }); }
1414
+ }
1415
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureFlagService, decorators: [{
1416
+ type: Injectable,
1417
+ args: [{
1418
+ providedIn: 'root',
1419
+ }]
1420
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.AuthorizerService }, { type: Configurations, decorators: [{
1421
+ type: Optional
1422
+ }] }]; } });
1423
+
1325
1424
  class SnackBarComponent {
1326
1425
  constructor(snackbarService) {
1327
1426
  this.snackbarService = snackbarService;
@@ -1361,11 +1460,11 @@ class SnackBarComponent {
1361
1460
  this.snackbarSubscription.unsubscribe();
1362
1461
  }
1363
1462
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarComponent, deps: [{ token: SnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
1364
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SnackBarComponent, selector: "app-snack-bar", ngImport: i0, template: "<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>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#fff;border-radius:3px;box-shadow:0 0 10px #0003;min-height:55px;pointer-events:auto}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText{color:#161b2f;font-size:13px;display:flex;align-items:center;width:calc(100% - 70px)}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i{background:#f1f1f1;color:#d93b41;border-radius:50px;font-size:16px;width:30px;height:30px;text-align:center;line-height:28px;margin-right:10px;min-width:30px}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.success{color:#34aa44}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.warning{color:#f0b819}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.info{color:#1e5dd3}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.alert{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.error{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner button{background:transparent;border:none;font-size:11px;padding:0;position:relative;color:#747576;width:65px;text-align:right;cursor:pointer;text-transform:uppercase}::ng-deep .workflow-snackbar .workflow-snackbar-inner button span{color:#1e5dd3;font-weight:500}::ng-deep .workflow-snackbar .workflow-snackbar-inner button:focus{outline:none}@keyframes slide-top{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1463
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SnackBarComponent, selector: "app-snack-bar", ngImport: i0, template: "<div class=\"workflow-snackbar\" *ngIf=\"show\">\n <div class=\"workflow-snackbar-inner\">\n <div class=\"workflow-snackbarText\">\n <!-- &#xe914; -->\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\n </div>\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\n </div>\n </div>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#fff;border-radius:3px;box-shadow:0 0 10px #0003;min-height:55px;pointer-events:auto}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText{color:#161b2f;font-size:13px;display:flex;align-items:center;width:calc(100% - 70px)}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i{background:#f1f1f1;color:#d93b41;border-radius:50px;font-size:16px;width:30px;height:30px;text-align:center;line-height:28px;margin-right:10px;min-width:30px}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.success{color:#34aa44}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.warning{color:#f0b819}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.info{color:#1e5dd3}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.alert{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.error{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner button{background:transparent;border:none;font-size:11px;padding:0;position:relative;color:#747576;width:65px;text-align:right;cursor:pointer;text-transform:uppercase}::ng-deep .workflow-snackbar .workflow-snackbar-inner button span{color:#1e5dd3;font-weight:500}::ng-deep .workflow-snackbar .workflow-snackbar-inner button:focus{outline:none}@keyframes slide-top{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1365
1464
  }
1366
1465
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarComponent, decorators: [{
1367
1466
  type: Component,
1368
- args: [{ selector: 'app-snack-bar', template: "<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>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#fff;border-radius:3px;box-shadow:0 0 10px #0003;min-height:55px;pointer-events:auto}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText{color:#161b2f;font-size:13px;display:flex;align-items:center;width:calc(100% - 70px)}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i{background:#f1f1f1;color:#d93b41;border-radius:50px;font-size:16px;width:30px;height:30px;text-align:center;line-height:28px;margin-right:10px;min-width:30px}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.success{color:#34aa44}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.warning{color:#f0b819}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.info{color:#1e5dd3}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.alert{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.error{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner button{background:transparent;border:none;font-size:11px;padding:0;position:relative;color:#747576;width:65px;text-align:right;cursor:pointer;text-transform:uppercase}::ng-deep .workflow-snackbar .workflow-snackbar-inner button span{color:#1e5dd3;font-weight:500}::ng-deep .workflow-snackbar .workflow-snackbar-inner button:focus{outline:none}@keyframes slide-top{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}\n"] }]
1467
+ args: [{ selector: 'app-snack-bar', template: "<div class=\"workflow-snackbar\" *ngIf=\"show\">\n <div class=\"workflow-snackbar-inner\">\n <div class=\"workflow-snackbarText\">\n <!-- &#xe914; -->\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\n </div>\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\n </div>\n </div>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#fff;border-radius:3px;box-shadow:0 0 10px #0003;min-height:55px;pointer-events:auto}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText{color:#161b2f;font-size:13px;display:flex;align-items:center;width:calc(100% - 70px)}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i{background:#f1f1f1;color:#d93b41;border-radius:50px;font-size:16px;width:30px;height:30px;text-align:center;line-height:28px;margin-right:10px;min-width:30px}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.success{color:#34aa44}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.warning{color:#f0b819}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.info{color:#1e5dd3}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.alert{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.error{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner button{background:transparent;border:none;font-size:11px;padding:0;position:relative;color:#747576;width:65px;text-align:right;cursor:pointer;text-transform:uppercase}::ng-deep .workflow-snackbar .workflow-snackbar-inner button span{color:#1e5dd3;font-weight:500}::ng-deep .workflow-snackbar .workflow-snackbar-inner button:focus{outline:none}@keyframes slide-top{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}\n"] }]
1369
1468
  }], ctorParameters: function () { return [{ type: SnackBarService }]; } });
1370
1469
 
1371
1470
  class UnauthorizedComponent {
@@ -1380,90 +1479,90 @@ class UnauthorizedComponent {
1380
1479
  window.location.href = this.errorConfig.mail;
1381
1480
  }
1382
1481
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1383
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UnauthorizedComponent, selector: "lib-vc-error-unauthorized", ngImport: i0, template: `
1384
- <div class="errorPage">
1385
- <div class="errorPage-top">
1386
- <img
1387
- [ngSrc]="VcomplyLogo"
1388
- [alt]="altImageText.VCOMPLY_LOGO"
1389
- width="24"
1390
- height="24"
1391
- />
1392
- </div>
1393
- <div class="errorPage-container">
1394
- <div class="errorPage-inner">
1395
- <div class="errorPage-inner-image">
1396
- <img
1397
- [ngSrc]="errorConfig.imageUrl"
1398
- [alt]="altImageText.ERROR_IMAGE"
1399
- width="246"
1400
- height="178"
1401
- />
1402
- </div>
1403
- <div class="errorPage-inner-right">
1404
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
1405
- <div class="errorPage-text">{{ errorConfig.description }}</div>
1406
- <div class="errorPage-details">
1407
- {{ errorConfig.details }}
1408
- <a [href]="'mailto:' + errorConfig.email">{{
1409
- errorConfig.email
1410
- }}</a>
1411
- {{ errorConfig.support }}.
1412
- </div>
1413
- <button class="errorPage-btn" (click)="redirectToSupport()">
1414
- {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
1415
- </button>
1416
- </div>
1417
- </div>
1418
- <div class="errorPage-copyright">
1419
- &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
1420
- </div>
1421
- </div>
1422
- </div>
1423
- `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
1482
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UnauthorizedComponent, selector: "lib-vc-error-unauthorized", ngImport: i0, template: `
1483
+ <div class="errorPage">
1484
+ <div class="errorPage-top">
1485
+ <img
1486
+ [ngSrc]="VcomplyLogo"
1487
+ [alt]="altImageText.VCOMPLY_LOGO"
1488
+ width="24"
1489
+ height="24"
1490
+ />
1491
+ </div>
1492
+ <div class="errorPage-container">
1493
+ <div class="errorPage-inner">
1494
+ <div class="errorPage-inner-image">
1495
+ <img
1496
+ [ngSrc]="errorConfig.imageUrl"
1497
+ [alt]="altImageText.ERROR_IMAGE"
1498
+ width="246"
1499
+ height="178"
1500
+ />
1501
+ </div>
1502
+ <div class="errorPage-inner-right">
1503
+ <div class="errorPage-heading">{{ errorConfig.title }}</div>
1504
+ <div class="errorPage-text">{{ errorConfig.description }}</div>
1505
+ <div class="errorPage-details">
1506
+ {{ errorConfig.details }}
1507
+ <a [href]="'mailto:' + errorConfig.email">{{
1508
+ errorConfig.email
1509
+ }}</a>
1510
+ {{ errorConfig.support }}.
1511
+ </div>
1512
+ <button class="errorPage-btn" (click)="redirectToSupport()">
1513
+ {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
1514
+ </button>
1515
+ </div>
1516
+ </div>
1517
+ <div class="errorPage-copyright">
1518
+ &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
1519
+ </div>
1520
+ </div>
1521
+ </div>
1522
+ `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
1424
1523
  }
1425
1524
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UnauthorizedComponent, decorators: [{
1426
1525
  type: Component,
1427
- args: [{ selector: 'lib-vc-error-unauthorized', template: `
1428
- <div class="errorPage">
1429
- <div class="errorPage-top">
1430
- <img
1431
- [ngSrc]="VcomplyLogo"
1432
- [alt]="altImageText.VCOMPLY_LOGO"
1433
- width="24"
1434
- height="24"
1435
- />
1436
- </div>
1437
- <div class="errorPage-container">
1438
- <div class="errorPage-inner">
1439
- <div class="errorPage-inner-image">
1440
- <img
1441
- [ngSrc]="errorConfig.imageUrl"
1442
- [alt]="altImageText.ERROR_IMAGE"
1443
- width="246"
1444
- height="178"
1445
- />
1446
- </div>
1447
- <div class="errorPage-inner-right">
1448
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
1449
- <div class="errorPage-text">{{ errorConfig.description }}</div>
1450
- <div class="errorPage-details">
1451
- {{ errorConfig.details }}
1452
- <a [href]="'mailto:' + errorConfig.email">{{
1453
- errorConfig.email
1454
- }}</a>
1455
- {{ errorConfig.support }}.
1456
- </div>
1457
- <button class="errorPage-btn" (click)="redirectToSupport()">
1458
- {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
1459
- </button>
1460
- </div>
1461
- </div>
1462
- <div class="errorPage-copyright">
1463
- &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
1464
- </div>
1465
- </div>
1466
- </div>
1526
+ args: [{ selector: 'lib-vc-error-unauthorized', template: `
1527
+ <div class="errorPage">
1528
+ <div class="errorPage-top">
1529
+ <img
1530
+ [ngSrc]="VcomplyLogo"
1531
+ [alt]="altImageText.VCOMPLY_LOGO"
1532
+ width="24"
1533
+ height="24"
1534
+ />
1535
+ </div>
1536
+ <div class="errorPage-container">
1537
+ <div class="errorPage-inner">
1538
+ <div class="errorPage-inner-image">
1539
+ <img
1540
+ [ngSrc]="errorConfig.imageUrl"
1541
+ [alt]="altImageText.ERROR_IMAGE"
1542
+ width="246"
1543
+ height="178"
1544
+ />
1545
+ </div>
1546
+ <div class="errorPage-inner-right">
1547
+ <div class="errorPage-heading">{{ errorConfig.title }}</div>
1548
+ <div class="errorPage-text">{{ errorConfig.description }}</div>
1549
+ <div class="errorPage-details">
1550
+ {{ errorConfig.details }}
1551
+ <a [href]="'mailto:' + errorConfig.email">{{
1552
+ errorConfig.email
1553
+ }}</a>
1554
+ {{ errorConfig.support }}.
1555
+ </div>
1556
+ <button class="errorPage-btn" (click)="redirectToSupport()">
1557
+ {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
1558
+ </button>
1559
+ </div>
1560
+ </div>
1561
+ <div class="errorPage-copyright">
1562
+ &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
1563
+ </div>
1564
+ </div>
1565
+ </div>
1467
1566
  `, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"] }]
1468
1567
  }] });
1469
1568
 
@@ -1499,30 +1598,30 @@ class ErrorModalComponent {
1499
1598
  }
1500
1599
  }
1501
1600
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorModalComponent, deps: [{ token: i1$1.AuthorizerService }, { token: DialogConfig }, { token: RouterService }], target: i0.ɵɵFactoryTarget.Component }); }
1502
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorModalComponent, selector: "lib-vc-error-modal", inputs: { errorType: "errorType" }, ngImport: i0, template: ` <div class="error-dialog-box">
1503
- <div class="error-dialog-box-top">{{ data.heading }}</div>
1504
- <div class="error-dialog-box-mid">
1505
- {{ data.description }}
1506
- </div>
1507
- <div class="error-dialog-box-bottom">
1508
- <button (click)="onContinueAction()" class="logIn-btn">
1509
- {{ data.buttonText }}
1510
- </button>
1511
- </div>
1601
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorModalComponent, selector: "lib-vc-error-modal", inputs: { errorType: "errorType" }, ngImport: i0, template: ` <div class="error-dialog-box">
1602
+ <div class="error-dialog-box-top">{{ data.heading }}</div>
1603
+ <div class="error-dialog-box-mid">
1604
+ {{ data.description }}
1605
+ </div>
1606
+ <div class="error-dialog-box-bottom">
1607
+ <button (click)="onContinueAction()" class="logIn-btn">
1608
+ {{ data.buttonText }}
1609
+ </button>
1610
+ </div>
1512
1611
  </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"] }); }
1513
1612
  }
1514
1613
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorModalComponent, decorators: [{
1515
1614
  type: Component,
1516
- args: [{ selector: 'lib-vc-error-modal', template: ` <div class="error-dialog-box">
1517
- <div class="error-dialog-box-top">{{ data.heading }}</div>
1518
- <div class="error-dialog-box-mid">
1519
- {{ data.description }}
1520
- </div>
1521
- <div class="error-dialog-box-bottom">
1522
- <button (click)="onContinueAction()" class="logIn-btn">
1523
- {{ data.buttonText }}
1524
- </button>
1525
- </div>
1615
+ args: [{ selector: 'lib-vc-error-modal', template: ` <div class="error-dialog-box">
1616
+ <div class="error-dialog-box-top">{{ data.heading }}</div>
1617
+ <div class="error-dialog-box-mid">
1618
+ {{ data.description }}
1619
+ </div>
1620
+ <div class="error-dialog-box-bottom">
1621
+ <button (click)="onContinueAction()" class="logIn-btn">
1622
+ {{ data.buttonText }}
1623
+ </button>
1624
+ </div>
1526
1625
  </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"] }]
1527
1626
  }], ctorParameters: function () { return [{ type: i1$1.AuthorizerService }, { type: DialogConfig }, { type: RouterService }]; }, propDecorators: { errorType: [{
1528
1627
  type: Input
@@ -1619,11 +1718,11 @@ class DialogComponent {
1619
1718
  document.body.style.overflow = 'auto';
1620
1719
  }
1621
1720
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: DialogRef }, { token: DialogConfig }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1622
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogComponent, selector: "app-dialog", viewQueries: [{ propertyName: "insertionPoint", first: true, predicate: InsertionDirective, descendants: true, static: true }], ngImport: i0, template: "<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", styles: [".overlay{display:flex;position:fixed;inset:0;align-items:center;justify-content:center;z-index:2147483009!important}.overlay.low{z-index:1}.overlay.black{background:#161b2fcc}.overlay.whiteBlur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.overlay.top{align-items:flex-start}.overlay.right{justify-content:flex-end}.overlay.bottom{align-items:flex-end}.overlay.left{justify-content:flex-start}.dialog{position:relative}.dialog.animate.top{animation:animate-top .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-top{0%{transform:translateY(-100px)}to{transform:translateY(0)}}.dialog.animate.right{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.pointer-none{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InsertionDirective, selector: "[appInsertion]" }] }); }
1721
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DialogComponent, selector: "app-dialog", viewQueries: [{ propertyName: "insertionPoint", first: true, predicate: InsertionDirective, descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"overlay\"\n (click)=\"onOverlayClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER',\n black: background === 'black',\n whiteBlur: background === 'whiteBlur'\n }\" [class.pointer-none]=\"pointer === 'none'\"\n>\n <div\n class=\"dialog\"\n [class.animate]=\"animation\"\n (click)=\"onDialogClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER'\n }\"\n >\n <ng-template appInsertion></ng-template>\n </div>\n</div>\n", styles: [".overlay{display:flex;position:fixed;inset:0;align-items:center;justify-content:center;z-index:2147483009!important}.overlay.low{z-index:1}.overlay.black{background:#161b2fcc}.overlay.whiteBlur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.overlay.top{align-items:flex-start}.overlay.right{justify-content:flex-end}.overlay.bottom{align-items:flex-end}.overlay.left{justify-content:flex-start}.dialog{position:relative}.dialog.animate.top{animation:animate-top .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-top{0%{transform:translateY(-100px)}to{transform:translateY(0)}}.dialog.animate.right{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.pointer-none{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InsertionDirective, selector: "[appInsertion]" }] }); }
1623
1722
  }
1624
1723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DialogComponent, decorators: [{
1625
1724
  type: Component,
1626
- args: [{ selector: 'app-dialog', template: "<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", styles: [".overlay{display:flex;position:fixed;inset:0;align-items:center;justify-content:center;z-index:2147483009!important}.overlay.low{z-index:1}.overlay.black{background:#161b2fcc}.overlay.whiteBlur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.overlay.top{align-items:flex-start}.overlay.right{justify-content:flex-end}.overlay.bottom{align-items:flex-end}.overlay.left{justify-content:flex-start}.dialog{position:relative}.dialog.animate.top{animation:animate-top .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-top{0%{transform:translateY(-100px)}to{transform:translateY(0)}}.dialog.animate.right{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.pointer-none{pointer-events:none}\n"] }]
1725
+ args: [{ selector: 'app-dialog', template: "<div\n class=\"overlay\"\n (click)=\"onOverlayClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER',\n black: background === 'black',\n whiteBlur: background === 'whiteBlur'\n }\" [class.pointer-none]=\"pointer === 'none'\"\n>\n <div\n class=\"dialog\"\n [class.animate]=\"animation\"\n (click)=\"onDialogClicked($event)\"\n [ngClass]=\"{\n top: position === 'TOP',\n right: position === 'RIGHT',\n bottom: position === 'BOTTOM',\n left: position === 'LEFT',\n center: position === 'CENTER'\n }\"\n >\n <ng-template appInsertion></ng-template>\n </div>\n</div>\n", styles: [".overlay{display:flex;position:fixed;inset:0;align-items:center;justify-content:center;z-index:2147483009!important}.overlay.low{z-index:1}.overlay.black{background:#161b2fcc}.overlay.whiteBlur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.overlay.top{align-items:flex-start}.overlay.right{justify-content:flex-end}.overlay.bottom{align-items:flex-end}.overlay.left{justify-content:flex-start}.dialog{position:relative}.dialog.animate.top{animation:animate-top .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-top{0%{transform:translateY(-100px)}to{transform:translateY(0)}}.dialog.animate.right{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.pointer-none{pointer-events:none}\n"] }]
1627
1726
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: DialogRef }, { type: DialogConfig }, { type: i3.Router }]; }, propDecorators: { insertionPoint: [{
1628
1727
  type: ViewChild,
1629
1728
  args: [InsertionDirective, { static: true }]
@@ -1774,79 +1873,80 @@ class ServerErrorComponent {
1774
1873
  window.location.reload();
1775
1874
  }
1776
1875
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ServerErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ServerErrorComponent, selector: "lib-vc-error-server-error", ngImport: i0, template: `
1778
- <div class="errorPage">
1779
- <div class="errorPage-top">
1780
- <img
1781
- [ngSrc]="VcomplyLogo"
1782
- [alt]="altImageText.VCOMPLY_LOGO"
1783
- width="24"
1784
- height="24"
1785
- />
1786
- </div>
1787
- <div class="errorPage-container">
1788
- <div class="errorPage-inner">
1789
- <div class="errorPage-inner-image">
1790
- <img
1791
- [ngSrc]="errorConfig.imageUrl"
1792
- [alt]="altImageText.ERROR_IMAGE"
1793
- width="246"
1794
- height="178"
1795
- />
1796
- </div>
1797
- <div class="errorPage-inner-right">
1798
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
1799
- <div class="errorPage-text">{{ errorConfig.description }}</div>
1800
- <div class="errorPage-details">{{ errorConfig.details }}</div>
1801
- <button class="errorPage-btn" (click)="refreshPage()">
1802
- {{ errorConfig.buttonText }} <i class="icons">&#xe92b;</i>
1803
- </button>
1804
- </div>
1805
- </div>
1806
- </div>
1807
- </div>
1808
- `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
1876
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ServerErrorComponent, selector: "lib-vc-error-server-error", ngImport: i0, template: `
1877
+ <div class="errorPage">
1878
+ <div class="errorPage-top">
1879
+ <img
1880
+ [ngSrc]="VcomplyLogo"
1881
+ [alt]="altImageText.VCOMPLY_LOGO"
1882
+ width="24"
1883
+ height="24"
1884
+ />
1885
+ </div>
1886
+ <div class="errorPage-container">
1887
+ <div class="errorPage-inner">
1888
+ <div class="errorPage-inner-image">
1889
+ <img
1890
+ [ngSrc]="errorConfig.imageUrl"
1891
+ [alt]="altImageText.ERROR_IMAGE"
1892
+ width="246"
1893
+ height="178"
1894
+ />
1895
+ </div>
1896
+ <div class="errorPage-inner-right">
1897
+ <div class="errorPage-heading">{{ errorConfig.title }}</div>
1898
+ <div class="errorPage-text">{{ errorConfig.description }}</div>
1899
+ <div class="errorPage-details">{{ errorConfig.details }}</div>
1900
+ <button class="errorPage-btn" (click)="refreshPage()">
1901
+ {{ errorConfig.buttonText }} <i class="icons">&#xe92b;</i>
1902
+ </button>
1903
+ </div>
1904
+ </div>
1905
+ </div>
1906
+ </div>
1907
+ `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
1809
1908
  }
1810
1909
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ServerErrorComponent, decorators: [{
1811
1910
  type: Component,
1812
- args: [{ selector: 'lib-vc-error-server-error', template: `
1813
- <div class="errorPage">
1814
- <div class="errorPage-top">
1815
- <img
1816
- [ngSrc]="VcomplyLogo"
1817
- [alt]="altImageText.VCOMPLY_LOGO"
1818
- width="24"
1819
- height="24"
1820
- />
1821
- </div>
1822
- <div class="errorPage-container">
1823
- <div class="errorPage-inner">
1824
- <div class="errorPage-inner-image">
1825
- <img
1826
- [ngSrc]="errorConfig.imageUrl"
1827
- [alt]="altImageText.ERROR_IMAGE"
1828
- width="246"
1829
- height="178"
1830
- />
1831
- </div>
1832
- <div class="errorPage-inner-right">
1833
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
1834
- <div class="errorPage-text">{{ errorConfig.description }}</div>
1835
- <div class="errorPage-details">{{ errorConfig.details }}</div>
1836
- <button class="errorPage-btn" (click)="refreshPage()">
1837
- {{ errorConfig.buttonText }} <i class="icons">&#xe92b;</i>
1838
- </button>
1839
- </div>
1840
- </div>
1841
- </div>
1842
- </div>
1911
+ args: [{ selector: 'lib-vc-error-server-error', template: `
1912
+ <div class="errorPage">
1913
+ <div class="errorPage-top">
1914
+ <img
1915
+ [ngSrc]="VcomplyLogo"
1916
+ [alt]="altImageText.VCOMPLY_LOGO"
1917
+ width="24"
1918
+ height="24"
1919
+ />
1920
+ </div>
1921
+ <div class="errorPage-container">
1922
+ <div class="errorPage-inner">
1923
+ <div class="errorPage-inner-image">
1924
+ <img
1925
+ [ngSrc]="errorConfig.imageUrl"
1926
+ [alt]="altImageText.ERROR_IMAGE"
1927
+ width="246"
1928
+ height="178"
1929
+ />
1930
+ </div>
1931
+ <div class="errorPage-inner-right">
1932
+ <div class="errorPage-heading">{{ errorConfig.title }}</div>
1933
+ <div class="errorPage-text">{{ errorConfig.description }}</div>
1934
+ <div class="errorPage-details">{{ errorConfig.details }}</div>
1935
+ <button class="errorPage-btn" (click)="refreshPage()">
1936
+ {{ errorConfig.buttonText }} <i class="icons">&#xe92b;</i>
1937
+ </button>
1938
+ </div>
1939
+ </div>
1940
+ </div>
1941
+ </div>
1843
1942
  `, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"] }]
1844
1943
  }] });
1845
1944
 
1846
1945
  class VcErrorHandlersComponent {
1847
- constructor(errorService, snackBarService) {
1946
+ constructor(errorService, snackBarService, featureFlagService) {
1848
1947
  this.errorService = errorService;
1849
1948
  this.snackBarService = snackBarService;
1949
+ this.featureFlagService = featureFlagService;
1850
1950
  this.errorConfig = ERROR_CONFIG.NETWORK_UNAVAILABLE;
1851
1951
  this.unauthorized = false;
1852
1952
  this.sessionExpired = false;
@@ -1868,6 +1968,7 @@ class VcErrorHandlersComponent {
1868
1968
  }
1869
1969
  ngOnInit() {
1870
1970
  this.subscribeNetworkDetection();
1971
+ this.featureFlagService.featuresMap = this.feature.featuresMap;
1871
1972
  }
1872
1973
  ngOnDestroy() {
1873
1974
  window.removeEventListener('online', this.onNetworkOnline);
@@ -1907,36 +2008,40 @@ class VcErrorHandlersComponent {
1907
2008
  hideSnackBar() {
1908
2009
  this.snackBarService.hide();
1909
2010
  }
1910
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersComponent, deps: [{ token: GlobalErrorService }, { token: SnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
1911
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: VcErrorHandlersComponent, selector: "lib-vc-error-handlers", inputs: { disableSnackBar: "disableSnackBar" }, ngImport: i0, template: `
1912
- <app-snack-bar></app-snack-bar>
1913
- <lib-vc-error-session-expired
1914
- *ngIf="sessionExpired"
1915
- ></lib-vc-error-session-expired>
1916
- <lib-vc-error-unauthorized *ngIf="unauthorized"></lib-vc-error-unauthorized>
1917
- <lib-vc-error-chunk-unavailable
1918
- *ngIf="chunkUnavailable"
1919
- ></lib-vc-error-chunk-unavailable>
1920
- <lib-vc-error-server-error *ngIf="serverError"></lib-vc-error-server-error>
1921
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SnackBarComponent, selector: "app-snack-bar" }, { kind: "component", type: UnauthorizedComponent, selector: "lib-vc-error-unauthorized" }, { kind: "component", type: SessionExpiredComponent, selector: "lib-vc-error-session-expired" }, { kind: "component", type: ChunkUnavailableComponent, selector: "lib-vc-error-chunk-unavailable" }, { kind: "component", type: ServerErrorComponent, selector: "lib-vc-error-server-error" }] }); }
2011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersComponent, deps: [{ token: GlobalErrorService }, { token: SnackBarService }, { token: FeatureFlagService }], target: i0.ɵɵFactoryTarget.Component }); }
2012
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: VcErrorHandlersComponent, selector: "lib-vc-error-handlers", inputs: { disableSnackBar: "disableSnackBar", feature: "feature" }, ngImport: i0, template: `
2013
+ <app-snack-bar></app-snack-bar>
2014
+ <lib-vc-error-session-expired
2015
+ *ngIf="sessionExpired"
2016
+ ></lib-vc-error-session-expired>
2017
+
2018
+ <lib-vc-error-unauthorized *ngIf="unauthorized"></lib-vc-error-unauthorized>
2019
+ <lib-vc-error-chunk-unavailable
2020
+ *ngIf="chunkUnavailable"
2021
+ ></lib-vc-error-chunk-unavailable>
2022
+ <lib-vc-error-server-error *ngIf="serverError"></lib-vc-error-server-error>
2023
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SnackBarComponent, selector: "app-snack-bar" }, { kind: "component", type: UnauthorizedComponent, selector: "lib-vc-error-unauthorized" }, { kind: "component", type: SessionExpiredComponent, selector: "lib-vc-error-session-expired" }, { kind: "component", type: ChunkUnavailableComponent, selector: "lib-vc-error-chunk-unavailable" }, { kind: "component", type: ServerErrorComponent, selector: "lib-vc-error-server-error" }] }); }
1922
2024
  }
1923
2025
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersComponent, decorators: [{
1924
2026
  type: Component,
1925
2027
  args: [{
1926
2028
  selector: 'lib-vc-error-handlers',
1927
- template: `
1928
- <app-snack-bar></app-snack-bar>
1929
- <lib-vc-error-session-expired
1930
- *ngIf="sessionExpired"
1931
- ></lib-vc-error-session-expired>
1932
- <lib-vc-error-unauthorized *ngIf="unauthorized"></lib-vc-error-unauthorized>
1933
- <lib-vc-error-chunk-unavailable
1934
- *ngIf="chunkUnavailable"
1935
- ></lib-vc-error-chunk-unavailable>
1936
- <lib-vc-error-server-error *ngIf="serverError"></lib-vc-error-server-error>
2029
+ template: `
2030
+ <app-snack-bar></app-snack-bar>
2031
+ <lib-vc-error-session-expired
2032
+ *ngIf="sessionExpired"
2033
+ ></lib-vc-error-session-expired>
2034
+
2035
+ <lib-vc-error-unauthorized *ngIf="unauthorized"></lib-vc-error-unauthorized>
2036
+ <lib-vc-error-chunk-unavailable
2037
+ *ngIf="chunkUnavailable"
2038
+ ></lib-vc-error-chunk-unavailable>
2039
+ <lib-vc-error-server-error *ngIf="serverError"></lib-vc-error-server-error>
1937
2040
  `,
1938
2041
  }]
1939
- }], ctorParameters: function () { return [{ type: GlobalErrorService }, { type: SnackBarService }]; }, propDecorators: { disableSnackBar: [{
2042
+ }], ctorParameters: function () { return [{ type: GlobalErrorService }, { type: SnackBarService }, { type: FeatureFlagService }]; }, propDecorators: { disableSnackBar: [{
2043
+ type: Input
2044
+ }], feature: [{
1940
2045
  type: Input
1941
2046
  }] } });
1942
2047
 
@@ -1970,78 +2075,78 @@ class PageNotFoundComponent {
1970
2075
  window.location.replace(targetPath);
1971
2076
  }
1972
2077
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageNotFoundComponent, deps: [{ token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
1973
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageNotFoundComponent, selector: "lib-vc-error-page-not-found", ngImport: i0, template: `
1974
- <div class="errorPage">
1975
- <div class="errorPage-top">
1976
- <img
1977
- [ngSrc]="VcomplyLogo"
1978
- [alt]="altImageText.VCOMPLY_LOGO"
1979
- width="24"
1980
- height="24"
1981
- />
1982
- </div>
1983
- <div class="errorPage-container">
1984
- <div class="errorPage-inner">
1985
- <div class="errorPage-inner-image">
1986
- <img
1987
- [ngSrc]="errorConfig.imageUrl"
1988
- [alt]="altImageText.ERROR_IMAGE"
1989
- width="246"
1990
- height="178"
1991
- />
1992
- </div>
1993
- <div class="errorPage-inner-right">
1994
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
1995
- <div class="errorPage-text">{{ errorConfig.description }}</div>
1996
- <div class="errorPage-details">{{ errorConfig.details }}</div>
1997
- <button class="errorPage-btn" (click)="redirectToHome()">
1998
- {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
1999
- </button>
2000
- </div>
2001
- </div>
2002
- <div class="errorPage-copyright">
2003
- &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
2004
- </div>
2005
- </div>
2006
- </div>
2007
- `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
2078
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PageNotFoundComponent, selector: "lib-vc-error-page-not-found", ngImport: i0, template: `
2079
+ <div class="errorPage">
2080
+ <div class="errorPage-top">
2081
+ <img
2082
+ [ngSrc]="VcomplyLogo"
2083
+ [alt]="altImageText.VCOMPLY_LOGO"
2084
+ width="24"
2085
+ height="24"
2086
+ />
2087
+ </div>
2088
+ <div class="errorPage-container">
2089
+ <div class="errorPage-inner">
2090
+ <div class="errorPage-inner-image">
2091
+ <img
2092
+ [ngSrc]="errorConfig.imageUrl"
2093
+ [alt]="altImageText.ERROR_IMAGE"
2094
+ width="246"
2095
+ height="178"
2096
+ />
2097
+ </div>
2098
+ <div class="errorPage-inner-right">
2099
+ <div class="errorPage-heading">{{ errorConfig.title }}</div>
2100
+ <div class="errorPage-text">{{ errorConfig.description }}</div>
2101
+ <div class="errorPage-details">{{ errorConfig.details }}</div>
2102
+ <button class="errorPage-btn" (click)="redirectToHome()">
2103
+ {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
2104
+ </button>
2105
+ </div>
2106
+ </div>
2107
+ <div class="errorPage-copyright">
2108
+ &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
2109
+ </div>
2110
+ </div>
2111
+ </div>
2112
+ `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
2008
2113
  }
2009
2114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PageNotFoundComponent, decorators: [{
2010
2115
  type: Component,
2011
- args: [{ selector: 'lib-vc-error-page-not-found', template: `
2012
- <div class="errorPage">
2013
- <div class="errorPage-top">
2014
- <img
2015
- [ngSrc]="VcomplyLogo"
2016
- [alt]="altImageText.VCOMPLY_LOGO"
2017
- width="24"
2018
- height="24"
2019
- />
2020
- </div>
2021
- <div class="errorPage-container">
2022
- <div class="errorPage-inner">
2023
- <div class="errorPage-inner-image">
2024
- <img
2025
- [ngSrc]="errorConfig.imageUrl"
2026
- [alt]="altImageText.ERROR_IMAGE"
2027
- width="246"
2028
- height="178"
2029
- />
2030
- </div>
2031
- <div class="errorPage-inner-right">
2032
- <div class="errorPage-heading">{{ errorConfig.title }}</div>
2033
- <div class="errorPage-text">{{ errorConfig.description }}</div>
2034
- <div class="errorPage-details">{{ errorConfig.details }}</div>
2035
- <button class="errorPage-btn" (click)="redirectToHome()">
2036
- {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
2037
- </button>
2038
- </div>
2039
- </div>
2040
- <div class="errorPage-copyright">
2041
- &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
2042
- </div>
2043
- </div>
2044
- </div>
2116
+ args: [{ selector: 'lib-vc-error-page-not-found', template: `
2117
+ <div class="errorPage">
2118
+ <div class="errorPage-top">
2119
+ <img
2120
+ [ngSrc]="VcomplyLogo"
2121
+ [alt]="altImageText.VCOMPLY_LOGO"
2122
+ width="24"
2123
+ height="24"
2124
+ />
2125
+ </div>
2126
+ <div class="errorPage-container">
2127
+ <div class="errorPage-inner">
2128
+ <div class="errorPage-inner-image">
2129
+ <img
2130
+ [ngSrc]="errorConfig.imageUrl"
2131
+ [alt]="altImageText.ERROR_IMAGE"
2132
+ width="246"
2133
+ height="178"
2134
+ />
2135
+ </div>
2136
+ <div class="errorPage-inner-right">
2137
+ <div class="errorPage-heading">{{ errorConfig.title }}</div>
2138
+ <div class="errorPage-text">{{ errorConfig.description }}</div>
2139
+ <div class="errorPage-details">{{ errorConfig.details }}</div>
2140
+ <button class="errorPage-btn" (click)="redirectToHome()">
2141
+ {{ errorConfig.buttonText }} <i class="icons">&#xe96a;</i>
2142
+ </button>
2143
+ </div>
2144
+ </div>
2145
+ <div class="errorPage-copyright">
2146
+ &copy;&nbsp;{{ currentYear }}, {{ organisationName }}
2147
+ </div>
2148
+ </div>
2149
+ </div>
2045
2150
  `, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.errorPage{background:#161b2f;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999}.errorPage-top{width:100%;height:3rem;display:flex;align-items:center;padding-left:.75rem}.errorPage-container{background:#f2f2f5;border-radius:.75rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1d5dd31a;height:calc(100vh - 3.75rem);display:flex;align-items:center;justify-content:center;padding:0 4rem;margin:0 .75rem;position:relative}.errorPage-inner{display:flex;align-items:center}.errorPage-inner-image{width:16rem}.errorPage-inner-right{margin-left:2rem;width:calc(100% - 18rem)}.errorPage-inner-right .errorPage-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:78px;font-weight:700;line-height:110px;margin-bottom:1.5rem}.errorPage-inner-right .errorPage-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.errorPage-inner-right .errorPage-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:1.75rem}.errorPage-inner-right .errorPage-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.errorPage-inner-right .errorPage-btn i{font-size:14px;margin-left:.25rem}.errorPage-copyright{font-size:11px;color:#787a8c;font-weight:500;position:absolute;bottom:8px;right:16px;line-height:16px}\n"] }]
2046
2151
  }], ctorParameters: function () { return [{ type: i3.ActivatedRoute }]; } });
2047
2152
 
@@ -2052,54 +2157,54 @@ class ComponentLevelServerErrorComponent {
2052
2157
  this.onClick = new EventEmitter();
2053
2158
  }
2054
2159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentLevelServerErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2055
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ComponentLevelServerErrorComponent, selector: "lib-vc-error-component-server-error", outputs: { onClick: "onClick" }, ngImport: i0, template: `
2056
- <div class="serverError">
2057
- <div class="serverError-inner">
2058
- <div class="serverError-inner-image">
2059
- <img
2060
- [ngSrc]="errorConfig.imageUrl"
2061
- [alt]="altImageText.ERROR_IMAGE"
2062
- width="106"
2063
- height="76"
2064
- />
2065
- </div>
2066
- <div class="serverError-inner-bottom">
2067
- <div class="serverError-heading">{{ errorConfig.title }}</div>
2068
- <div class="serverError-text">{{ errorConfig.description }}</div>
2069
- <div class="serverError-details">{{ errorConfig.details }}</div>
2070
- <button class="serverError-btn" (click)="onClick.emit(true)">
2071
- {{ errorConfig.buttonText }}
2072
- <i class="icons">&#xe92b;</i>
2073
- </button>
2074
- </div>
2075
- </div>
2076
- </div>
2077
- `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.serverError{background:#fff;display:flex;align-items:center;justify-content:center;border-radius:2px;width:100%;height:100%}.serverError-inner{text-align:center}.serverError-inner-image{width:16rem;margin:0 auto}.serverError-inner-bottom{margin-top:1rem}.serverError-inner-bottom .serverError-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:40px;font-weight:700;line-height:56px;margin-bottom:1.5rem}.serverError-inner-bottom .serverError-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.serverError-inner-bottom .serverError-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:2rem}.serverError-inner-bottom .serverError-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.serverError-inner-bottom .serverError-btn i{font-size:12px;margin-left:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
2160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ComponentLevelServerErrorComponent, selector: "lib-vc-error-component-server-error", outputs: { onClick: "onClick" }, ngImport: i0, template: `
2161
+ <div class="serverError">
2162
+ <div class="serverError-inner">
2163
+ <div class="serverError-inner-image">
2164
+ <img
2165
+ [ngSrc]="errorConfig.imageUrl"
2166
+ [alt]="altImageText.ERROR_IMAGE"
2167
+ width="106"
2168
+ height="76"
2169
+ />
2170
+ </div>
2171
+ <div class="serverError-inner-bottom">
2172
+ <div class="serverError-heading">{{ errorConfig.title }}</div>
2173
+ <div class="serverError-text">{{ errorConfig.description }}</div>
2174
+ <div class="serverError-details">{{ errorConfig.details }}</div>
2175
+ <button class="serverError-btn" (click)="onClick.emit(true)">
2176
+ {{ errorConfig.buttonText }}
2177
+ <i class="icons">&#xe92b;</i>
2178
+ </button>
2179
+ </div>
2180
+ </div>
2181
+ </div>
2182
+ `, isInline: true, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.serverError{background:#fff;display:flex;align-items:center;justify-content:center;border-radius:2px;width:100%;height:100%}.serverError-inner{text-align:center}.serverError-inner-image{width:16rem;margin:0 auto}.serverError-inner-bottom{margin-top:1rem}.serverError-inner-bottom .serverError-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:40px;font-weight:700;line-height:56px;margin-bottom:1.5rem}.serverError-inner-bottom .serverError-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.serverError-inner-bottom .serverError-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:2rem}.serverError-inner-bottom .serverError-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.serverError-inner-bottom .serverError-btn i{font-size:12px;margin-left:8px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }] }); }
2078
2183
  }
2079
2184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentLevelServerErrorComponent, decorators: [{
2080
2185
  type: Component,
2081
- args: [{ selector: 'lib-vc-error-component-server-error', template: `
2082
- <div class="serverError">
2083
- <div class="serverError-inner">
2084
- <div class="serverError-inner-image">
2085
- <img
2086
- [ngSrc]="errorConfig.imageUrl"
2087
- [alt]="altImageText.ERROR_IMAGE"
2088
- width="106"
2089
- height="76"
2090
- />
2091
- </div>
2092
- <div class="serverError-inner-bottom">
2093
- <div class="serverError-heading">{{ errorConfig.title }}</div>
2094
- <div class="serverError-text">{{ errorConfig.description }}</div>
2095
- <div class="serverError-details">{{ errorConfig.details }}</div>
2096
- <button class="serverError-btn" (click)="onClick.emit(true)">
2097
- {{ errorConfig.buttonText }}
2098
- <i class="icons">&#xe92b;</i>
2099
- </button>
2100
- </div>
2101
- </div>
2102
- </div>
2186
+ args: [{ selector: 'lib-vc-error-component-server-error', template: `
2187
+ <div class="serverError">
2188
+ <div class="serverError-inner">
2189
+ <div class="serverError-inner-image">
2190
+ <img
2191
+ [ngSrc]="errorConfig.imageUrl"
2192
+ [alt]="altImageText.ERROR_IMAGE"
2193
+ width="106"
2194
+ height="76"
2195
+ />
2196
+ </div>
2197
+ <div class="serverError-inner-bottom">
2198
+ <div class="serverError-heading">{{ errorConfig.title }}</div>
2199
+ <div class="serverError-text">{{ errorConfig.description }}</div>
2200
+ <div class="serverError-details">{{ errorConfig.details }}</div>
2201
+ <button class="serverError-btn" (click)="onClick.emit(true)">
2202
+ {{ errorConfig.buttonText }}
2203
+ <i class="icons">&#xe92b;</i>
2204
+ </button>
2205
+ </div>
2206
+ </div>
2207
+ </div>
2103
2208
  `, styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";.serverError{background:#fff;display:flex;align-items:center;justify-content:center;border-radius:2px;width:100%;height:100%}.serverError-inner{text-align:center}.serverError-inner-image{width:16rem;margin:0 auto}.serverError-inner-bottom{margin-top:1rem}.serverError-inner-bottom .serverError-heading{-webkit-text-fill-color:#e3e3e9;-webkit-text-stroke-color:#a9aab6;-webkit-text-stroke-width:1px;color:#e3e3e9;font-size:40px;font-weight:700;line-height:56px;margin-bottom:1.5rem}.serverError-inner-bottom .serverError-text{color:#141724;font-size:19px;font-weight:500;line-height:1.75rem;margin-bottom:.5rem}.serverError-inner-bottom .serverError-details{color:#565a6f;font-size:13px;line-height:20px;margin-bottom:2rem}.serverError-inner-bottom .serverError-btn{background:#1e5dd3;border-radius:.25rem;border:none;color:#fff;display:inline-flex;align-items:center;font-size:11px;font-weight:500;line-height:2rem;padding:0 1rem}.serverError-inner-bottom .serverError-btn i{font-size:12px;margin-left:8px}\n"] }]
2104
2209
  }], propDecorators: { onClick: [{
2105
2210
  type: Output
@@ -2119,105 +2224,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2119
2224
  }]
2120
2225
  }] });
2121
2226
 
2122
- class Configurations {
2123
- constructor() {
2124
- this.sentryConfig = {};
2125
- this.envConfig = {};
2126
- }
2127
- }
2128
-
2129
- class FeatureFlagService {
2130
- constructor(http, authorizer, config) {
2131
- this.http = http;
2132
- this.authorizer = authorizer;
2133
- this.flagFetchError = false;
2134
- this.featuresMap = {};
2135
- this.AWSFlags = {};
2136
- this.environment = config?.envConfig;
2137
- }
2138
- fetchFlags() {
2139
- return this.http.get(this.environment.baseUrl + 'features').pipe(retry(2));
2140
- }
2141
- loadConfig() {
2142
- if (this.flagSubscription) {
2143
- this.flagSubscription.unsubscribe();
2144
- }
2145
- return new Promise((resolve, reject) => {
2146
- this.flagSubscription = this.fetchFlags().subscribe({
2147
- next: (res) => {
2148
- try {
2149
- resolve(true);
2150
- this.flagFetchError = false;
2151
- this.AWSFlags = res;
2152
- this.buildFeatureFlags(this.authorizer.getOrganizationId());
2153
- }
2154
- catch (error) {
2155
- reject(error);
2156
- }
2157
- },
2158
- error: (err) => {
2159
- reject(true);
2160
- this.flagFetchError = true;
2161
- console.log('An error occurred while fetching feature flags', err);
2162
- },
2163
- });
2164
- });
2165
- }
2166
- buildFeatureFlags(orgId) {
2167
- orgId = orgId?.toString();
2168
- const enabledFeatures = {};
2169
- Object.keys(this.AWSFlags).forEach((flag) => {
2170
- const flagObj = this.AWSFlags[flag];
2171
- enabledFeatures[flag] = false;
2172
- if (flagObj) {
2173
- if (flagObj?.enabled && !flagObj.hasOwnProperty('enabledOrgIds')) {
2174
- enabledFeatures[flag] = true;
2175
- }
2176
- else if (flagObj?.enabled &&
2177
- flagObj.hasOwnProperty('enabledOrgIds') &&
2178
- flagObj?.enabledOrgIds?.length > 0) {
2179
- if (flagObj?.enabledOrgIds?.includes(orgId)) {
2180
- enabledFeatures[flag] = true;
2181
- }
2182
- else {
2183
- enabledFeatures[flag] = false;
2184
- }
2185
- }
2186
- else {
2187
- if (flagObj?.enabled) {
2188
- enabledFeatures[flag] = true;
2189
- }
2190
- else {
2191
- enabledFeatures[flag] = false;
2192
- }
2193
- }
2194
- }
2195
- else {
2196
- enabledFeatures[flag] = true;
2197
- }
2198
- });
2199
- this.featuresMap = enabledFeatures;
2200
- }
2201
- isFeatureEnabled(featureFlag) {
2202
- if (this.featuresMap.hasOwnProperty(featureFlag)) {
2203
- return this.featuresMap[featureFlag];
2204
- }
2205
- else {
2206
- return true;
2207
- }
2208
- }
2209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureFlagService, deps: [{ token: i1$2.HttpClient }, { token: i1$1.AuthorizerService }, { token: Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2210
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureFlagService, providedIn: 'root' }); }
2211
- }
2212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureFlagService, decorators: [{
2213
- type: Injectable,
2214
- args: [{
2215
- providedIn: 'root',
2216
- }]
2217
- }], ctorParameters: function () { return [{ type: i1$2.HttpClient }, { type: i1$1.AuthorizerService }, { type: Configurations, decorators: [{
2218
- type: Optional
2219
- }] }]; } });
2220
-
2221
2227
  class FeatureFlagDirective {
2222
2228
  constructor(tpl, vcr, featureFlagService) {
2223
2229
  this.tpl = tpl;
@@ -2314,19 +2320,8 @@ class HttpReqInterceptor {
2314
2320
  this.errorService.handleSoftErrors(event);
2315
2321
  }
2316
2322
  }), catchError((error) => {
2317
- if (error instanceof Error && error.name === 'TimeoutError') {
2318
- // On timeout, retry with a fallback API
2319
- const fallbackReq = req.clone({
2320
- url: '/organization_pwt/?mode=slowApis',
2321
- method: 'POST', // // Adjust this URL pattern as needed
2322
- });
2323
- return next.handle(fallbackReq);
2324
- }
2325
- if (error instanceof HttpErrorResponse) {
2326
- this.errorService.handleError(error, req);
2327
- return throwError(error);
2328
- }
2329
- return throwError(new HttpErrorResponse({ error }));
2323
+ this.errorService.handleError(error, req);
2324
+ return throwError(error);
2330
2325
  }));
2331
2326
  }
2332
2327
  else {
@@ -2344,7 +2339,7 @@ const FOR_ROOT_SENTRY_OPTIONS_TOKEN = new InjectionToken('forRoot() SentryErrorH
2344
2339
  class VcErrorHandlersModule {
2345
2340
  constructor(loadConfig) {
2346
2341
  this.loadConfig = loadConfig;
2347
- this.loadConfig.loadConfig();
2342
+ // this.loadConfig.loadConfig();
2348
2343
  }
2349
2344
  static forRoot(environmentConfig) {
2350
2345
  return {