bpm-core 0.0.103 → 0.0.104

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 (130) hide show
  1. package/fesm2022/bpm-core.mjs +226 -229
  2. package/fesm2022/bpm-core.mjs.map +1 -1
  3. package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +2 -1
  4. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +1 -1
  5. package/lib/components/shared-components/form-field/shared-imports.d.ts +1 -1
  6. package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +1 -1
  7. package/lib/components/shared-components/title-section/title-section.component.d.ts +1 -1
  8. package/lib/pipes/currency.pipe.d.ts +1 -1
  9. package/lib/pipes/format-as-password.pipe.d.ts +1 -1
  10. package/lib/validators/string-to-boolean.pipe.d.ts +1 -1
  11. package/lib/validators/text.directive.d.ts +1 -1
  12. package/lib/validators/timer.pipe.d.ts +1 -1
  13. package/package.json +2 -4
  14. package/esm2022/bpm-core.mjs +0 -5
  15. package/esm2022/lib/app/app.component.mjs +0 -79
  16. package/esm2022/lib/classes/form-validation.mjs +0 -80
  17. package/esm2022/lib/classes/index.mjs +0 -2
  18. package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +0 -44
  19. package/esm2022/lib/components/app-component-sections/approvals/approvals.component.mjs +0 -23
  20. package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +0 -113
  21. package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +0 -25
  22. package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +0 -27
  23. package/esm2022/lib/components/app-component-sections/faqs/index.mjs +0 -2
  24. package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +0 -237
  25. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +0 -255
  26. package/esm2022/lib/components/app-component-sections/index.mjs +0 -9
  27. package/esm2022/lib/components/app-component-sections/layout/header/header.component.mjs +0 -79
  28. package/esm2022/lib/components/app-component-sections/layout/layout.component.mjs +0 -89
  29. package/esm2022/lib/components/app-component-sections/layout/side-nav/side-nav.component.mjs +0 -158
  30. package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +0 -34
  31. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +0 -345
  32. package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +0 -45
  33. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +0 -271
  34. package/esm2022/lib/components/app-component-sections/status/status.component.mjs +0 -38
  35. package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +0 -164
  36. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +0 -138
  37. package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -30
  38. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +0 -29
  39. package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +0 -67
  40. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +0 -138
  41. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +0 -234
  42. package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +0 -198
  43. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +0 -91
  44. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +0 -185
  45. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +0 -131
  46. package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +0 -31
  47. package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +0 -175
  48. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +0 -186
  49. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +0 -525
  50. package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +0 -33
  51. package/esm2022/lib/components/shared-components/form-field/index.mjs +0 -26
  52. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +0 -76
  53. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +0 -71
  54. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +0 -3
  55. package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +0 -2
  56. package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +0 -73
  57. package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +0 -69
  58. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +0 -61
  59. package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +0 -74
  60. package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +0 -85
  61. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +0 -52
  62. package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +0 -32
  63. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +0 -192
  64. package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +0 -191
  65. package/esm2022/lib/components/shared-components/form-field/shared-imports.mjs +0 -36
  66. package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +0 -116
  67. package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +0 -39
  68. package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +0 -57
  69. package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +0 -90
  70. package/esm2022/lib/components/shared-components/form-field/validation-errors/validation-errors.component.mjs +0 -43
  71. package/esm2022/lib/components/shared-components/index.mjs +0 -9
  72. package/esm2022/lib/components/shared-components/table/table.component.mjs +0 -243
  73. package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +0 -31
  74. package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +0 -31
  75. package/esm2022/lib/constants/constants.mjs +0 -149
  76. package/esm2022/lib/constants/index.mjs +0 -2
  77. package/esm2022/lib/directives/ar.directive.mjs +0 -54
  78. package/esm2022/lib/directives/currency.directive.mjs +0 -77
  79. package/esm2022/lib/directives/en.directive.mjs +0 -51
  80. package/esm2022/lib/directives/number.directive.mjs +0 -68
  81. package/esm2022/lib/directives/skip-location.directive.mjs +0 -28
  82. package/esm2022/lib/enums/actions.enum.mjs +0 -22
  83. package/esm2022/lib/enums/colors.enum.mjs +0 -6
  84. package/esm2022/lib/enums/events.enum.mjs +0 -6
  85. package/esm2022/lib/functions/data-to-blob.mjs +0 -12
  86. package/esm2022/lib/functions/encode-password.mjs +0 -14
  87. package/esm2022/lib/functions/handel-error-response.mjs +0 -12
  88. package/esm2022/lib/functions/index.mjs +0 -5
  89. package/esm2022/lib/functions/is-valid-data.mjs +0 -42
  90. package/esm2022/lib/helpers/shared.helper.mjs +0 -26
  91. package/esm2022/lib/hooks/index.mjs +0 -3
  92. package/esm2022/lib/hooks/load-form.mjs +0 -13
  93. package/esm2022/lib/hooks/save-form.mjs +0 -18
  94. package/esm2022/lib/i18n/ar.mjs +0 -200
  95. package/esm2022/lib/i18n/en.mjs +0 -204
  96. package/esm2022/lib/i18n/index.mjs +0 -3
  97. package/esm2022/lib/interfaces/action.interface.mjs +0 -2
  98. package/esm2022/lib/interfaces/api-response.interface.mjs +0 -2
  99. package/esm2022/lib/interfaces/document-file.interface.mjs +0 -2
  100. package/esm2022/lib/interfaces/form-items.interface.mjs +0 -2
  101. package/esm2022/lib/interfaces/form.interface.mjs +0 -150
  102. package/esm2022/lib/interfaces/igate-user.interface.mjs +0 -2
  103. package/esm2022/lib/interfaces/index.mjs +0 -8
  104. package/esm2022/lib/interfaces/lov-list.interface.mjs +0 -2
  105. package/esm2022/lib/interfaces/lov.interface.mjs +0 -2
  106. package/esm2022/lib/interfaces/shared.interface.mjs +0 -2
  107. package/esm2022/lib/pipes/currency.pipe.mjs +0 -66
  108. package/esm2022/lib/pipes/format-as-password.pipe.mjs +0 -19
  109. package/esm2022/lib/pipes/index.mjs +0 -3
  110. package/esm2022/lib/pipes/status-style.pipe.mjs +0 -57
  111. package/esm2022/lib/pipes/translate.pipe.mjs +0 -36
  112. package/esm2022/lib/regex/index.mjs +0 -2
  113. package/esm2022/lib/regex/regex-patterns.mjs +0 -4
  114. package/esm2022/lib/services/action.service.ts.mjs +0 -25
  115. package/esm2022/lib/services/core.service.ts.mjs +0 -527
  116. package/esm2022/lib/services/feedBack.service.mjs +0 -81
  117. package/esm2022/lib/services/i18n.service.mjs +0 -36
  118. package/esm2022/lib/services/index.mjs +0 -6
  119. package/esm2022/lib/services/sidenav.service.mjs +0 -36
  120. package/esm2022/lib/testComponent/config/segment-dynamic-loader.config.mjs +0 -8
  121. package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +0 -90
  122. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +0 -482
  123. package/esm2022/lib/testComponent/services/i18n.service.mjs +0 -39
  124. package/esm2022/lib/testComponent/services/segment-dynamic-loader.service.mjs +0 -54
  125. package/esm2022/lib/validators/id.validator.mjs +0 -66
  126. package/esm2022/lib/validators/index.mjs +0 -8
  127. package/esm2022/lib/validators/string-to-boolean.pipe.mjs +0 -16
  128. package/esm2022/lib/validators/text.directive.mjs +0 -50
  129. package/esm2022/lib/validators/timer.pipe.mjs +0 -19
  130. package/esm2022/public-api.mjs +0 -19
@@ -1,255 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input } from '@angular/core';
2
- import { ComponentOutletIoDirective, DynamicModule } from 'ng-dynamic-component';
3
- import { NgClass, NgComponentOutlet, NgIf } from '@angular/common';
4
- import { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';
5
- import { SatPopoverModule } from '@ncstate/sat-popover';
6
- import { ProfileInfoDrop } from '../../../interfaces';
7
- import * as Constants from '../../../constants';
8
- import { ProfileSectionComponent } from "../profile-section/profile-section.component";
9
- import { format } from 'date-fns';
10
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../../../services";
13
- import * as i2 from "@angular/material/expansion";
14
- import * as i3 from "ng-dynamic-component";
15
- const StatusMap = {
16
- [Constants.FORM_STATUS_REJECTED]: { class: 'danger', icon: 'close' },
17
- [Constants.FORM_STATUS_CANCELLED]: { class: 'danger', icon: 'close' },
18
- [Constants.FORM_STATUS_REJECT]: { class: 'danger', icon: 'close' },
19
- [Constants.SECTION_STATUS_UNSATISFIED]: { class: 'danger', icon: 'close' },
20
- [Constants.FORM_STATUS_CANCEL]: { class: 'danger', icon: 'close' },
21
- [Constants.FORM_STATUS_PENDING]: { class: 'warning', icon: 'clock' },
22
- 'default': { class: 'success', icon: 'check' }
23
- };
24
- export class FormSectionComponent {
25
- i18n;
26
- coreService;
27
- sidenavService;
28
- userType = 'recipient';
29
- popoverType = 'recipient';
30
- requestDetails;
31
- userPopoverInfo = {};
32
- section;
33
- form;
34
- lov;
35
- isReadOnly;
36
- controllers;
37
- segmentDynamicLoaderService;
38
- sectionFormComponent = null;
39
- sectionName = 'SECTION_NAME.requestDetails';
40
- sectionStatusKey;
41
- recipient = {
42
- isShowing: false,
43
- profile: null
44
- };
45
- delegate = {
46
- isShowing: false,
47
- profile: null
48
- };
49
- input;
50
- processingDate;
51
- destroyRef = inject(DestroyRef);
52
- constructor(i18n, coreService, sidenavService) {
53
- this.i18n = i18n;
54
- this.coreService = coreService;
55
- this.sidenavService = sidenavService;
56
- }
57
- /**
58
- * Method to initialize various components when the component is initialized.
59
- *
60
- * @return {void}
61
- */
62
- ngOnInit() {
63
- this.initSectionFormComponent();
64
- this.initSectionName();
65
- this.initInput();
66
- this.initProcessingDate();
67
- }
68
- /**
69
- * Initializes the section form component by fetching it from the segment dynamic loader service.
70
- *
71
- * @return {void}
72
- */
73
- initSectionFormComponent() {
74
- this.sectionFormComponent = this.segmentDynamicLoaderService.getComponent(this.section.id);
75
- }
76
- /**
77
- * Initializes the section name based on the provided section data.
78
- * If the section's body contains a 'stageName' property, the section name is set to the value of that property.
79
- * Otherwise, the section name is retrieved using the segmentDynamicLoaderService based on the section ID.
80
- *
81
- * @return {void}
82
- */
83
- initSectionName() {
84
- if (this.section.body.details?.['stageName']) {
85
- this.sectionName = this.section.body.details['stageName']?.value ?? this.section.body.details['stageName'];
86
- }
87
- else {
88
- this.sectionName = this.segmentDynamicLoaderService.getSectionName(this.section.id);
89
- }
90
- }
91
- /**
92
- * Initializes the input object with the provided values for read-only status, list of values, section, and form.
93
- *
94
- * @return {void}
95
- */
96
- initInput() {
97
- this.input = {
98
- isReadOnly: this.isReadOnly,
99
- lov: this.lov,
100
- section: this.section,
101
- form: this.form
102
- };
103
- }
104
- /**
105
- * Initializes the processing date based on the section's header processing date.
106
- * If the processing date is available in the section header, it formats the processing date
107
- * and assigns it to the processingDate property of the instance.
108
- *
109
- * @return {void}
110
- */
111
- initProcessingDate() {
112
- if (this.section?.header?.processingDate) {
113
- this.processingDate = format(new Date(this.section.header.processingDate), "dd/MM/yyyy hh:mm:ss");
114
- }
115
- }
116
- /**
117
- * Check if the section is expanded.
118
- *
119
- * @return {boolean} Returns true if the section is expanded, false otherwise.
120
- */
121
- get isExpanded() {
122
- const hasSections = Boolean(this.form?.sections?.length);
123
- const isAnySectionExpandable = hasSections && this.form.sections.some(section => 'expandStage' in (section?.body?.details || {}));
124
- return isAnySectionExpandable ? (this.section?.body?.details?.['expandStage'] === 'true') : true;
125
- }
126
- /**
127
- * Create a ProfileInfoDrop object from the response object.
128
- *
129
- * @param {any} response - The response object containing user profile information.
130
- *
131
- * @return {ProfileInfoDrop} A ProfileInfoDrop object created from the response data.
132
- */
133
- createUserProfileFromResponse(response) {
134
- const user = response?.["Users"][0];
135
- return new ProfileInfoDrop(false, user?.employeeNumber, user?.email, user?.name, user?.generalDepartment?.name, user?.position?.name, user?.sector?.name, user?.department?.name, user?.generalDepartment?.code, user?.location, user?.nationality?.desc, user?.contact?.mobile, user?.manager?.name, user?.seniorSectorName?.name);
136
- }
137
- /**
138
- * Method to open or create a user profile.
139
- *
140
- * @param {ProfileInfoDrop} userData - The user profile data to open or create.
141
- * @param {string} personType - The type of person this profile belongs to.
142
- *
143
- * @return {void}
144
- */
145
- openOrCreateUserProfile(userData, personType) {
146
- this.sidenavService.data = userData;
147
- this.userPopoverInfo = userData;
148
- this[personType].profile = userData;
149
- this.sidenavService.publish('open', ProfileSectionComponent);
150
- }
151
- /**
152
- * Toggles the display of small profile information for a given person type
153
- *
154
- * @param {any} event - The event that triggered the toggle
155
- * @param {string} personType - The type of person for which to display the profile information
156
- *
157
- * @return {void}
158
- */
159
- toggleSmallProfileInfo(event, personType) {
160
- this.userType = personType;
161
- event.stopPropagation();
162
- let userInfo = this[personType];
163
- if (!userInfo.profile) {
164
- this.popoverType = personType;
165
- let userEmail = this.getUserEmail(personType);
166
- this.fetchAndSetUserProfile(userEmail, personType);
167
- }
168
- else {
169
- this.openOrCreateUserProfile(userInfo.profile, personType);
170
- }
171
- }
172
- /**
173
- * Retrieves the email of the user based on the personType parameter.
174
- *
175
- * @param {string} personType - Type of the person ('recipient' or others).
176
- * @return {string} - The email address of the user.
177
- */
178
- getUserEmail(personType) {
179
- return (personType === 'recipient'
180
- ? this.section.header.personToThumbnail.split('=')[1]
181
- : this?.section?.header?.delegatedToThumbnail.split('=')[1]);
182
- }
183
- /**
184
- * Fetches the user profile using the provided user email and person type, then sets the profile.
185
- *
186
- * @param {string} userEmail - The email of the user whose profile is to be fetched and set.
187
- * @param {string} personType - The type of person (e.g., employee, customer) for whom the profile is being fetched.
188
- *
189
- * @return {void}
190
- */
191
- fetchAndSetUserProfile(userEmail, personType) {
192
- this.coreService.employeeProfile(userEmail).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((response) => {
193
- if (response) {
194
- let userData = this.createUserProfileFromResponse(response);
195
- this.openOrCreateUserProfile(userData, personType);
196
- }
197
- });
198
- }
199
- /**
200
- * Returns the CSS class associated with the input status.
201
- *
202
- * @param {string} status - The status for which the CSS class is needed.
203
- * @return {string} - The CSS class corresponding to the given status.
204
- */
205
- statusClass(status) {
206
- // status = status ? status.toLowerCase() : '';
207
- let statusStrategy = StatusMap[status] || StatusMap['default'];
208
- return statusStrategy.class;
209
- }
210
- /**
211
- * Returns the icon associated with the provided status.
212
- *
213
- * @param {string} status - The status for which to retrieve the icon.
214
- * @return {string} The icon corresponding to the provided status.
215
- */
216
- statusIcon(status) {
217
- status = status ? status.toLowerCase() : '';
218
- let statusStrategy = StatusMap[status] || StatusMap['default'];
219
- return statusStrategy.icon;
220
- }
221
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i1.CoreService }, { token: i1.SidenavService }], target: i0.ɵɵFactoryTarget.Component });
222
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { requestDetails: "requestDetails", section: "section", form: "form", lov: "lov", isReadOnly: "isReadOnly", controllers: "controllers", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, ngImport: i0, template: "<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: ComponentOutletIoDirective, selector: "[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ngComponentOutletNdcDynamicInputs", "ngComponentOutletNdcDynamicOutputs"], exportAs: ["ndcDynamicIo"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DynamicModule }, { kind: "directive", type: i3.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }] });
223
- }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, decorators: [{
225
- type: Component,
226
- args: [{ selector: 'app-form-section', standalone: true, imports: [
227
- MatExpansionModule,
228
- MatExpansionPanel,
229
- NgIf,
230
- NgComponentOutlet,
231
- ComponentOutletIoDirective,
232
- SatPopoverModule,
233
- NgClass,
234
- DynamicModule
235
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-expansion-panel class=\"mb-4\" [expanded]=\"isExpanded\" hideToggle #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n @if (section.header?.processedBy) {\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\">\r\n {{ processingDate }}\r\n </bdi>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n @if (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false') {\r\n <ng-container>\r\n @if (section?.header?.personTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n @if (!section?.header?.delegatedTo) {\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-user-only': !section?.header?.delegatedTo}\"\r\n >{{ section?.header?.personTo }}</span>\r\n }\r\n </div>\r\n @if (section?.header?.delegatedTo) {\r\n <div\r\n class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if (section?.body?.details?.['decision']?.key) {\r\n <ds-status\r\n class=\"main-status\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n }\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n @if (approvalPanel.expanded) {\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n } @else {\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n }\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
236
- }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i1.CoreService }, { type: i1.SidenavService }], propDecorators: { requestDetails: [{
237
- type: Input
238
- }], section: [{
239
- type: Input
240
- }], form: [{
241
- type: Input
242
- }], lov: [{
243
- type: Input
244
- }], isReadOnly: [{
245
- type: Input
246
- }], controllers: [{
247
- type: Input
248
- }], segmentDynamicLoaderService: [{
249
- type: Input
250
- }], sectionFormComponent: [{
251
- type: Input
252
- }], sectionName: [{
253
- type: Input
254
- }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRW5HLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBTyxlQUFlLEVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBRWhFLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLENBQUMsU0FB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QkFBbkMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBEZXN0cm95UmVmLCBpbmplY3QsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZSwgQ29yZVNlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7Q29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsIER5bmFtaWNNb2R1bGV9IGZyb20gJ25nLWR5bmFtaWMtY29tcG9uZW50JztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtNYXRFeHBhbnNpb25Nb2R1bGUsIE1hdEV4cGFuc2lvblBhbmVsfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQge1NhdFBvcG92ZXJNb2R1bGV9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcclxuaW1wb3J0IHtGb3JtLCBQcm9maWxlSW5mb0Ryb3AsIFNlY3Rpb259IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHtQcm9maWxlU2VjdGlvbkNvbXBvbmVudH0gZnJvbSBcIi4uL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7Zm9ybWF0fSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmNvbnN0IFN0YXR1c01hcCA9IHtcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX1JFSkVDVEVEXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19DQU5DRUxMRURdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX1JFSkVDVF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuU0VDVElPTl9TVEFUVVNfVU5TQVRJU0ZJRURdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX0NBTkNFTF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfUEVORElOR106IHtjbGFzczogJ3dhcm5pbmcnLCBpY29uOiAnY2xvY2snfSxcclxuICAnZGVmYXVsdCc6IHtjbGFzczogJ3N1Y2Nlc3MnLCBpY29uOiAnY2hlY2snfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mb3JtLXNlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uUGFuZWwsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXHJcbiAgICBDb21wb25lbnRPdXRsZXRJb0RpcmVjdGl2ZSxcclxuICAgIFNhdFBvcG92ZXJNb2R1bGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgRHluYW1pY01vZHVsZVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VjdGlvbkNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0IHtcclxuICB1c2VyVHlwZSA9ICdyZWNpcGllbnQnO1xyXG4gIHBvcG92ZXJUeXBlID0gJ3JlY2lwaWVudCc7XHJcbiAgQElucHV0KCkgcmVxdWVzdERldGFpbHM6IFNlY3Rpb247XHJcbiAgdXNlclBvcG92ZXJJbmZvOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBzZWN0aW9uOiBTZWN0aW9uO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgbG92OiBhbnk7XHJcbiAgQElucHV0KCkgaXNSZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjb250cm9sbGVyczogYW55O1xyXG4gIEBJbnB1dCgpIHNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZTogYW55O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25Gb3JtQ29tcG9uZW50OiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25OYW1lID0gJ1NFQ1RJT05fTkFNRS5yZXF1ZXN0RGV0YWlscyc7XHJcbiAgc2VjdGlvblN0YXR1c0tleTogc3RyaW5nO1xyXG4gIHJlY2lwaWVudCA9IHtcclxuICAgIGlzU2hvd2luZzogZmFsc2UsXHJcbiAgICBwcm9maWxlOiBudWxsXHJcbiAgfTtcclxuICBkZWxlZ2F0ZSA9IHtcclxuICAgIGlzU2hvd2luZzogZmFsc2UsXHJcbiAgICBwcm9maWxlOiBudWxsXHJcbiAgfTtcclxuICBwdWJsaWMgaW5wdXQ7XHJcbiAgcHJvY2Vzc2luZ0RhdGU6IHN0cmluZztcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpZGVuYXZTZXJ2aWNlOiBTaWRlbmF2U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIGluaXRpYWxpemUgdmFyaW91cyBjb21wb25lbnRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRTZWN0aW9uRm9ybUNvbXBvbmVudCgpO1xyXG4gICAgdGhpcy5pbml0U2VjdGlvbk5hbWUoKTtcclxuICAgIHRoaXMuaW5pdElucHV0KCk7XHJcbiAgICB0aGlzLmluaXRQcm9jZXNzaW5nRGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHNlY3Rpb24gZm9ybSBjb21wb25lbnQgYnkgZmV0Y2hpbmcgaXQgZnJvbSB0aGUgc2VnbWVudCBkeW5hbWljIGxvYWRlciBzZXJ2aWNlLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRTZWN0aW9uRm9ybUNvbXBvbmVudCgpIHtcclxuICAgIHRoaXMuc2VjdGlvbkZvcm1Db21wb25lbnQgPSB0aGlzLnNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZS5nZXRDb21wb25lbnQoXHJcbiAgICAgIHRoaXMuc2VjdGlvbi5pZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRoZSBzZWN0aW9uIG5hbWUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNlY3Rpb24gZGF0YS5cclxuICAgKiBJZiB0aGUgc2VjdGlvbidzIGJvZHkgY29udGFpbnMgYSAnc3RhZ2VOYW1lJyBwcm9wZXJ0eSwgdGhlIHNlY3Rpb24gbmFtZSBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoYXQgcHJvcGVydHkuXHJcbiAgICogT3RoZXJ3aXNlLCB0aGUgc2VjdGlvbiBuYW1lIGlzIHJldHJpZXZlZCB1c2luZyB0aGUgc2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlIGJhc2VkIG9uIHRoZSBzZWN0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRTZWN0aW9uTmFtZSgpIHtcclxuICAgIGlmICh0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzPy5bJ3N0YWdlTmFtZSddKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk5hbWUgPSB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzWydzdGFnZU5hbWUnXT8udmFsdWUgPz90aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzWydzdGFnZU5hbWUnXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk5hbWUgPSB0aGlzLnNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZS5nZXRTZWN0aW9uTmFtZSh0aGlzLnNlY3Rpb24uaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGlucHV0IG9iamVjdCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZXMgZm9yIHJlYWQtb25seSBzdGF0dXMsIGxpc3Qgb2YgdmFsdWVzLCBzZWN0aW9uLCBhbmQgZm9ybS5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0SW5wdXQoKSB7XHJcbiAgICB0aGlzLmlucHV0ID0ge1xyXG4gICAgICBpc1JlYWRPbmx5OiB0aGlzLmlzUmVhZE9ubHksXHJcbiAgICAgIGxvdjogdGhpcy5sb3YsXHJcbiAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbixcclxuICAgICAgZm9ybTogdGhpcy5mb3JtXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHByb2Nlc3NpbmcgZGF0ZSBiYXNlZCBvbiB0aGUgc2VjdGlvbidzIGhlYWRlciBwcm9jZXNzaW5nIGRhdGUuXHJcbiAgICogSWYgdGhlIHByb2Nlc3NpbmcgZGF0ZSBpcyBhdmFpbGFibGUgaW4gdGhlIHNlY3Rpb24gaGVhZGVyLCBpdCBmb3JtYXRzIHRoZSBwcm9jZXNzaW5nIGRhdGVcclxuICAgKiBhbmQgYXNzaWducyBpdCB0byB0aGUgcHJvY2Vzc2luZ0RhdGUgcHJvcGVydHkgb2YgdGhlIGluc3RhbmNlLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBwcml2YXRlIGluaXRQcm9jZXNzaW5nRGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnNlY3Rpb24/LmhlYWRlcj8ucHJvY2Vzc2luZ0RhdGUpIHtcclxuICAgICAgdGhpcy5wcm9jZXNzaW5nRGF0ZSA9IGZvcm1hdChuZXcgRGF0ZSh0aGlzLnNlY3Rpb24uaGVhZGVyLnByb2Nlc3NpbmdEYXRlKSwgXCJkZC9NTS95eXl5IGhoOm1tOnNzXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIHRoZSBzZWN0aW9uIGlzIGV4cGFuZGVkLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWN0aW9uIGlzIGV4cGFuZGVkLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICovXHJcbiAgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBoYXNTZWN0aW9ucyA9IEJvb2xlYW4odGhpcy5mb3JtPy5zZWN0aW9ucz8ubGVuZ3RoKTtcclxuICAgIGNvbnN0IGlzQW55U2VjdGlvbkV4cGFuZGFibGUgPSBoYXNTZWN0aW9ucyAmJiB0aGlzLmZvcm0uc2VjdGlvbnMuc29tZShzZWN0aW9uID0+ICdleHBhbmRTdGFnZScgaW4gKHNlY3Rpb24/LmJvZHk/LmRldGFpbHMgfHwge30pKTtcclxuICAgIHJldHVybiBpc0FueVNlY3Rpb25FeHBhbmRhYmxlID8gKHRoaXMuc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydleHBhbmRTdGFnZSddID09PSAndHJ1ZScpIDogdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIFByb2ZpbGVJbmZvRHJvcCBvYmplY3QgZnJvbSB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHthbnl9IHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdCBjb250YWluaW5nIHVzZXIgcHJvZmlsZSBpbmZvcm1hdGlvbi5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge1Byb2ZpbGVJbmZvRHJvcH0gQSBQcm9maWxlSW5mb0Ryb3Agb2JqZWN0IGNyZWF0ZWQgZnJvbSB0aGUgcmVzcG9uc2UgZGF0YS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZVVzZXJQcm9maWxlRnJvbVJlc3BvbnNlKHJlc3BvbnNlOiBhbnkpOiBQcm9maWxlSW5mb0Ryb3Age1xyXG4gICAgY29uc3QgdXNlciA9IHJlc3BvbnNlPy5bXCJVc2Vyc1wiXVswXTtcclxuICAgIHJldHVybiBuZXcgUHJvZmlsZUluZm9Ecm9wKFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgdXNlcj8uZW1wbG95ZWVOdW1iZXIsXHJcbiAgICAgIHVzZXI/LmVtYWlsLFxyXG4gICAgICB1c2VyPy5uYW1lLFxyXG4gICAgICB1c2VyPy5nZW5lcmFsRGVwYXJ0bWVudD8ubmFtZSxcclxuICAgICAgdXNlcj8ucG9zaXRpb24/Lm5hbWUsXHJcbiAgICAgIHVzZXI/LnNlY3Rvcj8ubmFtZSxcclxuICAgICAgdXNlcj8uZGVwYXJ0bWVudD8ubmFtZSxcclxuICAgICAgdXNlcj8uZ2VuZXJhbERlcGFydG1lbnQ/LmNvZGUsXHJcbiAgICAgIHVzZXI/LmxvY2F0aW9uLFxyXG4gICAgICB1c2VyPy5uYXRpb25hbGl0eT8uZGVzYyxcclxuICAgICAgdXNlcj8uY29udGFjdD8ubW9iaWxlLFxyXG4gICAgICB1c2VyPy5tYW5hZ2VyPy5uYW1lLFxyXG4gICAgICB1c2VyPy5zZW5pb3JTZWN0b3JOYW1lPy5uYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIHRvIG9wZW4gb3IgY3JlYXRlIGEgdXNlciBwcm9maWxlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQcm9maWxlSW5mb0Ryb3B9IHVzZXJEYXRhIC0gVGhlIHVzZXIgcHJvZmlsZSBkYXRhIHRvIG9wZW4gb3IgY3JlYXRlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJzb25UeXBlIC0gVGhlIHR5cGUgb2YgcGVyc29uIHRoaXMgcHJvZmlsZSBiZWxvbmdzIHRvLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBwcml2YXRlIG9wZW5PckNyZWF0ZVVzZXJQcm9maWxlKHVzZXJEYXRhOiBQcm9maWxlSW5mb0Ryb3AsIHBlcnNvblR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5kYXRhID0gdXNlckRhdGE7XHJcbiAgICB0aGlzLnVzZXJQb3BvdmVySW5mbyA9IHVzZXJEYXRhO1xyXG4gICAgdGhpc1twZXJzb25UeXBlXS5wcm9maWxlID0gdXNlckRhdGE7XHJcbiAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnB1Ymxpc2goJ29wZW4nLCBQcm9maWxlU2VjdGlvbkNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSBkaXNwbGF5IG9mIHNtYWxsIHByb2ZpbGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcGVyc29uIHR5cGVcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIFRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgdG9nZ2xlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBlcnNvblR5cGUgLSBUaGUgdHlwZSBvZiBwZXJzb24gZm9yIHdoaWNoIHRvIGRpc3BsYXkgdGhlIHByb2ZpbGUgaW5mb3JtYXRpb25cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgdG9nZ2xlU21hbGxQcm9maWxlSW5mbyhldmVudDogYW55LCBwZXJzb25UeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudXNlclR5cGUgPSBwZXJzb25UeXBlO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBsZXQgdXNlckluZm8gPSB0aGlzW3BlcnNvblR5cGVdO1xyXG4gICAgaWYgKCF1c2VySW5mby5wcm9maWxlKSB7XHJcbiAgICAgIHRoaXMucG9wb3ZlclR5cGUgPSBwZXJzb25UeXBlO1xyXG4gICAgICBsZXQgdXNlckVtYWlsID0gdGhpcy5nZXRVc2VyRW1haWwocGVyc29uVHlwZSk7XHJcbiAgICAgIHRoaXMuZmV0Y2hBbmRTZXRVc2VyUHJvZmlsZSh1c2VyRW1haWwsIHBlcnNvblR5cGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuT3JDcmVhdGVVc2VyUHJvZmlsZSh1c2VySW5mby5wcm9maWxlLCBwZXJzb25UeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgZW1haWwgb2YgdGhlIHVzZXIgYmFzZWQgb24gdGhlIHBlcnNvblR5cGUgcGFyYW1ldGVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBlcnNvblR5cGUgLSBUeXBlIG9mIHRoZSBwZXJzb24gKCdyZWNpcGllbnQnIG9yIG90aGVycykuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSAtIFRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSB1c2VyLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VXNlckVtYWlsKHBlcnNvblR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHBlcnNvblR5cGUgPT09ICdyZWNpcGllbnQnXHJcbiAgICAgICAgPyB0aGlzLnNlY3Rpb24uaGVhZGVyLnBlcnNvblRvVGh1bWJuYWlsLnNwbGl0KCc9JylbMV1cclxuICAgICAgICA6IHRoaXM/LnNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9UaHVtYm5haWwuc3BsaXQoJz0nKVsxXVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHVzZXIgcHJvZmlsZSB1c2luZyB0aGUgcHJvdmlkZWQgdXNlciBlbWFpbCBhbmQgcGVyc29uIHR5cGUsIHRoZW4gc2V0cyB0aGUgcHJvZmlsZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyRW1haWwgLSBUaGUgZW1haWwgb2YgdGhlIHVzZXIgd2hvc2UgcHJvZmlsZSBpcyB0byBiZSBmZXRjaGVkIGFuZCBzZXQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBlcnNvblR5cGUgLSBUaGUgdHlwZSBvZiBwZXJzb24gKGUuZy4sIGVtcGxveWVlLCBjdXN0b21lcikgZm9yIHdob20gdGhlIHByb2ZpbGUgaXMgYmVpbmcgZmV0Y2hlZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaEFuZFNldFVzZXJQcm9maWxlKHVzZXJFbWFpbDogc3RyaW5nLCBwZXJzb25UeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuY29yZVNlcnZpY2UuZW1wbG95ZWVQcm9maWxlKHVzZXJFbWFpbCkucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IHRoaXMuY3JlYXRlVXNlclByb2ZpbGVGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgICAgIHRoaXMub3Blbk9yQ3JlYXRlVXNlclByb2ZpbGUodXNlckRhdGEsIHBlcnNvblR5cGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIENTUyBjbGFzcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlucHV0IHN0YXR1cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXMgLSBUaGUgc3RhdHVzIGZvciB3aGljaCB0aGUgQ1NTIGNsYXNzIGlzIG5lZWRlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIENTUyBjbGFzcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBzdGF0dXMuXHJcbiAgICovXHJcbiAgc3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gc3RhdHVzID0gc3RhdHVzID8gc3RhdHVzLnRvTG93ZXJDYXNlKCkgOiAnJztcclxuICAgIGxldCBzdGF0dXNTdHJhdGVneSA9IFN0YXR1c01hcFtzdGF0dXNdIHx8IFN0YXR1c01hcFsnZGVmYXVsdCddO1xyXG4gICAgcmV0dXJuIHN0YXR1c1N0cmF0ZWd5LmNsYXNzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgaWNvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHN0YXR1cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXMgLSBUaGUgc3RhdHVzIGZvciB3aGljaCB0byByZXRyaWV2ZSB0aGUgaWNvbi5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBpY29uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIHN0YXR1cy5cclxuICAgKi9cclxuICBzdGF0dXNJY29uKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN0YXR1cyA9IHN0YXR1cyA/IHN0YXR1cy50b0xvd2VyQ2FzZSgpIDogJyc7XHJcbiAgICBsZXQgc3RhdHVzU3RyYXRlZ3kgPSBTdGF0dXNNYXBbc3RhdHVzXSB8fCBTdGF0dXNNYXBbJ2RlZmF1bHQnXTtcclxuICAgIHJldHVybiBzdGF0dXNTdHJhdGVneS5pY29uO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cIm1iLTRcIiBbZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiIGhpZGVUb2dnbGUgI2FwcHJvdmFsUGFuZWw9XCJtYXRFeHBhbnNpb25QYW5lbFwiPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZmxleC1ncm93LTEgYXBwcm92YWwtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKHNlY3Rpb25TdGF0dXNLZXkpfX1cIiBuby1vcGFjaXR5IGljb25cclxuICAgICAgICAgIGNsYXNzPVwiY2lyY2xlLXN0YXR1cyBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJ7e3N0YXR1c0ljb24oc2VjdGlvblN0YXR1c0tleSl9fVwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBtLTBcIj4ge3sgc2VjdGlvbk5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICBAaWYgKHNlY3Rpb24uaGVhZGVyPy5wcm9jZXNzZWRCeSkge1xyXG4gICAgICAgICAgICA8YmRpIGNsYXNzPVwiZnMtMTIgZmMtZGFyay1ncmF5IGZ3LW5vcm1hbCBsaW5lLWhlaWdodC0xIGQtYmxvY2sgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIHt7IHByb2Nlc3NpbmdEYXRlIH19XHJcbiAgICAgICAgICAgIDwvYmRpPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLXBhbmVsLWRldGFpbHMgZ2FwLTFcIj5cclxuICAgICAgICBAaWYgKCFzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ3N0YWdlMCddPy5bJ2lzU3RhZ2UwJ10gfHwgc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydzdGFnZTAnXT8uWydpc1N0YWdlMCddID09PSAnZmFsc2UnKSB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICBAaWYgKHNlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG8pIHtcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oJGV2ZW50LCAncmVjaXBpZW50JylcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcmFkaXVzLTMgaC00MFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndXNlci1hdmF0YXItbmFtZSBweC0wIHB4LW1kLTInOiAhc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUbywgJ3AtMCc6IHNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG99XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkcy1hdmF0YXIgaW1hZ2U9XCJ7e3NlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG9UaHVtYm5haWx9fVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwidXNlci1hdmF0YXJcIj48L2RzLWF2YXRhcj5cclxuICAgICAgICAgICAgICAgICAgQGlmICghc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUbykge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTE0IGZ3LW1lZGl1bSBkLWlubGluZS1ibG9jayBwYW5lbC11c2VyLW5hbWUgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3BhbmVsLXVzZXItb25seSc6ICFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IHNlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG8gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgQGlmIChzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTbWFsbFByb2ZpbGVJbmZvKCRldmVudCwgJ2RlbGVnYXRlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdGF0ZS1hcnJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhkcFpIUm9QU0l5TVNJZ2FHVnBaMmgwUFNJeE15SWdkbWxsZDBKdmVEMGlNQ0F3SURJeElERXpJajQ4Y0dGMGFDQmtQU0pOTWpFc055NDNOak5oTVM0Mk1qRXNNUzQyTWpFc01Dd3dMREV0TGpRME55NDFPVE1zTVM0ek1EWXNNUzR6TURZc01Dd3dMREV0TGpjMUxqRTVOR010Tnk0eU9EUXNNQzA0TGpVMk9Dd3dMVEUxTGpnMU15d3dTRE11TmpZNVRETXVOak1zT0M0Mll5NHdOemN1TURZMExqRTFPQzR4TWpRdU1qSTVMakU1TkhFeExqY3hMREV1Tmprc015NDBNaXd6TGpNNE1XRXhMakF5TXl3eExqQXlNeXd3TERBc01Td3VNamt4TERFdU1EYzVMams1TWk0NU9USXNNQ3d3TERFdExqZ3VOekU1TERFdU1EVXpMREV1TURVekxEQXNNQ3d4TFRFdExqTXpNVkV6TGpnek1Td3hNUzQzTVRrc01TNDRPRFlzT1M0NFl5MHVORFF5TFM0ME16Y3RMamczT1MwdU9EZ3hMVEV1TXpNdE1TNHpNRGxCTkM0MU56SXNOQzQxTnpJc01Dd3dMREVzTUN3M0xqZ3hORlkzTGpFNE5VRXpNQzQzT0RNc016QXVOemd6TERBc01Dd3hMREl1TnpNc05DNHpOekZqTVMweExqQXlOeXd5TGpBek9DMHlMakF5TlN3ekxqQTJNeTB6TGpBek1rRXhMakEwT1N3eExqQTBPU3d3TERFc01TdzNMakkzTnl3eUxqZ3lRell1TkN3ekxqY3NOUzQxTURrc05DNDFOeXcwTGpZeU5TdzFMalEwTm1NdExqTXlNeTR6TWpFdExqWTBOQzQyTkRVdExqazNNeTQ1TnpZdU1EZzBMakExT1M0eE9ERXVNREkzTGpJM0xqQXlOeXczTGpJMU9Dd3dMRGd1TlRFMkxEQXNNVFV1TnpjMUxEQkJNUzR4TWprc01TNHhNamtzTUN3d0xERXNNakVzTnk0eU9YWXVORGN5V2lJZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9NQ0F0TUM0NU9Ua3BJaUJtYVd4c1BTSWpZVFUwWldVeElpOCtQQzl6ZG1jK1wiLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBweC0wIHB4LW1kLTIgcmFkaXVzLTMgdXNlci1hdmF0YXItbmFtZSBoLTQwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZHMtYXZhdGFyIGltYWdlPVwie3tzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvVGh1bWJuYWlsfX1cIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInVzZXItYXZhdGFyXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTE0IGZ3LW1lZGl1bSBkLWlubGluZS1ibG9jayBwYW5lbC11c2VyLW5hbWUgdGV4dC10cnVuY2F0ZVwiPnt7IHNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydkZWNpc2lvbiddPy5rZXkpIHtcclxuICAgICAgICAgIDxkcy1zdGF0dXNcclxuICAgICAgICAgICAgY2xhc3M9XCJtYWluLXN0YXR1c1wiXHJcbiAgICAgICAgICAgIHN0YXR1cz1cInt7c3RhdHVzQ2xhc3Moc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydkZWNpc2lvbiddPy5rZXkpfX1cIj57eyBzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2RlY2lzaW9uJ10/LnZhbHVlIH19XHJcbiAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLXBhbmVsLXRvZ2dsZVwiPlxyXG4gICAgICAgIEBpZiAoYXBwcm92YWxQYW5lbC5leHBhbmRlZCkge1xyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cIm1pbnVzXCIgY2xhc3M9XCJmcy0yMCBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwicGx1cy0xXCIgY2xhc3M9XCJmcy0yMCBmYy1jb3JhbFwiPjwvZHMtaWNvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJib3JkZXItdG9wIHB0LTRcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic2VjdGlvbkZvcm1Db21wb25lbnQ7IG5kY0R5bmFtaWNJbnB1dHM6IGlucHV0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4iXX0=
@@ -1,9 +0,0 @@
1
- export * from './service-header/service-header.component';
2
- export * from './status/status.component';
3
- export * from './workflow-section/workflow-section.component';
4
- export * from './form-section/form-section.component';
5
- export * from './main-request-details/main-request-details.component';
6
- export * from './feedback-section/feedback-section.component';
7
- export * from './profile-section/profile-section.component';
8
- export * from './layout/layout.component';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlcnZpY2UtaGVhZGVyL3NlcnZpY2UtaGVhZGVyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdy1zZWN0aW9uL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL21haW4tcmVxdWVzdC1kZXRhaWxzL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmVlZGJhY2stc2VjdGlvbi9mZWVkYmFjay1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLXNlY3Rpb24vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudCdcclxuIl19
@@ -1,79 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, CUSTOM_ELEMENTS_SCHEMA, Inject, PLATFORM_ID } from '@angular/core';
3
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
- import { MatMenuModule } from '@angular/material/menu';
5
- import { MatToolbarModule } from '@angular/material/toolbar';
6
- import { RouterModule } from '@angular/router';
7
- import * as Constants from '../../../../constants';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../../../../services";
10
- import * as i2 from "@angular/router";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/material/menu";
13
- import * as i5 from "@angular/material/toolbar";
14
- export class HeaderComponent {
15
- translate;
16
- sidenavService;
17
- coreService;
18
- router;
19
- platformId;
20
- search = new FormControl('');
21
- sidenavSubscription;
22
- isSidenavOpened = false;
23
- device = '';
24
- isMobile;
25
- userData;
26
- userName;
27
- constructor(translate, sidenavService, coreService, router, platformId) {
28
- this.translate = translate;
29
- this.sidenavService = sidenavService;
30
- this.coreService = coreService;
31
- this.router = router;
32
- this.platformId = platformId;
33
- this.device = navigator.userAgent;
34
- if (this.isMobile) {
35
- document.documentElement.classList.add('inside-mobile-app');
36
- }
37
- }
38
- setLanguage() {
39
- const targetLang = this.translate.getLanguage() === 'en' ? 'ar' : 'en';
40
- let url = location.origin + `/${targetLang}/group/i-gate/asset-management`;
41
- window.open(url, '_self');
42
- }
43
- logout() {
44
- let logoutUrl = Constants.LOGOUT_URL;
45
- localStorage.removeItem('token');
46
- localStorage.removeItem('userName');
47
- localStorage.removeItem('user');
48
- const userSelectedLanguage = localStorage.getItem('language') ?? 'en';
49
- sessionStorage.clear();
50
- localStorage.setItem('language', userSelectedLanguage);
51
- window.open(logoutUrl, '_self');
52
- }
53
- ngOnInit() {
54
- this.sidenavSubscription = this.sidenavService.sideNavOpened.subscribe((val) => {
55
- this.isSidenavOpened = val;
56
- });
57
- }
58
- toggleSideNav() {
59
- document.documentElement.classList.toggle('main-sidenav-opened');
60
- this.sidenavService.sideNavOpened.next(!this.isSidenavOpened);
61
- }
62
- location = location;
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: HeaderComponent, deps: [{ token: i1.CoreI18nService }, { token: i1.SidenavService }, { token: i1.CoreService }, { token: i2.Router }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
64
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: HeaderComponent, isStandalone: true, selector: "app-header", ngImport: i0, template: "<ng-container *ngIf=\"!isMobile\">\r\n <mat-toolbar\r\n class=\"align-items-center justify-content-between gap-3 border-bottom\"\r\n >\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n icon\r\n color=\"light-gray\"\r\n square\r\n (click)=\"toggleSideNav()\"\r\n >\r\n <ds-icon icon=\"burger-menu-1\" class=\"fs-24 fc-dark-gray\"></ds-icon>\r\n </ds-button>\r\n\r\n <a [href]=\"location.origin\">\r\n <figure class=\"m-0 d-flex\">\r\n <img class=\"main-logo\" src=\"assets/images/hub.svg\" alt=\"\" />\r\n </figure>\r\n </a>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n color=\"light-gray\"\r\n class=\"user-menu-btn\"\r\n [matMenuTriggerFor]=\"userMenu\"\r\n >\r\n <ds-avatar\r\n image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{userData?.email}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user2.jpg'\"\r\n slot=\"prefix\"\r\n class=\"avatar\"\r\n >\r\n </ds-avatar>\r\n\r\n <span class=\"fs-14 fw-medium fc-black\">\r\n {{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}\r\n </span>\r\n\r\n <ds-icon\r\n slot=\"suffix\"\r\n icon=\"arrow\"\r\n class=\"fc-dark-gray fs-16\"\r\n ></ds-icon>\r\n </ds-button>\r\n </div>\r\n </mat-toolbar>\r\n\r\n <!-- User Menu -->\r\n <mat-menu #userMenu=\"matMenu\" class=\"user-menu\">\r\n <div mat-menu-item>\r\n <span class=\"fs-14\">{{ translate.translate('welcome') }}, </span>\r\n <br />\r\n <span class=\"fs-14 fw-medium line-height-1\">{{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}</span>\r\n </div>\r\n <button mat-menu-item (click)=\"setLanguage()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"globe\" class=\"fs-25 fc-purple\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('otherLang')\r\n }}</span>\r\n </div>\r\n </button>\r\n <button mat-menu-item (click)=\"logout()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"logout\" class=\"fs-25 fc-red\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('logout')\r\n }}</span>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n</ng-container>\r\n", styles: [".test-user-agent{position:fixed;top:90px;width:100%;z-index:99999;color:#fff}ds-button[square].burger-menu::part(base){--btn-padding: 10px;margin-bottom:-1px;width:37px;height:37px;--default-size: 37px}[dir=rtl] :host ds-button::part(overlay){inset:0}mat-toolbar{background-color:var(--main-toolbar-bc);height:var(--main-toolbar-height);position:fixed;top:0;z-index:var(--main-toolbar-zIndex);border-bottom:1px solid var(--light-gray)!important}mat-toolbar .logo img{min-width:100px}.main-logo{display:block;width:auto;height:30px;object-fit:contain}@media (max-width: 991px){.user-menu-btn::part(base){border:0px;padding:0;--default-size: 40px}.user-menu-btn::part(overlay){border-radius:50%}.user-menu-btn::part(label),.user-menu-btn::part(suffix){display:none}}:host::ng-deep .avatar{min-width:24px;width:24px;height:24px;background-color:transparent}:host::ng-deep ds-button.add::part(base){--btn-bg-color: var(--coral)}@media (max-width: 991px){:host::ng-deep .avatar{min-width:40px;width:40px;height:40px}:host::ng-deep .avatar .avatar--x-small{--default-size: 40px}}.linkS{position:fixed;z-index:2;bottom:100px;right:20px}.dashboard-menu-icon{display:inline-flex;align-items:center;justify-content:center;min-width:56px;width:56px;height:56px;border-radius:50%;background-color:var(--coral);margin-bottom:10px}::ng-deep .inside-mobile-app{--main-toolbar-height: 0px}::ng-deep ds-button.transparent::part(base){--btn-bg-color: transparent;--btn-border-color: transparent;--btn-overlay-color: transparent}::ng-deep .mat-divider-vertical{border-right-color:var(--black)}.mat-divider{--mat-divider-width: 1px;--mat-divider-color: var(--dark-gray)}.header-search{width:500px}@media (max-width: 1130px){.header-search{width:200px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }] });
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: HeaderComponent, decorators: [{
67
- type: Component,
68
- args: [{ selector: 'app-header', standalone: true, imports: [
69
- CommonModule,
70
- ReactiveFormsModule,
71
- RouterModule,
72
- MatMenuModule,
73
- MatToolbarModule
74
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ng-container *ngIf=\"!isMobile\">\r\n <mat-toolbar\r\n class=\"align-items-center justify-content-between gap-3 border-bottom\"\r\n >\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n icon\r\n color=\"light-gray\"\r\n square\r\n (click)=\"toggleSideNav()\"\r\n >\r\n <ds-icon icon=\"burger-menu-1\" class=\"fs-24 fc-dark-gray\"></ds-icon>\r\n </ds-button>\r\n\r\n <a [href]=\"location.origin\">\r\n <figure class=\"m-0 d-flex\">\r\n <img class=\"main-logo\" src=\"assets/images/hub.svg\" alt=\"\" />\r\n </figure>\r\n </a>\r\n </div>\r\n\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <ds-button\r\n shape=\"flat\"\r\n color=\"light-gray\"\r\n class=\"user-menu-btn\"\r\n [matMenuTriggerFor]=\"userMenu\"\r\n >\r\n <ds-avatar\r\n image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{userData?.email}}\"\r\n onerror=\"this.onerror=null;this.src='assets/images/user2.jpg'\"\r\n slot=\"prefix\"\r\n class=\"avatar\"\r\n >\r\n </ds-avatar>\r\n\r\n <span class=\"fs-14 fw-medium fc-black\">\r\n {{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}\r\n </span>\r\n\r\n <ds-icon\r\n slot=\"suffix\"\r\n icon=\"arrow\"\r\n class=\"fc-dark-gray fs-16\"\r\n ></ds-icon>\r\n </ds-button>\r\n </div>\r\n </mat-toolbar>\r\n\r\n <!-- User Menu -->\r\n <mat-menu #userMenu=\"matMenu\" class=\"user-menu\">\r\n <div mat-menu-item>\r\n <span class=\"fs-14\">{{ translate.translate('welcome') }}, </span>\r\n <br />\r\n <span class=\"fs-14 fw-medium line-height-1\">{{ coreService.getShortName( coreService?.loggedInUserData?.['name']) }}</span>\r\n </div>\r\n <button mat-menu-item (click)=\"setLanguage()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"globe\" class=\"fs-25 fc-purple\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('otherLang')\r\n }}</span>\r\n </div>\r\n </button>\r\n <button mat-menu-item (click)=\"logout()\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <ds-icon icon=\"logout\" class=\"fs-25 fc-red\"></ds-icon>\r\n <span class=\"fs-14 fw-medium fc-black\">{{\r\n translate.translate('logout')\r\n }}</span>\r\n </div>\r\n </button>\r\n </mat-menu>\r\n</ng-container>\r\n", styles: [".test-user-agent{position:fixed;top:90px;width:100%;z-index:99999;color:#fff}ds-button[square].burger-menu::part(base){--btn-padding: 10px;margin-bottom:-1px;width:37px;height:37px;--default-size: 37px}[dir=rtl] :host ds-button::part(overlay){inset:0}mat-toolbar{background-color:var(--main-toolbar-bc);height:var(--main-toolbar-height);position:fixed;top:0;z-index:var(--main-toolbar-zIndex);border-bottom:1px solid var(--light-gray)!important}mat-toolbar .logo img{min-width:100px}.main-logo{display:block;width:auto;height:30px;object-fit:contain}@media (max-width: 991px){.user-menu-btn::part(base){border:0px;padding:0;--default-size: 40px}.user-menu-btn::part(overlay){border-radius:50%}.user-menu-btn::part(label),.user-menu-btn::part(suffix){display:none}}:host::ng-deep .avatar{min-width:24px;width:24px;height:24px;background-color:transparent}:host::ng-deep ds-button.add::part(base){--btn-bg-color: var(--coral)}@media (max-width: 991px){:host::ng-deep .avatar{min-width:40px;width:40px;height:40px}:host::ng-deep .avatar .avatar--x-small{--default-size: 40px}}.linkS{position:fixed;z-index:2;bottom:100px;right:20px}.dashboard-menu-icon{display:inline-flex;align-items:center;justify-content:center;min-width:56px;width:56px;height:56px;border-radius:50%;background-color:var(--coral);margin-bottom:10px}::ng-deep .inside-mobile-app{--main-toolbar-height: 0px}::ng-deep ds-button.transparent::part(base){--btn-bg-color: transparent;--btn-border-color: transparent;--btn-overlay-color: transparent}::ng-deep .mat-divider-vertical{border-right-color:var(--black)}.mat-divider{--mat-divider-width: 1px;--mat-divider-color: var(--dark-gray)}.header-search{width:500px}@media (max-width: 1130px){.header-search{width:200px}}\n"] }]
75
- }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i1.SidenavService }, { type: i1.CoreService }, { type: i2.Router }, { type: undefined, decorators: [{
76
- type: Inject,
77
- args: [PLATFORM_ID]
78
- }] }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2xheW91dC9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2xheW91dC9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQVMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHckQsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQWtCbkQsTUFBTSxPQUFPLGVBQWU7SUFVUjtJQUNSO0lBQ0Q7SUFDQztJQUNxQjtJQWIvQixNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsbUJBQW1CLENBQWdCO0lBQ25DLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNaLFFBQVEsQ0FBVztJQUNuQixRQUFRLENBQU07SUFDZCxRQUFRLENBQU07SUFFZCxZQUNrQixTQUEwQixFQUNsQyxjQUE4QixFQUMvQixXQUF3QixFQUN2QixNQUFjLEVBQ08sVUFBZTtRQUo1QixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNPLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVztRQUNULE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN2RSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksVUFBVSxnQ0FBZ0MsQ0FBQztRQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDckMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxZQUFZLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsTUFBTSxvQkFBb0IsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN0RSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3RSxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxhQUFhO1FBQ1gsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFa0IsUUFBUSxHQUFHLFFBQVEsQ0FBQzt1R0F0RDVCLGVBQWUsZ0lBY2hCLFdBQVc7MkZBZFYsZUFBZSxzRUMxQjVCLHNrRkEyRUEsK3ZERDNESSxZQUFZLGtJQUNaLG1CQUFtQiw4QkFDbkIsWUFBWSw4QkFDWixhQUFhLDZ2QkFDYixnQkFBZ0I7OzJGQU1QLGVBQWU7a0JBZDNCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsV0FHUSxDQUFDLHNCQUFzQixDQUFDOzswQkFnQjlCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5qZWN0LCBQTEFURk9STV9JRH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtNYXRNZW51TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHtNYXRUb29sYmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcclxuaW1wb3J0IHtSb3V0ZXIsIFJvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZSwgU2lkZW5hdlNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0ICogYXMgQ29uc3RhbnRzIGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7Q29yZVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlc1wiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWhlYWRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdFRvb2xiYXJNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IHtcclxuICBzZWFyY2ggPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIHNpZGVuYXZTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgaXNTaWRlbmF2T3BlbmVkID0gZmFsc2U7XHJcbiAgZGV2aWNlID0gJyc7XHJcbiAgaXNNb2JpbGUhOiBib29sZWFuO1xyXG4gIHVzZXJEYXRhOiBhbnk7XHJcbiAgdXNlck5hbWU6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNsYXRlOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNpZGVuYXZTZXJ2aWNlOiBTaWRlbmF2U2VydmljZSxcclxuICAgIHB1YmxpYyBjb3JlU2VydmljZTogQ29yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMuZGV2aWNlID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuXHJcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xyXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaW5zaWRlLW1vYmlsZS1hcHAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBzZXRMYW5ndWFnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhcmdldExhbmcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZSgpID09PSAnZW4nID8gJ2FyJyA6ICdlbic7XHJcbiAgICBsZXQgdXJsID0gbG9jYXRpb24ub3JpZ2luICsgYC8ke3RhcmdldExhbmd9L2dyb3VwL2ktZ2F0ZS9hc3NldC1tYW5hZ2VtZW50YDtcclxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19zZWxmJyk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICBsZXQgbG9nb3V0VXJsID0gQ29uc3RhbnRzLkxPR09VVF9VUkw7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9rZW4nKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyTmFtZScpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3VzZXInKTtcclxuICAgIGNvbnN0IHVzZXJTZWxlY3RlZExhbmd1YWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPz8gJ2VuJztcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZ3VhZ2UnLCB1c2VyU2VsZWN0ZWRMYW5ndWFnZSk7XHJcbiAgICB3aW5kb3cub3Blbihsb2dvdXRVcmwsICdfc2VsZicpO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaWRlbmF2U3Vic2NyaXB0aW9uID0gdGhpcy5zaWRlbmF2U2VydmljZS5zaWRlTmF2T3BlbmVkLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNTaWRlbmF2T3BlbmVkID0gdmFsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdG9nZ2xlU2lkZU5hdigpIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdtYWluLXNpZGVuYXYtb3BlbmVkJyk7XHJcbiAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnNpZGVOYXZPcGVuZWQubmV4dCghdGhpcy5pc1NpZGVuYXZPcGVuZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2F0aW9uID0gbG9jYXRpb247XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gIDxtYXQtdG9vbGJhclxyXG4gICAgY2xhc3M9XCJhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTMgYm9yZGVyLWJvdHRvbVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgPGRzLWJ1dHRvblxyXG4gICAgICAgIHNoYXBlPVwiZmxhdFwiXHJcbiAgICAgICAgaWNvblxyXG4gICAgICAgIGNvbG9yPVwibGlnaHQtZ3JheVwiXHJcbiAgICAgICAgc3F1YXJlXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVOYXYoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwiYnVyZ2VyLW1lbnUtMVwiIGNsYXNzPVwiZnMtMjQgZmMtZGFyay1ncmF5XCI+PC9kcy1pY29uPlxyXG4gICAgICA8L2RzLWJ1dHRvbj5cclxuXHJcbiAgICAgIDxhIFtocmVmXT1cImxvY2F0aW9uLm9yaWdpblwiPlxyXG4gICAgICAgIDxmaWd1cmUgY2xhc3M9XCJtLTAgZC1mbGV4XCI+XHJcbiAgICAgICAgICA8aW1nIGNsYXNzPVwibWFpbi1sb2dvXCIgc3JjPVwiYXNzZXRzL2ltYWdlcy9odWIuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICA8L2ZpZ3VyZT5cclxuICAgICAgPC9hPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgPGRzLWJ1dHRvblxyXG4gICAgICAgIHNoYXBlPVwiZmxhdFwiXHJcbiAgICAgICAgY29sb3I9XCJsaWdodC1ncmF5XCJcclxuICAgICAgICBjbGFzcz1cInVzZXItbWVudS1idG5cIlxyXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJ1c2VyTWVudVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZHMtYXZhdGFyXHJcbiAgICAgICAgICBpbWFnZT1cIi9ncm91cC9pLWdhdGUvd20tYnBtL2Zvcm1zLy0vcHJveHkvcG9ydHJhaXQ/ZW1haWw9e3t1c2VyRGF0YT8uZW1haWx9fVwiXHJcbiAgICAgICAgICBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlcjIuanBnJ1wiXHJcbiAgICAgICAgICBzbG90PVwicHJlZml4XCJcclxuICAgICAgICAgIGNsYXNzPVwiYXZhdGFyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9kcy1hdmF0YXI+XHJcblxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtIGZjLWJsYWNrXCI+XHJcbiAgICAgICAgICB7eyBjb3JlU2VydmljZS5nZXRTaG9ydE5hbWUoIGNvcmVTZXJ2aWNlPy5sb2dnZWRJblVzZXJEYXRhPy5bJ25hbWUnXSkgfX1cclxuICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgIDxkcy1pY29uXHJcbiAgICAgICAgICBzbG90PVwic3VmZml4XCJcclxuICAgICAgICAgIGljb249XCJhcnJvd1wiXHJcbiAgICAgICAgICBjbGFzcz1cImZjLWRhcmstZ3JheSBmcy0xNlwiXHJcbiAgICAgICAgPjwvZHMtaWNvbj5cclxuICAgICAgPC9kcy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC10b29sYmFyPlxyXG5cclxuICA8IS0tIFVzZXIgTWVudSAtLT5cclxuICA8bWF0LW1lbnUgI3VzZXJNZW51PVwibWF0TWVudVwiIGNsYXNzPVwidXNlci1tZW51XCI+XHJcbiAgICA8ZGl2IG1hdC1tZW51LWl0ZW0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTRcIj57eyB0cmFuc2xhdGUudHJhbnNsYXRlKCd3ZWxjb21lJykgfX0sIDwvc3Bhbj5cclxuICAgICAgPGJyIC8+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtIGxpbmUtaGVpZ2h0LTFcIj57eyBjb3JlU2VydmljZS5nZXRTaG9ydE5hbWUoIGNvcmVTZXJ2aWNlPy5sb2dnZWRJblVzZXJEYXRhPy5bJ25hbWUnXSkgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0TGFuZ3VhZ2UoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJnbG9iZVwiIGNsYXNzPVwiZnMtMjUgZmMtcHVycGxlXCI+PC9kcy1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtIGZjLWJsYWNrXCI+e3tcclxuICAgICAgICAgICAgdHJhbnNsYXRlLnRyYW5zbGF0ZSgnb3RoZXJMYW5nJylcclxuICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJsb2dvdXQoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJsb2dvdXRcIiBjbGFzcz1cImZzLTI1IGZjLXJlZFwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE0IGZ3LW1lZGl1bSBmYy1ibGFja1wiPnt7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZS50cmFuc2xhdGUoJ2xvZ291dCcpXHJcbiAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
@@ -1,89 +0,0 @@
1
- import { DOCUMENT, NgClass, NgComponentOutlet, NgIf } from '@angular/common';
2
- import { Component, Inject, Input, ViewChild } from "@angular/core";
3
- import { MatSidenavModule } from '@angular/material/sidenav';
4
- import { RouterOutlet } from "@angular/router";
5
- import { HeaderComponent } from "./header/header.component";
6
- import { SideNavComponent } from "./side-nav/side-nav.component";
7
- import { WorkflowSectionComponent } from "../workflow-section/workflow-section.component";
8
- import { ServiceHeaderComponent } from "../service-header/service-header.component";
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/router";
11
- import * as i2 from "../../../services";
12
- import * as i3 from "@angular/material/sidenav";
13
- export class LayoutComponent {
14
- document;
15
- router;
16
- sidenavService;
17
- sidenav;
18
- sideContent;
19
- sidenavSubscription;
20
- form;
21
- hubContainerMini = true;
22
- formTitle;
23
- isLoading = false;
24
- serviceBrief = [];
25
- constructor(document, router, sidenavService) {
26
- this.document = document;
27
- this.router = router;
28
- this.sidenavService = sidenavService;
29
- }
30
- ngOnInit() {
31
- this.sidenavSubscription = this.sidenavService.subject.subscribe((value) => {
32
- this.sideContent = value.componentName;
33
- this.sidenav.mode = value.mode;
34
- this.sidenav.position = value.position;
35
- if (value.eventName === "open") {
36
- this.openSideNav();
37
- }
38
- else {
39
- this.closeSideNav();
40
- }
41
- });
42
- }
43
- ngOnDestroy() {
44
- if (this.sidenavSubscription) {
45
- this.sidenavSubscription.unsubscribe();
46
- }
47
- }
48
- onClose() {
49
- this.document.body.classList.remove("NoScroll");
50
- this.document.documentElement.classList.remove("NoScroll");
51
- }
52
- backdropClick() {
53
- this.sidenav.close().then(r => { });
54
- this.sidenavService.closeSidenav();
55
- this.document.body.classList.remove("NoScroll");
56
- this.document.documentElement.classList.remove("NoScroll");
57
- }
58
- openSideNav() {
59
- this.sidenav.open().then(r => { });
60
- this.document.body.classList.add("NoScroll");
61
- this.document.documentElement.classList.add("NoScroll");
62
- }
63
- closeSideNav() {
64
- this.sidenav.close().then(r => { });
65
- }
66
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LayoutComponent, deps: [{ token: DOCUMENT }, { token: i1.Router }, { token: i2.SidenavService }], target: i0.ɵɵFactoryTarget.Component });
67
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: LayoutComponent, isStandalone: true, selector: "core-layout", inputs: { form: "form", hubContainerMini: "hubContainerMini", formTitle: "formTitle", isLoading: "isLoading", serviceBrief: "serviceBrief" }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true, static: true }], ngImport: i0, template: "<!--<app-header></app-header>-->\r\n<section class=\"d-flex\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n <mat-sidenav-container\r\n class=\"flex-grow-1\"\r\n [hasBackdrop]=\"true\"\r\n (backdropClick)=\"backdropClick()\"\r\n >\r\n <mat-sidenav\r\n #sidenav\r\n autoFocus=\"false\"\r\n fixedInViewport\r\n [position]=\"'end'\"\r\n (closedStart)=\"onClose()\"\r\n >\r\n <ng-container *ngComponentOutlet=\"sideContent\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <main\r\n class=\"hadPadding service-wrapper\"\r\n [ngClass]=\"hubContainerMini ? 'hub-container-mini' : 'hub-container'\">\r\n\r\n <ng-content ></ng-content>\r\n <ng-content select=\"[workflow]\"></ng-content>\r\n\r\n </main>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</section>\r\n", styles: [":host ::ng-deep .mat-drawer-container{overflow:visible;margin-top:var(--main-toolbar-height);min-height:calc(100vh - var(--main-toolbar-height));background-color:var(--body-bg)!important;z-index:initial!important;min-width:calc(100% - var(--main-aside-width));width:calc(100% - var(--main-aside-width))}:host ::ng-deep .mat-drawer-container .mat-drawer-content{display:flex;flex-direction:column;overflow:visible}.hup-wrapper :host ::ng-deep .mat-drawer-container .mat-drawer-content{min-height:auto}:host ::ng-deep footer{bottom:-65px}.mat-drawer{border-radius:10px!important;margin:1rem;box-shadow:0 8px 16px 7px rgba(var(--rgb-black),.06);background-color:var(--white)}@media (max-width: 767px){.mat-drawer{padding:0;border-radius:0;margin:0;width:100%}}.customize-btn{min-width:166px}.zer-pt{padding-top:0!important}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LayoutComponent, decorators: [{
70
- type: Component,
71
- args: [{ selector: "core-layout", standalone: true, imports: [HeaderComponent, SideNavComponent, MatSidenavModule, RouterOutlet, NgComponentOutlet, WorkflowSectionComponent, ServiceHeaderComponent, NgClass, NgIf], template: "<!--<app-header></app-header>-->\r\n<section class=\"d-flex\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n <mat-sidenav-container\r\n class=\"flex-grow-1\"\r\n [hasBackdrop]=\"true\"\r\n (backdropClick)=\"backdropClick()\"\r\n >\r\n <mat-sidenav\r\n #sidenav\r\n autoFocus=\"false\"\r\n fixedInViewport\r\n [position]=\"'end'\"\r\n (closedStart)=\"onClose()\"\r\n >\r\n <ng-container *ngComponentOutlet=\"sideContent\">\r\n<!-- <app-side-nav></app-side-nav>-->\r\n </ng-container>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <main\r\n class=\"hadPadding service-wrapper\"\r\n [ngClass]=\"hubContainerMini ? 'hub-container-mini' : 'hub-container'\">\r\n\r\n <ng-content ></ng-content>\r\n <ng-content select=\"[workflow]\"></ng-content>\r\n\r\n </main>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</section>\r\n", styles: [":host ::ng-deep .mat-drawer-container{overflow:visible;margin-top:var(--main-toolbar-height);min-height:calc(100vh - var(--main-toolbar-height));background-color:var(--body-bg)!important;z-index:initial!important;min-width:calc(100% - var(--main-aside-width));width:calc(100% - var(--main-aside-width))}:host ::ng-deep .mat-drawer-container .mat-drawer-content{display:flex;flex-direction:column;overflow:visible}.hup-wrapper :host ::ng-deep .mat-drawer-container .mat-drawer-content{min-height:auto}:host ::ng-deep footer{bottom:-65px}.mat-drawer{border-radius:10px!important;margin:1rem;box-shadow:0 8px 16px 7px rgba(var(--rgb-black),.06);background-color:var(--white)}@media (max-width: 767px){.mat-drawer{padding:0;border-radius:0;margin:0;width:100%}}.customize-btn{min-width:166px}.zer-pt{padding-top:0!important}\n"] }]
72
- }], ctorParameters: () => [{ type: Document, decorators: [{
73
- type: Inject,
74
- args: [DOCUMENT]
75
- }] }, { type: i1.Router }, { type: i2.SidenavService }], propDecorators: { sidenav: [{
76
- type: ViewChild,
77
- args: ["sidenav", { static: true }]
78
- }], form: [{
79
- type: Input
80
- }], hubContainerMini: [{
81
- type: Input
82
- }], formTitle: [{
83
- type: Input
84
- }], isLoading: [{
85
- type: Input
86
- }], serviceBrief: [{
87
- type: Input
88
- }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2xheW91dC9sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbGF5b3V0L2xheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQWEsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RSxPQUFPLEVBQVMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRXhGLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7OztBQVNsRixNQUFNLE9BQU8sZUFBZTtJQVlXO0lBQ2xCO0lBQ0E7SUFiMEIsT0FBTyxDQUFjO0lBQ2xFLFdBQVcsQ0FBTTtJQUNULG1CQUFtQixDQUFnQjtJQUNsQyxJQUFJLENBQU87SUFDWCxnQkFBZ0IsR0FBWSxJQUFJLENBQUM7SUFDakMsU0FBUyxDQUFRO0lBQ2pCLFNBQVMsR0FBRyxLQUFLLENB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O3VCQUFDLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBRzNCLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5ULCBOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xyXG5pbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNYXRTaWRlbmF2LCBNYXRTaWRlbmF2TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2J1xyXG5pbXBvcnQge1JvdXRlciwgUm91dGVyT3V0bGV0fSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1NpZGVuYXZTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtIZWFkZXJDb21wb25lbnR9IGZyb20gXCIuL2hlYWRlci9oZWFkZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2lkZU5hdkNvbXBvbmVudH0gZnJvbSBcIi4vc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7V29ya2Zsb3dTZWN0aW9uQ29tcG9uZW50fSBmcm9tIFwiLi4vd29ya2Zsb3ctc2VjdGlvbi93b3JrZmxvdy1zZWN0aW9uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7U2VydmljZUhlYWRlckNvbXBvbmVudH0gZnJvbSBcIi4uL3NlcnZpY2UtaGVhZGVyL3NlcnZpY2UtaGVhZGVyLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY29yZS1sYXlvdXRcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtIZWFkZXJDb21wb25lbnQsIFNpZGVOYXZDb21wb25lbnQsIE1hdFNpZGVuYXZNb2R1bGUsIFJvdXRlck91dGxldCwgTmdDb21wb25lbnRPdXRsZXQsIFdvcmtmbG93U2VjdGlvbkNvbXBvbmVudCwgU2VydmljZUhlYWRlckNvbXBvbmVudCwgTmdDbGFzcywgTmdJZl0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9sYXlvdXQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2xheW91dC5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoXCJzaWRlbmF2XCIsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgc2lkZW5hdiE6IE1hdFNpZGVuYXY7XHJcbiAgc2lkZUNvbnRlbnQ6IGFueTtcclxuICBwcml2YXRlIHNpZGVuYXZTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBodWJDb250YWluZXJNaW5pOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmb3JtVGl0bGU6IHN0cmluZ1xyXG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VCcmllZjogYW55W10gPSBbXTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpZGVuYXZTdWJzY3JpcHRpb24gPSB0aGlzLnNpZGVuYXZTZXJ2aWNlLnN1YmplY3Quc3Vic2NyaWJlKFxyXG4gICAgICAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2lkZUNvbnRlbnQgPSB2YWx1ZS5jb21wb25lbnROYW1lO1xyXG4gICAgICAgIHRoaXMuc2lkZW5hdi5tb2RlID0gdmFsdWUubW9kZTtcclxuICAgICAgICB0aGlzLnNpZGVuYXYucG9zaXRpb24gPSB2YWx1ZS5wb3NpdGlvbjtcclxuICAgICAgICBpZiAodmFsdWUuZXZlbnROYW1lID09PSBcIm9wZW5cIikge1xyXG4gICAgICAgICAgdGhpcy5vcGVuU2lkZU5hdigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlU2lkZU5hdigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2lkZW5hdlN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnNpZGVuYXZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcIk5vU2Nyb2xsXCIpO1xyXG4gICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcIk5vU2Nyb2xsXCIpO1xyXG4gIH1cclxuXHJcbiAgYmFja2Ryb3BDbGljaygpIHtcclxuICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpLnRoZW4ociA9PiB7fSk7XHJcbiAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLmNsb3NlU2lkZW5hdigpO1xyXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJOb1Njcm9sbFwiKTtcclxuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJOb1Njcm9sbFwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlblNpZGVOYXYoKSB7XHJcbiAgICB0aGlzLnNpZGVuYXYub3BlbigpLnRoZW4ociA9PiB7fSk7XHJcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcIk5vU2Nyb2xsXCIpO1xyXG4gICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChcIk5vU2Nyb2xsXCIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9zZVNpZGVOYXYoKSB7XHJcbiAgICB0aGlzLnNpZGVuYXYuY2xvc2UoKS50aGVuKHIgPT4ge30pO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tPGFwcC1oZWFkZXI+PC9hcHAtaGVhZGVyPi0tPlxyXG48c2VjdGlvbiBjbGFzcz1cImQtZmxleFwiPlxyXG48IS0tICA8YXBwLXNpZGUtbmF2PjwvYXBwLXNpZGUtbmF2Pi0tPlxyXG4gIDxtYXQtc2lkZW5hdi1jb250YWluZXJcclxuICAgIGNsYXNzPVwiZmxleC1ncm93LTFcIlxyXG4gICAgW2hhc0JhY2tkcm9wXT1cInRydWVcIlxyXG4gICAgKGJhY2tkcm9wQ2xpY2spPVwiYmFja2Ryb3BDbGljaygpXCJcclxuICA+XHJcbiAgICA8bWF0LXNpZGVuYXZcclxuICAgICAgI3NpZGVuYXZcclxuICAgICAgYXV0b0ZvY3VzPVwiZmFsc2VcIlxyXG4gICAgICBmaXhlZEluVmlld3BvcnRcclxuICAgICAgW3Bvc2l0aW9uXT1cIidlbmQnXCJcclxuICAgICAgKGNsb3NlZFN0YXJ0KT1cIm9uQ2xvc2UoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic2lkZUNvbnRlbnRcIj5cclxuPCEtLSAgICAgICAgPGFwcC1zaWRlLW5hdj48L2FwcC1zaWRlLW5hdj4tLT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1zaWRlbmF2PlxyXG4gICAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgICAgIDxtYWluXHJcbiAgICAgICAgY2xhc3M9XCJoYWRQYWRkaW5nIHNlcnZpY2Utd3JhcHBlclwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiaHViQ29udGFpbmVyTWluaSA/ICdodWItY29udGFpbmVyLW1pbmknIDogJ2h1Yi1jb250YWluZXInXCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250ZW50ID48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3dvcmtmbG93XVwiPjwvbmctY29udGVudD5cclxuXHJcbiAgICAgIDwvbWFpbj5cclxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cclxuICA8L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=