kwikid-agent-dashboard 0.0.48 → 0.0.49
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/bundles/kwikid-agent-dashboard.umd.js +32 -4
- package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
- package/esm2015/lib/v1/components/customer-tile/customer-tile.component.js +32 -5
- package/fesm2015/kwikid-agent-dashboard.js +31 -4
- package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
- package/lib/v1/components/customer-tile/customer-tile.component.d.ts +5 -0
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ export class CustomerTileComponent {
|
|
|
20
20
|
this.isMobileView = false;
|
|
21
21
|
this.viewTaskDetails = [];
|
|
22
22
|
this.taskId = "";
|
|
23
|
+
this.headerFields = [];
|
|
23
24
|
this.labelValuePairConfig = {};
|
|
24
25
|
this.labelValuePairData = [];
|
|
25
26
|
this.onClickPerformAction = new EventEmitter();
|
|
@@ -56,9 +57,10 @@ export class CustomerTileComponent {
|
|
|
56
57
|
return data;
|
|
57
58
|
}
|
|
58
59
|
parseData() {
|
|
59
|
-
var _a, _b, _c, _d, _e, _f;
|
|
60
|
-
const identifier = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskIdentifier) !== null &&
|
|
60
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
61
|
+
const identifier = (_g = (_e = (_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.header) === null || _c === void 0 ? void 0 : _c.taskId) === null || _d === void 0 ? void 0 : _d.path) !== null && _e !== void 0 ? _e : (_f = this.config) === null || _f === void 0 ? void 0 : _f.taskIdentifier) !== null && _g !== void 0 ? _g : "user_id";
|
|
61
62
|
this.taskId = getObjectValueFromPath(this.customer, identifier);
|
|
63
|
+
this.headerFields = this.parseHeaderFields();
|
|
62
64
|
let detailsConfig = [];
|
|
63
65
|
if (checkObjectPathExists(this.config, "taskUI.details.data") &&
|
|
64
66
|
isNotEmptyArray(this.config.taskUI.details.data)) {
|
|
@@ -77,7 +79,32 @@ export class CustomerTileComponent {
|
|
|
77
79
|
});
|
|
78
80
|
this.labelValuePairData = data;
|
|
79
81
|
}
|
|
80
|
-
this.labelValuePairConfig = (
|
|
82
|
+
this.labelValuePairConfig = (_l = (_k = (_j = (_h = this.config) === null || _h === void 0 ? void 0 : _h.taskUI) === null || _j === void 0 ? void 0 : _j.details) === null || _k === void 0 ? void 0 : _k.config) !== null && _l !== void 0 ? _l : {};
|
|
83
|
+
}
|
|
84
|
+
parseHeaderFields() {
|
|
85
|
+
var _a, _b, _c, _d;
|
|
86
|
+
let fieldsConfig = [];
|
|
87
|
+
if (checkObjectPathExists(this.config, "taskUI.header.fields") &&
|
|
88
|
+
isNotEmptyArray(this.config.taskUI.header.fields)) {
|
|
89
|
+
fieldsConfig = this.config.taskUI.header.fields;
|
|
90
|
+
}
|
|
91
|
+
else if ((_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.header) === null || _c === void 0 ? void 0 : _c.taskName) === null || _d === void 0 ? void 0 : _d.path) {
|
|
92
|
+
// Backward compatible with earlier taskName config
|
|
93
|
+
fieldsConfig = [{ path: this.config.taskUI.header.taskName.path }];
|
|
94
|
+
}
|
|
95
|
+
return fieldsConfig
|
|
96
|
+
.map((field) => {
|
|
97
|
+
var _a;
|
|
98
|
+
let value = "";
|
|
99
|
+
if (Array.isArray(field.path)) {
|
|
100
|
+
value = ((_a = this.getValueFromArray(field.path)) === null || _a === void 0 ? void 0 : _a.trim()) || "";
|
|
101
|
+
}
|
|
102
|
+
else if (field.path) {
|
|
103
|
+
value = getObjectValueFromPath(this.customer, field.path) || "";
|
|
104
|
+
}
|
|
105
|
+
return Object.assign(Object.assign({}, field), { value });
|
|
106
|
+
})
|
|
107
|
+
.filter((field) => field.value);
|
|
81
108
|
}
|
|
82
109
|
openDetails() {
|
|
83
110
|
var _a, _b, _c, _d;
|
|
@@ -112,7 +139,7 @@ export class CustomerTileComponent {
|
|
|
112
139
|
}
|
|
113
140
|
}
|
|
114
141
|
/** @nocollapse */ CustomerTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, deps: [{ token: i1.GoogleMapsService }, { token: i2.OpenStreetMapsService }, { token: i3.AgentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
-
/** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { onClickPerformAction: "onClickPerformAction", nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n {{ taskId }}\n </div>\n <status-pill\n *ngIf=\"config?.utilityFlags?.isShowTaskStatus\"\n [config]=\"config?.taskUI?.header?.taskStatus\"\n [status]=\"\n customer[config?.taskUI?.header?.taskStatus?.path ?? 'session_status']\n \"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n <!-- <div\n *ngIf=\"\n agentService.config?.maps?.sho &&\n agentService.config?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <ng-container *ngFor=\"let action of config?.taskUI?.details?.action\">\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n <!-- <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div> -->\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;margin:1rem;padding:1rem .25rem 1rem 1rem;border-radius:1rem;border:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: i4.StatusPillComponent, selector: "status-pill", inputs: ["config", "status"] }, { type: i5.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: i6.ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.
|
|
142
|
+
/** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { onClickPerformAction: "onClickPerformAction", nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n {{ taskId }}\n </div>\n <div\n class=\"customer-tile-primary-container-field\"\n *ngFor=\"let field of headerFields\"\n >\n {{ field.value }}\n </div>\n <status-pill\n *ngIf=\"config?.utilityFlags?.isShowTaskStatus\"\n [config]=\"config?.taskUI?.header?.taskStatus\"\n [status]=\"\n customer[config?.taskUI?.header?.taskStatus?.path ?? 'session_status']\n \"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n <!-- <div\n *ngIf=\"\n agentService.config?.maps?.sho &&\n agentService.config?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <ng-container *ngFor=\"let action of config?.taskUI?.details?.action\">\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n <!-- <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div> -->\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;margin:1rem;padding:1rem .25rem 1rem 1rem;border-radius:1rem;border:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-field{font-weight:400;font-size:.9rem;line-height:1rem;color:#555;word-break:break-word}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: i4.StatusPillComponent, selector: "status-pill", inputs: ["config", "status"] }, { type: i5.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i5.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: i6.ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
116
143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, decorators: [{
|
|
117
144
|
type: Component,
|
|
118
145
|
args: [{
|
|
@@ -136,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
136
163
|
}], removeTask: [{
|
|
137
164
|
type: Output
|
|
138
165
|
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci10aWxlL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9jdXN0b21lci10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVl4QixNQUFNLE9BQU8scUJBQXFCO0lBc0NoQyxZQUNTLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDNUMsWUFBMEIsRUFDekIsV0FBdUI7UUFIeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBL0JqQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBR25CLFVBQUssR0FBVyxTQUFTLENBQUM7UUFLMUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFakIseUJBQW9CLEdBQVEsRUFBRSxDQUFDO1FBRS9CLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUc3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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOztzSUF6SVUscUJBQXFCOzBIQUFyQixxQkFBcUIsa1VDM0JsQyxnakpBb0lBOzRGRHpHYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2lCQUM5QztnTUFHQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVV6QyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFjTixvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdFBhdGhFeGlzdHMsXG4gIGdldE9iamVjdFZhbHVlRnJvbVBhdGgsXG4gIGlzTm90RW1wdHlBcnJheVxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEdvb2dsZU1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2dvb2dsZS1tYXBzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hZ2VudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBPcGVuU3RyZWV0TWFwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvb3Blbi1zdHJlZXQtbWFwcy5zZXJ2aWNlXCI7XG5cbmRlY2xhcmUgY29uc3QgZ29vZ2xlOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjdXN0b21lci10aWxlXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vY3VzdG9tZXItdGlsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY3VzdG9tZXItdGlsZS5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21lclRpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXG4gIHdpbmRvd1Jlc2l6ZVdhdGNoZXIoKSB7XG4gICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA8IDYwMCkge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGN1c3RvbWVyOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKVxuICBpbmRleDogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogYW55O1xuXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xuXG4gIHZpZXdUYXNrRGV0YWlsczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gIHRhc2tJZDogYW55ID0gXCJcIjtcblxuICBsYWJlbFZhbHVlUGFpckNvbmZpZzogYW55ID0ge307XG5cbiAgbGFiZWxWYWx1ZVBhaXJEYXRhOiBhbnkgPSBbXTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1BlcmZvcm1BY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG5leHRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIG9wZW5TdHJlZXRNYXBzU2VydmljZTogT3BlblN0cmVldE1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnNlRGF0YSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiY3VzdG9tZXJcIikpIHtcbiAgICAgIHRoaXMuY3VzdG9tZXIgPSBjaGFuZ2VzLmN1c3RvbWVyLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMucGFyc2VEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWVGcm9tQXJyYXkocGF0aHMpIHtcbiAgICBsZXQgZGF0YSA9IFwiXCI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFycmF5LWNhbGxiYWNrLXJldHVyblxuICAgIHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIHBhdGgpO1xuICAgICAgZGF0YSA9IGAke2RhdGF9ICR7dmFsdWV9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcGFyc2VEYXRhKCkge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLmNvbmZpZz8udGFza0lkZW50aWZpZXIgPz8gXCJ1c2VyX2lkXCI7XG4gICAgdGhpcy50YXNrSWQgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGlkZW50aWZpZXIpO1xuXG4gICAgbGV0IGRldGFpbHNDb25maWcgPSBbXTtcbiAgICBpZiAoXG4gICAgICBjaGVja09iamVjdFBhdGhFeGlzdHModGhpcy5jb25maWcsIFwidGFza1VJLmRldGFpbHMuZGF0YVwiKSAmJlxuICAgICAgaXNOb3RFbXB0eUFycmF5KHRoaXMuY29uZmlnLnRhc2tVSS5kZXRhaWxzLmRhdGEpXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRhID0gW107XG4gICAgICBkZXRhaWxzQ29uZmlnID0gdGhpcy5jb25maWcudGFza1VJLmRldGFpbHMuZGF0YTtcbiAgICAgIGRldGFpbHNDb25maWcubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnBhdGgpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbUFycmF5KGZpZWxkLnBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCh0aGlzLmN1c3RvbWVyLCBmaWVsZC5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLnB1c2goeyBsYWJlbDogZmllbGQubGFiZWwsIHZhbHVlIH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxhYmVsVmFsdWVQYWlyRGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5sYWJlbFZhbHVlUGFpckNvbmZpZyA9IHRoaXMuY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmNvbmZpZyA/PyB7fTtcbiAgfVxuXG4gIG9wZW5EZXRhaWxzKCkge1xuICAgIGNvbnN0IGlzRGlmZmVyZW50VGFza1NlbGVjdGVkID1cbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCAhPT1cbiAgICAgIHRoaXMuY3VzdG9tZXI/LnNlc3Npb25faWQ7XG5cbiAgICBpZiAoaXNEaWZmZXJlbnRUYXNrU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHRoaXMuY3VzdG9tZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpIHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5jb25maWc/Lm1hcHM/Lm1hcFR5cGUgPT09IFwiZ29vZ2xlLW1hcHNcIikge1xuICAgICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKFxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlsc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVuU3RyZWV0TWFwc1NlcnZpY2UucGxvdERpcmVjdGlvbnNGb3JTZWxlY3RlZFRhc2soXG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ29Ub01hcHMobG9jYXRpb24pIHtcbiAgICB3aW5kb3cub3BlbihgJHtsb2NhdGlvbn1gLCBcIl9ibGFua1wiKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xpY2tQZXJmb3JtQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKHRhc2spIHtcbiAgICB0aGlzLnJlbW92ZVRhc2suZW1pdCh0YXNrKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJcbiAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkXG4gICAgICA/ICdjdXN0b21lci10aWxlLXdyYXBwZXIgY3VzdG9tZXItdGlsZS1hY3RpdmUnXG4gICAgICA6ICdjdXN0b21lci10aWxlLXdyYXBwZXInXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXByaW1hcnktY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItZGF0YVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItdXNlcmlkXCI+XG4gICAgICAgIHt7IHRhc2tJZCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8c3RhdHVzLXBpbGxcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LnV0aWxpdHlGbGFncz8uaXNTaG93VGFza1N0YXR1c1wiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1c1wiXG4gICAgICAgIFtzdGF0dXNdPVwiXG4gICAgICAgICAgY3VzdG9tZXJbY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1cz8ucGF0aCA/PyAnc2Vzc2lvbl9zdGF0dXMnXVxuICAgICAgICBcIlxuICAgICAgPjwvc3RhdHVzLXBpbGw+XG4gICAgPC9kaXY+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiYgIWFnZW50U2VydmljZS5zaG93TWFwdmlld1wiXG4gICAgICBbaWNvbl09XCJcbiAgICAgICAgYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCA9PSBjdXN0b21lcj8uc2Vzc2lvbl9pZFxuICAgICAgICAgID8gJ3R1aUljb25DaGV2cm9uTGVmdExhcmdlJ1xuICAgICAgICAgIDogJ3R1aUljb25DaGV2cm9uUmlnaHRMYXJnZSdcbiAgICAgIFwiXG4gICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIChvbkNsaWNrKT1cIm9wZW5EZXRhaWxzKClcIlxuICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcIlxuICAgICAgW2ljb25dPVwiXG4gICAgICAgIGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgPT0gY3VzdG9tZXI/LnNlc3Npb25faWRcbiAgICAgICAgICA/ICd0dWlJY29uQ2hldnJvblVwTGFyZ2UnXG4gICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25Eb3duTGFyZ2UnXG4gICAgICBcIlxuICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICBzaXplPVwic1wiXG4gICAgICAob25DbGljayk9XCJvcGVuRGV0YWlscygpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkICYmXG4gICAgICAoYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgIGN1c3RvbWVyPy5zZXNzaW9uX2lkID09IGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgJiZcbiAgICAgIChhZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3IHx8IGFnZW50U2VydmljZS5zaG93TWFwdmlldylcbiAgICAgICAgPyAnY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyJ1xuICAgICAgICA6ICdkYXRhLWNvbGxhc3BlZCdcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1kYXRhXCI+XG4gICAgICA8a3dpa3VpLWxhYmVsLXZhbHVlLXBhaXJcbiAgICAgICAgW2NvbmZpZ109XCJsYWJlbFZhbHVlUGFpckNvbmZpZ1wiXG4gICAgICAgIFtkYXRhXT1cImxhYmVsVmFsdWVQYWlyRGF0YVwiXG4gICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICAgIDwhLS0gPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/Lm1hcHM/LnNobyAmJlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/LmlzU2hvd0Rpc3RhbmNlQW5kVGltZSAmJlxuICAgICAgICAgIG9wZW5TdHJlZXRNYXBzU2VydmljZS5nZXRTZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWUoKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1jdXN0b20tZGV0YWlsc1wiXG4gICAgICA+XG4gICAgICAgIERpc3RhbmNlOiB7eyBvcGVuU3RyZWV0TWFwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKCk/LmRpc3RhbmNlIH19IHxcbiAgICAgICAgVGltZToge3sgb3BlblN0cmVldE1hcHNTZXJ2aWNlLmdldFNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZSgpPy50aW1lIH19XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1hY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvblwiPlxuICAgICAgICA8a3dpa2lkLWFjdGlvbi1idXR0b25cbiAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgIFtjdXN0b21lcl09XCJjdXN0b21lclwiXG4gICAgICAgICAgKG9uQ2xpY2tQZXJmb3JtQWN0aW9uKT1cImhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9rd2lraWQtYWN0aW9uLWJ1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyLXRhc2stYnV0dG9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5pc0FsbG93UmVtb3ZlVGFza1wiXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25UcmFzaDInXCJcbiAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKGN1c3RvbWVyKVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LmlzU2hvd0NvcHlMaW5rXCJcbiAgICAgICAgICBpY29uPVwidHVpSWNvbkNvcHlcIlxuICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiXG4gICAgICAgICAgICBoYW5kbGVPbkNsaWNrTmV4dCh7XG4gICAgICAgICAgICAgIGN1c3RvbWVyOiBjdXN0b21lcixcbiAgICAgICAgICAgICAgc3RlcFR5cGU6ICdTSEFSRV9KT1VSTkVZX0xJTksnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXNlY29uZGFyeS1jb250YWluZXItam91cm5leS1idXR0b25zXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LmlzU2hvd01hcHMgJiYgY3VzdG9tZXI/LmlzVmFsaWRMb2NhdGlvblwiXG4gICAgICAgICAgbGFiZWw9XCJTaG93IERpcmVjdGlvbnNcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgc3R5bGVzPVwiZm9udC1zaXplOjAuN3JlbTtcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImdvVG9NYXBzKGN1c3RvbWVyLmdvb2dsZU1hcHNVcmwpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29uZmlnPy5pc0FsbG93U3RhcnRKb3VybmV5ICYmXG4gICAgICAgICAgICBhZ2VudFNlcnZpY2UuY2FuU3RhcnRKb3VybmV5KGN1c3RvbWVyLnNlc3Npb25fc3RhdHVzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgbGFiZWw9XCJTdGFydCBKb3VybmV5XCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIHN0eWxlcz1cImZvbnQtc2l6ZTowLjdyZW07XCJcbiAgICAgICAgICAob25DbGljayk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tOZXh0KHsgY3VzdG9tZXI6IGN1c3RvbWVyLCBzdGVwVHlwZTogJ1NUQVJUX0pPVVJORVknIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdGlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEvY29tcG9uZW50cy9jdXN0b21lci10aWxlL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9jdXN0b21lci10aWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUMxQyxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVl4QixNQUFNLE9BQU8scUJBQXFCO0lBd0NoQyxZQUNTLGlCQUFvQyxFQUNwQyxxQkFBNEMsRUFDNUMsWUFBMEIsRUFDekIsV0FBdUI7UUFIeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBakNqQyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBR25CLFVBQUssR0FBVyxTQUFTLENBQUM7UUFLMUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsb0JBQWUsR0FBa0IsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFFakIsaUJBQVksR0FBeUMsRUFBRSxDQUFDO1FBRXhELHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUUv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SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQVE7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELDBCQUEwQixDQUFDLEtBQVU7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOztzSUExS1UscUJBQXFCOzBIQUFyQixxQkFBcUIsa1VDM0JsQyxxdEpBMElBOzRGRC9HYSxxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2lCQUM5QztnTUFHQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVV6QyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFnQk4sb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBnZXRPYmplY3RWYWx1ZUZyb21QYXRoLFxuICBpc05vdEVtcHR5QXJyYXlcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBHb29nbGVNYXBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBZ2VudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYWdlbnQuc2VydmljZVwiO1xuaW1wb3J0IHsgT3BlblN0cmVldE1hcHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL29wZW4tc3RyZWV0LW1hcHMuc2VydmljZVwiO1xuXG5kZWNsYXJlIGNvbnN0IGdvb2dsZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY3VzdG9tZXItdGlsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2N1c3RvbWVyLXRpbGUuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJUaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICB3aW5kb3dSZXNpemVXYXRjaGVyKCkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBjdXN0b21lcjogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgaW5kZXg6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBjb25maWc6IGFueTtcblxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcblxuICB2aWV3VGFza0RldGFpbHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICB0YXNrSWQ6IGFueSA9IFwiXCI7XG5cbiAgaGVhZGVyRmllbGRzOiBBcnJheTx7IHBhdGg/OiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4gPSBbXTtcblxuICBsYWJlbFZhbHVlUGFpckNvbmZpZzogYW55ID0ge307XG5cbiAgbGFiZWxWYWx1ZVBhaXJEYXRhOiBhbnkgPSBbXTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1BlcmZvcm1BY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG5leHRTdGVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICByZW1vdmVUYXNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBnb29nbGVNYXBzU2VydmljZTogR29vZ2xlTWFwc1NlcnZpY2UsXG4gICAgcHVibGljIG9wZW5TdHJlZXRNYXBzU2VydmljZTogT3BlblN0cmVldE1hcHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcnNlRGF0YSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhY2hhbmdlc1trZXldLmZpcnN0Q2hhbmdlO1xuICAgIH07XG5cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiY3VzdG9tZXJcIikpIHtcbiAgICAgIHRoaXMuY3VzdG9tZXIgPSBjaGFuZ2VzLmN1c3RvbWVyLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMucGFyc2VEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWVGcm9tQXJyYXkocGF0aHMpIHtcbiAgICBsZXQgZGF0YSA9IFwiXCI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFycmF5LWNhbGxiYWNrLXJldHVyblxuICAgIHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIHBhdGgpO1xuICAgICAgZGF0YSA9IGAke2RhdGF9ICR7dmFsdWV9YDtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcGFyc2VEYXRhKCkge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgdGhpcy5jb25maWc/LnRhc2tVST8uaGVhZGVyPy50YXNrSWQ/LnBhdGggPz9cbiAgICAgIHRoaXMuY29uZmlnPy50YXNrSWRlbnRpZmllciA/P1xuICAgICAgXCJ1c2VyX2lkXCI7XG4gICAgdGhpcy50YXNrSWQgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGlkZW50aWZpZXIpO1xuXG4gICAgdGhpcy5oZWFkZXJGaWVsZHMgPSB0aGlzLnBhcnNlSGVhZGVyRmllbGRzKCk7XG5cbiAgICBsZXQgZGV0YWlsc0NvbmZpZyA9IFtdO1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJ0YXNrVUkuZGV0YWlscy5kYXRhXCIpICYmXG4gICAgICBpc05vdEVtcHR5QXJyYXkodGhpcy5jb25maWcudGFza1VJLmRldGFpbHMuZGF0YSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgIGRldGFpbHNDb25maWcgPSB0aGlzLmNvbmZpZy50YXNrVUkuZGV0YWlscy5kYXRhO1xuICAgICAgZGV0YWlsc0NvbmZpZy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucGF0aCkpIHtcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tQXJyYXkoZmllbGQucGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGZpZWxkLnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEucHVzaCh7IGxhYmVsOiBmaWVsZC5sYWJlbCwgdmFsdWUgfSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubGFiZWxWYWx1ZVBhaXJEYXRhID0gZGF0YTtcbiAgICB9XG5cbiAgICB0aGlzLmxhYmVsVmFsdWVQYWlyQ29uZmlnID0gdGhpcy5jb25maWc/LnRhc2tVST8uZGV0YWlscz8uY29uZmlnID8/IHt9O1xuICB9XG5cbiAgcGFyc2VIZWFkZXJGaWVsZHMoKSB7XG4gICAgbGV0IGZpZWxkc0NvbmZpZyA9IFtdO1xuXG4gICAgaWYgKFxuICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKHRoaXMuY29uZmlnLCBcInRhc2tVSS5oZWFkZXIuZmllbGRzXCIpICYmXG4gICAgICBpc05vdEVtcHR5QXJyYXkodGhpcy5jb25maWcudGFza1VJLmhlYWRlci5maWVsZHMpXG4gICAgKSB7XG4gICAgICBmaWVsZHNDb25maWcgPSB0aGlzLmNvbmZpZy50YXNrVUkuaGVhZGVyLmZpZWxkcztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza05hbWU/LnBhdGgpIHtcbiAgICAgIC8vIEJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBlYXJsaWVyIHRhc2tOYW1lIGNvbmZpZ1xuICAgICAgZmllbGRzQ29uZmlnID0gW3sgcGF0aDogdGhpcy5jb25maWcudGFza1VJLmhlYWRlci50YXNrTmFtZS5wYXRoIH1dO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHNDb25maWdcbiAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnBhdGgpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbUFycmF5KGZpZWxkLnBhdGgpPy50cmltKCkgfHwgXCJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5wYXRoKSB7XG4gICAgICAgICAgdmFsdWUgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKHRoaXMuY3VzdG9tZXIsIGZpZWxkLnBhdGgpIHx8IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4uZmllbGQsIHZhbHVlIH07XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5EZXRhaWxzKCkge1xuICAgIGNvbnN0IGlzRGlmZmVyZW50VGFza1NlbGVjdGVkID1cbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCAhPT1cbiAgICAgIHRoaXMuY3VzdG9tZXI/LnNlc3Npb25faWQ7XG5cbiAgICBpZiAoaXNEaWZmZXJlbnRUYXNrU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHRoaXMuY3VzdG9tZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpIHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5jb25maWc/Lm1hcHM/Lm1hcFR5cGUgPT09IFwiZ29vZ2xlLW1hcHNcIikge1xuICAgICAgICB0aGlzLmdvb2dsZU1hcHNTZXJ2aWNlLnBsb3REaXJlY3Rpb25zRm9yU2VsZWN0ZWRUYXNrKFxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlsc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVuU3RyZWV0TWFwc1NlcnZpY2UucGxvdERpcmVjdGlvbnNGb3JTZWxlY3RlZFRhc2soXG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ29Ub01hcHMobG9jYXRpb24pIHtcbiAgICB3aW5kb3cub3BlbihgJHtsb2NhdGlvbn1gLCBcIl9ibGFua1wiKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xpY2tQZXJmb3JtQWN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgaGFuZGxlT25DbGlja05leHQoZSkge1xuICAgIHRoaXMubmV4dFN0ZXAuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKHRhc2spIHtcbiAgICB0aGlzLnJlbW92ZVRhc2suZW1pdCh0YXNrKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJcbiAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkXG4gICAgICA/ICdjdXN0b21lci10aWxlLXdyYXBwZXIgY3VzdG9tZXItdGlsZS1hY3RpdmUnXG4gICAgICA6ICdjdXN0b21lci10aWxlLXdyYXBwZXInXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXByaW1hcnktY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItZGF0YVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtcHJpbWFyeS1jb250YWluZXItdXNlcmlkXCI+XG4gICAgICAgIHt7IHRhc2tJZCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3VzdG9tZXItdGlsZS1wcmltYXJ5LWNvbnRhaW5lci1maWVsZFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBoZWFkZXJGaWVsZHNcIlxuICAgICAgPlxuICAgICAgICB7eyBmaWVsZC52YWx1ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8c3RhdHVzLXBpbGxcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LnV0aWxpdHlGbGFncz8uaXNTaG93VGFza1N0YXR1c1wiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1c1wiXG4gICAgICAgIFtzdGF0dXNdPVwiXG4gICAgICAgICAgY3VzdG9tZXJbY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1cz8ucGF0aCA/PyAnc2Vzc2lvbl9zdGF0dXMnXVxuICAgICAgICBcIlxuICAgICAgPjwvc3RhdHVzLXBpbGw+XG4gICAgPC9kaXY+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiIWFnZW50U2VydmljZS5pc01vYmlsZVZpZXcgJiYgIWFnZW50U2VydmljZS5zaG93TWFwdmlld1wiXG4gICAgICBbaWNvbl09XCJcbiAgICAgICAgYWdlbnRTZXJ2aWNlLmN1cnJlbnRUYXNrRGV0YWlscz8uc2Vzc2lvbl9pZCA9PSBjdXN0b21lcj8uc2Vzc2lvbl9pZFxuICAgICAgICAgID8gJ3R1aUljb25DaGV2cm9uTGVmdExhcmdlJ1xuICAgICAgICAgIDogJ3R1aUljb25DaGV2cm9uUmlnaHRMYXJnZSdcbiAgICAgIFwiXG4gICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIChvbkNsaWNrKT1cIm9wZW5EZXRhaWxzKClcIlxuICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgPGt3aWt1aS1idXR0b25cbiAgICAgICpuZ0lmPVwiYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXdcIlxuICAgICAgW2ljb25dPVwiXG4gICAgICAgIGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgPT0gY3VzdG9tZXI/LnNlc3Npb25faWRcbiAgICAgICAgICA/ICd0dWlJY29uQ2hldnJvblVwTGFyZ2UnXG4gICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25Eb3duTGFyZ2UnXG4gICAgICBcIlxuICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICBzaXplPVwic1wiXG4gICAgICAob25DbGljayk9XCJvcGVuRGV0YWlscygpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21lcj8uc2Vzc2lvbl9pZCA9PSBhZ2VudFNlcnZpY2UuY3VycmVudFRhc2tEZXRhaWxzPy5zZXNzaW9uX2lkICYmXG4gICAgICAoYWdlbnRTZXJ2aWNlLmlzTW9iaWxlVmlldyB8fCBhZ2VudFNlcnZpY2Uuc2hvd01hcHZpZXcpXG4gICAgXCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgIGN1c3RvbWVyPy5zZXNzaW9uX2lkID09IGFnZW50U2VydmljZS5jdXJyZW50VGFza0RldGFpbHM/LnNlc3Npb25faWQgJiZcbiAgICAgIChhZ2VudFNlcnZpY2UuaXNNb2JpbGVWaWV3IHx8IGFnZW50U2VydmljZS5zaG93TWFwdmlldylcbiAgICAgICAgPyAnY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyJ1xuICAgICAgICA6ICdkYXRhLWNvbGxhc3BlZCdcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1kYXRhXCI+XG4gICAgICA8a3dpa3VpLWxhYmVsLXZhbHVlLXBhaXJcbiAgICAgICAgW2NvbmZpZ109XCJsYWJlbFZhbHVlUGFpckNvbmZpZ1wiXG4gICAgICAgIFtkYXRhXT1cImxhYmVsVmFsdWVQYWlyRGF0YVwiXG4gICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICAgIDwhLS0gPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/Lm1hcHM/LnNobyAmJlxuICAgICAgICAgIGFnZW50U2VydmljZS5jb25maWc/LmlzU2hvd0Rpc3RhbmNlQW5kVGltZSAmJlxuICAgICAgICAgIG9wZW5TdHJlZXRNYXBzU2VydmljZS5nZXRTZWxlY3RlZFRhc2tEaXN0YW5jZUFuZFRpbWUoKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1jdXN0b20tZGV0YWlsc1wiXG4gICAgICA+XG4gICAgICAgIERpc3RhbmNlOiB7eyBvcGVuU3RyZWV0TWFwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRUYXNrRGlzdGFuY2VBbmRUaW1lKCk/LmRpc3RhbmNlIH19IHxcbiAgICAgICAgVGltZToge3sgb3BlblN0cmVldE1hcHNTZXJ2aWNlLmdldFNlbGVjdGVkVGFza0Rpc3RhbmNlQW5kVGltZSgpPy50aW1lIH19XG4gICAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLXRpbGUtc2Vjb25kYXJ5LWNvbnRhaW5lci1hY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnPy50YXNrVUk/LmRldGFpbHM/LmFjdGlvblwiPlxuICAgICAgICA8a3dpa2lkLWFjdGlvbi1idXR0b25cbiAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgIFtjdXN0b21lcl09XCJjdXN0b21lclwiXG4gICAgICAgICAgKG9uQ2xpY2tQZXJmb3JtQWN0aW9uKT1cImhhbmRsZU9uQ2xpY2tQZXJmb3JtQWN0aW9uKCRldmVudClcIlxuICAgICAgICA+PC9rd2lraWQtYWN0aW9uLWJ1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3VzdG9tZXItdGlsZS1zZWNvbmRhcnktY29udGFpbmVyLXRhc2stYnV0dG9uc1wiPlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29uZmlnPy5pc0FsbG93UmVtb3ZlVGFza1wiXG4gICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25UcmFzaDInXCJcbiAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tSZW1vdmVUYXNrKGN1c3RvbWVyKVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LmlzU2hvd0NvcHlMaW5rXCJcbiAgICAgICAgICBpY29uPVwidHVpSWNvbkNvcHlcIlxuICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJpY29uXCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiXG4gICAgICAgICAgICBoYW5kbGVPbkNsaWNrTmV4dCh7XG4gICAgICAgICAgICAgIGN1c3RvbWVyOiBjdXN0b21lcixcbiAgICAgICAgICAgICAgc3RlcFR5cGU6ICdTSEFSRV9KT1VSTkVZX0xJTksnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b21lci10aWxlLXNlY29uZGFyeS1jb250YWluZXItam91cm5leS1idXR0b25zXCI+XG4gICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJjb25maWc/LmlzU2hvd01hcHMgJiYgY3VzdG9tZXI/LmlzVmFsaWRMb2NhdGlvblwiXG4gICAgICAgICAgbGFiZWw9XCJTaG93IERpcmVjdGlvbnNcIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgc3R5bGVzPVwiZm9udC1zaXplOjAuN3JlbTtcIlxuICAgICAgICAgIChvbkNsaWNrKT1cImdvVG9NYXBzKGN1c3RvbWVyLmdvb2dsZU1hcHNVcmwpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29uZmlnPy5pc0FsbG93U3RhcnRKb3VybmV5ICYmXG4gICAgICAgICAgICBhZ2VudFNlcnZpY2UuY2FuU3RhcnRKb3VybmV5KGN1c3RvbWVyLnNlc3Npb25fc3RhdHVzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgbGFiZWw9XCJTdGFydCBKb3VybmV5XCJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgIHN0eWxlcz1cImZvbnQtc2l6ZTowLjdyZW07XCJcbiAgICAgICAgICAob25DbGljayk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tOZXh0KHsgY3VzdG9tZXI6IGN1c3RvbWVyLCBzdGVwVHlwZTogJ1NUQVJUX0pPVVJORVknIH0pXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -2091,6 +2091,7 @@ class CustomerTileComponent {
|
|
|
2091
2091
|
this.isMobileView = false;
|
|
2092
2092
|
this.viewTaskDetails = [];
|
|
2093
2093
|
this.taskId = "";
|
|
2094
|
+
this.headerFields = [];
|
|
2094
2095
|
this.labelValuePairConfig = {};
|
|
2095
2096
|
this.labelValuePairData = [];
|
|
2096
2097
|
this.onClickPerformAction = new EventEmitter();
|
|
@@ -2127,9 +2128,10 @@ class CustomerTileComponent {
|
|
|
2127
2128
|
return data;
|
|
2128
2129
|
}
|
|
2129
2130
|
parseData() {
|
|
2130
|
-
var _a, _b, _c, _d, _e, _f;
|
|
2131
|
-
const identifier = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskIdentifier) !== null &&
|
|
2131
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
2132
|
+
const identifier = (_g = (_e = (_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.header) === null || _c === void 0 ? void 0 : _c.taskId) === null || _d === void 0 ? void 0 : _d.path) !== null && _e !== void 0 ? _e : (_f = this.config) === null || _f === void 0 ? void 0 : _f.taskIdentifier) !== null && _g !== void 0 ? _g : "user_id";
|
|
2132
2133
|
this.taskId = getObjectValueFromPath(this.customer, identifier);
|
|
2134
|
+
this.headerFields = this.parseHeaderFields();
|
|
2133
2135
|
let detailsConfig = [];
|
|
2134
2136
|
if (checkObjectPathExists(this.config, "taskUI.details.data") &&
|
|
2135
2137
|
isNotEmptyArray(this.config.taskUI.details.data)) {
|
|
@@ -2148,7 +2150,32 @@ class CustomerTileComponent {
|
|
|
2148
2150
|
});
|
|
2149
2151
|
this.labelValuePairData = data;
|
|
2150
2152
|
}
|
|
2151
|
-
this.labelValuePairConfig = (
|
|
2153
|
+
this.labelValuePairConfig = (_l = (_k = (_j = (_h = this.config) === null || _h === void 0 ? void 0 : _h.taskUI) === null || _j === void 0 ? void 0 : _j.details) === null || _k === void 0 ? void 0 : _k.config) !== null && _l !== void 0 ? _l : {};
|
|
2154
|
+
}
|
|
2155
|
+
parseHeaderFields() {
|
|
2156
|
+
var _a, _b, _c, _d;
|
|
2157
|
+
let fieldsConfig = [];
|
|
2158
|
+
if (checkObjectPathExists(this.config, "taskUI.header.fields") &&
|
|
2159
|
+
isNotEmptyArray(this.config.taskUI.header.fields)) {
|
|
2160
|
+
fieldsConfig = this.config.taskUI.header.fields;
|
|
2161
|
+
}
|
|
2162
|
+
else if ((_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.header) === null || _c === void 0 ? void 0 : _c.taskName) === null || _d === void 0 ? void 0 : _d.path) {
|
|
2163
|
+
// Backward compatible with earlier taskName config
|
|
2164
|
+
fieldsConfig = [{ path: this.config.taskUI.header.taskName.path }];
|
|
2165
|
+
}
|
|
2166
|
+
return fieldsConfig
|
|
2167
|
+
.map((field) => {
|
|
2168
|
+
var _a;
|
|
2169
|
+
let value = "";
|
|
2170
|
+
if (Array.isArray(field.path)) {
|
|
2171
|
+
value = ((_a = this.getValueFromArray(field.path)) === null || _a === void 0 ? void 0 : _a.trim()) || "";
|
|
2172
|
+
}
|
|
2173
|
+
else if (field.path) {
|
|
2174
|
+
value = getObjectValueFromPath(this.customer, field.path) || "";
|
|
2175
|
+
}
|
|
2176
|
+
return Object.assign(Object.assign({}, field), { value });
|
|
2177
|
+
})
|
|
2178
|
+
.filter((field) => field.value);
|
|
2152
2179
|
}
|
|
2153
2180
|
openDetails() {
|
|
2154
2181
|
var _a, _b, _c, _d;
|
|
@@ -2183,7 +2210,7 @@ class CustomerTileComponent {
|
|
|
2183
2210
|
}
|
|
2184
2211
|
}
|
|
2185
2212
|
/** @nocollapse */ CustomerTileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, deps: [{ token: GoogleMapsService }, { token: OpenStreetMapsService }, { token: AgentService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2186
|
-
/** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { onClickPerformAction: "onClickPerformAction", nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n {{ taskId }}\n </div>\n <status-pill\n *ngIf=\"config?.utilityFlags?.isShowTaskStatus\"\n [config]=\"config?.taskUI?.header?.taskStatus\"\n [status]=\"\n customer[config?.taskUI?.header?.taskStatus?.path ?? 'session_status']\n \"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n <!-- <div\n *ngIf=\"\n agentService.config?.maps?.sho &&\n agentService.config?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <ng-container *ngFor=\"let action of config?.taskUI?.details?.action\">\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n <!-- <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div> -->\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;margin:1rem;padding:1rem .25rem 1rem 1rem;border-radius:1rem;border:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: StatusPillComponent, selector: "status-pill", inputs: ["config", "status"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i1.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.
|
|
2213
|
+
/** @nocollapse */ CustomerTileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomerTileComponent, selector: "customer-tile", inputs: { customer: "customer", index: "index", config: "config" }, outputs: { onClickPerformAction: "onClickPerformAction", nextStep: "nextStep", removeTask: "removeTask" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id\n ? 'customer-tile-wrapper customer-tile-active'\n : 'customer-tile-wrapper'\n \"\n>\n <div class=\"customer-tile-primary-container\">\n <div class=\"customer-tile-primary-container-data\">\n <div class=\"customer-tile-primary-container-userid\">\n {{ taskId }}\n </div>\n <div\n class=\"customer-tile-primary-container-field\"\n *ngFor=\"let field of headerFields\"\n >\n {{ field.value }}\n </div>\n <status-pill\n *ngIf=\"config?.utilityFlags?.isShowTaskStatus\"\n [config]=\"config?.taskUI?.header?.taskStatus\"\n [status]=\"\n customer[config?.taskUI?.header?.taskStatus?.path ?? 'session_status']\n \"\n ></status-pill>\n </div>\n <kwikui-button\n *ngIf=\"!agentService.isMobileView && !agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronLeftLarge'\n : 'tuiIconChevronRightLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"agentService.isMobileView || agentService.showMapview\"\n [icon]=\"\n agentService.currentTaskDetails?.session_id == customer?.session_id\n ? 'tuiIconChevronUpLarge'\n : 'tuiIconChevronDownLarge'\n \"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"openDetails()\"\n ></kwikui-button>\n </div>\n <div\n *ngIf=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n \"\n [ngClass]=\"\n customer?.session_id == agentService.currentTaskDetails?.session_id &&\n (agentService.isMobileView || agentService.showMapview)\n ? 'customer-tile-secondary-container'\n : 'data-collasped'\n \"\n >\n <div class=\"customer-tile-secondary-container-data\">\n <kwikui-label-value-pair\n [config]=\"labelValuePairConfig\"\n [data]=\"labelValuePairData\"\n ></kwikui-label-value-pair>\n <!-- <div\n *ngIf=\"\n agentService.config?.maps?.sho &&\n agentService.config?.isShowDistanceAndTime &&\n openStreetMapsService.getSelectedTaskDistanceAndTime()\n \"\n class=\"customer-tile-secondary-container-custom-details\"\n >\n Distance: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.distance }} |\n Time: {{ openStreetMapsService.getSelectedTaskDistanceAndTime()?.time }}\n </div> -->\n </div>\n <div class=\"customer-tile-secondary-container-actions\">\n <ng-container *ngFor=\"let action of config?.taskUI?.details?.action\">\n <kwikid-action-button\n [action]=\"action\"\n [config]=\"config\"\n [customer]=\"customer\"\n (onClickPerformAction)=\"handleOnClickPerformAction($event)\"\n ></kwikid-action-button>\n </ng-container>\n <!-- <div class=\"customer-tile-secondary-container-task-buttons\">\n <kwikui-button\n *ngIf=\"config?.isAllowRemoveTask\"\n [icon]=\"'tuiIconTrash2'\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"handleOnClickRemoveTask(customer)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config?.isShowCopyLink\"\n icon=\"tuiIconCopy\"\n [shape]=\"'rounded'\"\n appearance=\"icon\"\n size=\"s\"\n (onClick)=\"\n handleOnClickNext({\n customer: customer,\n stepType: 'SHARE_JOURNEY_LINK'\n })\n \"\n ></kwikui-button>\n </div>\n <div class=\"customer-tile-secondary-container-journey-buttons\">\n <kwikui-button\n *ngIf=\"config?.isShowMaps && customer?.isValidLocation\"\n label=\"Show Directions\"\n appearance=\"flat\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"goToMaps(customer.googleMapsUrl)\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"\n config?.isAllowStartJourney &&\n agentService.canStartJourney(customer.session_status)\n \"\n label=\"Start Journey\"\n appearance=\"primary\"\n size=\"s\"\n styles=\"font-size:0.7rem;\"\n (onClick)=\"\n handleOnClickNext({ customer: customer, stepType: 'START_JOURNEY' })\n \"\n ></kwikui-button>\n </div> -->\n </div>\n </div>\n</div>\n", styles: [".customer-tile-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;flex:1;overflow:auto;grid-gap:.5rem;gap:.5rem;margin:1rem;padding:1rem .25rem 1rem 1rem;border-radius:1rem;border:.5px solid #ddd}.customer-tile-wrapper .customer-tile-primary-container{display:flex;grid-gap:.5rem;gap:.5rem;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;width:100%;height:100%}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data{padding-left:.2rem;grid-gap:.6rem;gap:.6rem;display:flex;flex-direction:column;flex-wrap:wrap;align-content:stretch;justify-content:flex-start;align-items:flex-start}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-userid{font-weight:500;font-size:1.1rem;line-height:1rem}.customer-tile-wrapper .customer-tile-primary-container .customer-tile-primary-container-data .customer-tile-primary-container-field{font-weight:400;font-size:.9rem;line-height:1rem;color:#555;word-break:break-word}.customer-tile-wrapper .customer-tile-secondary-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data{padding:.4rem .2rem;display:flex;flex-direction:column;font-size:.7rem;grid-gap:.3rem;gap:.3rem}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-data .customer-tile-secondary-container-custom-details{width:100%;height:100%;line-height:.9rem;word-wrap:break-word}.customer-tile-wrapper .customer-tile-secondary-container .customer-tile-secondary-container-actions{padding:.5rem 0;display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:flex-start;grid-gap:.5rem;gap:.5rem}.customer-tile-wrapper .data-collasped{display:none}.customer-tile-active{background-color:#dcedfd}\n"], components: [{ type: StatusPillComponent, selector: "status-pill", inputs: ["config", "status"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i1.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: ActionButtonComponent, selector: "kwikid-action-button", inputs: ["action", "config", "customer"], outputs: ["onClickPerformAction"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2187
2214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomerTileComponent, decorators: [{
|
|
2188
2215
|
type: Component,
|
|
2189
2216
|
args: [{
|