systelab-components
Version:
systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.
94 lines • 18.1 kB
JavaScript
import { Injectable } from '@angular/core';
import { EMPTY } from 'rxjs';
import { MessagePopupViewComponent } from './message-popup-view.component';
import { MessageWithIconComponent } from './message-with-icon.component';
import * as i0 from "@angular/core";
import * as i1 from "systelab-translate";
import * as i2 from "../dialog/dialog.service";
import * as i3 from "@angular/cdk/overlay";
export class MessagePopupButton {
constructor(title, returnValue, cssClass, focus = false) {
this.title = title;
this.returnValue = returnValue;
this.cssClass = cssClass;
this.focus = focus;
}
}
export class MessagePopupService {
static { this.breakpointMedium = 500; }
constructor(i18nService, dialogService, overlayDispatcher) {
this.i18nService = i18nService;
this.dialogService = dialogService;
this.overlayDispatcher = overlayDispatcher;
}
showErrorPopup(titleDescription, errorDescription, modalClass, width, height) {
if (this.isPopupAlreadyShowed(titleDescription, errorDescription)) {
return EMPTY;
}
return this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_ERROR, errorDescription, modalClass, width, height, []);
}
showWarningPopup(titleDescription, warningDescription, modalClass, width, height) {
return this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_WARNING, warningDescription, modalClass, width, height, []);
}
showInformationPopup(titleDescription, messageDescription, modalClass, width, height) {
return this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_INFO, messageDescription, modalClass, width, height, []);
}
showYesNoQuestionPopup(titleDescription, messageDescription, modalClass, width, height, template) {
const buttons = this.getButtonsTemplate(template);
return this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_QUESTION, messageDescription, modalClass, width, height, buttons);
}
showCustomQuestionPopup(titleDescription, messageDescription, modalClass, width, height, buttons, icon) {
return this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_QUESTION, messageDescription, modalClass, width, height, buttons, icon);
}
showAskAgainPopup(titleDescription, messageDescription, modalClass, width, height, buttons, icon, messageAskAgain) {
return this.showPopup(titleDescription, MessageWithIconComponent.MESSAGE_QUESTION, messageDescription, modalClass, width, height, buttons, icon, messageAskAgain);
}
showPopup(title, type, message, modalClass, width, height, buttons, icon, messageAskAgain) {
const defaultWidth = 600;
const maxWidth = 700;
const minWidth = 499;
const defaultHeight = 300;
const maxHeight = 400;
const minHeight = 280;
const parameters = MessagePopupViewComponent.getParameters();
parameters.title = title;
parameters.type = type;
parameters.msg = message;
parameters.buttons = buttons;
parameters.width = width ? width : defaultWidth;
parameters.height = height ? height : defaultHeight;
parameters.maxWidth = maxWidth;
parameters.minWidth = minWidth;
parameters.maxHeight = maxHeight;
parameters.minHeight = minHeight;
parameters.icon = icon;
parameters.askAgain = messageAskAgain !== undefined && messageAskAgain.length > 0;
parameters.msgAskAgain = messageAskAgain;
return this.dialogService.showDialog(MessagePopupViewComponent, parameters);
}
getButtonsTemplate(template) {
const buttons = [];
const availableTemplates = {
'outline-danger': 'btn-outline-danger',
'danger': 'btn-danger',
'outline-warning': 'btn-outline-warning',
'warning': 'btn-warning',
'primary': 'btn-primary',
'outline-primary': 'btn-outline-primary',
};
const classTemplate = availableTemplates[template] || 'btn-outline-primary';
buttons.push(new MessagePopupButton(this.i18nService.instant('COMMON_NO'), false, 'btn-link', template?.includes('danger')));
buttons.push(new MessagePopupButton(this.i18nService.instant('COMMON_YES'), true, classTemplate));
return buttons;
}
isPopupAlreadyShowed(title, message) {
return this.overlayDispatcher._attachedOverlays.some((overlayRef) => overlayRef.overlayElement.textContent?.startsWith(title + message));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MessagePopupService, deps: [{ token: i1.I18nService }, { token: i2.DialogService }, { token: i3.OverlayKeyboardDispatcher }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MessagePopupService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: MessagePopupService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.I18nService }, { type: i2.DialogService }, { type: i3.OverlayKeyboardDispatcher }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3B1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItY29tcG9uZW50cy9zcmMvbGliL21vZGFsL21lc3NhZ2UtcG9wdXAvbWVzc2FnZS1wb3B1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLEtBQUssRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQW9CLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBRzNGLE1BQU0sT0FBTyxrQkFBa0I7SUFDOUIsWUFBbUIsS0FBYSxFQUFTLFdBQWdCLEVBQVMsUUFBaUIsRUFBUyxRQUFpQixLQUFLO1FBQS9GLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQVM7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUNsSCxDQUFDO0NBQ0Q7QUFHRCxNQUFNLE9BQU8sbUJBQW1CO2FBRVIscUJBQWdCLEdBQUcsR0FBRyxBQUFOLENBQU87SUFFOUMsWUFBc0IsV0FBd0IsRUFBWSxhQUE0QixFQUFVLGlCQUE0QztRQUF0SCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFZLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEyQjtJQUM1SSxDQUFDO0lBRU0sY0FBYyxDQUFDLGdCQUF3QixFQUFFLGdCQUF3QixFQUFFLFVBQW1CLEVBQUUsS0FBYyxFQUFFLE1BQWU7UUFDN0gsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUNsRSxPQUFPLEtBQUssQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUNwQixnQkFBZ0IsRUFDaEIsd0JBQXdCLENBQUMsYUFBYSxFQUN0QyxnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sRUFBRSxDQUNGLENBQUM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsZ0JBQXdCLEVBQUUsa0JBQTBCLEVBQUUsVUFBbUIsRUFBRSxLQUFjLEVBQUUsTUFBZTtRQUNqSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ3BCLGdCQUFnQixFQUNoQix3QkFBd0IsQ0FBQyxlQUFlLEVBQ3hDLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixFQUFFLENBQ0YsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxnQkFBd0IsRUFBRSxrQkFBMEIsRUFBRSxVQUFtQixFQUFFLEtBQWMsRUFBRSxNQUFlO1FBQ3JJLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FDcEIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixDQUFDLFlBQVksRUFDckMsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLEVBQUUsQ0FDRixDQUFDO0lBQ0gsQ0FBQztJQUVNLHNCQUFzQixDQUFDLGdCQUF3QixFQUFFLGtCQUEwQixFQUFFLFVBQW1CLEVBQUUsS0FBYyxFQUFFLE1BQWUsRUFBRSxRQUFpQjtRQUMxSixNQUFNLE9BQU8sR0FBeUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1SSxDQUFDO0lBRU0sdUJBQXVCLENBQUMsZ0JBQXdCLEVBQUUsa0JBQTBCLEVBQUUsVUFBbUIsRUFBRSxLQUFjLEVBQUUsTUFBZSxFQUFFLE9BQThCLEVBQUUsSUFBdUI7UUFDak0sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsSixDQUFDO0lBRU0saUJBQWlCLENBQUMsZ0JBQXdCLEVBQUUsa0JBQTBCLEVBQUUsVUFBbUIsRUFBRSxLQUFjLEVBQUUsTUFBZSxFQUFFLE9BQThCLEVBQUUsSUFBdUIsRUFBRSxlQUF3QjtRQUNyTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNuSyxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsT0FBZSxFQUFFLFVBQW1CLEVBQUUsS0FBYyxFQUFFLE1BQWUsRUFBRSxPQUE4QixFQUFFLElBQXVCLEVBQUUsZUFBd0I7UUFFeE0sTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNyQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDckIsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQzFCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUN0QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFFdEIsTUFBTSxVQUFVLEdBQUcseUJBQXlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0QsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDekIsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDdkIsVUFBVSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUM7UUFDekIsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDN0IsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2hELFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUVwRCxVQUFVLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvQixVQUFVLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUUvQixVQUFVLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUNqQyxVQUFVLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUVqQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUV2QixVQUFVLENBQUMsUUFBUSxHQUFHLGVBQWUsS0FBSyxTQUFTLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDbEYsVUFBVSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFFekMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsUUFBZTtRQUN6QyxNQUFNLE9BQU8sR0FBeUIsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQVE7WUFDL0IsZ0JBQWdCLEVBQUUsb0JBQW9CO1lBQ3RDLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLGlCQUFpQixFQUFFLHFCQUFxQjtZQUN4QyxTQUFTLEVBQUUsYUFBYTtZQUN4QixTQUFTLEVBQUMsYUFBYTtZQUN2QixpQkFBaUIsRUFBRSxxQkFBcUI7U0FDeEMsQ0FBQTtRQUNELE1BQU0sYUFBYSxHQUFXLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDO1FBRXBGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdILE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNsRyxPQUFPLE9BQU8sQ0FBQztJQUNoQixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBWSxFQUFFLE9BQWU7UUFDekQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQy9FLFVBQVUsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQS9HVyxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQURQLE1BQU07OzJGQUNsQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFTVBUWSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJ3N5c3RlbGFiLXRyYW5zbGF0ZSc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VQb3B1cFZpZXdDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtcG9wdXAtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcHVwSWNvbiwgTWVzc2FnZVdpdGhJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLXdpdGgtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtPdmVybGF5S2V5Ym9hcmREaXNwYXRjaGVyLCBPdmVybGF5UmVmfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VQb3B1cEJ1dHRvbiB7XG5cdGNvbnN0cnVjdG9yKHB1YmxpYyB0aXRsZTogc3RyaW5nLCBwdWJsaWMgcmV0dXJuVmFsdWU6IGFueSwgcHVibGljIGNzc0NsYXNzPzogc3RyaW5nLCBwdWJsaWMgZm9jdXM6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHR9XG59XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VQb3B1cFNlcnZpY2Uge1xuXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgYnJlYWtwb2ludE1lZGl1bSA9IDUwMDtcblxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLCBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgcHJpdmF0ZSBvdmVybGF5RGlzcGF0Y2hlcjogT3ZlcmxheUtleWJvYXJkRGlzcGF0Y2hlcikge1xuXHR9XG5cblx0cHVibGljIHNob3dFcnJvclBvcHVwKHRpdGxlRGVzY3JpcHRpb246IHN0cmluZywgZXJyb3JEZXNjcmlwdGlvbjogc3RyaW5nLCBtb2RhbENsYXNzPzogc3RyaW5nLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRpZiAodGhpcy5pc1BvcHVwQWxyZWFkeVNob3dlZCh0aXRsZURlc2NyaXB0aW9uLCBlcnJvckRlc2NyaXB0aW9uKSkge1xuXHRcdFx0cmV0dXJuIEVNUFRZO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnNob3dQb3B1cChcblx0XHRcdHRpdGxlRGVzY3JpcHRpb24sXG5cdFx0XHRNZXNzYWdlV2l0aEljb25Db21wb25lbnQuTUVTU0FHRV9FUlJPUixcblx0XHRcdGVycm9yRGVzY3JpcHRpb24sXG5cdFx0XHRtb2RhbENsYXNzLFxuXHRcdFx0d2lkdGgsXG5cdFx0XHRoZWlnaHQsXG5cdFx0XHRbXVxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgc2hvd1dhcm5pbmdQb3B1cCh0aXRsZURlc2NyaXB0aW9uOiBzdHJpbmcsIHdhcm5pbmdEZXNjcmlwdGlvbjogc3RyaW5nLCBtb2RhbENsYXNzPzogc3RyaW5nLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5zaG93UG9wdXAoXG5cdFx0XHR0aXRsZURlc2NyaXB0aW9uLFxuXHRcdFx0TWVzc2FnZVdpdGhJY29uQ29tcG9uZW50Lk1FU1NBR0VfV0FSTklORyxcblx0XHRcdHdhcm5pbmdEZXNjcmlwdGlvbixcblx0XHRcdG1vZGFsQ2xhc3MsXG5cdFx0XHR3aWR0aCxcblx0XHRcdGhlaWdodCxcblx0XHRcdFtdXG5cdFx0KTtcblx0fVxuXG5cdHB1YmxpYyBzaG93SW5mb3JtYXRpb25Qb3B1cCh0aXRsZURlc2NyaXB0aW9uOiBzdHJpbmcsIG1lc3NhZ2VEZXNjcmlwdGlvbjogc3RyaW5nLCBtb2RhbENsYXNzPzogc3RyaW5nLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5zaG93UG9wdXAoXG5cdFx0XHR0aXRsZURlc2NyaXB0aW9uLFxuXHRcdFx0TWVzc2FnZVdpdGhJY29uQ29tcG9uZW50Lk1FU1NBR0VfSU5GTyxcblx0XHRcdG1lc3NhZ2VEZXNjcmlwdGlvbixcblx0XHRcdG1vZGFsQ2xhc3MsXG5cdFx0XHR3aWR0aCxcblx0XHRcdGhlaWdodCxcblx0XHRcdFtdXG5cdFx0KTtcblx0fVxuXG5cdHB1YmxpYyBzaG93WWVzTm9RdWVzdGlvblBvcHVwKHRpdGxlRGVzY3JpcHRpb246IHN0cmluZywgbWVzc2FnZURlc2NyaXB0aW9uOiBzdHJpbmcsIG1vZGFsQ2xhc3M/OiBzdHJpbmcsIHdpZHRoPzogbnVtYmVyLCBoZWlnaHQ/OiBudW1iZXIsIHRlbXBsYXRlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRjb25zdCBidXR0b25zOiBNZXNzYWdlUG9wdXBCdXR0b25bXSA9IHRoaXMuZ2V0QnV0dG9uc1RlbXBsYXRlKHRlbXBsYXRlKTtcblx0XHRyZXR1cm4gdGhpcy5zaG93UG9wdXAodGl0bGVEZXNjcmlwdGlvbiwgTWVzc2FnZVdpdGhJY29uQ29tcG9uZW50Lk1FU1NBR0VfUVVFU1RJT04sIG1lc3NhZ2VEZXNjcmlwdGlvbiwgbW9kYWxDbGFzcywgd2lkdGgsIGhlaWdodCwgYnV0dG9ucyk7XG5cdH1cblxuXHRwdWJsaWMgc2hvd0N1c3RvbVF1ZXN0aW9uUG9wdXAodGl0bGVEZXNjcmlwdGlvbjogc3RyaW5nLCBtZXNzYWdlRGVzY3JpcHRpb246IHN0cmluZywgbW9kYWxDbGFzcz86IHN0cmluZywgd2lkdGg/OiBudW1iZXIsIGhlaWdodD86IG51bWJlciwgYnV0dG9ucz86IE1lc3NhZ2VQb3B1cEJ1dHRvbltdLCBpY29uPzogTWVzc2FnZVBvcHVwSWNvbik6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuc2hvd1BvcHVwKHRpdGxlRGVzY3JpcHRpb24sIE1lc3NhZ2VXaXRoSWNvbkNvbXBvbmVudC5NRVNTQUdFX1FVRVNUSU9OLCBtZXNzYWdlRGVzY3JpcHRpb24sIG1vZGFsQ2xhc3MsIHdpZHRoLCBoZWlnaHQsIGJ1dHRvbnMsIGljb24pO1xuXHR9XG5cblx0cHVibGljIHNob3dBc2tBZ2FpblBvcHVwKHRpdGxlRGVzY3JpcHRpb246IHN0cmluZywgbWVzc2FnZURlc2NyaXB0aW9uOiBzdHJpbmcsIG1vZGFsQ2xhc3M/OiBzdHJpbmcsIHdpZHRoPzogbnVtYmVyLCBoZWlnaHQ/OiBudW1iZXIsIGJ1dHRvbnM/OiBNZXNzYWdlUG9wdXBCdXR0b25bXSwgaWNvbj86IE1lc3NhZ2VQb3B1cEljb24sIG1lc3NhZ2VBc2tBZ2Fpbj86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuc2hvd1BvcHVwKHRpdGxlRGVzY3JpcHRpb24sIE1lc3NhZ2VXaXRoSWNvbkNvbXBvbmVudC5NRVNTQUdFX1FVRVNUSU9OLCBtZXNzYWdlRGVzY3JpcHRpb24sIG1vZGFsQ2xhc3MsIHdpZHRoLCBoZWlnaHQsIGJ1dHRvbnMsIGljb24sIG1lc3NhZ2VBc2tBZ2Fpbik7XG5cdH1cblxuXHRwcm90ZWN0ZWQgc2hvd1BvcHVwKHRpdGxlOiBzdHJpbmcsIHR5cGU6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCBtb2RhbENsYXNzPzogc3RyaW5nLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyLCBidXR0b25zPzogTWVzc2FnZVBvcHVwQnV0dG9uW10sIGljb24/OiBNZXNzYWdlUG9wdXBJY29uLCBtZXNzYWdlQXNrQWdhaW4/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG5cdFx0Y29uc3QgZGVmYXVsdFdpZHRoID0gNjAwO1xuXHRcdGNvbnN0IG1heFdpZHRoID0gNzAwO1xuXHRcdGNvbnN0IG1pbldpZHRoID0gNDk5O1xuXHRcdGNvbnN0IGRlZmF1bHRIZWlnaHQgPSAzMDA7XG5cdFx0Y29uc3QgbWF4SGVpZ2h0ID0gNDAwO1xuXHRcdGNvbnN0IG1pbkhlaWdodCA9IDI4MDtcblxuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSBNZXNzYWdlUG9wdXBWaWV3Q29tcG9uZW50LmdldFBhcmFtZXRlcnMoKTtcblx0XHRwYXJhbWV0ZXJzLnRpdGxlID0gdGl0bGU7XG5cdFx0cGFyYW1ldGVycy50eXBlID0gdHlwZTtcblx0XHRwYXJhbWV0ZXJzLm1zZyA9IG1lc3NhZ2U7XG5cdFx0cGFyYW1ldGVycy5idXR0b25zID0gYnV0dG9ucztcblx0XHRwYXJhbWV0ZXJzLndpZHRoID0gd2lkdGggPyB3aWR0aCA6IGRlZmF1bHRXaWR0aDtcblx0XHRwYXJhbWV0ZXJzLmhlaWdodCA9IGhlaWdodCA/IGhlaWdodCA6IGRlZmF1bHRIZWlnaHQ7XG5cblx0XHRwYXJhbWV0ZXJzLm1heFdpZHRoID0gbWF4V2lkdGg7XG5cdFx0cGFyYW1ldGVycy5taW5XaWR0aCA9IG1pbldpZHRoO1xuXG5cdFx0cGFyYW1ldGVycy5tYXhIZWlnaHQgPSBtYXhIZWlnaHQ7XG5cdFx0cGFyYW1ldGVycy5taW5IZWlnaHQgPSBtaW5IZWlnaHQ7XG5cblx0XHRwYXJhbWV0ZXJzLmljb24gPSBpY29uO1xuXG5cdFx0cGFyYW1ldGVycy5hc2tBZ2FpbiA9IG1lc3NhZ2VBc2tBZ2FpbiAhPT0gdW5kZWZpbmVkICYmIG1lc3NhZ2VBc2tBZ2Fpbi5sZW5ndGggPiAwO1xuXHRcdHBhcmFtZXRlcnMubXNnQXNrQWdhaW4gPSBtZXNzYWdlQXNrQWdhaW47XG5cblx0XHRyZXR1cm4gdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dEaWFsb2coTWVzc2FnZVBvcHVwVmlld0NvbXBvbmVudCwgcGFyYW1ldGVycyk7XG5cdH1cblxuXHRwcml2YXRlIGdldEJ1dHRvbnNUZW1wbGF0ZSh0ZW1wbGF0ZTpzdHJpbmcpOiBNZXNzYWdlUG9wdXBCdXR0b25bXSB7XG5cdFx0Y29uc3QgYnV0dG9uczogTWVzc2FnZVBvcHVwQnV0dG9uW10gPSBbXTtcblx0XHRjb25zdCBhdmFpbGFibGVUZW1wbGF0ZXM6IGFueSA9IHtcblx0XHRcdCdvdXRsaW5lLWRhbmdlcic6ICdidG4tb3V0bGluZS1kYW5nZXInLFxuXHRcdFx0J2Rhbmdlcic6ICdidG4tZGFuZ2VyJyxcblx0XHRcdCdvdXRsaW5lLXdhcm5pbmcnOiAnYnRuLW91dGxpbmUtd2FybmluZycsXG5cdFx0XHQnd2FybmluZyc6ICdidG4td2FybmluZycsXG5cdFx0XHQncHJpbWFyeSc6J2J0bi1wcmltYXJ5Jyxcblx0XHRcdCdvdXRsaW5lLXByaW1hcnknOiAnYnRuLW91dGxpbmUtcHJpbWFyeScsXG5cdFx0fVxuXHRcdGNvbnN0IGNsYXNzVGVtcGxhdGU6IHN0cmluZyA9IGF2YWlsYWJsZVRlbXBsYXRlc1t0ZW1wbGF0ZV0gfHwgJ2J0bi1vdXRsaW5lLXByaW1hcnknO1xuXG5cdFx0YnV0dG9ucy5wdXNoKG5ldyBNZXNzYWdlUG9wdXBCdXR0b24odGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdDT01NT05fTk8nKSwgZmFsc2UsICdidG4tbGluaycsIHRlbXBsYXRlPy5pbmNsdWRlcygnZGFuZ2VyJykpKTtcblx0XHRidXR0b25zLnB1c2gobmV3IE1lc3NhZ2VQb3B1cEJ1dHRvbih0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0NPTU1PTl9ZRVMnKSwgdHJ1ZSwgY2xhc3NUZW1wbGF0ZSkpO1xuXHRcdHJldHVybiBidXR0b25zO1xuXHR9XG5cblx0cHJpdmF0ZSBpc1BvcHVwQWxyZWFkeVNob3dlZCh0aXRsZTpzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm92ZXJsYXlEaXNwYXRjaGVyLl9hdHRhY2hlZE92ZXJsYXlzLnNvbWUoKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpID0+XG5cdFx0XHRvdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnRleHRDb250ZW50Py5zdGFydHNXaXRoKHRpdGxlICsgbWVzc2FnZSkpO1xuXHR9XG5cbn1cbiJdfQ==