@propmix/profet-common-header 3.0.15-utility-unstable.4 → 3.0.15-utility-unstable.6

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 (31) hide show
  1. package/esm2020/lib/api-endpoints.def.mjs +3 -2
  2. package/esm2020/lib/api-gateway.service.mjs +5 -13
  3. package/esm2020/lib/appraisal-assistant/appraisal-assistant-chat-widget.component.mjs +179 -0
  4. package/esm2020/lib/appraisal-assistant/appraisal-assistant.interface.mjs +2 -0
  5. package/esm2020/lib/closable.mixin.mjs +14 -0
  6. package/esm2020/lib/common-header.interface.mjs +1 -1
  7. package/esm2020/lib/common-header.service.mjs +28 -1
  8. package/esm2020/lib/header/header.component.mjs +44 -11
  9. package/esm2020/lib/utility-widget-config.token.mjs +3 -0
  10. package/esm2020/lib/utils/chat-time.pipe.mjs +35 -0
  11. package/esm2020/lib/utils/text-to-html.pipe.mjs +42 -0
  12. package/fesm2015/propmix-profet-common-header-appraisal-assistant-chat-widget.component-56a1672f.mjs +281 -0
  13. package/fesm2015/propmix-profet-common-header-appraisal-assistant-chat-widget.component-56a1672f.mjs.map +1 -0
  14. package/fesm2015/propmix-profet-common-header.mjs +83 -24
  15. package/fesm2015/propmix-profet-common-header.mjs.map +1 -1
  16. package/fesm2020/propmix-profet-common-header-appraisal-assistant-chat-widget.component-8816b836.mjs +276 -0
  17. package/fesm2020/propmix-profet-common-header-appraisal-assistant-chat-widget.component-8816b836.mjs.map +1 -0
  18. package/fesm2020/propmix-profet-common-header.mjs +77 -24
  19. package/fesm2020/propmix-profet-common-header.mjs.map +1 -1
  20. package/lib/api-endpoints.def.d.ts +1 -0
  21. package/lib/api-gateway.service.d.ts +2 -1
  22. package/lib/appraisal-assistant/appraisal-assistant-chat-widget.component.d.ts +37 -0
  23. package/lib/appraisal-assistant/appraisal-assistant.interface.d.ts +4 -0
  24. package/lib/closable.mixin.d.ts +7 -0
  25. package/lib/common-header.interface.d.ts +12 -2
  26. package/lib/common-header.service.d.ts +4 -0
  27. package/lib/header/header.component.d.ts +10 -4
  28. package/lib/utility-widget-config.token.d.ts +2 -0
  29. package/lib/utils/chat-time.pipe.d.ts +7 -0
  30. package/lib/utils/text-to-html.pipe.d.ts +21 -0
  31. package/package.json +1 -1
@@ -9,6 +9,7 @@ EndPoints.API_URLS = {
9
9
  getUserDetails: '/api/user/getUserInformation',
10
10
  getCompanyList: '/api/user/getUserCompanies',
11
11
  getAppMenu: '/api/user/getAppMenu',
12
- updateLastAccessedApplication: '/api/user/updateLastAccessedApplication'
12
+ updateLastAccessedApplication: '/api/user/updateLastAccessedApplication',
13
+ appraisalChat: '/api/user/chat'
13
14
  };
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWVuZHBvaW50cy5kZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvYXBpLWVuZHBvaW50cy5kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7O0FBQ0osa0JBQVEsR0FBRztJQUNyQixVQUFVLEVBQUUsMkNBQTJDO0lBQ3ZELHNCQUFzQixFQUFFLHFDQUFxQztJQUM3RCxnQkFBZ0IsRUFBRSwrQkFBK0I7SUFDakQsaUJBQWlCLEVBQUUsZ0NBQWdDO0lBQ25ELG1CQUFtQixFQUFFLHNCQUFzQjtJQUMzQyxjQUFjLEVBQUUsOEJBQThCO0lBRTlDLGNBQWMsRUFBRSw0QkFBNEI7SUFDNUMsVUFBVSxFQUFFLHNCQUFzQjtJQUNsQyw2QkFBNkIsRUFBRSx5Q0FBeUM7Q0FDM0UsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBFbmRQb2ludHMge1xuICAgIHB1YmxpYyBzdGF0aWMgQVBJX1VSTFMgPSB7XG4gICAgICAgIGdldEFwcHNBcGk6ICcvYXBpL2NvbXBhbnkvZ2V0QWxsVXNlckFjY2Vzc0FwcGxpY2F0aW9ucycsXG4gICAgICAgIGdldENvbXBhbnlBcHBsaWNhdGlvbnM6ICcvYXBpL2NvbXBhbnkvZ2V0Q29tcGFueUFwcGxpY2F0aW9ucycsXG4gICAgICAgIGdldFVzZXJDb21wYW5pZXM6ICcvYXBpL3Byb2ZpbGUvZ2V0VXNlckNvbXBhbmllcycsICAvLyBUT0RPIC0tIE5lZWRzIHRvIHJlbW92ZVxuICAgICAgICB1cGRhdGVVc2VyQ29tcGFueTogJy9hcGkvY29tcGFueS91cGRhdGVVc2VyQ29tcGFueScsXG4gICAgICAgIGZldGNoQ29tcGFueVByb2ZpbGU6ICcvZmV0Y2hDb21wYW55UHJvZmlsZScsXG4gICAgICAgIGdldFVzZXJEZXRhaWxzOiAnL2FwaS91c2VyL2dldFVzZXJJbmZvcm1hdGlvbicsXG5cbiAgICAgICAgZ2V0Q29tcGFueUxpc3Q6ICcvYXBpL3VzZXIvZ2V0VXNlckNvbXBhbmllcycsXG4gICAgICAgIGdldEFwcE1lbnU6ICcvYXBpL3VzZXIvZ2V0QXBwTWVudScsXG4gICAgICAgIHVwZGF0ZUxhc3RBY2Nlc3NlZEFwcGxpY2F0aW9uOiAnL2FwaS91c2VyL3VwZGF0ZUxhc3RBY2Nlc3NlZEFwcGxpY2F0aW9uJ1xuICAgIH1cbn0iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWVuZHBvaW50cy5kZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvYXBpLWVuZHBvaW50cy5kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7O0FBQ0osa0JBQVEsR0FBRztJQUNyQixVQUFVLEVBQUUsMkNBQTJDO0lBQ3ZELHNCQUFzQixFQUFFLHFDQUFxQztJQUM3RCxnQkFBZ0IsRUFBRSwrQkFBK0I7SUFDakQsaUJBQWlCLEVBQUUsZ0NBQWdDO0lBQ25ELG1CQUFtQixFQUFFLHNCQUFzQjtJQUMzQyxjQUFjLEVBQUUsOEJBQThCO0lBRTlDLGNBQWMsRUFBRSw0QkFBNEI7SUFDNUMsVUFBVSxFQUFFLHNCQUFzQjtJQUNsQyw2QkFBNkIsRUFBRSx5Q0FBeUM7SUFDeEUsYUFBYSxFQUFFLGdCQUFnQjtDQUNsQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEVuZFBvaW50cyB7XG4gICAgcHVibGljIHN0YXRpYyBBUElfVVJMUyA9IHtcbiAgICAgICAgZ2V0QXBwc0FwaTogJy9hcGkvY29tcGFueS9nZXRBbGxVc2VyQWNjZXNzQXBwbGljYXRpb25zJyxcbiAgICAgICAgZ2V0Q29tcGFueUFwcGxpY2F0aW9uczogJy9hcGkvY29tcGFueS9nZXRDb21wYW55QXBwbGljYXRpb25zJyxcbiAgICAgICAgZ2V0VXNlckNvbXBhbmllczogJy9hcGkvcHJvZmlsZS9nZXRVc2VyQ29tcGFuaWVzJywgIC8vIFRPRE8gLS0gTmVlZHMgdG8gcmVtb3ZlXG4gICAgICAgIHVwZGF0ZVVzZXJDb21wYW55OiAnL2FwaS9jb21wYW55L3VwZGF0ZVVzZXJDb21wYW55JyxcbiAgICAgICAgZmV0Y2hDb21wYW55UHJvZmlsZTogJy9mZXRjaENvbXBhbnlQcm9maWxlJyxcbiAgICAgICAgZ2V0VXNlckRldGFpbHM6ICcvYXBpL3VzZXIvZ2V0VXNlckluZm9ybWF0aW9uJyxcblxuICAgICAgICBnZXRDb21wYW55TGlzdDogJy9hcGkvdXNlci9nZXRVc2VyQ29tcGFuaWVzJyxcbiAgICAgICAgZ2V0QXBwTWVudTogJy9hcGkvdXNlci9nZXRBcHBNZW51JyxcbiAgICAgICAgdXBkYXRlTGFzdEFjY2Vzc2VkQXBwbGljYXRpb246ICcvYXBpL3VzZXIvdXBkYXRlTGFzdEFjY2Vzc2VkQXBwbGljYXRpb24nLFxuICAgICAgICBhcHByYWlzYWxDaGF0OiAnL2FwaS91c2VyL2NoYXQnXG4gICAgfVxufSJdfQ==
@@ -1,4 +1,4 @@
1
- import { HttpClient } from '@angular/common/http';
1
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
2
2
  import { Injectable, inject } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
@@ -8,17 +8,9 @@ export class ApiGatewayService {
8
8
  }
9
9
  doGet(url, config) {
10
10
  return new Observable(observer => {
11
- if (!config) {
12
- config = {
13
- isLoaderHidden: false
14
- };
15
- }
16
- ;
17
- let headers;
18
- if (config.isUnauthorized) {
19
- headers = {
20
- skip: "true"
21
- };
11
+ let headers = config?.httpHeader ?? new HttpHeaders();
12
+ if (config?.isUnauthorized) {
13
+ headers = headers.set('skip', 'true');
22
14
  }
23
15
  // this._loaderService.requestStarted(config);
24
16
  this._http
@@ -66,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
66
58
  providedIn: 'root'
67
59
  }]
68
60
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdhdGV3YXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9hcGktZ2F0ZXdheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtsQyxNQUFNLE9BQU8saUJBQWlCO0lBSDlCO1FBSVUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQW9EcEM7SUFsREMsS0FBSyxDQUFDLEdBQVcsRUFBRSxNQUFZO1FBQzdCLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxNQUFNLEdBQUc7b0JBQ1AsY0FBYyxFQUFFLEtBQUs7aUJBQ3RCLENBQUM7YUFDSDtZQUFBLENBQUM7WUFDRixJQUFJLE9BQVcsQ0FBQztZQUNoQixJQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUM7Z0JBQ3ZCLE9BQU8sR0FBRztvQkFDUixJQUFJLEVBQUUsTUFBTTtpQkFDYixDQUFBO2FBQ0Y7WUFFRCw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLEtBQUs7aUJBQ1AsR0FBRyxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztpQkFDM0IsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNiLHNDQUFzQztvQkFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLDZDQUE2QztnQkFDL0MsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFXLEVBQUUsUUFBYztRQUNoQyxPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLElBQUksT0FBVyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLO2lCQUNQLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDO2lCQUN0QyxTQUFTLENBQUM7Z0JBQ1QsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDekMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNyQjt5QkFBTTt3QkFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ3JCO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBUyxFQUFFLEVBQUU7b0JBQ25CLDZDQUE2QztnQkFDL0MsQ0FBQzthQUNGLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBcERVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBpR2F0ZXdheVNlcnZpY2Uge1xuICBwcml2YXRlIF9odHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBcbiAgZG9HZXQodXJsOiBzdHJpbmcsIGNvbmZpZz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZyA9IHtcbiAgICAgICAgICBpc0xvYWRlckhpZGRlbjogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgaGVhZGVyczphbnk7XG4gICAgICBpZihjb25maWcuaXNVbmF1dGhvcml6ZWQpe1xuICAgICAgICBoZWFkZXJzID0ge1xuICAgICAgICAgIHNraXA6IFwidHJ1ZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICBcbiAgICAgIC8vIHRoaXMuX2xvYWRlclNlcnZpY2UucmVxdWVzdFN0YXJ0ZWQoY29uZmlnKTtcbiAgICAgIHRoaXMuX2h0dHBcbiAgICAgICAgLmdldCh1cmwse2hlYWRlcnM6IGhlYWRlcnN9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgLy8gdGhpcy5fbG9hZGVyU2VydmljZS5yZXF1ZXN0RW5kZWQoKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZGF0YSk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgLy8gdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgY29uZmlnLCBvYnNlcnZlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KVxuICB9XG4gIGRvUG9zdCh1cmw6IHN0cmluZywgcmVxX2JvZHk/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBsZXQgaGVhZGVyczphbnk7XG4gICAgICB0aGlzLl9odHRwXG4gICAgICAgIC5wb3N0KHVybCwgcmVxX2JvZHkse2hlYWRlcnM6IGhlYWRlcnN9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5oYXNPd25Qcm9wZXJ0eSgnc3RhdHVzJykpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChkYXRhKTtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZGF0YSk7XG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yOmFueSkgPT4ge1xuICAgICAgICAgICAgLy8gdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgY29uZmlnLCBvYnNlcnZlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWdhdGV3YXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9hcGktZ2F0ZXdheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNbEMsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLFVBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0ErQ3BDO0lBN0NDLEtBQUssQ0FBQyxHQUFXLEVBQUUsTUFBa0I7UUFDbkMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUUvQixJQUFJLE9BQU8sR0FBRyxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7WUFFdEQsSUFBSSxNQUFNLEVBQUUsY0FBYyxFQUFFO2dCQUMxQixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDdkM7WUFFRCw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLEtBQUs7aUJBQ1AsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztpQkFDOUIsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNiLHNDQUFzQztvQkFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLDZDQUE2QztnQkFDL0MsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFXLEVBQUUsUUFBYztRQUNoQyxPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLElBQUksT0FBWSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLO2lCQUNQLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO2lCQUN6QyxTQUFTLENBQUM7Z0JBQ1QsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDekMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNyQjt5QkFBTTt3QkFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ3JCO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7b0JBQ3BCLDZDQUE2QztnQkFDL0MsQ0FBQzthQUNGLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBL0NVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcGlDb25maWcgfSBmcm9tICcuL2NvbW1vbi1oZWFkZXIuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBpR2F0ZXdheVNlcnZpY2Uge1xuICBwcml2YXRlIF9odHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIGRvR2V0KHVybDogc3RyaW5nLCBjb25maWc/OiBBcGlDb25maWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG5cbiAgICAgIGxldCBoZWFkZXJzID0gY29uZmlnPy5odHRwSGVhZGVyID8/IG5ldyBIdHRwSGVhZGVycygpO1xuXG4gICAgICBpZiAoY29uZmlnPy5pc1VuYXV0aG9yaXplZCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3NraXAnLCAndHJ1ZScpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLl9sb2FkZXJTZXJ2aWNlLnJlcXVlc3RTdGFydGVkKGNvbmZpZyk7XG4gICAgICB0aGlzLl9odHRwXG4gICAgICAgIC5nZXQodXJsLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgICAgIC8vIHRoaXMuX2xvYWRlclNlcnZpY2UucmVxdWVzdEVuZGVkKCk7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIC8vIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIGNvbmZpZywgb2JzZXJ2ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSlcbiAgfVxuICBkb1Bvc3QodXJsOiBzdHJpbmcsIHJlcV9ib2R5PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgbGV0IGhlYWRlcnM6IGFueTtcbiAgICAgIHRoaXMuX2h0dHBcbiAgICAgICAgLnBvc3QodXJsLCByZXFfYm9keSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmhhc093blByb3BlcnR5KCdzdGF0dXMnKSkge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChkYXRhKTtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgY29uZmlnLCBvYnNlcnZlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,179 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, inject, ViewChild, ViewChildren } from '@angular/core';
3
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
9
+ import { MatSidenavModule } from '@angular/material/sidenav';
10
+ import { MatTooltipModule } from '@angular/material/tooltip';
11
+ import { WithClosable } from '../closable.mixin';
12
+ import { CommonHeaderService } from '../common-header.service';
13
+ import { ChatTimePipe } from '../utils/chat-time.pipe';
14
+ import { TextToHtmlPipe } from "../utils/text-to-html.pipe";
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@angular/material/icon";
17
+ import * as i2 from "@angular/material/button";
18
+ import * as i3 from "@angular/forms";
19
+ import * as i4 from "@angular/common";
20
+ import * as i5 from "@angular/material/progress-spinner";
21
+ import * as i6 from "@angular/material/tooltip";
22
+ class EmptyBase {
23
+ }
24
+ export class AppraisalAssistantChatWidgetComponent extends WithClosable(class {
25
+ }) {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.isOpen = false;
29
+ this.message = '';
30
+ this.messages = [];
31
+ this.isLoading = false;
32
+ this.conversationId = '';
33
+ this.msgControl = new FormControl('');
34
+ this._chatSer = inject(CommonHeaderService);
35
+ this.shouldScroll = false;
36
+ this.welcomeMessage = '';
37
+ }
38
+ ngOnInit() {
39
+ if ((this.messages.length === 0)) {
40
+ this.sendMessage();
41
+ }
42
+ }
43
+ ngAfterViewChecked() {
44
+ if (this.shouldScroll) {
45
+ setTimeout(() => {
46
+ this.scrollToLastMessage();
47
+ this.shouldScroll = false;
48
+ }, 100);
49
+ }
50
+ }
51
+ toggleChat() {
52
+ this.close();
53
+ // this.isOpen = !this.isOpen;
54
+ // if (this.isOpen && (this.messages.length === 0)) {
55
+ // this.sendMessage();
56
+ // }
57
+ }
58
+ sendMessage() {
59
+ this.isLoading = true;
60
+ this.msgControl.disable();
61
+ let req = {
62
+ query: this.msgControl.value?.trim() ? this.msgControl.value.trim() : null,
63
+ };
64
+ if (this.msgControl.value?.trim()?.length > 0) {
65
+ this.messages.push({ response: this.msgControl.value?.trim(), isUser: true, timeStamp: new Date() });
66
+ }
67
+ this.shouldScroll = true;
68
+ if (this.conversationId)
69
+ req.conversationId = this.conversationId;
70
+ this.msgControl.setValue('');
71
+ this._chatSer.getQueryResponse(req)
72
+ .subscribe({
73
+ next: ((res) => {
74
+ if (res) {
75
+ if (res.message) {
76
+ this.messages.push({ response: res.message, timeStamp: new Date() });
77
+ this.welcomeMessage = res.message;
78
+ }
79
+ else if (res.result?.httpCode == 200) {
80
+ if (res.result.data.response) {
81
+ this.conversationId = res.result.data.conversationId;
82
+ res.result.data.timeStamp = new Date();
83
+ this.messages.push(res.result.data);
84
+ }
85
+ }
86
+ else if (res.result?.httpCode == 204) {
87
+ this.messages.push({ response: res.result.message, timeStamp: new Date() });
88
+ }
89
+ this.shouldScroll = true;
90
+ }
91
+ this.isLoading = false;
92
+ this.msgControl.enable();
93
+ this.focusInput();
94
+ }),
95
+ error: ((err) => {
96
+ this.isLoading = false;
97
+ this.msgControl.enable();
98
+ this.focusInput();
99
+ })
100
+ });
101
+ }
102
+ // scrollToLastMessage() {
103
+ // const container = this.chatContainer?.nativeElement;
104
+ // if (container && container.scrollHeight > container.clientHeight) {
105
+ // container.scrollTop = container.scrollHeight;
106
+ // }
107
+ // }
108
+ scrollToLastMessage() {
109
+ const container = this.chatContainer?.nativeElement;
110
+ if (container && this.lastMessageRefs && this.lastMessageRefs.length > 0) {
111
+ const lastMsg = this.lastMessageRefs.last.nativeElement;
112
+ const lastMsgRect = lastMsg.getBoundingClientRect();
113
+ const containerRect = container.getBoundingClientRect();
114
+ // If last message is below the visible area of the container
115
+ if (lastMsgRect.bottom > containerRect.bottom) {
116
+ const scrollOffset = lastMsg.offsetTop - container.offsetTop;
117
+ container.scrollTop = scrollOffset;
118
+ }
119
+ // If last message is above the visible area of the container
120
+ else if (lastMsgRect.top < containerRect.top) {
121
+ const scrollOffset = lastMsg.offsetTop - container.offsetTop;
122
+ container.scrollTop = scrollOffset;
123
+ }
124
+ // Else, it's already visible; do nothing
125
+ }
126
+ }
127
+ handleKeyDown(event) {
128
+ if (event.key === 'Enter' && !event.shiftKey) {
129
+ event.preventDefault();
130
+ if (this.msgControl.value?.trim()?.length > 0) {
131
+ this.sendMessage();
132
+ }
133
+ }
134
+ // Shift+Enter will be allowed by default
135
+ }
136
+ focusInput() {
137
+ if (this.msgInputRef) {
138
+ this.msgInputRef.nativeElement.focus();
139
+ }
140
+ }
141
+ resetChat() {
142
+ let message = [{ response: this.welcomeMessage, timeStamp: new Date() }];
143
+ this.messages = message;
144
+ this.conversationId = '';
145
+ this.msgControl.setValue('');
146
+ this.shouldScroll = false;
147
+ if (this.msgInputRef) {
148
+ this.msgInputRef.nativeElement.focus();
149
+ }
150
+ }
151
+ }
152
+ AppraisalAssistantChatWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppraisalAssistantChatWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
153
+ AppraisalAssistantChatWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppraisalAssistantChatWidgetComponent, isStandalone: true, selector: "appraisal-assistant-agent", viewQueries: [{ propertyName: "chatContainer", first: true, predicate: ["chatContainer"], descendants: true }, { propertyName: "msgInputRef", first: true, predicate: ["msgInput"], descendants: true }, { propertyName: "lastMessageRefs", predicate: ["lastMessageRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"isOpen?'chat-container-wrap':''\">\n <div class=\"chatbot-container\">\n <div class=\"chatbot-sidenav\">\n <div class=\"chat-header\"><span>Appraisal Assistant (Beta)</span>\n <div class=\"chat-header-actions\">\n <button tabindex=\"-1\" mat-button class=\"reset-button small_btn\" [disabled]=\"isLoading\"\n (click)=\"resetChat()\">Reset\n </button>\n <!-- <span>Reset</span> -->\n <!-- <button mat-icon-button matTooltip=\"Collapse\" class=\"d-flex align-item-center\" (click)=\"toggleChat()\">\n <mat-icon>chevron_right</mat-icon>\n </button> -->\n <button matTooltip=\"Collapse\" class=\"d-flex align-item-center collapse_btn\" (click)=\"toggleChat()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n <div class=\"chat-messages\" #chatContainer>\n <div *ngFor=\"let message of messages; let isLast = last\" class=\"message-container\"\n [ngClass]=\"{'user-message': message.isUser, 'bot-message': !message.isUser}\"\n style=\"margin-bottom: 15px;\" #lastMessageRef>\n <div class=\"message-content\">\n <span [innerHTML]=\"message.response | textToHtml\"></span>\n <span class=\"message-time\">{{ message.timeStamp | chatTime }} </span>\n </div>\n </div>\n </div>\n <form class=\"chat-input-container\" (submit)=\"sendMessage()\">\n <textarea class=\"chat-textarea\" [formControl]=\"msgControl\" placeholder=\"Start typing here...\" rows=\"1\"\n (keydown)=\"handleKeyDown($event)\" #msgInput></textarea>\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"24\" strokeWidth=\"3\" color=\"primary\" class=\"position-absolute\"\n style=\"right:22px\"></mat-spinner>\n <button color=\"primary\" [disabled]=\"isLoading || (msgControl.value?.trim()?.length <= 0)\"\n mat-icon-button class=\"d-flex align-items-center\" (click)=\"sendMessage()\">\n <mat-icon *ngIf=\"!isLoading\">send</mat-icon>\n <!-- <mat-spinner *ngIf=\"isLoading\" [diameter]=\"24\" strokeWidth=\"3\"></mat-spinner> -->\n </button>\n </form>\n </div>\n </div>\n <!-- <mat-sidenav-container [hasBackdrop]=\"true\" class=\"chatbot-container\"><mat-sidenav #sidenav position=\"end\"\n mode=\"over\" [(opened)]=\"isOpen\" [disableClose]=\"true\" class=\"chatbot-sidenav\">\n </mat-sidenav></mat-sidenav-container> -->\n</div>\n<!-- <div *ngIf=\"!isOpen\" class=\"chat-launcher\" (click)=\"toggleChat()\">\n <div>\n <div class=\"list-icons-cell\">\n <mat-icon class=\"list-icons\">3p</mat-icon>\n </div>\n </div>\n</div> -->", styles: [":host .chatbot-container{top:0;right:0;height:100vh;background:transparent}:host .chatbot-container .mat-sidenav{z-index:5;pointer-events:auto;width:650px;display:flex;flex-direction:column}:host .chatbot-container .chat-header{display:flex;justify-content:space-between;align-items:center;padding:5px 16px;background:linear-gradient(to right,#3966b6,var(--themelightblue));color:#fff;position:sticky;top:0;z-index:100;box-shadow:0 2px 5px #0000004d;line-height:20px;letter-spacing:normal}:host .chatbot-container .chat-header span{font-size:13.12px;font-weight:550!important;line-height:20px;letter-spacing:normal}:host .chatbot-container .chat-header button:first-child{background-color:#4076d5!important}:host .chatbot-container .chat-messages{flex:1;padding:60px 16px 16px;background-color:#fff;overflow-y:auto;overscroll-behavior:contain;position:relative}:host .chatbot-container .message-container{display:flex;margin-bottom:12px;align-items:flex-start}:host .chat-launcher{background-color:#fff!important;border-radius:3px}:host .chat-launcher span{white-space:nowrap;border-right:1px solid #999999;font-size:13.12px!important;padding-right:5px;color:#fff!important}:host .chat-launcher .list-icons-cell{padding:8px;text-align:center;vertical-align:middle;height:40px;width:40px;cursor:pointer;border-radius:30px;margin-top:10px}:host .chat-launcher .list-icons-cell .list-icons{font-size:25px!important;color:#4b85ea!important}:host .list-icons-cell:hover{background-color:#ccc}:host .chat-header-actions{display:flex;align-items:center;gap:8px}:host .chat-header-actions .reset-button{color:#fff;line-height:20px!important;letter-spacing:.5px!important;font-size:13.12px!important}:host .user-message{justify-content:flex-end}:host .user-message .message-content{background-color:RGB(235,243,255);color:#212121;border:1px solid RGB(220,233,251);padding:10px 14px;border-radius:10px;max-width:70%;margin-left:auto;font-size:13px;line-height:21px!important}:host .user-message .message-time{display:block;font-size:9px;color:#555;margin-top:0;text-align:right}:host .bot-message{justify-content:flex-start}:host .bot-message .message-content{color:#212121;padding:10px 14px;border-radius:10px;width:98%;margin-right:auto;font-size:13px;line-height:21px!important}:host .bot-message .message-time{display:block;font-size:9px;color:#555;margin-top:0;text-align:left}:host .message-content{display:inline-block;word-break:break-word}:host .chat-input-container{display:flex;align-items:center;padding:12px;background-color:#fff;position:sticky;bottom:0;border-top:1px solid #e0e0e0;z-index:10}:host .chat-textarea{flex:1;resize:none;padding:12px 16px;border-radius:20px;font-size:14px;background-color:#f1f1f1;border:none;outline:none;line-height:1.4;max-height:150px;overflow-y:auto}:host .send-button{margin-left:8px;width:40px;height:40px;border-radius:50%;border:none;background-color:#3f51b5;color:#fff;display:flex;align-items:center;justify-content:center}:host .send-button:disabled{background-color:#ccc}:host .chat-container-wrap{position:fixed;inset:0;z-index:99999}:host ::ng-deep .mat-drawer-inner-container{display:flex;flex-direction:column}:host .collapse_btn{width:35px;height:35px;border-radius:50px;display:flex!important;align-items:center;justify-content:center;background-color:transparent!important;border:none}:host .collapse_btn mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#fff!important}:host .collapse_btn:hover{background-color:#4076d5!important;transition:all .2s}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: ChatTimePipe, name: "chatTime" }, { kind: "pipe", type: TextToHtmlPipe, name: "textToHtml" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppraisalAssistantChatWidgetComponent, decorators: [{
155
+ type: Component,
156
+ args: [{ selector: 'appraisal-assistant-agent', standalone: true, imports: [
157
+ MatSidenavModule,
158
+ MatIconModule,
159
+ MatButtonModule,
160
+ MatFormFieldModule,
161
+ ReactiveFormsModule,
162
+ CommonModule,
163
+ MatInputModule,
164
+ MatProgressSpinnerModule,
165
+ ChatTimePipe,
166
+ TextToHtmlPipe,
167
+ MatTooltipModule
168
+ ], template: "<div [class]=\"isOpen?'chat-container-wrap':''\">\n <div class=\"chatbot-container\">\n <div class=\"chatbot-sidenav\">\n <div class=\"chat-header\"><span>Appraisal Assistant (Beta)</span>\n <div class=\"chat-header-actions\">\n <button tabindex=\"-1\" mat-button class=\"reset-button small_btn\" [disabled]=\"isLoading\"\n (click)=\"resetChat()\">Reset\n </button>\n <!-- <span>Reset</span> -->\n <!-- <button mat-icon-button matTooltip=\"Collapse\" class=\"d-flex align-item-center\" (click)=\"toggleChat()\">\n <mat-icon>chevron_right</mat-icon>\n </button> -->\n <button matTooltip=\"Collapse\" class=\"d-flex align-item-center collapse_btn\" (click)=\"toggleChat()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n <div class=\"chat-messages\" #chatContainer>\n <div *ngFor=\"let message of messages; let isLast = last\" class=\"message-container\"\n [ngClass]=\"{'user-message': message.isUser, 'bot-message': !message.isUser}\"\n style=\"margin-bottom: 15px;\" #lastMessageRef>\n <div class=\"message-content\">\n <span [innerHTML]=\"message.response | textToHtml\"></span>\n <span class=\"message-time\">{{ message.timeStamp | chatTime }} </span>\n </div>\n </div>\n </div>\n <form class=\"chat-input-container\" (submit)=\"sendMessage()\">\n <textarea class=\"chat-textarea\" [formControl]=\"msgControl\" placeholder=\"Start typing here...\" rows=\"1\"\n (keydown)=\"handleKeyDown($event)\" #msgInput></textarea>\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"24\" strokeWidth=\"3\" color=\"primary\" class=\"position-absolute\"\n style=\"right:22px\"></mat-spinner>\n <button color=\"primary\" [disabled]=\"isLoading || (msgControl.value?.trim()?.length <= 0)\"\n mat-icon-button class=\"d-flex align-items-center\" (click)=\"sendMessage()\">\n <mat-icon *ngIf=\"!isLoading\">send</mat-icon>\n <!-- <mat-spinner *ngIf=\"isLoading\" [diameter]=\"24\" strokeWidth=\"3\"></mat-spinner> -->\n </button>\n </form>\n </div>\n </div>\n <!-- <mat-sidenav-container [hasBackdrop]=\"true\" class=\"chatbot-container\"><mat-sidenav #sidenav position=\"end\"\n mode=\"over\" [(opened)]=\"isOpen\" [disableClose]=\"true\" class=\"chatbot-sidenav\">\n </mat-sidenav></mat-sidenav-container> -->\n</div>\n<!-- <div *ngIf=\"!isOpen\" class=\"chat-launcher\" (click)=\"toggleChat()\">\n <div>\n <div class=\"list-icons-cell\">\n <mat-icon class=\"list-icons\">3p</mat-icon>\n </div>\n </div>\n</div> -->", styles: [":host .chatbot-container{top:0;right:0;height:100vh;background:transparent}:host .chatbot-container .mat-sidenav{z-index:5;pointer-events:auto;width:650px;display:flex;flex-direction:column}:host .chatbot-container .chat-header{display:flex;justify-content:space-between;align-items:center;padding:5px 16px;background:linear-gradient(to right,#3966b6,var(--themelightblue));color:#fff;position:sticky;top:0;z-index:100;box-shadow:0 2px 5px #0000004d;line-height:20px;letter-spacing:normal}:host .chatbot-container .chat-header span{font-size:13.12px;font-weight:550!important;line-height:20px;letter-spacing:normal}:host .chatbot-container .chat-header button:first-child{background-color:#4076d5!important}:host .chatbot-container .chat-messages{flex:1;padding:60px 16px 16px;background-color:#fff;overflow-y:auto;overscroll-behavior:contain;position:relative}:host .chatbot-container .message-container{display:flex;margin-bottom:12px;align-items:flex-start}:host .chat-launcher{background-color:#fff!important;border-radius:3px}:host .chat-launcher span{white-space:nowrap;border-right:1px solid #999999;font-size:13.12px!important;padding-right:5px;color:#fff!important}:host .chat-launcher .list-icons-cell{padding:8px;text-align:center;vertical-align:middle;height:40px;width:40px;cursor:pointer;border-radius:30px;margin-top:10px}:host .chat-launcher .list-icons-cell .list-icons{font-size:25px!important;color:#4b85ea!important}:host .list-icons-cell:hover{background-color:#ccc}:host .chat-header-actions{display:flex;align-items:center;gap:8px}:host .chat-header-actions .reset-button{color:#fff;line-height:20px!important;letter-spacing:.5px!important;font-size:13.12px!important}:host .user-message{justify-content:flex-end}:host .user-message .message-content{background-color:RGB(235,243,255);color:#212121;border:1px solid RGB(220,233,251);padding:10px 14px;border-radius:10px;max-width:70%;margin-left:auto;font-size:13px;line-height:21px!important}:host .user-message .message-time{display:block;font-size:9px;color:#555;margin-top:0;text-align:right}:host .bot-message{justify-content:flex-start}:host .bot-message .message-content{color:#212121;padding:10px 14px;border-radius:10px;width:98%;margin-right:auto;font-size:13px;line-height:21px!important}:host .bot-message .message-time{display:block;font-size:9px;color:#555;margin-top:0;text-align:left}:host .message-content{display:inline-block;word-break:break-word}:host .chat-input-container{display:flex;align-items:center;padding:12px;background-color:#fff;position:sticky;bottom:0;border-top:1px solid #e0e0e0;z-index:10}:host .chat-textarea{flex:1;resize:none;padding:12px 16px;border-radius:20px;font-size:14px;background-color:#f1f1f1;border:none;outline:none;line-height:1.4;max-height:150px;overflow-y:auto}:host .send-button{margin-left:8px;width:40px;height:40px;border-radius:50%;border:none;background-color:#3f51b5;color:#fff;display:flex;align-items:center;justify-content:center}:host .send-button:disabled{background-color:#ccc}:host .chat-container-wrap{position:fixed;inset:0;z-index:99999}:host ::ng-deep .mat-drawer-inner-container{display:flex;flex-direction:column}:host .collapse_btn{width:35px;height:35px;border-radius:50px;display:flex!important;align-items:center;justify-content:center;background-color:transparent!important;border:none}:host .collapse_btn mat-icon{font-size:24px!important;width:24px!important;height:24px!important;color:#fff!important}:host .collapse_btn:hover{background-color:#4076d5!important;transition:all .2s}\n"] }]
169
+ }], propDecorators: { chatContainer: [{
170
+ type: ViewChild,
171
+ args: ['chatContainer']
172
+ }], lastMessageRefs: [{
173
+ type: ViewChildren,
174
+ args: ['lastMessageRef']
175
+ }], msgInputRef: [{
176
+ type: ViewChild,
177
+ args: ['msgInput']
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcmFpc2FsLWFzc2lzdGFudC1jaGF0LXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvYXBwcmFpc2FsLWFzc2lzdGFudC9hcHByYWlzYWwtYXNzaXN0YW50LWNoYXQtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9hcHByYWlzYWwtYXNzaXN0YW50L2FwcHJhaXNhbC1hc3Npc3RhbnQtY2hhdC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsU0FBUyxFQUFjLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFN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QkFBd0I7d0JBQ3hCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ2pCOzhCQVVtQyxhQUFhO3NCQUFoRCxTQUFTO3VCQUFDLGVBQWU7Z0JBQ00sZUFBZTtzQkFBOUMsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBQ1AsV0FBVztzQkFBakMsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFdpdGhDbG9zYWJsZSB9IGZyb20gJy4uL2Nsb3NhYmxlLm1peGluJztcbmltcG9ydCB7IENvbW1vbkhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24taGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhdFRpbWVQaXBlIH0gZnJvbSAnLi4vdXRpbHMvY2hhdC10aW1lLnBpcGUnO1xuaW1wb3J0IHsgVGV4dFRvSHRtbFBpcGUgfSBmcm9tIFwiLi4vdXRpbHMvdGV4dC10by1odG1sLnBpcGVcIjtcbmltcG9ydCB7IEFwcHJhaXNhbENoYXRSZXF1ZXN0IH0gZnJvbSAnLi9hcHByYWlzYWwtYXNzaXN0YW50LmludGVyZmFjZSc7XG5cbmNsYXNzIEVtcHR5QmFzZSB7IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwcmFpc2FsLWFzc2lzdGFudC1hZ2VudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByYWlzYWwtYXNzaXN0YW50LWNoYXQtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwcmFpc2FsLWFzc2lzdGFudC1jaGF0LXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIENoYXRUaW1lUGlwZSxcbiAgICBUZXh0VG9IdG1sUGlwZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcmFpc2FsQXNzaXN0YW50Q2hhdFdpZGdldENvbXBvbmVudCBleHRlbmRzIFdpdGhDbG9zYWJsZShjbGFzcyB7fSkgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICBpc09wZW4gPSBmYWxzZTtcbiAgbWVzc2FnZSA9ICcnO1xuICBtZXNzYWdlczogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgPSAnJztcbiAgbXNnQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBwdWJsaWMgX2NoYXRTZXIgPSBpbmplY3QoQ29tbW9uSGVhZGVyU2VydmljZSk7XG4gIEBWaWV3Q2hpbGQoJ2NoYXRDb250YWluZXInKSBwcml2YXRlIGNoYXRDb250YWluZXIhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkcmVuKCdsYXN0TWVzc2FnZVJlZicpIGxhc3RNZXNzYWdlUmVmcyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgQFZpZXdDaGlsZCgnbXNnSW5wdXQnKSBtc2dJbnB1dFJlZiE6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgcHJpdmF0ZSBzaG91bGRTY3JvbGwgPSBmYWxzZTtcbiAgd2VsY29tZU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3VsZFNjcm9sbCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9MYXN0TWVzc2FnZSgpO1xuICAgICAgICB0aGlzLnNob3VsZFNjcm9sbCA9IGZhbHNlO1xuICAgICAgfSwgMTAwKTtcblxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUNoYXQoKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIC8vIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgIC8vIGlmICh0aGlzLmlzT3BlbiAmJiAodGhpcy5tZXNzYWdlcy5sZW5ndGggPT09IDApKSB7XG4gICAgLy8gICB0aGlzLnNlbmRNZXNzYWdlKCk7XG4gICAgLy8gfVxuICB9XG5cbiAgc2VuZE1lc3NhZ2UoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMubXNnQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgbGV0IHJlcTogQXBwcmFpc2FsQ2hhdFJlcXVlc3QgPSB7XG4gICAgICBxdWVyeTogdGhpcy5tc2dDb250cm9sLnZhbHVlPy50cmltKCkgPyB0aGlzLm1zZ0NvbnRyb2wudmFsdWUudHJpbSgpIDogbnVsbCxcbiAgICB9XG4gICAgaWYgKHRoaXMubXNnQ29udHJvbC52YWx1ZT8udHJpbSgpPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnB1c2goeyByZXNwb25zZTogdGhpcy5tc2dDb250cm9sLnZhbHVlPy50cmltKCksIGlzVXNlcjogdHJ1ZSwgdGltZVN0YW1wOiBuZXcgRGF0ZSgpIH0pO1xuICAgIH1cbiAgICB0aGlzLnNob3VsZFNjcm9sbCA9IHRydWU7XG4gICAgaWYgKHRoaXMuY29udmVyc2F0aW9uSWQpIHJlcS5jb252ZXJzYXRpb25JZCA9IHRoaXMuY29udmVyc2F0aW9uSWQ7XG4gICAgdGhpcy5tc2dDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLl9jaGF0U2VyLmdldFF1ZXJ5UmVzcG9uc2UocmVxKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHsgcmVzcG9uc2U6IHJlcy5tZXNzYWdlLCB0aW1lU3RhbXA6IG5ldyBEYXRlKCkgfSk7XG4gICAgICAgICAgICAgIHRoaXMud2VsY29tZU1lc3NhZ2UgPSByZXMubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQ/Lmh0dHBDb2RlID09IDIwMCkge1xuICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5kYXRhLnJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IHJlcy5yZXN1bHQuZGF0YS5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgICAgICAgICByZXMucmVzdWx0LmRhdGEudGltZVN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2gocmVzLnJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzLnJlc3VsdD8uaHR0cENvZGUgPT0gMjA0KSB7XG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh7IHJlc3BvbnNlOiByZXMucmVzdWx0Lm1lc3NhZ2UsIHRpbWVTdGFtcDogbmV3IERhdGUoKSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2hvdWxkU2Nyb2xsID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm1zZ0NvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5tc2dDb250cm9sLmVuYWJsZSgpO1xuICAgICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gIH1cblxuICAvLyBzY3JvbGxUb0xhc3RNZXNzYWdlKCkge1xuICAvLyAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY2hhdENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcbiAgLy8gICBpZiAoY29udGFpbmVyICYmIGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgPiBjb250YWluZXIuY2xpZW50SGVpZ2h0KSB7XG4gIC8vICAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbEhlaWdodDtcbiAgLy8gICB9XG4gIC8vIH1cbiAgc2Nyb2xsVG9MYXN0TWVzc2FnZSgpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNoYXRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGNvbnRhaW5lciAmJiB0aGlzLmxhc3RNZXNzYWdlUmVmcyAmJiB0aGlzLmxhc3RNZXNzYWdlUmVmcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsYXN0TXNnOiBIVE1MRWxlbWVudCA9IHRoaXMubGFzdE1lc3NhZ2VSZWZzLmxhc3QubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IGxhc3RNc2dSZWN0ID0gbGFzdE1zZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIElmIGxhc3QgbWVzc2FnZSBpcyBiZWxvdyB0aGUgdmlzaWJsZSBhcmVhIG9mIHRoZSBjb250YWluZXJcbiAgICAgIGlmIChsYXN0TXNnUmVjdC5ib3R0b20gPiBjb250YWluZXJSZWN0LmJvdHRvbSkge1xuICAgICAgICBjb25zdCBzY3JvbGxPZmZzZXQgPSBsYXN0TXNnLm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzY3JvbGxPZmZzZXQ7XG4gICAgICB9XG4gICAgICAvLyBJZiBsYXN0IG1lc3NhZ2UgaXMgYWJvdmUgdGhlIHZpc2libGUgYXJlYSBvZiB0aGUgY29udGFpbmVyXG4gICAgICBlbHNlIGlmIChsYXN0TXNnUmVjdC50b3AgPCBjb250YWluZXJSZWN0LnRvcCkge1xuICAgICAgICBjb25zdCBzY3JvbGxPZmZzZXQgPSBsYXN0TXNnLm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZzZXRUb3A7XG4gICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzY3JvbGxPZmZzZXQ7XG4gICAgICB9XG4gICAgICAvLyBFbHNlLCBpdCdzIGFscmVhZHkgdmlzaWJsZTsgZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHRoaXMubXNnQ29udHJvbC52YWx1ZT8udHJpbSgpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gU2hpZnQrRW50ZXIgd2lsbCBiZSBhbGxvd2VkIGJ5IGRlZmF1bHRcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMubXNnSW5wdXRSZWYpIHtcbiAgICAgIHRoaXMubXNnSW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0Q2hhdCgpIHtcbiAgICBsZXQgbWVzc2FnZSA9IFt7IHJlc3BvbnNlOiB0aGlzLndlbGNvbWVNZXNzYWdlLCB0aW1lU3RhbXA6IG5ldyBEYXRlKCkgfV1cbiAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZTtcbiAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gJyc7XG4gICAgdGhpcy5tc2dDb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLnNob3VsZFNjcm9sbCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm1zZ0lucHV0UmVmKSB7XG4gICAgICB0aGlzLm1zZ0lucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW2NsYXNzXT1cImlzT3Blbj8nY2hhdC1jb250YWluZXItd3JhcCc6JydcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hhdGJvdC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoYXRib3Qtc2lkZW5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtaGVhZGVyXCI+PHNwYW4+QXBwcmFpc2FsIEFzc2lzdGFudCAoQmV0YSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtaGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgbWF0LWJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvbiBzbWFsbF9idG5cIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldENoYXQoKVwiPlJlc2V0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuPlJlc2V0PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQ29sbGFwc2VcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtLWNlbnRlclwiIChjbGljayk9XCJ0b2dnbGVDaGF0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0VG9vbHRpcD1cIkNvbGxhcHNlXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbS1jZW50ZXIgY29sbGFwc2VfYnRuXCIgKGNsaWNrKT1cInRvZ2dsZUNoYXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXQtbWVzc2FnZXNcIiAjY2hhdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzOyBsZXQgaXNMYXN0ID0gbGFzdFwiIGNsYXNzPVwibWVzc2FnZS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItbWVzc2FnZSc6IG1lc3NhZ2UuaXNVc2VyLCAnYm90LW1lc3NhZ2UnOiAhbWVzc2FnZS5pc1VzZXJ9XCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxNXB4O1wiICNsYXN0TWVzc2FnZVJlZj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJtZXNzYWdlLnJlc3BvbnNlIHwgdGV4dFRvSHRtbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVzc2FnZS10aW1lXCI+e3sgbWVzc2FnZS50aW1lU3RhbXAgfCBjaGF0VGltZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImNoYXQtaW5wdXQtY29udGFpbmVyXCIgKHN1Ym1pdCk9XCJzZW5kTWVzc2FnZSgpXCI+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiY2hhdC10ZXh0YXJlYVwiIFtmb3JtQ29udHJvbF09XCJtc2dDb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTdGFydCB0eXBpbmcgaGVyZS4uLlwiIHJvd3M9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCIgI21zZ0lucHV0PjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2RpYW1ldGVyXT1cIjI0XCIgc3Ryb2tlV2lkdGg9XCIzXCIgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicmlnaHQ6MjJweFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nIHx8IChtc2dDb250cm9sLnZhbHVlPy50cmltKCk/Lmxlbmd0aCA8PSAwKVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhaXNMb2FkaW5nXCI+c2VuZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2RpYW1ldGVyXT1cIjI0XCIgc3Ryb2tlV2lkdGg9XCIzXCI+PC9tYXQtc3Bpbm5lcj4gLS0+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiIGNsYXNzPVwiY2hhdGJvdC1jb250YWluZXJcIj48bWF0LXNpZGVuYXYgI3NpZGVuYXYgcG9zaXRpb249XCJlbmRcIlxuICAgICAgICAgICAgbW9kZT1cIm92ZXJcIiBbKG9wZW5lZCldPVwiaXNPcGVuXCIgW2Rpc2FibGVDbG9zZV09XCJ0cnVlXCIgY2xhc3M9XCJjaGF0Ym90LXNpZGVuYXZcIj5cbiAgICAgICAgPC9tYXQtc2lkZW5hdj48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj4gLS0+XG48L2Rpdj5cbjwhLS0gPGRpdiAqbmdJZj1cIiFpc09wZW5cIiBjbGFzcz1cImNoYXQtbGF1bmNoZXJcIiAoY2xpY2spPVwidG9nZ2xlQ2hhdCgpXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaWNvbnMtY2VsbFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibGlzdC1pY29uc1wiPjNwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4gLS0+Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcmFpc2FsLWFzc2lzdGFudC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvYXBwcmFpc2FsLWFzc2lzdGFudC9hcHByYWlzYWwtYXNzaXN0YW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBcHByYWlzYWxDaGF0UmVxdWVzdCB7XG4gICAgcXVlcnk6IHN0cmluZztcbiAgICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbn0iXX0=
@@ -0,0 +1,14 @@
1
+ import { inject } from "@angular/core";
2
+ import { CommonHeaderService } from "./common-header.service";
3
+ export function WithClosable(Base) {
4
+ return class extends Base {
5
+ constructor() {
6
+ super(...arguments);
7
+ this._ser = inject(CommonHeaderService);
8
+ }
9
+ close() {
10
+ this._ser.toggleUtilityContentDrawer();
11
+ }
12
+ };
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2FibGUubWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvY2xvc2FibGUubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxNQUFNLFVBQVUsWUFBWSxDQUF1QyxJQUFPO0lBQ3RFLE9BQU8sS0FBTSxTQUFRLElBQUk7UUFBbEI7O1lBQ0gsU0FBSSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBS3ZDLENBQUM7UUFIRyxLQUFLO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQzNDLENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25IZWFkZXJTZXJ2aWNlIH0gZnJvbSBcIi4vY29tbW9uLWhlYWRlci5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBXaXRoQ2xvc2FibGU8VCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IHt9PihCYXNlOiBUKSB7XG4gICAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG4gICAgICAgIF9zZXIgPSBpbmplY3QoQ29tbW9uSGVhZGVyU2VydmljZSk7XG5cbiAgICAgICAgY2xvc2UoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXIudG9nZ2xlVXRpbGl0eUNvbnRlbnREcmF3ZXIoKTtcbiAgICAgICAgfVxuICAgIH07XG59Il19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWhlYWRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvY29tbW9uLWhlYWRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQUk9GRVRfQVBQUyB9IGZyb20gXCIuL3V0aWxzL2FwcHMuZW51bVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE1lbnUge1xuICAgIGFwcFR5cGU6IFBST0ZFVF9BUFBTO1xuICAgIG1lbnVOYW1lOiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgZ3JvdXBCeT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQXBwbGljYXRpb25Db25maWcgPSB7XG4gICAgW2tleSBpbiBQUk9GRVRfQVBQU106IHtcbiAgICAgICAgYXBwTmFtZTogc3RyaW5nO1xuICAgICAgICBhcHBMb2dvVXJpOiBzdHJpbmc7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlckNvbmZpZyB7XG4gICAgYXBpVXJsOiBzdHJpbmc7XG4gICAgcG9ydGFsRnJvbnRlbmRVcmw/OiBzdHJpbmc7XG4gICAgc2lnbk91dFVybDogc3RyaW5nO1xuICAgIGFwcFR5cGU6IFBST0ZFVF9BUFBTO1xuICAgIGRpc2FibGVVdGlsaXR5RHJhd2VyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wYW55IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGNvbXBhbnlLZXk6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbG9nbz86IHN0cmluZztcbiAgICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgICBiYXNlVXJsczoge1xuICAgICAgICBwcm9mZXRfcG9ydGFsPzogc3RyaW5nLFxuICAgICAgICBhcHByYWlzYWxfbWFuYWdlbWVudD86IHN0cmluZyxcbiAgICAgICAgYXBwcmFpc2FsX3Jldmlldz86IHN0cmluZyxcbiAgICAgICAgYXBwcmFpc2FsX3ZhbHVhdGlvbj86IHN0cmluZ1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uT3V0SW5mbyB7XG4gICAgc2Vzc2lvbk91dFRpbWVJbk1pbnM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXRpbGl0eUNvbmZpZyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nOyAgICAgICAgICAgIC8vIHRleHQgZm9yIGJ1dHRvblxuICAgIGNvbXBvbmVudDogVHlwZTxhbnk+OyAgICAgLy8gdGhlIGNvbXBvbmVudCB0byByZW5kZXIgaW4gZHJhd2VyXG4gICAgbGF5b3V0OiAncHVzaCcgfCAnc2lkZScgfCAnb3Zlcic7IC8vIGRyYXdlciBtb2RlXG4gICAgaWNvbjogc3RyaW5nO1xuICAgIC8vIHZlcnRpY2FsQWxpZ246ICd0b3AnIHwgJ2JvdHRvbSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXRpbGl0eUNvbXAge1xuICAgIG91dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj5cbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWhlYWRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyL3NyYy9saWIvY29tbW9uLWhlYWRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUFJPRkVUX0FQUFMgfSBmcm9tIFwiLi91dGlscy9hcHBzLmVudW1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBNZW51IHtcbiAgICBhcHBUeXBlOiBQUk9GRVRfQVBQUztcbiAgICBtZW51TmFtZTogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGdyb3VwQnk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFwcGxpY2F0aW9uQ29uZmlnID0ge1xuICAgIFtrZXkgaW4gUFJPRkVUX0FQUFNdOiB7XG4gICAgICAgIGFwcE5hbWU6IHN0cmluZztcbiAgICAgICAgYXBwTG9nb1VyaTogc3RyaW5nO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJDb25maWcge1xuICAgIGFwaVVybDogc3RyaW5nO1xuICAgIHBvcnRhbEZyb250ZW5kVXJsPzogc3RyaW5nO1xuICAgIHNpZ25PdXRVcmw6IHN0cmluZztcbiAgICBhcHBUeXBlOiBQUk9GRVRfQVBQUztcbiAgICBkaXNhYmxlVXRpbGl0eURyYXdlcj86IGJvb2xlYW47XG4gICAgZGlzYWJsZUFwcHJhaXNhbEFzc2lzdGFudEFwcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFueSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBjb21wYW55S2V5OiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGxvZ28/OiBzdHJpbmc7XG4gICAgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgYmFzZVVybHM6IHtcbiAgICAgICAgcHJvZmV0X3BvcnRhbD86IHN0cmluZyxcbiAgICAgICAgYXBwcmFpc2FsX21hbmFnZW1lbnQ/OiBzdHJpbmcsXG4gICAgICAgIGFwcHJhaXNhbF9yZXZpZXc/OiBzdHJpbmcsXG4gICAgICAgIGFwcHJhaXNhbF92YWx1YXRpb24/OiBzdHJpbmdcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbk91dEluZm8ge1xuICAgIHNlc3Npb25PdXRUaW1lSW5NaW5zPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFV0aWxpdHlDb25maWcge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZzsgICAgICAgICAgICAvLyB0ZXh0IGZvciBidXR0b25cbiAgICBsb2FkQ29tcG9uZW50PzogKCkgPT4gUHJvbWlzZTxUeXBlPGFueT4+OyAgIC8vIHRoZSBjb21wb25lbnQgdG8gcmVuZGVyIGluIGRyYXdlclxuICAgIGxheW91dD86ICdwdXNoJyB8ICdzaWRlJyB8ICdvdmVyJzsgLy8gZHJhd2VyIG1vZGVcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgY29uZmlnPzogYW55OyAgLy8gY29uZmlndXJhdGlvbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBkeW5hbWljIGNvbXBvbmVudFxuICAgIC8vIHZlcnRpY2FsQWxpZ246ICd0b3AnIHwgJ2JvdHRvbSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXRpbGl0eUNvbXAge1xuICAgIG91dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlDb25maWcge1xuICAgIGh0dHBIZWFkZXI/OiBIdHRwSGVhZGVycztcbiAgICBpc1VuYXV0aG9yaXplZD86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59Il19
@@ -1,3 +1,4 @@
1
+ import { HttpHeaders } from '@angular/common/http';
1
2
  import { Inject, inject, Injectable } from '@angular/core';
2
3
  import { MatDialog } from '@angular/material/dialog';
3
4
  import { reduce, ReplaySubject, Subject } from 'rxjs';
@@ -108,6 +109,32 @@ export class CommonHeaderService {
108
109
  let url = `${this.baseUrl + EndPoints.API_URLS.updateLastAccessedApplication}`;
109
110
  return this._apiGatewayService.doPost(url, reqBody);
110
111
  }
112
+ objectToQueryParams(obj) {
113
+ const params = new URLSearchParams();
114
+ for (const key in obj) {
115
+ if (obj[key] !== undefined && obj[key] !== null) {
116
+ params.append(key, obj[key]);
117
+ }
118
+ }
119
+ return params.toString();
120
+ }
121
+ getCookie(name) {
122
+ const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
123
+ return match ? decodeURIComponent(match[2]) : null;
124
+ }
125
+ getQueryResponse(request) {
126
+ let url = `${this.baseUrl + EndPoints.API_URLS.appraisalChat}`;
127
+ if (request?.query) {
128
+ url = `${url}?${this.objectToQueryParams(request)}`;
129
+ }
130
+ const chatCtx = this.getCookie('profet-ctx');
131
+ const headers = chatCtx ? new HttpHeaders().set('profet-ctx', chatCtx) : undefined;
132
+ let config = {};
133
+ if (chatCtx) {
134
+ config.httpHeader = headers;
135
+ }
136
+ return this._apiGatewayService.doGet(url, config);
137
+ }
111
138
  }
112
139
  CommonHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommonHeaderService, deps: [{ token: 'headerConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
113
140
  CommonHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CommonHeaderService, providedIn: 'root' });
@@ -120,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
120
147
  type: Inject,
121
148
  args: ['headerConfig']
122
149
  }] }]; } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWhlYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci9zcmMvbGliL2NvbW1vbi1oZWFkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBSzlDLE1BQU0sT0FBTyxtQkFBbUI7SUFnQjlCLDBCQUEwQjtRQUN4QixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQTRDLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFuQnhELFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFN0IsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hELFlBQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFM0IscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQzNELG9CQUFlLEdBQUcsSUFBSSxDQUFD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QUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IHJlZHVjZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBQX0RPTUFJTiB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgRW5kUG9pbnRzIH0gZnJvbSAnLi9hcGktZW5kcG9pbnRzLmRlZic7XG5pbXBvcnQgeyBBcGlHYXRld2F5U2VydmljZSB9IGZyb20gJy4vYXBpLWdhdGV3YXkuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBNZW51LCBDb21wYW55LCBIZWFkZXJDb25maWcsIFNlc3Npb25PdXRJbmZvIH0gZnJvbSAnLi9jb21tb24taGVhZGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZXNzaW9uRXhwaXJ5SW5mb0NvbXBvbmVudCB9IGZyb20gJy4vc2Vzc2lvbi1leHBpcnktaW5mby9zZXNzaW9uLWV4cGlyeS1pbmZvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuL3V0aWxzL1V0aWxpdGllcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbW1vbkhlYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZyA9ICcnO1xuICBoZWFkZXJDb25maWc6IEhlYWRlckNvbmZpZztcbiAgaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hcGlHYXRld2F5U2VydmljZSA9IGluamVjdChBcGlHYXRld2F5U2VydmljZSk7XG4gIHB1YmxpYyBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG5cbiAgcHJpdmF0ZSBtZW51U3RhdGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8QXBwTWVudVtdIHwgbnVsbD4oMSk7XG4gIHB1YmxpYyBhY3RpdmVNZW51TGlzdCQgPSB0aGlzLm1lbnVTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBjb21wYW55TGlzdFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxDb21wYW55W10gfCBudWxsPigxKTtcbiAgcHVibGljIGNvbXBhbnlMaXN0JCA9IHRoaXMuY29tcGFueUxpc3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgdXRpbGl0eUNvbnRlbnREcmF3ZXJTdWIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgdXRpbGl0eUNvbnRlbnRUb2dnbGUkID0gdGhpcy51dGlsaXR5Q29udGVudERyYXdlclN1Yi5hc09ic2VydmFibGUoKTtcblxuICB0b2dnbGVVdGlsaXR5Q29udGVudERyYXdlcigpIHtcbiAgICB0aGlzLnV0aWxpdHlDb250ZW50RHJhd2VyU3ViLm5leHQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2hlYWRlckNvbmZpZycpIHByaXZhdGUgY29uZmlnOiBIZWFkZXJDb25maWcpIHtcbiAgICB0aGlzLmhlYWRlckNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmJhc2VVcmwgPSBjb25maWcuYXBpVXJsO1xuICB9XG5cbiAgc2V0TWVudVN0YXRlKGRhdGE6IEFwcE1lbnVbXSk6IHZvaWQge1xuICAgIHRoaXMubWVudVN0YXRlU3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG4gIHNldENvbXBhbnlMaXN0KGRhdGE6IENvbXBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuY29tcGFueUxpc3RTdWJqZWN0Lm5leHQoZGF0YSk7XG4gIH1cblxuICBvYnRhaW5EYXRhQnlVcmwodXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fYXBpR2F0ZXdheVNlcnZpY2UuZG9HZXQodXJsKTtcbiAgfVxuXG4gIG9wZW5TZXNzaW9uRXhwaXJlSW5mbyhzZXNzaW9uaW5mbz86IFNlc3Npb25PdXRJbmZvKSB7XG4gICAgbGV0IGluZm86IFNlc3Npb25PdXRJbmZvID0ge307XG4gICAgaWYgKHNlc3Npb25pbmZvKSB7XG4gICAgICBpbmZvID0gc2Vzc2lvbmluZm87XG4gICAgfVxuICAgIHRoaXMuaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3BlbiA9IHRydWU7XG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oU2Vzc2lvbkV4cGlyeUluZm9Db21wb25lbnQsIHsgZGF0YTogc2Vzc2lvbmluZm8gfSk7XG4gIH1cblxuICBnZXREb21haW5JbmZvKCkge1xuICAgIGxldCBkb20gPSBkb2N1bWVudC5sb2NhdGlvbi5ob3N0LnNwbGl0KCcuJyk7XG4gICAgbGV0IGRvbWFpbkluZm8gPSBBUFBfRE9NQUlOLmZpbmQoeCA9PiB4LmRvbWFpbiA9PT0gZG9tWzBdKTtcbiAgICBpZiAoZG9tYWluSW5mbykge1xuICAgICAgcmV0dXJuIGRvbWFpbkluZm87XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBkb21haW4gZXhpc3RzIGJlZm9yZSB1c2luZyBpdFxuICAgIGRvbWFpbkluZm8gPSBkb21bMV0gPyBBUFBfRE9NQUlOLmZpbmQoeCA9PiB4LmRvbWFpbiA9PT0gZG9tWzFdKSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZG9tYWluSW5mbyB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBcHBzKCkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZ2V0QXBwc0FwaX1gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwpO1xuICB9XG4gIGdldENvbXBhbnlBcHBsaWNhdGlvbnMoKSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy5nZXRDb21wYW55QXBwbGljYXRpb25zfWA7XG4gICAgcmV0dXJuIHRoaXMuX2FwaUdhdGV3YXlTZXJ2aWNlLmRvR2V0KHVybCk7XG4gIH1cblxuICAvLyBUT0RPIC0tIG5lZWQgdG8gcmVtb3ZlXG4gIGdldFVzZXJDb21wYW5pZXMoKSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy5nZXRVc2VyQ29tcGFuaWVzfWA7XG4gICAgcmV0dXJuIHRoaXMuX2FwaUdhdGV3YXlTZXJ2aWNlLmRvR2V0KHVybCk7XG4gIH1cbiAgdXBkYXRlVXNlckNvbXBhbnkocmVxQm9keTogYW55KSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy51cGRhdGVVc2VyQ29tcGFueX1gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb1Bvc3QodXJsLCByZXFCb2R5KTtcbiAgfVxuXG4gIGZldGNoQ29tcGFueVByb2ZpbGUocmVxQm9keTogYW55KSB7XG4gICAgbGV0IGNvbmZpZzogYW55ID0ge1xuICAgICAgaXNVbmF1dGhvcml6ZWQ6IHRydWVcbiAgICB9XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy5mZXRjaENvbXBhbnlQcm9maWxlICsgJz8nICsgVXRpbGl0aWVzLmNvbnZlcnRPYmplY3RUb1F1ZXJ5U3RyaW5nKHJlcUJvZHkpfWA7XG4gICAgcmV0dXJuIHRoaXMuX2FwaUdhdGV3YXlTZXJ2aWNlLmRvR2V0KHVybCwgY29uZmlnKS5waXBlKFxuICAgICAgcmVkdWNlKChhY2MsIHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzPy5kYXRhKSB7XG4gICAgICAgICAgYWNjID0gcmVzLmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KVxuICAgICk7XG4gIH1cbiAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy5nZXRVc2VyRGV0YWlsc31gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwpO1xuICB9XG5cbiAgZ2V0Q29tcGFueUxpc3QoKSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy5nZXRDb21wYW55TGlzdH1gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwpLnBpcGUoXG4gICAgICByZWR1Y2UoKGFjYywgcmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmRhdGE/LmNvbXBhbmllcykge1xuICAgICAgICAgIGFjYyA9IHJlcz8uZGF0YT8uY29tcGFuaWVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSlcbiAgICApO1xuICB9XG4gIGdldE1lbnVMaXN0KCkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZ2V0QXBwTWVudX1gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwpLnBpcGUoXG4gICAgICByZWR1Y2UoKGFjYywgcmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmRhdGE/LkFwcE1lbnUpIHtcbiAgICAgICAgICBhY2MgPSByZXM/LmRhdGE/LkFwcE1lbnU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVMYXN0QWNjZXNzZWRBcHBsaWNhdGlvbihyZXFCb2R5OiBhbnkpIHtcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJsICsgRW5kUG9pbnRzLkFQSV9VUkxTLnVwZGF0ZUxhc3RBY2Nlc3NlZEFwcGxpY2F0aW9ufWA7XG4gICAgcmV0dXJuIHRoaXMuX2FwaUdhdGV3YXlTZXJ2aWNlLmRvUG9zdCh1cmwsIHJlcUJvZHkpO1xuICB9XG59XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLWhlYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci9zcmMvbGliL2NvbW1vbi1oZWFkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUs5QyxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QiwwQkFBMEI7UUFDeEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUE0QyxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBbkJ4RCxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRTdCLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNCLHFCQUFnQixHQUFHLElBQUksYUFBYSxDQUFt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QUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7aUhBdEpVLG1CQUFtQixrQkFvQlYsY0FBYztxSEFwQnZCLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXFCYyxNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgcmVkdWNlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUFBfRE9NQUlOIH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5pbXBvcnQgeyBFbmRQb2ludHMgfSBmcm9tICcuL2FwaS1lbmRwb2ludHMuZGVmJztcbmltcG9ydCB7IEFwaUdhdGV3YXlTZXJ2aWNlIH0gZnJvbSAnLi9hcGktZ2F0ZXdheS5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcHJhaXNhbENoYXRSZXF1ZXN0IH0gZnJvbSAnLi9hcHByYWlzYWwtYXNzaXN0YW50L2FwcHJhaXNhbC1hc3Npc3RhbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwaUNvbmZpZywgQXBwTWVudSwgQ29tcGFueSwgSGVhZGVyQ29uZmlnLCBTZXNzaW9uT3V0SW5mbyB9IGZyb20gJy4vY29tbW9uLWhlYWRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkV4cGlyeUluZm9Db21wb25lbnQgfSBmcm9tICcuL3Nlc3Npb24tZXhwaXJ5LWluZm8vc2Vzc2lvbi1leHBpcnktaW5mby5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXRpbGl0aWVzIH0gZnJvbSAnLi91dGlscy9VdGlsaXRpZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb21tb25IZWFkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcbiAgaGVhZGVyQ29uZmlnOiBIZWFkZXJDb25maWc7XG4gIGlzU2Vzc2lvbkV4cGlyeURpYWxvZ09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXBpR2F0ZXdheVNlcnZpY2UgPSBpbmplY3QoQXBpR2F0ZXdheVNlcnZpY2UpO1xuICBwdWJsaWMgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuXG4gIHByaXZhdGUgbWVudVN0YXRlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PEFwcE1lbnVbXSB8IG51bGw+KDEpO1xuICBwdWJsaWMgYWN0aXZlTWVudUxpc3QkID0gdGhpcy5tZW51U3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgY29tcGFueUxpc3RTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Q29tcGFueVtdIHwgbnVsbD4oMSk7XG4gIHB1YmxpYyBjb21wYW55TGlzdCQgPSB0aGlzLmNvbXBhbnlMaXN0U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHV0aWxpdHlDb250ZW50RHJhd2VyU3ViID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHV0aWxpdHlDb250ZW50VG9nZ2xlJCA9IHRoaXMudXRpbGl0eUNvbnRlbnREcmF3ZXJTdWIuYXNPYnNlcnZhYmxlKCk7XG5cbiAgdG9nZ2xlVXRpbGl0eUNvbnRlbnREcmF3ZXIoKSB7XG4gICAgdGhpcy51dGlsaXR5Q29udGVudERyYXdlclN1Yi5uZXh0KCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KCdoZWFkZXJDb25maWcnKSBwcml2YXRlIGNvbmZpZzogSGVhZGVyQ29uZmlnKSB7XG4gICAgdGhpcy5oZWFkZXJDb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5iYXNlVXJsID0gY29uZmlnLmFwaVVybDtcbiAgfVxuXG4gIHNldE1lbnVTdGF0ZShkYXRhOiBBcHBNZW51W10pOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVTdGF0ZVN1YmplY3QubmV4dChkYXRhKTtcbiAgfVxuICBzZXRDb21wYW55TGlzdChkYXRhOiBDb21wYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBhbnlMaXN0U3ViamVjdC5uZXh0KGRhdGEpO1xuICB9XG5cbiAgb2J0YWluRGF0YUJ5VXJsKHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwaUdhdGV3YXlTZXJ2aWNlLmRvR2V0KHVybCk7XG4gIH1cblxuICBvcGVuU2Vzc2lvbkV4cGlyZUluZm8oc2Vzc2lvbmluZm8/OiBTZXNzaW9uT3V0SW5mbykge1xuICAgIGxldCBpbmZvOiBTZXNzaW9uT3V0SW5mbyA9IHt9O1xuICAgIGlmIChzZXNzaW9uaW5mbykge1xuICAgICAgaW5mbyA9IHNlc3Npb25pbmZvO1xuICAgIH1cbiAgICB0aGlzLmlzU2Vzc2lvbkV4cGlyeURpYWxvZ09wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2RpYWxvZy5vcGVuKFNlc3Npb25FeHBpcnlJbmZvQ29tcG9uZW50LCB7IGRhdGE6IHNlc3Npb25pbmZvIH0pO1xuICB9XG5cbiAgZ2V0RG9tYWluSW5mbygpIHtcbiAgICBsZXQgZG9tID0gZG9jdW1lbnQubG9jYXRpb24uaG9zdC5zcGxpdCgnLicpO1xuICAgIGxldCBkb21haW5JbmZvID0gQVBQX0RPTUFJTi5maW5kKHggPT4geC5kb21haW4gPT09IGRvbVswXSk7XG4gICAgaWYgKGRvbWFpbkluZm8pIHtcbiAgICAgIHJldHVybiBkb21haW5JbmZvO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZG9tYWluIGV4aXN0cyBiZWZvcmUgdXNpbmcgaXRcbiAgICBkb21haW5JbmZvID0gZG9tWzFdID8gQVBQX0RPTUFJTi5maW5kKHggPT4geC5kb21haW4gPT09IGRvbVsxXSkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGRvbWFpbkluZm8gfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QXBwcygpIHtcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJsICsgRW5kUG9pbnRzLkFQSV9VUkxTLmdldEFwcHNBcGl9YDtcbiAgICByZXR1cm4gdGhpcy5fYXBpR2F0ZXdheVNlcnZpY2UuZG9HZXQodXJsKTtcbiAgfVxuICBnZXRDb21wYW55QXBwbGljYXRpb25zKCkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZ2V0Q29tcGFueUFwcGxpY2F0aW9uc31gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwpO1xuICB9XG5cbiAgLy8gVE9ETyAtLSBuZWVkIHRvIHJlbW92ZVxuICBnZXRVc2VyQ29tcGFuaWVzKCkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZ2V0VXNlckNvbXBhbmllc31gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwpO1xuICB9XG4gIHVwZGF0ZVVzZXJDb21wYW55KHJlcUJvZHk6IGFueSkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMudXBkYXRlVXNlckNvbXBhbnl9YDtcbiAgICByZXR1cm4gdGhpcy5fYXBpR2F0ZXdheVNlcnZpY2UuZG9Qb3N0KHVybCwgcmVxQm9keSk7XG4gIH1cblxuICBmZXRjaENvbXBhbnlQcm9maWxlKHJlcUJvZHk6IGFueSkge1xuICAgIGxldCBjb25maWc6IGFueSA9IHtcbiAgICAgIGlzVW5hdXRob3JpemVkOiB0cnVlXG4gICAgfVxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZmV0Y2hDb21wYW55UHJvZmlsZSArICc/JyArIFV0aWxpdGllcy5jb252ZXJ0T2JqZWN0VG9RdWVyeVN0cmluZyhyZXFCb2R5KX1gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb0dldCh1cmwsIGNvbmZpZykucGlwZShcbiAgICAgIHJlZHVjZSgoYWNjLCByZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgIGFjYyA9IHJlcy5kYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSlcbiAgICApO1xuICB9XG4gIGdldFVzZXJEZXRhaWxzKCkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZ2V0VXNlckRldGFpbHN9YDtcbiAgICByZXR1cm4gdGhpcy5fYXBpR2F0ZXdheVNlcnZpY2UuZG9HZXQodXJsKTtcbiAgfVxuXG4gIGdldENvbXBhbnlMaXN0KCkge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmwgKyBFbmRQb2ludHMuQVBJX1VSTFMuZ2V0Q29tcGFueUxpc3R9YDtcbiAgICByZXR1cm4gdGhpcy5fYXBpR2F0ZXdheVNlcnZpY2UuZG9HZXQodXJsKS5waXBlKFxuICAgICAgcmVkdWNlKChhY2MsIHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzPy5kYXRhPy5jb21wYW5pZXMpIHtcbiAgICAgICAgICBhY2MgPSByZXM/LmRhdGE/LmNvbXBhbmllcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pXG4gICAgKTtcbiAgfVxuICBnZXRNZW51TGlzdCgpIHtcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJsICsgRW5kUG9pbnRzLkFQSV9VUkxTLmdldEFwcE1lbnV9YDtcbiAgICByZXR1cm4gdGhpcy5fYXBpR2F0ZXdheVNlcnZpY2UuZG9HZXQodXJsKS5waXBlKFxuICAgICAgcmVkdWNlKChhY2MsIHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzPy5kYXRhPy5BcHBNZW51KSB7XG4gICAgICAgICAgYWNjID0gcmVzPy5kYXRhPy5BcHBNZW51O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlTGFzdEFjY2Vzc2VkQXBwbGljYXRpb24ocmVxQm9keTogYW55KSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy51cGRhdGVMYXN0QWNjZXNzZWRBcHBsaWNhdGlvbn1gO1xuICAgIHJldHVybiB0aGlzLl9hcGlHYXRld2F5U2VydmljZS5kb1Bvc3QodXJsLCByZXFCb2R5KTtcbiAgfVxuXG4gIG9iamVjdFRvUXVlcnlQYXJhbXMob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqW2tleV0gIT09IHVuZGVmaW5lZCAmJiBvYmpba2V5XSAhPT0gbnVsbCkge1xuICAgICAgICBwYXJhbXMuYXBwZW5kKGtleSwgb2JqW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXRDb29raWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICc9KFteO10rKScpKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMl0pIDogbnVsbDtcbiAgfVxuXG4gIGdldFF1ZXJ5UmVzcG9uc2UocmVxdWVzdD86IEFwcHJhaXNhbENoYXRSZXF1ZXN0KSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVVybCArIEVuZFBvaW50cy5BUElfVVJMUy5hcHByYWlzYWxDaGF0fWA7XG4gICAgaWYgKHJlcXVlc3Q/LnF1ZXJ5KSB7XG4gICAgICB1cmwgPSBgJHt1cmx9PyR7dGhpcy5vYmplY3RUb1F1ZXJ5UGFyYW1zKHJlcXVlc3QpfWA7XG4gICAgfVxuICAgIGNvbnN0IGNoYXRDdHggPSB0aGlzLmdldENvb2tpZSgncHJvZmV0LWN0eCcpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBjaGF0Q3R4ID8gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdwcm9mZXQtY3R4JywgY2hhdEN0eCkgOiB1bmRlZmluZWQ7XG4gICAgbGV0IGNvbmZpZzogQXBpQ29uZmlnID0ge307XG4gICAgaWYgKGNoYXRDdHgpIHtcbiAgICAgIGNvbmZpZy5odHRwSGVhZGVyID0gaGVhZGVycztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FwaUdhdGV3YXlTZXJ2aWNlLmRvR2V0KHVybCwgY29uZmlnKTtcbiAgfVxufVxuIl19