tas-uell-sdk 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +2 -13
- package/esm2020/lib/components/tas-feedback-modal/tas-feedback-modal.component.mjs +229 -0
- package/esm2020/lib/components/tas-floating-call/tas-floating-call.component.mjs +38 -3
- package/esm2020/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.mjs +46 -8
- package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +41 -6
- package/esm2020/lib/components/tas-waiting-room/tas-waiting-room.component.mjs +18 -3
- package/esm2020/lib/interfaces/tas.interfaces.mjs +6 -1
- package/esm2020/lib/services/tas.service.mjs +40 -1
- package/esm2020/lib/tas-uell-sdk.module.mjs +8 -3
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/tas-uell-sdk.mjs +421 -36
- package/fesm2015/tas-uell-sdk.mjs.map +1 -1
- package/fesm2020/tas-uell-sdk.mjs +416 -36
- package/fesm2020/tas-uell-sdk.mjs.map +1 -1
- package/lib/components/tas-btn/tas-btn.component.d.ts +1 -2
- package/lib/components/tas-feedback-modal/tas-feedback-modal.component.d.ts +101 -0
- package/lib/components/tas-floating-call/tas-floating-call.component.d.ts +5 -0
- package/lib/components/tas-incoming-appointment/tas-incoming-appointment.component.d.ts +12 -1
- package/lib/components/tas-videocall/tas-videocall.component.d.ts +8 -2
- package/lib/components/tas-waiting-room/tas-waiting-room.component.d.ts +9 -0
- package/lib/interfaces/tas.interfaces.d.ts +17 -0
- package/lib/services/tas.service.d.ts +15 -1
- package/lib/tas-uell-sdk.module.d.ts +5 -4
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/styles/tas-global.scss +17 -0
package/README.md
CHANGED
|
@@ -270,6 +270,8 @@ Initiates video calls. Supports style variants:
|
|
|
270
270
|
| :--- | :--- | :--- | :--- |
|
|
271
271
|
| `variant` | `'default' \| 'teal'` | `'default'` | Button style variant |
|
|
272
272
|
| `buttonLabel` | `string` | `'Iniciar TAS'` | Button text |
|
|
273
|
+
| `skipStatusCheck` | `boolean` | `false` | When true, shows button immediately without API status check |
|
|
274
|
+
| `devOpenFeedbackModal` | `boolean` | `false` | DEV ONLY: Clicking button opens feedback modal directly |
|
|
273
275
|
|
|
274
276
|
### TasIncomingAppointmentComponent - `<tas-incoming-appointment>`
|
|
275
277
|
|
|
@@ -19,9 +19,6 @@ export class TasButtonComponent {
|
|
|
19
19
|
// Style customization
|
|
20
20
|
this.variant = 'default';
|
|
21
21
|
this.buttonLabel = 'Iniciar TAS';
|
|
22
|
-
// Skip status check - when true, button shows immediately without API call
|
|
23
|
-
// Useful when parent component already knows the appointment is valid
|
|
24
|
-
this.skipStatusCheck = false;
|
|
25
22
|
this.isLoading = false;
|
|
26
23
|
// Status check state
|
|
27
24
|
this.isCheckingStatus = false;
|
|
@@ -66,12 +63,6 @@ export class TasButtonComponent {
|
|
|
66
63
|
this.videoCallModalRef = null;
|
|
67
64
|
}
|
|
68
65
|
}));
|
|
69
|
-
// If skipStatusCheck is true, show button immediately without polling
|
|
70
|
-
if (this.skipStatusCheck) {
|
|
71
|
-
this.shouldShowButton = true;
|
|
72
|
-
this.isJoinable = true;
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
66
|
// Start status checking
|
|
76
67
|
this.startStatusPolling();
|
|
77
68
|
}
|
|
@@ -193,7 +184,7 @@ export class TasButtonComponent {
|
|
|
193
184
|
}
|
|
194
185
|
}
|
|
195
186
|
TasButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasButtonComponent, deps: [{ token: i1.NgbModal }, { token: i2.TasService }, { token: i3.TasUtilityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
-
TasButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasButtonComponent, selector: "tas-btn", inputs: { roomType: "roomType", entityId: "entityId", tenant: "tenant", businessRole: "businessRole", currentUser: "currentUser", variant: "variant", buttonLabel: "buttonLabel"
|
|
187
|
+
TasButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasButtonComponent, selector: "tas-btn", inputs: { roomType: "roomType", entityId: "entityId", tenant: "tenant", businessRole: "businessRole", currentUser: "currentUser", variant: "variant", buttonLabel: "buttonLabel" }, ngImport: i0, template: "<span\n *ngIf=\"shouldShowButton\"\n [ngbTooltip]=\"isDisabled && disabledReason ? disabledReason : null\"\n container=\"body\"\n placement=\"top\"\n tooltipClass=\"tas-btn-tooltip\"\n>\n <button\n type=\"button\"\n class=\"btn btn-primary tas-btn\"\n [class.tas-btn--teal]=\"variant === 'teal'\"\n (click)=\"onClick()\"\n [disabled]=\"isDisabled\"\n >\n <i class=\"fa fa-video-camera\" aria-hidden=\"true\" *ngIf=\"!isLoading\"></i>\n <span *ngIf=\"!isLoading\">{{ buttonLabel }}</span>\n <span *ngIf=\"isLoading\">Processing...</span>\n </button>\n</span>\n", styles: [":host{display:inline-block}.tas-btn{background-color:#ee316b!important;color:#fff!important;border-color:#ee316b!important;margin-right:24px;display:flex;padding:6px 14px;justify-content:center;align-items:center;gap:7px;flex-shrink:0;flex-grow:0}.tas-btn:disabled{background-color:#ccc!important;border-color:#ccc!important;cursor:not-allowed}.tas-btn:hover:not(:disabled){background-color:#d62a5f!important;border-color:#d62a5f!important}.tas-btn i{margin-right:5px}.tas-btn--teal{background-color:#0097a7!important;border-color:#0097a7!important;border-radius:24px;font-weight:500;margin-right:0;padding:6px 14px}.tas-btn--teal:hover:not(:disabled){background-color:#00838f!important;border-color:#00838f!important}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
197
188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasButtonComponent, decorators: [{
|
|
198
189
|
type: Component,
|
|
199
190
|
args: [{ selector: 'tas-btn', template: "<span\n *ngIf=\"shouldShowButton\"\n [ngbTooltip]=\"isDisabled && disabledReason ? disabledReason : null\"\n container=\"body\"\n placement=\"top\"\n tooltipClass=\"tas-btn-tooltip\"\n>\n <button\n type=\"button\"\n class=\"btn btn-primary tas-btn\"\n [class.tas-btn--teal]=\"variant === 'teal'\"\n (click)=\"onClick()\"\n [disabled]=\"isDisabled\"\n >\n <i class=\"fa fa-video-camera\" aria-hidden=\"true\" *ngIf=\"!isLoading\"></i>\n <span *ngIf=\"!isLoading\">{{ buttonLabel }}</span>\n <span *ngIf=\"isLoading\">Processing...</span>\n </button>\n</span>\n", styles: [":host{display:inline-block}.tas-btn{background-color:#ee316b!important;color:#fff!important;border-color:#ee316b!important;margin-right:24px;display:flex;padding:6px 14px;justify-content:center;align-items:center;gap:7px;flex-shrink:0;flex-grow:0}.tas-btn:disabled{background-color:#ccc!important;border-color:#ccc!important;cursor:not-allowed}.tas-btn:hover:not(:disabled){background-color:#d62a5f!important;border-color:#d62a5f!important}.tas-btn i{margin-right:5px}.tas-btn--teal{background-color:#0097a7!important;border-color:#0097a7!important;border-radius:24px;font-weight:500;margin-right:0;padding:6px 14px}.tas-btn--teal:hover:not(:disabled){background-color:#00838f!important;border-color:#00838f!important}\n"] }]
|
|
@@ -211,7 +202,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
211
202
|
type: Input
|
|
212
203
|
}], buttonLabel: [{
|
|
213
204
|
type: Input
|
|
214
|
-
}], skipStatusCheck: [{
|
|
215
|
-
type: Input
|
|
216
205
|
}] } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBR0wsV0FBVyxFQUNYLFFBQVEsRUFDUixlQUFlLEdBQ2hCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7OztBQVNqRixNQUFNLE9BQU8sa0JBQWtCO0lBNkQ3QixZQUNVLFlBQXNCLEVBQ3RCLFVBQXNCLEVBQ3RCLGlCQUFvQztRQUZwQyxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUEvRDlDLHlCQUF5QjtRQUNoQixhQUFRLEdBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFHeEMsaUJBQVksR0FBb0IsZUFBZSxDQUFDLElBQUksQ0FBQztRQUs5RCxzQkFBc0I7UUFDYixZQUFPLEdBQXVCLFNBQVMsQ0FBQztRQUN4QyxnQkFBVyxHQUFXLGFBQWEsQ0FBQztRQUU3QywyRUFBMkU7UUFDM0Usc0VBQXNFO1FBQzdELG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGNBQVMsR0FB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akYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2hDLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQyxFQUNELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDOztnSEF4T1Usa0JBQWtCO29HQUFsQixrQkFBa0IsdVFDcEIvQixpbEJBbUJBOzRGRENhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxTQUFTO3dKQU1WLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiTW9kYWwsIE5nYk1vZGFsUmVmIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBUYXNDdXJyZW50VXNlcixcbiAgXG4gIFRhc1Jvb21UeXBlLFxuICBWaWV3TW9kZSxcbiAgVGFzQnVzaW5lc3NSb2xlLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhc1dhaXRpbmdSb29tQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFzLXdhaXRpbmctcm9vbS90YXMtd2FpdGluZy1yb29tLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuLi90YXMtdmlkZW9jYWxsL3Rhcy12aWRlb2NhbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXMuc2VydmljZSc7XG5pbXBvcnQgeyBUYXNVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhcy11dGlsaXR5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YXMtYnRuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhcy1idG4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXMtYnRuLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhc0J1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gU3RhdHVzIGVuZHBvaW50IHBhcmFtc1xuICBASW5wdXQoKSByb29tVHlwZTogVGFzUm9vbVR5cGUgPSBUYXNSb29tVHlwZS5UQVM7XG4gIEBJbnB1dCgpIGVudGl0eUlkITogbnVtYmVyO1xuICBASW5wdXQoKSB0ZW5hbnQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJ1c2luZXNzUm9sZTogVGFzQnVzaW5lc3NSb2xlID0gVGFzQnVzaW5lc3NSb2xlLlVTRVI7XG5cbiAgLy8gVXNlciBpbmZvIGZvciB0b2tlbiByZXF1ZXN0XG4gIEBJbnB1dCgpIGN1cnJlbnRVc2VyITogVGFzQ3VycmVudFVzZXI7XG5cbiAgLy8gU3R5bGUgY3VzdG9taXphdGlvblxuICBASW5wdXQoKSB2YXJpYW50OiAnZGVmYXVsdCcgfCAndGVhbCcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIGJ1dHRvbkxhYmVsOiBzdHJpbmcgPSAnSW5pY2lhciBUQVMnO1xuXG4gIC8vIFNraXAgc3RhdHVzIGNoZWNrIC0gd2hlbiB0cnVlLCBidXR0b24gc2hvd3MgaW1tZWRpYXRlbHkgd2l0aG91dCBBUEkgY2FsbFxuICAvLyBVc2VmdWwgd2hlbiBwYXJlbnQgY29tcG9uZW50IGFscmVhZHkga25vd3MgdGhlIGFwcG9pbnRtZW50IGlzIHZhbGlkXG4gIEBJbnB1dCgpIHNraXBTdGF0dXNDaGVjayA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAvLyBTdGF0dXMgY2hlY2sgc3RhdGVcbiAgcHVibGljIGlzQ2hlY2tpbmdTdGF0dXMgPSBmYWxzZTtcbiAgcHVibGljIGlzU3RhdHVzRXJyb3IgPSBmYWxzZTtcbiAgcHVibGljIHN0YXR1c0Vycm9yTWVzc2FnZSA9ICcnO1xuICBwdWJsaWMgaXNKb2luYWJsZSA9IGZhbHNlOyAvLyBUcmFja3Mgam9pbmFibGUgZmllbGQgZnJvbSBzdGF0dXMgcmVzcG9uc2VcbiAgcHVibGljIHNob3VsZFNob3dCdXR0b24gPSBmYWxzZTsgLy8gSGlkZGVuIGJ5IGRlZmF1bHQsIHNob3duIGFmdGVyIHN0YXR1cyBjaGVjayBjb25maXJtcyB2aXNpYmlsaXR5XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIGN1cnJlbnRNb2RhbFJlZjogTmdiTW9kYWxSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB2aWRlb0NhbGxNb2RhbFJlZjogTmdiTW9kYWxSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0dXNQb2xsaW5nSW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IFNUQVRVU19QT0xMX0lOVEVSVkFMX01TID0gMzAwMDA7IC8vIDMwIHNlY29uZHNcblxuICAvKiogV2hldGhlciB1c2VyIGlzIGJhY2tvZmZpY2UgKG9yIGFkbWluL21hbmFnZXIpICovXG4gIHB1YmxpYyBnZXQgaXNCYWNrb2ZmaWNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJ1c2luZXNzUm9sZSA9PT0gVGFzQnVzaW5lc3NSb2xlLkJBQ0tPRkZJQ0UgfHxcbiAgICAgIHRoaXMuYnVzaW5lc3NSb2xlID09PSBUYXNCdXNpbmVzc1JvbGUuQURNSU5fTUFOQUdFUiB8fFxuICAgICAgdGhpcy5idXNpbmVzc1JvbGUgPT09IFRhc0J1c2luZXNzUm9sZS5NQU5BR0VSXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkICovXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgdGhpcy5pc1N0YXR1c0Vycm9yIHx8ICF0aGlzLmlzSm9pbmFibGU7XG4gIH1cblxuICAvKiogUmVhc29uIHdoeSB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIChmb3IgdG9vbHRpcCkgKi9cbiAgcHVibGljIGdldCBkaXNhYmxlZFJlYXNvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1N0YXR1c0Vycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0dXNFcnJvck1lc3NhZ2UgfHwgJ0Vycm9yIGFsIHZlcmlmaWNhciBlbCBlc3RhZG8nO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNKb2luYWJsZSkge1xuICAgICAgcmV0dXJuICdUb2RhdsOtYSBubyBlcyBlbCBob3JhcmlvIGRlIGxhIGxsYW1hZGEnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgcHJpdmF0ZSB0YXNTZXJ2aWNlOiBUYXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFzVXRpbGl0eVNlcnZpY2U6IFRhc1V0aWxpdHlTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gdmlld01vZGUgdG8gaGFuZGxlIFBpUCByZXR1cm5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLnZpZXdNb2RlJC5zdWJzY3JpYmUoKG1vZGUpID0+IHtcbiAgICAgICAgLy8gV2hlbiBlbnRlcmluZyBQaVAsIGNsZWFyIHRoZSB2aWRlb0NhbGxNb2RhbFJlZiBzaW5jZSBtb2RhbCB3aWxsIGNsb3NlXG4gICAgICAgIGlmIChtb2RlID09PSBWaWV3TW9kZS5QSVApIHtcbiAgICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gSWYgc2tpcFN0YXR1c0NoZWNrIGlzIHRydWUsIHNob3cgYnV0dG9uIGltbWVkaWF0ZWx5IHdpdGhvdXQgcG9sbGluZ1xuICAgIGlmICh0aGlzLnNraXBTdGF0dXNDaGVjaykge1xuICAgICAgdGhpcy5zaG91bGRTaG93QnV0dG9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNKb2luYWJsZSA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU3RhcnQgc3RhdHVzIGNoZWNraW5nXG4gICAgdGhpcy5zdGFydFN0YXR1c1BvbGxpbmcoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3RvcFN0YXR1c1BvbGxpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBwb2xsaW5nIHN0YXR1cyBldmVyeSAzMCBzZWNvbmRzXG4gICAqL1xuICBwcml2YXRlIHN0YXJ0U3RhdHVzUG9sbGluZygpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsIHN0YXR1cyBjaGVja1xuICAgIHRoaXMuY2hlY2tTdGF0dXMoKTtcblxuICAgIC8vIFNldCB1cCBwZXJpb2RpYyBwb2xsaW5nXG4gICAgdGhpcy5zdGF0dXNQb2xsaW5nSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XG4gICAgfSwgdGhpcy5TVEFUVVNfUE9MTF9JTlRFUlZBTF9NUyk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBzdGF0dXMgcG9sbGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBzdG9wU3RhdHVzUG9sbGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXNQb2xsaW5nSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5zdGF0dXNQb2xsaW5nSW50ZXJ2YWwpO1xuICAgICAgdGhpcy5zdGF0dXNQb2xsaW5nSW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBzdGF0dXMgZW5kcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZFxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja1N0YXR1cygpOiB2b2lkIHtcbiAgICAvLyBTa2lwIGlmIHJlcXVpcmVkIGlucHV0cyBhcmUgbm90IGF2YWlsYWJsZVxuICAgIGlmICghdGhpcy50ZW5hbnQgfHwgIXRoaXMuZW50aXR5SWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzQ2hlY2tpbmdTdGF0dXMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdHVzRXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlXG4gICAgICAgIC5nZXRQcm94eVZpZGVvU3RhdHVzKHtcbiAgICAgICAgICByb29tVHlwZTogdGhpcy5yb29tVHlwZSxcbiAgICAgICAgICBlbnRpdHlJZDogdGhpcy5lbnRpdHlJZCxcbiAgICAgICAgICB0ZW5hbnQ6IHRoaXMudGVuYW50LFxuICAgICAgICAgIGJ1c2luZXNzUm9sZTogdGhpcy5idXNpbmVzc1JvbGUsXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGUgcmVzcG9uc2Ugc3RydWN0dXJlXG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5jb250ZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RhdHVzRXJyb3IoJ0ludmFsaWQgcmVzcG9uc2UnKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzQ2hlY2tpbmdTdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNTdGF0dXNFcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0dXNFcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkU2hvd0J1dHRvbiA9IHRydWU7XG4gICAgICAgICAgICAvLyBVcGRhdGUgam9pbmFibGUgc3RhdGUgZnJvbSByZXNwb25zZVxuICAgICAgICAgICAgdGhpcy5pc0pvaW5hYmxlID0gcmVzcG9uc2UuY29udGVudD8uam9pbmFibGUgPz8gZmFsc2U7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN0YXR1c0Vycm9yKGVycik7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0dXNFcnJvcihlcnI6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNDaGVja2luZ1N0YXR1cyA9IGZhbHNlO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMudGFzVXRpbGl0eVNlcnZpY2UuZXh0cmFjdEVycm9yTWVzc2FnZShlcnIsICdFcnJvciBjaGVja2luZyBzdGF0dXMnKTtcbiAgICB0aGlzLnN0YXR1c0Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTtcblxuICAgIC8vIE9uIGFueSBzdGF0dXMgZXJyb3IsIGhpZGUgdGhlIGJ1dHRvblxuICAgIHRoaXMuc2hvdWxkU2hvd0J1dHRvbiA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdGF0dXNFcnJvciA9IGZhbHNlOyAvLyBXZSBkb24ndCBzaG93IGVycm9yIFVJLCBqdXN0IGhpZGUgdGhlIGJ1dHRvblxuXG4gICAgLy8gU3RvcCBwb2xsaW5nIG9uIGVycm9yXG4gICAgdGhpcy5zdG9wU3RhdHVzUG9sbGluZygpO1xuICB9XG5cbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGVuYW50IHx8ICF0aGlzLmN1cnJlbnRVc2VyPy5uYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVudGl0eUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuV2FpdGluZ1Jvb21Nb2RhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuV2FpdGluZ1Jvb21Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRNb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVGFzV2FpdGluZ1Jvb21Db21wb25lbnQsIHtcbiAgICAgIHNpemU6ICdsZycsXG4gICAgICB3aW5kb3dDbGFzczogJ3Rhcy13YWl0aW5nLXJvb20tbW9kYWwnLFxuICAgICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBQYXNzIGFsbCBuZWNlc3NhcnkgaW5wdXRzIHRvIHRoZSB3YWl0aW5nIHJvb20gY29tcG9uZW50XG4gICAgdGhpcy5jdXJyZW50TW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uucm9vbVR5cGUgPSB0aGlzLnJvb21UeXBlO1xuICAgIHRoaXMuY3VycmVudE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmVudGl0eUlkID0gdGhpcy5lbnRpdHlJZDtcbiAgICB0aGlzLmN1cnJlbnRNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50ZW5hbnQgPSB0aGlzLnRlbmFudDtcbiAgICB0aGlzLmN1cnJlbnRNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5idXNpbmVzc1JvbGUgPSB0aGlzLmJ1c2luZXNzUm9sZTtcbiAgICB0aGlzLmN1cnJlbnRNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXI7XG5cbiAgICB0aGlzLmN1cnJlbnRNb2RhbFJlZi5yZXN1bHQudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kYWxSZWYgPSBudWxsO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kYWxSZWYgPSBudWxsO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5WaWRlb0NhbGxNb2RhbChpc1JldHVybmluZ0Zyb21QaXA6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRhc1ZpZGVvY2FsbENvbXBvbmVudCwge1xuICAgICAgc2l6ZTogJ3hsJyxcbiAgICAgIHdpbmRvd0NsYXNzOiAndGFzLXZpZGVvLW1vZGFsJyxcbiAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc2Vzc2lvbklkID0gdGhpcy50YXNTZXJ2aWNlLnNlc3Npb25JZDtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRva2VuID0gdGhpcy50YXNTZXJ2aWNlLnRva2VuO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYnVzaW5lc3NSb2xlID0gdGhpcy5idXNpbmVzc1JvbGU7XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pc1JldHVybmluZ0Zyb21QaXAgPSBpc1JldHVybmluZ0Zyb21QaXA7XG5cbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLnJlc3VsdC50aGVuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYgPSBudWxsO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjxzcGFuXG4gICpuZ0lmPVwic2hvdWxkU2hvd0J1dHRvblwiXG4gIFtuZ2JUb29sdGlwXT1cImlzRGlzYWJsZWQgJiYgZGlzYWJsZWRSZWFzb24gPyBkaXNhYmxlZFJlYXNvbiA6IG51bGxcIlxuICBjb250YWluZXI9XCJib2R5XCJcbiAgcGxhY2VtZW50PVwidG9wXCJcbiAgdG9vbHRpcENsYXNzPVwidGFzLWJ0bi10b29sdGlwXCJcbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHRhcy1idG5cIlxuICAgIFtjbGFzcy50YXMtYnRuLS10ZWFsXT1cInZhcmlhbnQgPT09ICd0ZWFsJ1wiXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICA+XG4gICAgPGkgY2xhc3M9XCJmYSBmYS12aWRlby1jYW1lcmFcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cIiFpc0xvYWRpbmdcIj48L2k+XG4gICAgPHNwYW4gKm5nSWY9XCIhaXNMb2FkaW5nXCI+e3sgYnV0dG9uTGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJpc0xvYWRpbmdcIj5Qcm9jZXNzaW5nLi4uPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBR0wsV0FBVyxFQUNYLFFBQVEsRUFDUixlQUFlLEdBQ2hCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7OztBQVNqRixNQUFNLE9BQU8sa0JBQWtCO0lBeUQ3QixZQUNVLFlBQXNCLEVBQ3RCLFVBQXNCLEVBQ3RCLGlCQUFvQztRQUZwQyxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUEzRDlDLHlCQUF5QjtRQUNoQixhQUFRLEdBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFHeEMsaUJBQVksR0FBb0IsZUFBZSxDQUFDLElBQUksQ0FBQztRQUs5RCxzQkFBc0I7UUFDYixZQUFPLEdBQXVCLFNBQVMsQ0FBQztRQUN4QyxnQkFBVyxHQUFXLGFBQWEsQ0FBQztRQUV0QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXpCLHFCQUFxQjtRQUNkLHFCQUFnQixHQUFHLEtBQUssQ0FBQztR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OztnSEE3TlUsa0JBQWtCO29HQUFsQixrQkFBa0IsbU9DcEIvQixpbEJBbUJBOzRGRENhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxTQUFTO3dKQU1WLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgVGFzQ3VycmVudFVzZXIsXG4gIFxuICBUYXNSb29tVHlwZSxcbiAgVmlld01vZGUsXG4gIFRhc0J1c2luZXNzUm9sZSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudCB9IGZyb20gJy4uL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzVmlkZW9jYWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFzVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXMtdXRpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFzLWJ0bicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YXMtYnRuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzLWJ0bi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIFN0YXR1cyBlbmRwb2ludCBwYXJhbXNcbiAgQElucHV0KCkgcm9vbVR5cGU6IFRhc1Jvb21UeXBlID0gVGFzUm9vbVR5cGUuVEFTO1xuICBASW5wdXQoKSBlbnRpdHlJZCE6IG51bWJlcjtcbiAgQElucHV0KCkgdGVuYW50ITogc3RyaW5nO1xuICBASW5wdXQoKSBidXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZSA9IFRhc0J1c2luZXNzUm9sZS5VU0VSO1xuXG4gIC8vIFVzZXIgaW5mbyBmb3IgdG9rZW4gcmVxdWVzdFxuICBASW5wdXQoKSBjdXJyZW50VXNlciE6IFRhc0N1cnJlbnRVc2VyO1xuXG4gIC8vIFN0eWxlIGN1c3RvbWl6YXRpb25cbiAgQElucHV0KCkgdmFyaWFudDogJ2RlZmF1bHQnIHwgJ3RlYWwnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBidXR0b25MYWJlbDogc3RyaW5nID0gJ0luaWNpYXIgVEFTJztcblxuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgLy8gU3RhdHVzIGNoZWNrIHN0YXRlXG4gIHB1YmxpYyBpc0NoZWNraW5nU3RhdHVzID0gZmFsc2U7XG4gIHB1YmxpYyBpc1N0YXR1c0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyBzdGF0dXNFcnJvck1lc3NhZ2UgPSAnJztcbiAgcHVibGljIGlzSm9pbmFibGUgPSBmYWxzZTsgLy8gVHJhY2tzIGpvaW5hYmxlIGZpZWxkIGZyb20gc3RhdHVzIHJlc3BvbnNlXG4gIHB1YmxpYyBzaG91bGRTaG93QnV0dG9uID0gZmFsc2U7IC8vIEhpZGRlbiBieSBkZWZhdWx0LCBzaG93biBhZnRlciBzdGF0dXMgY2hlY2sgY29uZmlybXMgdmlzaWJpbGl0eVxuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBjdXJyZW50TW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdmlkZW9DYWxsTW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdHVzUG9sbGluZ0ludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBTVEFUVVNfUE9MTF9JTlRFUlZBTF9NUyA9IDMwMDAwOyAvLyAzMCBzZWNvbmRzXG5cbiAgLyoqIFdoZXRoZXIgdXNlciBpcyBiYWNrb2ZmaWNlIChvciBhZG1pbi9tYW5hZ2VyKSAqL1xuICBwdWJsaWMgZ2V0IGlzQmFja29mZmljZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5idXNpbmVzc1JvbGUgPT09IFRhc0J1c2luZXNzUm9sZS5CQUNLT0ZGSUNFIHx8XG4gICAgICB0aGlzLmJ1c2luZXNzUm9sZSA9PT0gVGFzQnVzaW5lc3NSb2xlLkFETUlOX01BTkFHRVIgfHxcbiAgICAgIHRoaXMuYnVzaW5lc3NSb2xlID09PSBUYXNCdXNpbmVzc1JvbGUuTUFOQUdFUlxuICAgICk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNMb2FkaW5nIHx8IHRoaXMuaXNTdGF0dXNFcnJvciB8fCAhdGhpcy5pc0pvaW5hYmxlO1xuICB9XG5cbiAgLyoqIFJlYXNvbiB3aHkgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZCAoZm9yIHRvb2x0aXApICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWRSZWFzb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTdGF0dXNFcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzRXJyb3JNZXNzYWdlIHx8ICdFcnJvciBhbCB2ZXJpZmljYXIgZWwgZXN0YWRvJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzSm9pbmFibGUpIHtcbiAgICAgIHJldHVybiAnVG9kYXbDrWEgbm8gZXMgZWwgaG9yYXJpbyBkZSBsYSBsbGFtYWRhJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgIHByaXZhdGUgdGFzU2VydmljZTogVGFzU2VydmljZSxcbiAgICBwcml2YXRlIHRhc1V0aWxpdHlTZXJ2aWNlOiBUYXNVdGlsaXR5U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIHZpZXdNb2RlIHRvIGhhbmRsZSBQaVAgcmV0dXJuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZS52aWV3TW9kZSQuc3Vic2NyaWJlKChtb2RlKSA9PiB7XG4gICAgICAgIC8vIFdoZW4gZW50ZXJpbmcgUGlQLCBjbGVhciB0aGUgdmlkZW9DYWxsTW9kYWxSZWYgc2luY2UgbW9kYWwgd2lsbCBjbG9zZVxuICAgICAgICBpZiAobW9kZSA9PT0gVmlld01vZGUuUElQKSB7XG4gICAgICAgICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFN0YXJ0IHN0YXR1cyBjaGVja2luZ1xuICAgIHRoaXMuc3RhcnRTdGF0dXNQb2xsaW5nKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgcG9sbGluZyBzdGF0dXMgZXZlcnkgMzAgc2Vjb25kc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGFydFN0YXR1c1BvbGxpbmcoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbCBzdGF0dXMgY2hlY2tcbiAgICB0aGlzLmNoZWNrU3RhdHVzKCk7XG5cbiAgICAvLyBTZXQgdXAgcGVyaW9kaWMgcG9sbGluZ1xuICAgIHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5jaGVja1N0YXR1cygpO1xuICAgIH0sIHRoaXMuU1RBVFVTX1BPTExfSU5URVJWQUxfTVMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3Agc3RhdHVzIHBvbGxpbmdcbiAgICovXG4gIHByaXZhdGUgc3RvcFN0YXR1c1BvbGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsKTtcbiAgICAgIHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgc3RhdHVzIGVuZHBvaW50IHRvIGRldGVybWluZSBpZiBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWRcbiAgICovXG4gIHByaXZhdGUgY2hlY2tTdGF0dXMoKTogdm9pZCB7XG4gICAgLy8gU2tpcCBpZiByZXF1aXJlZCBpbnB1dHMgYXJlIG5vdCBhdmFpbGFibGVcbiAgICBpZiAoIXRoaXMudGVuYW50IHx8ICF0aGlzLmVudGl0eUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0NoZWNraW5nU3RhdHVzID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXR1c0Vycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZVxuICAgICAgICAuZ2V0UHJveHlWaWRlb1N0YXR1cyh7XG4gICAgICAgICAgcm9vbVR5cGU6IHRoaXMucm9vbVR5cGUsXG4gICAgICAgICAgZW50aXR5SWQ6IHRoaXMuZW50aXR5SWQsXG4gICAgICAgICAgdGVuYW50OiB0aGlzLnRlbmFudCxcbiAgICAgICAgICBidXNpbmVzc1JvbGU6IHRoaXMuYnVzaW5lc3NSb2xlLFxuICAgICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIC8vIFZhbGlkYXRlIHJlc3BvbnNlIHN0cnVjdHVyZVxuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuY29udGVudCkge1xuICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0YXR1c0Vycm9yKCdJbnZhbGlkIHJlc3BvbnNlJyk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pc0NoZWNraW5nU3RhdHVzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzU3RhdHVzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzRXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNob3VsZFNob3dCdXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgLy8gVXBkYXRlIGpvaW5hYmxlIHN0YXRlIGZyb20gcmVzcG9uc2VcbiAgICAgICAgICAgIHRoaXMuaXNKb2luYWJsZSA9IHJlc3BvbnNlLmNvbnRlbnQ/LmpvaW5hYmxlID8/IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcblxuICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGF0dXNFcnJvcihlcnIpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RhdHVzRXJyb3IoZXJyOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ2hlY2tpbmdTdGF0dXMgPSBmYWxzZTtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB0aGlzLnRhc1V0aWxpdHlTZXJ2aWNlLmV4dHJhY3RFcnJvck1lc3NhZ2UoZXJyLCAnRXJyb3IgY2hlY2tpbmcgc3RhdHVzJyk7XG4gICAgdGhpcy5zdGF0dXNFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG5cbiAgICAvLyBPbiBhbnkgc3RhdHVzIGVycm9yLCBoaWRlIHRoZSBidXR0b25cbiAgICB0aGlzLnNob3VsZFNob3dCdXR0b24gPSBmYWxzZTtcbiAgICB0aGlzLmlzU3RhdHVzRXJyb3IgPSBmYWxzZTsgLy8gV2UgZG9uJ3Qgc2hvdyBlcnJvciBVSSwganVzdCBoaWRlIHRoZSBidXR0b25cblxuICAgIC8vIFN0b3AgcG9sbGluZyBvbiBlcnJvclxuICAgIHRoaXMuc3RvcFN0YXR1c1BvbGxpbmcoKTtcbiAgfVxuXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRlbmFudCB8fCAhdGhpcy5jdXJyZW50VXNlcj8ubmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5lbnRpdHlJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3BlbldhaXRpbmdSb29tTW9kYWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbldhaXRpbmdSb29tTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50TW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFRhc1dhaXRpbmdSb29tQ29tcG9uZW50LCB7XG4gICAgICBzaXplOiAnbGcnLFxuICAgICAgd2luZG93Q2xhc3M6ICd0YXMtd2FpdGluZy1yb29tLW1vZGFsJyxcbiAgICAgIGJhY2tkcm9wOiAnc3RhdGljJyxcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gUGFzcyBhbGwgbmVjZXNzYXJ5IGlucHV0cyB0byB0aGUgd2FpdGluZyByb29tIGNvbXBvbmVudFxuICAgIHRoaXMuY3VycmVudE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnJvb21UeXBlID0gdGhpcy5yb29tVHlwZTtcbiAgICB0aGlzLmN1cnJlbnRNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5lbnRpdHlJZCA9IHRoaXMuZW50aXR5SWQ7XG4gICAgdGhpcy5jdXJyZW50TW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGVuYW50ID0gdGhpcy50ZW5hbnQ7XG4gICAgdGhpcy5jdXJyZW50TW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYnVzaW5lc3NSb2xlID0gdGhpcy5idXNpbmVzc1JvbGU7XG4gICAgdGhpcy5jdXJyZW50TW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY3VycmVudFVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyO1xuXG4gICAgdGhpcy5jdXJyZW50TW9kYWxSZWYucmVzdWx0LnRoZW4oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVmlkZW9DYWxsTW9kYWwoaXNSZXR1cm5pbmdGcm9tUGlwOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUYXNWaWRlb2NhbGxDb21wb25lbnQsIHtcbiAgICAgIHNpemU6ICd4bCcsXG4gICAgICB3aW5kb3dDbGFzczogJ3Rhcy12aWRlby1tb2RhbCcsXG4gICAgICBiYWNrZHJvcDogJ3N0YXRpYycsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnNlc3Npb25JZCA9IHRoaXMudGFzU2VydmljZS5zZXNzaW9uSWQ7XG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50b2tlbiA9IHRoaXMudGFzU2VydmljZS50b2tlbjtcbiAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmJ1c2luZXNzUm9sZSA9IHRoaXMuYnVzaW5lc3NSb2xlO1xuICAgIHRoaXMudmlkZW9DYWxsTW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaXNSZXR1cm5pbmdGcm9tUGlwID0gaXNSZXR1cm5pbmdGcm9tUGlwO1xuXG4gICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZi5yZXN1bHQudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb0NhbGxNb2RhbFJlZiA9IG51bGw7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvQ2FsbE1vZGFsUmVmID0gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8c3BhblxuICAqbmdJZj1cInNob3VsZFNob3dCdXR0b25cIlxuICBbbmdiVG9vbHRpcF09XCJpc0Rpc2FibGVkICYmIGRpc2FibGVkUmVhc29uID8gZGlzYWJsZWRSZWFzb24gOiBudWxsXCJcbiAgY29udGFpbmVyPVwiYm9keVwiXG4gIHBsYWNlbWVudD1cInRvcFwiXG4gIHRvb2x0aXBDbGFzcz1cInRhcy1idG4tdG9vbHRpcFwiXG4+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0YXMtYnRuXCJcbiAgICBbY2xhc3MudGFzLWJ0bi0tdGVhbF09XCJ2YXJpYW50ID09PSAndGVhbCdcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgPlxuICAgIDxpIGNsYXNzPVwiZmEgZmEtdmlkZW8tY2FtZXJhXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+PC9pPlxuICAgIDxzcGFuICpuZ0lmPVwiIWlzTG9hZGluZ1wiPnt7IGJ1dHRvbkxhYmVsIH19PC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNMb2FkaW5nXCI+UHJvY2Vzc2luZy4uLjwvc3Bhbj5cbiAgPC9idXR0b24+XG48L3NwYW4+XG4iXX0=
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Subscription } from 'rxjs';
|
|
3
|
+
import { TasBusinessRole, FeedbackMotiveType, } from '../../interfaces/tas.interfaces';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
6
|
+
import * as i2 from "../../services/tas.service";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@angular/forms";
|
|
9
|
+
export class TasFeedbackModalComponent {
|
|
10
|
+
constructor(activeModal, tasService) {
|
|
11
|
+
this.activeModal = activeModal;
|
|
12
|
+
this.tasService = tasService;
|
|
13
|
+
this.businessRole = TasBusinessRole.USER;
|
|
14
|
+
this.motives = [];
|
|
15
|
+
this.filteredMotives = [];
|
|
16
|
+
this.selectedMotive = null;
|
|
17
|
+
this.rating = 0;
|
|
18
|
+
this.hoverRating = 0;
|
|
19
|
+
this.observation = '';
|
|
20
|
+
this.isSubmitting = false;
|
|
21
|
+
this.showToast = false;
|
|
22
|
+
this.isDropdownOpen = false;
|
|
23
|
+
this.subscriptions = new Subscription();
|
|
24
|
+
this.toastTimeout = null;
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.loadMotives();
|
|
28
|
+
}
|
|
29
|
+
ngOnDestroy() {
|
|
30
|
+
this.subscriptions.unsubscribe();
|
|
31
|
+
if (this.toastTimeout) {
|
|
32
|
+
clearTimeout(this.toastTimeout);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if current user can see all motives (BUSINESS + TECHNICAL)
|
|
37
|
+
* Only BACKOFFICE, ADMIN_MANAGER, MANAGER roles see BUSINESS motives
|
|
38
|
+
*/
|
|
39
|
+
get canSeeBusinessMotives() {
|
|
40
|
+
return (this.businessRole === TasBusinessRole.BACKOFFICE ||
|
|
41
|
+
this.businessRole === TasBusinessRole.ADMIN_MANAGER ||
|
|
42
|
+
this.businessRole === TasBusinessRole.MANAGER);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Observation is required when "Otro problema tecnico" is selected
|
|
46
|
+
*/
|
|
47
|
+
get isObservationRequired() {
|
|
48
|
+
return this.selectedMotive?.description === 'Otro problema tecnico';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Can submit if rating > 0 OR motive is selected
|
|
52
|
+
* If observation is required, it must not be empty
|
|
53
|
+
*/
|
|
54
|
+
get canSubmit() {
|
|
55
|
+
const hasRatingOrMotive = this.rating > 0 || this.selectedMotive !== null;
|
|
56
|
+
if (!hasRatingOrMotive)
|
|
57
|
+
return false;
|
|
58
|
+
if (this.isObservationRequired && !this.observation.trim())
|
|
59
|
+
return false;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Progress percentage for the divider line
|
|
64
|
+
* 0 = nothing selected, 50 = one selected, 100 = both selected
|
|
65
|
+
*/
|
|
66
|
+
get feedbackProgress() {
|
|
67
|
+
const hasRating = this.rating > 0;
|
|
68
|
+
const hasMotive = this.selectedMotive !== null;
|
|
69
|
+
if (hasRating && hasMotive)
|
|
70
|
+
return 100;
|
|
71
|
+
if (hasRating || hasMotive)
|
|
72
|
+
return 50;
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set star rating
|
|
77
|
+
*/
|
|
78
|
+
setRating(value) {
|
|
79
|
+
// Toggle off if clicking the same rating
|
|
80
|
+
if (this.rating === value) {
|
|
81
|
+
this.rating = 0;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.rating = value;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Set hover preview rating
|
|
89
|
+
*/
|
|
90
|
+
setHoverRating(value) {
|
|
91
|
+
this.hoverRating = value;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Clear hover preview
|
|
95
|
+
*/
|
|
96
|
+
clearHoverRating() {
|
|
97
|
+
this.hoverRating = 0;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the display rating (hover preview or actual)
|
|
101
|
+
*/
|
|
102
|
+
getDisplayRating() {
|
|
103
|
+
return this.hoverRating > 0 ? this.hoverRating : this.rating;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Toggle dropdown open/close
|
|
107
|
+
*/
|
|
108
|
+
toggleDropdown() {
|
|
109
|
+
this.isDropdownOpen = !this.isDropdownOpen;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Close dropdown
|
|
113
|
+
*/
|
|
114
|
+
closeDropdown() {
|
|
115
|
+
this.isDropdownOpen = false;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Select a motive from dropdown
|
|
119
|
+
*/
|
|
120
|
+
selectMotive(motive) {
|
|
121
|
+
this.selectedMotive = motive;
|
|
122
|
+
this.closeDropdown();
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clear selected motive
|
|
126
|
+
*/
|
|
127
|
+
clearMotive() {
|
|
128
|
+
this.selectedMotive = null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Submit feedback
|
|
132
|
+
*/
|
|
133
|
+
submit() {
|
|
134
|
+
if (!this.canSubmit || this.isSubmitting)
|
|
135
|
+
return;
|
|
136
|
+
this.isSubmitting = true;
|
|
137
|
+
const payload = {
|
|
138
|
+
videoCallId: this.videoCallId,
|
|
139
|
+
motiveId: this.selectedMotive?.id ?? 0,
|
|
140
|
+
observation: this.observation.trim(),
|
|
141
|
+
rating: this.rating || 1,
|
|
142
|
+
tenant: this.tenant,
|
|
143
|
+
};
|
|
144
|
+
if (this.selectedMotive) {
|
|
145
|
+
payload.motiveType = this.selectedMotive.motiveType;
|
|
146
|
+
}
|
|
147
|
+
this.subscriptions.add(this.tasService.saveFeedback(payload).subscribe({
|
|
148
|
+
next: () => {
|
|
149
|
+
this.isSubmitting = false;
|
|
150
|
+
this.showToastNotification();
|
|
151
|
+
},
|
|
152
|
+
error: (err) => {
|
|
153
|
+
console.error('Error saving feedback:', err);
|
|
154
|
+
this.isSubmitting = false;
|
|
155
|
+
// Still close modal on error, just don't show toast
|
|
156
|
+
this.activeModal.close('submitted');
|
|
157
|
+
},
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Close modal without saving
|
|
162
|
+
*/
|
|
163
|
+
dismiss() {
|
|
164
|
+
this.activeModal.dismiss('dismissed');
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Load motives from API
|
|
168
|
+
*/
|
|
169
|
+
loadMotives() {
|
|
170
|
+
this.subscriptions.add(this.tasService.getMotives().subscribe({
|
|
171
|
+
next: (motives) => {
|
|
172
|
+
this.motives = motives;
|
|
173
|
+
this.filterMotives();
|
|
174
|
+
},
|
|
175
|
+
error: (err) => {
|
|
176
|
+
console.error('Error loading motives:', err);
|
|
177
|
+
// Fallback mock motives for development/testing
|
|
178
|
+
this.motives = [
|
|
179
|
+
{ id: 1, description: 'Problemas de audio', motiveType: FeedbackMotiveType.TECHNICAL },
|
|
180
|
+
{ id: 2, description: 'Problemas de video', motiveType: FeedbackMotiveType.TECHNICAL },
|
|
181
|
+
{ id: 3, description: 'Conexión inestable', motiveType: FeedbackMotiveType.TECHNICAL },
|
|
182
|
+
{ id: 4, description: 'Otro problema tecnico', motiveType: FeedbackMotiveType.TECHNICAL },
|
|
183
|
+
{ id: 5, description: 'Problema de negocio', motiveType: FeedbackMotiveType.BUSINESS },
|
|
184
|
+
];
|
|
185
|
+
this.filterMotives();
|
|
186
|
+
},
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Filter motives based on user role
|
|
191
|
+
* USERs see only TECHNICAL motives
|
|
192
|
+
* Owners (BACKOFFICE, ADMIN_MANAGER, MANAGER) see all motives
|
|
193
|
+
*/
|
|
194
|
+
filterMotives() {
|
|
195
|
+
if (this.canSeeBusinessMotives) {
|
|
196
|
+
this.filteredMotives = this.motives;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this.filteredMotives = this.motives.filter((m) => !m.motiveType || m.motiveType === FeedbackMotiveType.TECHNICAL);
|
|
200
|
+
}
|
|
201
|
+
// If still empty after filtering, and we have motives, just show all as fallback
|
|
202
|
+
if (this.filteredMotives.length === 0 && this.motives.length > 0) {
|
|
203
|
+
this.filteredMotives = this.motives;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Show toast notification and auto-dismiss after 3s
|
|
208
|
+
*/
|
|
209
|
+
showToastNotification() {
|
|
210
|
+
this.showToast = true;
|
|
211
|
+
this.toastTimeout = setTimeout(() => {
|
|
212
|
+
this.showToast = false;
|
|
213
|
+
this.activeModal.close('submitted');
|
|
214
|
+
}, 3000);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
TasFeedbackModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasFeedbackModalComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.TasService }], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
+
TasFeedbackModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TasFeedbackModalComponent, selector: "tas-feedback-modal", inputs: { videoCallId: "videoCallId", tenant: "tenant", businessRole: "businessRole" }, ngImport: i0, template: "<div class=\"tas-feedback-modal\">\n <!-- Header with subtitle -->\n <div class=\"feedback-header\">\n <div class=\"header-text\">\n <span class=\"subtitle\">Cierre de la consulta</span>\n <h2>Calidad de la videollamada</h2>\n </div>\n <button\n type=\"button\"\n class=\"close-btn\"\n (click)=\"dismiss()\"\n aria-label=\"Cerrar\"\n >\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <!-- Progress Divider -->\n <div class=\"progress-divider\">\n <div class=\"progress-fill\" [style.width.%]=\"feedbackProgress\"></div>\n </div>\n <div class=\"accent-line\"></div>\n\n <div class=\"feedback-content\">\n <!-- Star Rating with question -->\n <div class=\"rating-section\">\n <p class=\"rating-question\">\u00BFC\u00F3mo fue la calidad de la llamada?</p>\n <div\n class=\"stars-container\"\n (mouseleave)=\"clearHoverRating()\"\n >\n <button\n *ngFor=\"let star of [1, 2, 3, 4, 5]\"\n type=\"button\"\n class=\"star-btn\"\n [class.filled]=\"star <= getDisplayRating()\"\n (click)=\"setRating(star)\"\n (mouseenter)=\"setHoverRating(star)\"\n [attr.aria-label]=\"'Calificar ' + star + ' estrellas'\"\n >\n <i class=\"fa\" [class.fa-star]=\"star <= getDisplayRating()\" [class.fa-star-o]=\"star > getDisplayRating()\"></i>\n </button>\n </div>\n </div>\n\n <!-- Motive Dropdown -->\n <div class=\"motive-section\">\n <label class=\"motive-label\">Motivo (opcional)</label>\n <div class=\"custom-dropdown\" [class.open]=\"isDropdownOpen\">\n <button\n type=\"button\"\n class=\"dropdown-trigger\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isDropdownOpen\"\n aria-haspopup=\"listbox\"\n >\n <span class=\"dropdown-text\">\n {{ selectedMotive?.description || 'Seleccionar motivo' }}\n </span>\n <i class=\"fa fa-chevron-down dropdown-arrow\"></i>\n </button>\n <div\n class=\"dropdown-menu\"\n *ngIf=\"isDropdownOpen\"\n role=\"listbox\"\n >\n <button\n *ngFor=\"let motive of filteredMotives\"\n type=\"button\"\n class=\"dropdown-item\"\n [class.selected]=\"selectedMotive?.id === motive.id\"\n (click)=\"selectMotive(motive)\"\n role=\"option\"\n [attr.aria-selected]=\"selectedMotive?.id === motive.id\"\n >\n {{ motive.description }}\n </button>\n </div>\n </div>\n </div>\n\n <!-- Observation Textarea -->\n <div class=\"observation-section\">\n <label class=\"observation-label\" [class.required]=\"isObservationRequired\">\n {{ isObservationRequired ? 'Observacion (requerida)' : 'Observacion (opcional)' }}\n </label>\n <textarea\n class=\"observation-textarea\"\n [(ngModel)]=\"observation\"\n [placeholder]=\"isObservationRequired ? 'Por favor, describe el problema...' : 'Escribe tu comentario...'\"\n rows=\"3\"\n [attr.aria-required]=\"isObservationRequired\"\n ></textarea>\n </div>\n </div>\n\n <div class=\"feedback-footer\">\n <button\n type=\"button\"\n class=\"submit-btn\"\n [disabled]=\"!canSubmit || isSubmitting\"\n (click)=\"submit()\"\n >\n <span *ngIf=\"!isSubmitting\">Enviar</span>\n <span *ngIf=\"isSubmitting\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n Enviando...\n </span>\n </button>\n </div>\n\n <!-- Toast Notification -->\n <div class=\"toast-notification\" *ngIf=\"showToast\" role=\"alert\" aria-live=\"polite\">\n <i class=\"fa fa-check-circle\"></i>\n <span>Gracias por tu feedback</span>\n </div>\n</div>\n\n<!-- Backdrop to close dropdown when clicking outside -->\n<div\n class=\"dropdown-backdrop\"\n *ngIf=\"isDropdownOpen\"\n (click)=\"closeDropdown()\"\n></div>\n", styles: [":host{display:block;width:100%}::ng-deep .tas-feedback-modal-wrapper .modal-content{overflow:visible!important;border:none;background:transparent}::ng-deep .tas-feedback-modal-wrapper .modal-dialog{max-width:450px}.tas-feedback-modal{width:100%;background:#fff;border-radius:16px;overflow:visible;position:relative;padding:.5rem;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.feedback-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.25rem 1.5rem 1rem;background:#fff;border-radius:16px 16px 0 0}.feedback-header .header-text{display:flex;flex-direction:column;gap:.25rem}.feedback-header .header-text .subtitle{font-size:.8125rem;color:#6b7280;font-weight:400}.feedback-header .header-text h2{margin:0;font-size:1.25rem;font-weight:600;color:#1f2937;letter-spacing:-.01em}.feedback-header .close-btn{background:transparent;border:none;padding:8px;cursor:pointer;color:#9ca3af;font-size:1.25rem;line-height:1;transition:all .2s ease;margin-top:-4px}.feedback-header .close-btn:hover{color:#4b5563}.feedback-header .close-btn:focus{outline:none;color:#4b5563}.progress-divider{height:4px;background:#e5e7eb;margin:0;position:relative;overflow:hidden}.progress-divider .progress-fill{height:100%;background:linear-gradient(90deg,var(--Primary-Uell, #1da4b1) 0%,#4fd1c5 100%);transition:width .4s cubic-bezier(.4,0,.2,1);border-radius:0 2px 2px 0}.feedback-content{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.rating-section{display:flex;flex-direction:column;align-items:flex-start;gap:1rem}.rating-section .rating-question{margin:0;font-size:.9375rem;color:#4b5563;font-weight:400;align-self:center}.rating-section .stars-container{display:flex;gap:8px;width:100%;justify-content:center}.rating-section .star-btn{background:transparent;border:none;padding:4px;cursor:pointer;font-size:2rem;color:#d1d5db;transition:all .15s ease;line-height:1}.rating-section .star-btn:hover{transform:scale(1.15)}.rating-section .star-btn.filled{color:#f5a623}.rating-section .star-btn.filled i.fa-star{text-shadow:0 2px 4px rgba(245,166,35,.3)}.rating-section .star-btn i.fa-star-o{color:#d1d5db}.rating-section .star-btn:focus{outline:none}.motive-section{display:flex;flex-direction:column;gap:.5rem;position:relative;overflow:visible}.motive-section .motive-label{font-size:.875rem;font-weight:500;color:#4b5563}.motive-section .custom-dropdown{position:relative;overflow:visible}.motive-section .custom-dropdown .dropdown-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#fff;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;font-size:.9375rem;color:#4b5563;transition:all .2s ease;min-height:52px}.motive-section .custom-dropdown .dropdown-trigger:hover{border-color:#9ca3af}.motive-section .custom-dropdown .dropdown-trigger:focus{outline:none;border-color:var(--Primary-Uell, #1da4b1)}.motive-section .custom-dropdown .dropdown-trigger .dropdown-text{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.motive-section .custom-dropdown .dropdown-trigger .dropdown-arrow{font-size:.875rem;color:#6b7280;transition:transform .2s ease;margin-left:.5rem}.motive-section .custom-dropdown.open .dropdown-trigger{border-color:var(--Primary-Uell, #1da4b1)}.motive-section .custom-dropdown.open .dropdown-trigger .dropdown-arrow{transform:rotate(180deg)}.motive-section .custom-dropdown .dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;display:block;min-height:40px;min-width:100%;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 16px #0000001f;max-height:250px;overflow:hidden;overflow-y:auto;z-index:1050;visibility:visible;opacity:1;padding:0}.motive-section .custom-dropdown .dropdown-menu .dropdown-item{width:100%;padding:1rem 1.25rem;background:transparent;border:none;border-bottom:1px dashed #e5e7eb;text-align:left;font-size:.9375rem;color:#4b5563;cursor:pointer;transition:all .15s ease;position:relative}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:last-child{border-bottom:none}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:hover{background:rgba(29,164,177,.05);color:#374151}.motive-section .custom-dropdown .dropdown-menu .dropdown-item.selected{background:rgba(29,164,177,.08);color:var(--Primary-Uell, #1da4b1);border-left:3px solid var(--Primary-Uell, #1da4b1);padding-left:calc(1.25rem - 3px)}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:focus{outline:none;background:rgba(29,164,177,.05)}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:first-child{border-radius:8px 8px 0 0}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:last-child{border-radius:0 0 8px 8px}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:only-child{border-radius:8px}.motive-section .clear-motive-btn{position:absolute;right:40px;top:32px;background:#f3f4f6;border:none;padding:4px 6px;border-radius:4px;cursor:pointer;color:#6b7280;font-size:.625rem;transition:all .2s ease}.motive-section .clear-motive-btn:hover{background:#e5e7eb;color:#374151}.motive-section .clear-motive-btn:focus{outline:none}.observation-section{display:flex;flex-direction:column;gap:.5rem}.observation-section .observation-label{font-size:.875rem;font-weight:500;color:#4b5563}.observation-section .observation-label.required{color:#dc2626}.observation-section .observation-label.required:after{content:\" *\";font-weight:600}.observation-section .observation-textarea{width:100%;padding:.75rem 1rem;border:1px solid #d1d5db;border-radius:12px;font-size:.875rem;font-family:inherit;resize:vertical;min-height:80px;transition:all .2s ease;background:#fff}.observation-section .observation-textarea::placeholder{color:#9ca3af}.observation-section .observation-textarea:hover{border-color:#9ca3af}.observation-section .observation-textarea:focus{outline:none;border-color:var(--Primary-Uell, #1da4b1);box-shadow:0 0 0 3px #1da4b126}.feedback-footer{padding:1rem 1.5rem 1.5rem;display:flex;justify-content:flex-end}.feedback-footer .submit-btn{padding:.75rem 2rem;background:var(--Primary-Uell, #1da4b1);color:#fff;border:none;border-radius:24px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-width:120px}.feedback-footer .submit-btn:hover:not(:disabled){background:#178e99}.feedback-footer .submit-btn:disabled{background:rgba(29,164,177,.5);cursor:not-allowed}.feedback-footer .submit-btn:focus{outline:none;box-shadow:0 0 0 3px #1da4b126}.feedback-footer .submit-btn i.fa-spinner{margin-right:6px}.toast-notification{position:fixed;bottom:24px;left:24px;display:flex;align-items:center;gap:10px;padding:14px 20px;background:#383e52;color:#fff;border-radius:8px;box-shadow:0 4px 12px #00000040;font-size:.875rem;font-weight:500;z-index:1060;animation:slideIn .3s ease}.toast-notification i.fa-check-circle{color:#4ade80;font-size:1.125rem}@keyframes slideIn{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.dropdown-backdrop{position:fixed;inset:0;z-index:99}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasFeedbackModalComponent, decorators: [{
|
|
220
|
+
type: Component,
|
|
221
|
+
args: [{ selector: 'tas-feedback-modal', template: "<div class=\"tas-feedback-modal\">\n <!-- Header with subtitle -->\n <div class=\"feedback-header\">\n <div class=\"header-text\">\n <span class=\"subtitle\">Cierre de la consulta</span>\n <h2>Calidad de la videollamada</h2>\n </div>\n <button\n type=\"button\"\n class=\"close-btn\"\n (click)=\"dismiss()\"\n aria-label=\"Cerrar\"\n >\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n\n <!-- Progress Divider -->\n <div class=\"progress-divider\">\n <div class=\"progress-fill\" [style.width.%]=\"feedbackProgress\"></div>\n </div>\n <div class=\"accent-line\"></div>\n\n <div class=\"feedback-content\">\n <!-- Star Rating with question -->\n <div class=\"rating-section\">\n <p class=\"rating-question\">\u00BFC\u00F3mo fue la calidad de la llamada?</p>\n <div\n class=\"stars-container\"\n (mouseleave)=\"clearHoverRating()\"\n >\n <button\n *ngFor=\"let star of [1, 2, 3, 4, 5]\"\n type=\"button\"\n class=\"star-btn\"\n [class.filled]=\"star <= getDisplayRating()\"\n (click)=\"setRating(star)\"\n (mouseenter)=\"setHoverRating(star)\"\n [attr.aria-label]=\"'Calificar ' + star + ' estrellas'\"\n >\n <i class=\"fa\" [class.fa-star]=\"star <= getDisplayRating()\" [class.fa-star-o]=\"star > getDisplayRating()\"></i>\n </button>\n </div>\n </div>\n\n <!-- Motive Dropdown -->\n <div class=\"motive-section\">\n <label class=\"motive-label\">Motivo (opcional)</label>\n <div class=\"custom-dropdown\" [class.open]=\"isDropdownOpen\">\n <button\n type=\"button\"\n class=\"dropdown-trigger\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isDropdownOpen\"\n aria-haspopup=\"listbox\"\n >\n <span class=\"dropdown-text\">\n {{ selectedMotive?.description || 'Seleccionar motivo' }}\n </span>\n <i class=\"fa fa-chevron-down dropdown-arrow\"></i>\n </button>\n <div\n class=\"dropdown-menu\"\n *ngIf=\"isDropdownOpen\"\n role=\"listbox\"\n >\n <button\n *ngFor=\"let motive of filteredMotives\"\n type=\"button\"\n class=\"dropdown-item\"\n [class.selected]=\"selectedMotive?.id === motive.id\"\n (click)=\"selectMotive(motive)\"\n role=\"option\"\n [attr.aria-selected]=\"selectedMotive?.id === motive.id\"\n >\n {{ motive.description }}\n </button>\n </div>\n </div>\n </div>\n\n <!-- Observation Textarea -->\n <div class=\"observation-section\">\n <label class=\"observation-label\" [class.required]=\"isObservationRequired\">\n {{ isObservationRequired ? 'Observacion (requerida)' : 'Observacion (opcional)' }}\n </label>\n <textarea\n class=\"observation-textarea\"\n [(ngModel)]=\"observation\"\n [placeholder]=\"isObservationRequired ? 'Por favor, describe el problema...' : 'Escribe tu comentario...'\"\n rows=\"3\"\n [attr.aria-required]=\"isObservationRequired\"\n ></textarea>\n </div>\n </div>\n\n <div class=\"feedback-footer\">\n <button\n type=\"button\"\n class=\"submit-btn\"\n [disabled]=\"!canSubmit || isSubmitting\"\n (click)=\"submit()\"\n >\n <span *ngIf=\"!isSubmitting\">Enviar</span>\n <span *ngIf=\"isSubmitting\">\n <i class=\"fa fa-spinner fa-spin\"></i>\n Enviando...\n </span>\n </button>\n </div>\n\n <!-- Toast Notification -->\n <div class=\"toast-notification\" *ngIf=\"showToast\" role=\"alert\" aria-live=\"polite\">\n <i class=\"fa fa-check-circle\"></i>\n <span>Gracias por tu feedback</span>\n </div>\n</div>\n\n<!-- Backdrop to close dropdown when clicking outside -->\n<div\n class=\"dropdown-backdrop\"\n *ngIf=\"isDropdownOpen\"\n (click)=\"closeDropdown()\"\n></div>\n", styles: [":host{display:block;width:100%}::ng-deep .tas-feedback-modal-wrapper .modal-content{overflow:visible!important;border:none;background:transparent}::ng-deep .tas-feedback-modal-wrapper .modal-dialog{max-width:450px}.tas-feedback-modal{width:100%;background:#fff;border-radius:16px;overflow:visible;position:relative;padding:.5rem;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.feedback-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.25rem 1.5rem 1rem;background:#fff;border-radius:16px 16px 0 0}.feedback-header .header-text{display:flex;flex-direction:column;gap:.25rem}.feedback-header .header-text .subtitle{font-size:.8125rem;color:#6b7280;font-weight:400}.feedback-header .header-text h2{margin:0;font-size:1.25rem;font-weight:600;color:#1f2937;letter-spacing:-.01em}.feedback-header .close-btn{background:transparent;border:none;padding:8px;cursor:pointer;color:#9ca3af;font-size:1.25rem;line-height:1;transition:all .2s ease;margin-top:-4px}.feedback-header .close-btn:hover{color:#4b5563}.feedback-header .close-btn:focus{outline:none;color:#4b5563}.progress-divider{height:4px;background:#e5e7eb;margin:0;position:relative;overflow:hidden}.progress-divider .progress-fill{height:100%;background:linear-gradient(90deg,var(--Primary-Uell, #1da4b1) 0%,#4fd1c5 100%);transition:width .4s cubic-bezier(.4,0,.2,1);border-radius:0 2px 2px 0}.feedback-content{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.rating-section{display:flex;flex-direction:column;align-items:flex-start;gap:1rem}.rating-section .rating-question{margin:0;font-size:.9375rem;color:#4b5563;font-weight:400;align-self:center}.rating-section .stars-container{display:flex;gap:8px;width:100%;justify-content:center}.rating-section .star-btn{background:transparent;border:none;padding:4px;cursor:pointer;font-size:2rem;color:#d1d5db;transition:all .15s ease;line-height:1}.rating-section .star-btn:hover{transform:scale(1.15)}.rating-section .star-btn.filled{color:#f5a623}.rating-section .star-btn.filled i.fa-star{text-shadow:0 2px 4px rgba(245,166,35,.3)}.rating-section .star-btn i.fa-star-o{color:#d1d5db}.rating-section .star-btn:focus{outline:none}.motive-section{display:flex;flex-direction:column;gap:.5rem;position:relative;overflow:visible}.motive-section .motive-label{font-size:.875rem;font-weight:500;color:#4b5563}.motive-section .custom-dropdown{position:relative;overflow:visible}.motive-section .custom-dropdown .dropdown-trigger{width:100%;display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#fff;border:1px solid #d1d5db;border-radius:8px;cursor:pointer;font-size:.9375rem;color:#4b5563;transition:all .2s ease;min-height:52px}.motive-section .custom-dropdown .dropdown-trigger:hover{border-color:#9ca3af}.motive-section .custom-dropdown .dropdown-trigger:focus{outline:none;border-color:var(--Primary-Uell, #1da4b1)}.motive-section .custom-dropdown .dropdown-trigger .dropdown-text{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.motive-section .custom-dropdown .dropdown-trigger .dropdown-arrow{font-size:.875rem;color:#6b7280;transition:transform .2s ease;margin-left:.5rem}.motive-section .custom-dropdown.open .dropdown-trigger{border-color:var(--Primary-Uell, #1da4b1)}.motive-section .custom-dropdown.open .dropdown-trigger .dropdown-arrow{transform:rotate(180deg)}.motive-section .custom-dropdown .dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;display:block;min-height:40px;min-width:100%;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 16px #0000001f;max-height:250px;overflow:hidden;overflow-y:auto;z-index:1050;visibility:visible;opacity:1;padding:0}.motive-section .custom-dropdown .dropdown-menu .dropdown-item{width:100%;padding:1rem 1.25rem;background:transparent;border:none;border-bottom:1px dashed #e5e7eb;text-align:left;font-size:.9375rem;color:#4b5563;cursor:pointer;transition:all .15s ease;position:relative}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:last-child{border-bottom:none}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:hover{background:rgba(29,164,177,.05);color:#374151}.motive-section .custom-dropdown .dropdown-menu .dropdown-item.selected{background:rgba(29,164,177,.08);color:var(--Primary-Uell, #1da4b1);border-left:3px solid var(--Primary-Uell, #1da4b1);padding-left:calc(1.25rem - 3px)}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:focus{outline:none;background:rgba(29,164,177,.05)}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:first-child{border-radius:8px 8px 0 0}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:last-child{border-radius:0 0 8px 8px}.motive-section .custom-dropdown .dropdown-menu .dropdown-item:only-child{border-radius:8px}.motive-section .clear-motive-btn{position:absolute;right:40px;top:32px;background:#f3f4f6;border:none;padding:4px 6px;border-radius:4px;cursor:pointer;color:#6b7280;font-size:.625rem;transition:all .2s ease}.motive-section .clear-motive-btn:hover{background:#e5e7eb;color:#374151}.motive-section .clear-motive-btn:focus{outline:none}.observation-section{display:flex;flex-direction:column;gap:.5rem}.observation-section .observation-label{font-size:.875rem;font-weight:500;color:#4b5563}.observation-section .observation-label.required{color:#dc2626}.observation-section .observation-label.required:after{content:\" *\";font-weight:600}.observation-section .observation-textarea{width:100%;padding:.75rem 1rem;border:1px solid #d1d5db;border-radius:12px;font-size:.875rem;font-family:inherit;resize:vertical;min-height:80px;transition:all .2s ease;background:#fff}.observation-section .observation-textarea::placeholder{color:#9ca3af}.observation-section .observation-textarea:hover{border-color:#9ca3af}.observation-section .observation-textarea:focus{outline:none;border-color:var(--Primary-Uell, #1da4b1);box-shadow:0 0 0 3px #1da4b126}.feedback-footer{padding:1rem 1.5rem 1.5rem;display:flex;justify-content:flex-end}.feedback-footer .submit-btn{padding:.75rem 2rem;background:var(--Primary-Uell, #1da4b1);color:#fff;border:none;border-radius:24px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-width:120px}.feedback-footer .submit-btn:hover:not(:disabled){background:#178e99}.feedback-footer .submit-btn:disabled{background:rgba(29,164,177,.5);cursor:not-allowed}.feedback-footer .submit-btn:focus{outline:none;box-shadow:0 0 0 3px #1da4b126}.feedback-footer .submit-btn i.fa-spinner{margin-right:6px}.toast-notification{position:fixed;bottom:24px;left:24px;display:flex;align-items:center;gap:10px;padding:14px 20px;background:#383e52;color:#fff;border-radius:8px;box-shadow:0 4px 12px #00000040;font-size:.875rem;font-weight:500;z-index:1060;animation:slideIn .3s ease}.toast-notification i.fa-check-circle{color:#4ade80;font-size:1.125rem}@keyframes slideIn{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.dropdown-backdrop{position:fixed;inset:0;z-index:99}\n"] }]
|
|
222
|
+
}], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.TasService }]; }, propDecorators: { videoCallId: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], tenant: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], businessRole: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}] } });
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLWZlZWRiYWNrLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL2NvbXBvbmVudHMvdGFzLWZlZWRiYWNrLW1vZGFsL3Rhcy1mZWVkYmFjay1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9jb21wb25lbnRzL3Rhcy1mZWVkYmFjay1tb2RhbC90YXMtZmVlZGJhY2stbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNMLGVBQWUsRUFFZixrQkFBa0IsR0FFbkIsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBT3pDLE1BQU0sT0FBTyx5QkFBeUI7SUFrQnBDLFlBQ1MsV0FBMkIsRUFDMUIsVUFBc0I7UUFEdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQnZCLGlCQUFZLEdBQW9CLGVBQWUsQ0FBQyxJQUFJLENBQUM7UUFFOUQsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLG1CQUFjLEdBQTBCLElBQUksQ0FBQztRQUM3QyxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFZixrQkFBYSxHQUFHLElBQUksWUFBWSxF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ZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVGFzQnVzaW5lc3NSb2xlLFxuICBGZWVkYmFja01vdGl2ZSxcbiAgRmVlZGJhY2tNb3RpdmVUeXBlLFxuICBTYXZlRmVlZGJhY2tSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFzLWZlZWRiYWNrLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhcy1mZWVkYmFjay1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhcy1mZWVkYmFjay1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYXNGZWVkYmFja01vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB2aWRlb0NhbGxJZCE6IG51bWJlcjtcbiAgQElucHV0KCkgdGVuYW50ITogc3RyaW5nO1xuICBASW5wdXQoKSBidXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZSA9IFRhc0J1c2luZXNzUm9sZS5VU0VSO1xuXG4gIG1vdGl2ZXM6IEZlZWRiYWNrTW90aXZlW10gPSBbXTtcbiAgZmlsdGVyZWRNb3RpdmVzOiBGZWVkYmFja01vdGl2ZVtdID0gW107XG4gIHNlbGVjdGVkTW90aXZlOiBGZWVkYmFja01vdGl2ZSB8IG51bGwgPSBudWxsO1xuICByYXRpbmc6IG51bWJlciA9IDA7XG4gIGhvdmVyUmF0aW5nOiBudW1iZXIgPSAwO1xuICBvYnNlcnZhdGlvbjogc3RyaW5nID0gJyc7XG4gIGlzU3VibWl0dGluZyA9IGZhbHNlO1xuICBzaG93VG9hc3QgPSBmYWxzZTtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgdG9hc3RUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsXG4gICAgcHJpdmF0ZSB0YXNTZXJ2aWNlOiBUYXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3RpdmVzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy50b2FzdFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvYXN0VGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgdXNlciBjYW4gc2VlIGFsbCBtb3RpdmVzIChCVVNJTkVTUyArIFRFQ0hOSUNBTClcbiAgICogT25seSBCQUNLT0ZGSUNFLCBBRE1JTl9NQU5BR0VSLCBNQU5BR0VSIHJvbGVzIHNlZSBCVVNJTkVTUyBtb3RpdmVzXG4gICAqL1xuICBnZXQgY2FuU2VlQnVzaW5lc3NNb3RpdmVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmJ1c2luZXNzUm9sZSA9PT0gVGFzQnVzaW5lc3NSb2xlLkJBQ0tPRkZJQ0UgfHxcbiAgICAgIHRoaXMuYnVzaW5lc3NSb2xlID09PSBUYXNCdXNpbmVzc1JvbGUuQURNSU5fTUFOQUdFUiB8fFxuICAgICAgdGhpcy5idXNpbmVzc1JvbGUgPT09IFRhc0J1c2luZXNzUm9sZS5NQU5BR0VSXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhdGlvbiBpcyByZXF1aXJlZCB3aGVuIFwiT3RybyBwcm9ibGVtYSB0ZWNuaWNvXCIgaXMgc2VsZWN0ZWRcbiAgICovXG4gIGdldCBpc09ic2VydmF0aW9uUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRNb3RpdmU/LmRlc2NyaXB0aW9uID09PSAnT3RybyBwcm9ibGVtYSB0ZWNuaWNvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW4gc3VibWl0IGlmIHJhdGluZyA+IDAgT1IgbW90aXZlIGlzIHNlbGVjdGVkXG4gICAqIElmIG9ic2VydmF0aW9uIGlzIHJlcXVpcmVkLCBpdCBtdXN0IG5vdCBiZSBlbXB0eVxuICAgKi9cbiAgZ2V0IGNhblN1Ym1pdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBoYXNSYXRpbmdPck1vdGl2ZSA9IHRoaXMucmF0aW5nID4gMCB8fCB0aGlzLnNlbGVjdGVkTW90aXZlICE9PSBudWxsO1xuICAgIGlmICghaGFzUmF0aW5nT3JNb3RpdmUpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5pc09ic2VydmF0aW9uUmVxdWlyZWQgJiYgIXRoaXMub2JzZXJ2YXRpb24udHJpbSgpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3Jlc3MgcGVyY2VudGFnZSBmb3IgdGhlIGRpdmlkZXIgbGluZVxuICAgKiAwID0gbm90aGluZyBzZWxlY3RlZCwgNTAgPSBvbmUgc2VsZWN0ZWQsIDEwMCA9IGJvdGggc2VsZWN0ZWRcbiAgICovXG4gIGdldCBmZWVkYmFja1Byb2dyZXNzKCk6IG51bWJlciB7XG4gICAgY29uc3QgaGFzUmF0aW5nID0gdGhpcy5yYXRpbmcgPiAwO1xuICAgIGNvbnN0IGhhc01vdGl2ZSA9IHRoaXMuc2VsZWN0ZWRNb3RpdmUgIT09IG51bGw7XG4gICAgaWYgKGhhc1JhdGluZyAmJiBoYXNNb3RpdmUpIHJldHVybiAxMDA7XG4gICAgaWYgKGhhc1JhdGluZyB8fCBoYXNNb3RpdmUpIHJldHVybiA1MDtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgc3RhciByYXRpbmdcbiAgICovXG4gIHNldFJhdGluZyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gVG9nZ2xlIG9mZiBpZiBjbGlja2luZyB0aGUgc2FtZSByYXRpbmdcbiAgICBpZiAodGhpcy5yYXRpbmcgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnJhdGluZyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmF0aW5nID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBob3ZlciBwcmV2aWV3IHJhdGluZ1xuICAgKi9cbiAgc2V0SG92ZXJSYXRpbmcodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJSYXRpbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBob3ZlciBwcmV2aWV3XG4gICAqL1xuICBjbGVhckhvdmVyUmF0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJSYXRpbmcgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGlzcGxheSByYXRpbmcgKGhvdmVyIHByZXZpZXcgb3IgYWN0dWFsKVxuICAgKi9cbiAgZ2V0RGlzcGxheVJhdGluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmhvdmVyUmF0aW5nID4gMCA/IHRoaXMuaG92ZXJSYXRpbmcgOiB0aGlzLnJhdGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgZHJvcGRvd24gb3Blbi9jbG9zZVxuICAgKi9cbiAgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGRyb3Bkb3duXG4gICAqL1xuICBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSBtb3RpdmUgZnJvbSBkcm9wZG93blxuICAgKi9cbiAgc2VsZWN0TW90aXZlKG1vdGl2ZTogRmVlZGJhY2tNb3RpdmUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTW90aXZlID0gbW90aXZlO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHNlbGVjdGVkIG1vdGl2ZVxuICAgKi9cbiAgY2xlYXJNb3RpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE1vdGl2ZSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGZlZWRiYWNrXG4gICAqL1xuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblN1Ym1pdCB8fCB0aGlzLmlzU3VibWl0dGluZykgcmV0dXJuO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgcGF5bG9hZDogU2F2ZUZlZWRiYWNrUmVxdWVzdCA9IHtcbiAgICAgIHZpZGVvQ2FsbElkOiB0aGlzLnZpZGVvQ2FsbElkLFxuICAgICAgbW90aXZlSWQ6IHRoaXMuc2VsZWN0ZWRNb3RpdmU/LmlkID8/IDAsXG4gICAgICBvYnNlcnZhdGlvbjogdGhpcy5vYnNlcnZhdGlvbi50cmltKCksXG4gICAgICByYXRpbmc6IHRoaXMucmF0aW5nIHx8IDEsIC8vIEFQSSByZXF1aXJlcyAxLTUsIGRlZmF1bHQgdG8gMSBpZiBubyByYXRpbmdcbiAgICAgIHRlbmFudDogdGhpcy50ZW5hbnQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkTW90aXZlKSB7XG4gICAgICBwYXlsb2FkLm1vdGl2ZVR5cGUgPSB0aGlzLnNlbGVjdGVkTW90aXZlLm1vdGl2ZVR5cGU7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudGFzU2VydmljZS5zYXZlRmVlZGJhY2socGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93VG9hc3ROb3RpZmljYXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmVlZGJhY2s6JywgZXJyKTtcbiAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgIC8vIFN0aWxsIGNsb3NlIG1vZGFsIG9uIGVycm9yLCBqdXN0IGRvbid0IHNob3cgdG9hc3RcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXR0ZWQnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBtb2RhbCB3aXRob3V0IHNhdmluZ1xuICAgKi9cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmRpc21pc3MoJ2Rpc21pc3NlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgbW90aXZlcyBmcm9tIEFQSVxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkTW90aXZlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmdldE1vdGl2ZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAobW90aXZlcykgPT4ge1xuICAgICAgICAgIHRoaXMubW90aXZlcyA9IG1vdGl2ZXM7XG4gICAgICAgICAgdGhpcy5maWx0ZXJNb3RpdmVzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBtb3RpdmVzOicsIGVycik7XG4gICAgICAgICAgLy8gRmFsbGJhY2sgbW9jayBtb3RpdmVzIGZvciBkZXZlbG9wbWVudC90ZXN0aW5nXG4gICAgICAgICAgdGhpcy5tb3RpdmVzID0gW1xuICAgICAgICAgICAgeyBpZDogMSwgZGVzY3JpcHRpb246ICdQcm9ibGVtYXMgZGUgYXVkaW8nLCBtb3RpdmVUeXBlOiBGZWVkYmFja01vdGl2ZVR5cGUuVEVDSE5JQ0FMIH0sXG4gICAgICAgICAgICB7IGlkOiAyLCBkZXNjcmlwdGlvbjogJ1Byb2JsZW1hcyBkZSB2aWRlbycsIG1vdGl2ZVR5cGU6IEZlZWRiYWNrTW90aXZlVHlwZS5URUNITklDQUwgfSxcbiAgICAgICAgICAgIHsgaWQ6IDMsIGRlc2NyaXB0aW9uOiAnQ29uZXhpw7NuIGluZXN0YWJsZScsIG1vdGl2ZVR5cGU6IEZlZWRiYWNrTW90aXZlVHlwZS5URUNITklDQUwgfSxcbiAgICAgICAgICAgIHsgaWQ6IDQsIGRlc2NyaXB0aW9uOiAnT3RybyBwcm9ibGVtYSB0ZWNuaWNvJywgbW90aXZlVHlwZTogRmVlZGJhY2tNb3RpdmVUeXBlLlRFQ0hOSUNBTCB9LFxuICAgICAgICAgICAgeyBpZDogNSwgZGVzY3JpcHRpb246ICdQcm9ibGVtYSBkZSBuZWdvY2lvJywgbW90aXZlVHlwZTogRmVlZGJhY2tNb3RpdmVUeXBlLkJVU0lORVNTIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgICB0aGlzLmZpbHRlck1vdGl2ZXMoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgbW90aXZlcyBiYXNlZCBvbiB1c2VyIHJvbGVcbiAgICogVVNFUnMgc2VlIG9ubHkgVEVDSE5JQ0FMIG1vdGl2ZXNcbiAgICogT3duZXJzIChCQUNLT0ZGSUNFLCBBRE1JTl9NQU5BR0VSLCBNQU5BR0VSKSBzZWUgYWxsIG1vdGl2ZXNcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyTW90aXZlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5TZWVCdXNpbmVzc01vdGl2ZXMpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRNb3RpdmVzID0gdGhpcy5tb3RpdmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTW90aXZlcyA9IHRoaXMubW90aXZlcy5maWx0ZXIoXG4gICAgICAgIChtKSA9PiAhbS5tb3RpdmVUeXBlIHx8IG0ubW90aXZlVHlwZSA9PT0gRmVlZGJhY2tNb3RpdmVUeXBlLlRFQ0hOSUNBTFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdGlsbCBlbXB0eSBhZnRlciBmaWx0ZXJpbmcsIGFuZCB3ZSBoYXZlIG1vdGl2ZXMsIGp1c3Qgc2hvdyBhbGwgYXMgZmFsbGJhY2tcbiAgICBpZiAodGhpcy5maWx0ZXJlZE1vdGl2ZXMubGVuZ3RoID09PSAwICYmIHRoaXMubW90aXZlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTW90aXZlcyA9IHRoaXMubW90aXZlcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyB0b2FzdCBub3RpZmljYXRpb24gYW5kIGF1dG8tZGlzbWlzcyBhZnRlciAzc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG93VG9hc3ROb3RpZmljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VG9hc3QgPSB0cnVlO1xuICAgIHRoaXMudG9hc3RUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dUb2FzdCA9IGZhbHNlO1xuICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0dGVkJyk7XG4gICAgfSwgMzAwMCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YXMtZmVlZGJhY2stbW9kYWxcIj5cbiAgPCEtLSBIZWFkZXIgd2l0aCBzdWJ0aXRsZSAtLT5cbiAgPGRpdiBjbGFzcz1cImZlZWRiYWNrLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGV4dFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPkNpZXJyZSBkZSBsYSBjb25zdWx0YTwvc3Bhbj5cbiAgICAgIDxoMj5DYWxpZGFkIGRlIGxhIHZpZGVvbGxhbWFkYTwvaDI+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImNsb3NlLWJ0blwiXG4gICAgICAoY2xpY2spPVwiZGlzbWlzcygpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDZXJyYXJcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUHJvZ3Jlc3MgRGl2aWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWRpdmlkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtZmlsbFwiIFtzdHlsZS53aWR0aC4lXT1cImZlZWRiYWNrUHJvZ3Jlc3NcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY2NlbnQtbGluZVwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmZWVkYmFjay1jb250ZW50XCI+XG4gICAgPCEtLSBTdGFyIFJhdGluZyB3aXRoIHF1ZXN0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJyYXRpbmctc2VjdGlvblwiPlxuICAgICAgPHAgY2xhc3M9XCJyYXRpbmctcXVlc3Rpb25cIj7Cv0PDs21vIGZ1ZSBsYSBjYWxpZGFkIGRlIGxhIGxsYW1hZGE/PC9wPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0YXJzLWNvbnRhaW5lclwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImNsZWFySG92ZXJSYXRpbmcoKVwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhciBvZiBbMSwgMiwgMywgNCwgNV1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic3Rhci1idG5cIlxuICAgICAgICAgIFtjbGFzcy5maWxsZWRdPVwic3RhciA8PSBnZXREaXNwbGF5UmF0aW5nKClcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRSYXRpbmcoc3RhcilcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cInNldEhvdmVyUmF0aW5nKHN0YXIpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDYWxpZmljYXIgJyArIHN0YXIgKyAnIGVzdHJlbGxhcydcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYVwiIFtjbGFzcy5mYS1zdGFyXT1cInN0YXIgPD0gZ2V0RGlzcGxheVJhdGluZygpXCIgW2NsYXNzLmZhLXN0YXItb109XCJzdGFyID4gZ2V0RGlzcGxheVJhdGluZygpXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNb3RpdmUgRHJvcGRvd24gLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1vdGl2ZS1zZWN0aW9uXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJtb3RpdmUtbGFiZWxcIj5Nb3Rpdm8gKG9wY2lvbmFsKTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCIgW2NsYXNzLm9wZW5dPVwiaXNEcm9wZG93bk9wZW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNEcm9wZG93bk9wZW5cIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tdGV4dFwiPlxuICAgICAgICAgICAge3sgc2VsZWN0ZWRNb3RpdmU/LmRlc2NyaXB0aW9uIHx8ICdTZWxlY2Npb25hciBtb3Rpdm8nIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1kb3duIGRyb3Bkb3duLWFycm93XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiXG4gICAgICAgICAgKm5nSWY9XCJpc0Ryb3Bkb3duT3BlblwiXG4gICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vdGl2ZSBvZiBmaWx0ZXJlZE1vdGl2ZXNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkTW90aXZlPy5pZCA9PT0gbW90aXZlLmlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb3RpdmUobW90aXZlKVwiXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic2VsZWN0ZWRNb3RpdmU/LmlkID09PSBtb3RpdmUuaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG1vdGl2ZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBPYnNlcnZhdGlvbiBUZXh0YXJlYSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwib2JzZXJ2YXRpb24tc2VjdGlvblwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwib2JzZXJ2YXRpb24tbGFiZWxcIiBbY2xhc3MucmVxdWlyZWRdPVwiaXNPYnNlcnZhdGlvblJlcXVpcmVkXCI+XG4gICAgICAgIHt7IGlzT2JzZXJ2YXRpb25SZXF1aXJlZCA/ICdPYnNlcnZhY2lvbiAocmVxdWVyaWRhKScgOiAnT2JzZXJ2YWNpb24gKG9wY2lvbmFsKScgfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgY2xhc3M9XCJvYnNlcnZhdGlvbi10ZXh0YXJlYVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwib2JzZXJ2YXRpb25cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNPYnNlcnZhdGlvblJlcXVpcmVkID8gJ1BvciBmYXZvciwgZGVzY3JpYmUgZWwgcHJvYmxlbWEuLi4nIDogJ0VzY3JpYmUgdHUgY29tZW50YXJpby4uLidcIlxuICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiaXNPYnNlcnZhdGlvblJlcXVpcmVkXCJcbiAgICAgID48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZmVlZGJhY2stZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInN1Ym1pdC1idG5cIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5TdWJtaXQgfHwgaXNTdWJtaXR0aW5nXCJcbiAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXNTdWJtaXR0aW5nXCI+RW52aWFyPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc1N1Ym1pdHRpbmdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgICAgIEVudmlhbmRvLi4uXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVG9hc3QgTm90aWZpY2F0aW9uIC0tPlxuICA8ZGl2IGNsYXNzPVwidG9hc3Qtbm90aWZpY2F0aW9uXCIgKm5nSWY9XCJzaG93VG9hc3RcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrLWNpcmNsZVwiPjwvaT5cbiAgICA8c3Bhbj5HcmFjaWFzIHBvciB0dSBmZWVkYmFjazwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBCYWNrZHJvcCB0byBjbG9zZSBkcm9wZG93biB3aGVuIGNsaWNraW5nIG91dHNpZGUgLS0+XG48ZGl2XG4gIGNsYXNzPVwiZHJvcGRvd24tYmFja2Ryb3BcIlxuICAqbmdJZj1cImlzRHJvcGRvd25PcGVuXCJcbiAgKGNsaWNrKT1cImNsb3NlRHJvcGRvd24oKVwiXG4+PC9kaXY+XG4iXX0=
|