@elite.framework/ng.ui.core 1.0.62 → 1.0.64
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/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs +2 -0
- package/fesm2022/elite.framework-ng.ui.core-custom-switch.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-formly-ui-all.mjs +8 -2
- package/fesm2022/elite.framework-ng.ui.core-formly-ui-all.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs +29 -31
- package/fesm2022/elite.framework-ng.ui.core-generic-button.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs +124 -8
- package/fesm2022/elite.framework-ng.ui.core-generic-crud-table.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs +31 -7
- package/fesm2022/elite.framework-ng.ui.core-generic-dialog.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-selector.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs +9 -4
- package/fesm2022/elite.framework-ng.ui.core-generic-table.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs +398 -0
- package/fesm2022/elite.framework-ng.ui.core-generic-view.mjs.map +1 -0
- package/fesm2022/elite.framework-ng.ui.core-label-type.mjs +44 -1
- package/fesm2022/elite.framework-ng.ui.core-label-type.mjs.map +1 -1
- package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs +44 -1
- package/fesm2022/elite.framework-ng.ui.core-wrappers.mjs.map +1 -1
- package/generic-crud-table/index.d.ts +13 -2
- package/generic-dialog/index.d.ts +2 -2
- package/generic-table/index.d.ts +4 -1
- package/generic-view/README.md +3 -0
- package/generic-view/index.d.ts +96 -0
- package/label-type/index.d.ts +9 -1
- package/package.json +30 -26
- package/wrappers/index.d.ts +6 -1
|
@@ -99,11 +99,29 @@ class GenericDialogComponent {
|
|
|
99
99
|
else {
|
|
100
100
|
this.model = {};
|
|
101
101
|
}
|
|
102
|
+
switch (mode) {
|
|
103
|
+
case 'create':
|
|
104
|
+
this.isEditMode = false;
|
|
105
|
+
this.isViewMode = false;
|
|
106
|
+
this.model = {};
|
|
107
|
+
break;
|
|
108
|
+
case 'edit':
|
|
109
|
+
this.isEditMode = true;
|
|
110
|
+
this.isViewMode = false;
|
|
111
|
+
break;
|
|
112
|
+
case 'view':
|
|
113
|
+
this.isEditMode = false;
|
|
114
|
+
this.isViewMode = true;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
const modeConfig = typeof this.displayMode === 'string'
|
|
118
|
+
? this.displayMode
|
|
119
|
+
: this.displayMode[mode] ?? 'drawer';
|
|
102
120
|
// Trigger form opening based on displayMode
|
|
103
|
-
if (
|
|
121
|
+
if (modeConfig === 'drawer') {
|
|
104
122
|
this.drawerVisible = true;
|
|
105
123
|
}
|
|
106
|
-
else if (
|
|
124
|
+
else if (modeConfig === 'dialog') {
|
|
107
125
|
this.dialogVisible = true;
|
|
108
126
|
}
|
|
109
127
|
}
|
|
@@ -132,10 +150,14 @@ class GenericDialogComponent {
|
|
|
132
150
|
break;
|
|
133
151
|
}
|
|
134
152
|
// Auto-show the form
|
|
135
|
-
|
|
153
|
+
const modeConfig = typeof this.displayMode === 'string'
|
|
154
|
+
? this.displayMode
|
|
155
|
+
: this.displayMode[this.forceState] ?? 'drawer';
|
|
156
|
+
// Trigger form opening based on displayMode
|
|
157
|
+
if (modeConfig === 'drawer') {
|
|
136
158
|
this.drawerVisible = true;
|
|
137
159
|
}
|
|
138
|
-
else if (
|
|
160
|
+
else if (modeConfig === 'dialog') {
|
|
139
161
|
this.dialogVisible = true;
|
|
140
162
|
}
|
|
141
163
|
}
|
|
@@ -205,7 +227,7 @@ class GenericDialogComponent {
|
|
|
205
227
|
this.action.emit({ name: 'cancel', row: null });
|
|
206
228
|
}
|
|
207
229
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
208
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericDialogComponent, isStandalone: true, selector: "app-generic-dialog", inputs: { service: "service", formFields: "formFields", model: "model", apiName: "apiName", idField: "idField", dialogMaxWidth: "dialogMaxWidth", displayMode: "displayMode", mode: "mode", forceState: "forceState", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", isViewMode: "isViewMode", isEditMode: "isEditMode", useConfirmOnSave: "useConfirmOnSave", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", beforeSaveTransform: "beforeSaveTransform", hideTable: "hideTable", autoShowForm: "autoShowForm" }, outputs: { action: "action", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", visibleChange: "visibleChange" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<!-- Drawer -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\r\ndisplayMode === 'drawer'))) {\r\n<p-drawer\r\n [(visible)]=\"drawerVisible\"\r\n [closable]=\"true\"\r\n [dismissible]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [styleClass]=\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [blockScroll]=\"mode !== 'form-only'\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <span class=\"font-bold text-lg\">\r\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\r\n translate): ('VIEW' | translate) }}\r\n </span>\r\n </ng-template>\r\n <!-- (ngSubmit)=\"onSubmit()\" -->\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n\r\n <ng-template pTemplate=\"footer\" *ngIf=\"!isViewMode\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ 'CANCEL' | translate }}\"\r\n severity=\"danger\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n}\r\n<!-- Dialog -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\r\ndisplayMode === 'dialog'))) {\r\n<p-dialog\r\n [(visible)]=\"dialogVisible\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [header]=\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [style]=\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\"\r\n [closable]=\"mode !== 'form-only'\"\r\n [dismissableMask]=\"mode !== 'form-only'\"\r\n>\r\n <!-- [breakpoints]=\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\" -->\r\n <div class=\"relative\">\r\n <div\r\n *ngIf=\"isViewMode\"\r\n class=\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\"\r\n ></div>\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n </div>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n *ngIf=\"!isViewMode\"\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n (click)=\"onSubmit()\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\"\r\n severity=\"secondary\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n}\r\n\r\n<!-- Inline Form for form-only mode -->\r\n@if (mode === 'form-only' && displayMode === 'inline'){\r\n<div class=\"w-full\">\r\n <form *ngIf=\"form\" [formGroup]=\"form\"
|
|
230
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: GenericDialogComponent, isStandalone: true, selector: "app-generic-dialog", inputs: { form: "form", service: "service", formFields: "formFields", model: "model", apiName: "apiName", idField: "idField", dialogMaxWidth: "dialogMaxWidth", displayMode: "displayMode", mode: "mode", forceState: "forceState", drawerVisible: "drawerVisible", dialogVisible: "dialogVisible", isViewMode: "isViewMode", isEditMode: "isEditMode", useConfirmOnSave: "useConfirmOnSave", loading: "loading", errorMsg: "errorMsg", errorMessage: "errorMessage", beforeSaveTransform: "beforeSaveTransform", hideTable: "hideTable", autoShowForm: "autoShowForm" }, outputs: { action: "action", afterSave: "afterSave", afterDelete: "afterDelete", beforeSave: "beforeSave", beforeDelete: "beforeDelete", formCancel: "formCancel", formInit: "formInit", dataLoaded: "dataLoaded", selectionChange: "selectionChange", error: "error", visibleChange: "visibleChange" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: "<!-- Drawer -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\r\ndisplayMode === 'drawer'))) {\r\n<p-drawer\r\n [(visible)]=\"drawerVisible\"\r\n [closable]=\"true\"\r\n [dismissible]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [styleClass]=\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [blockScroll]=\"mode !== 'form-only'\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <span class=\"font-bold text-lg\">\r\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\r\n translate): ('VIEW' | translate) }}\r\n </span>\r\n </ng-template>\r\n <!-- (ngSubmit)=\"onSubmit()\" -->\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n\r\n <ng-template pTemplate=\"footer\" *ngIf=\"!isViewMode\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ 'CANCEL' | translate }}\"\r\n severity=\"danger\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n}\r\n<!-- Dialog -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\r\ndisplayMode === 'dialog'))) {\r\n<p-dialog\r\n [(visible)]=\"dialogVisible\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [header]=\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [style]=\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\"\r\n [closable]=\"mode !== 'form-only'\"\r\n [dismissableMask]=\"mode !== 'form-only'\"\r\n>\r\n <!-- [breakpoints]=\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\" -->\r\n <div class=\"relative\">\r\n <div\r\n *ngIf=\"isViewMode\"\r\n class=\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\"\r\n ></div>\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n </div>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n *ngIf=\"!isViewMode\"\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n (click)=\"onSubmit()\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\"\r\n severity=\"secondary\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n}\r\n\r\n<!-- Inline Form for form-only mode -->\r\n@if (mode === 'form-only' && displayMode === 'inline'){\r\n<div class=\"w-full\">\r\n <form *ngIf=\"form\" [formGroup]=\"form\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n</div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i5.Drawer, selector: "p-drawer", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
209
231
|
}
|
|
210
232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericDialogComponent, decorators: [{
|
|
211
233
|
type: Component,
|
|
@@ -219,8 +241,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
|
|
|
219
241
|
TranslateModule,
|
|
220
242
|
Drawer,
|
|
221
243
|
DialogModule,
|
|
222
|
-
], providers: [MessageService], template: "<!-- Drawer -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\r\ndisplayMode === 'drawer'))) {\r\n<p-drawer\r\n [(visible)]=\"drawerVisible\"\r\n [closable]=\"true\"\r\n [dismissible]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [styleClass]=\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [blockScroll]=\"mode !== 'form-only'\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <span class=\"font-bold text-lg\">\r\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\r\n translate): ('VIEW' | translate) }}\r\n </span>\r\n </ng-template>\r\n <!-- (ngSubmit)=\"onSubmit()\" -->\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n\r\n <ng-template pTemplate=\"footer\" *ngIf=\"!isViewMode\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ 'CANCEL' | translate }}\"\r\n severity=\"danger\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n}\r\n<!-- Dialog -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\r\ndisplayMode === 'dialog'))) {\r\n<p-dialog\r\n [(visible)]=\"dialogVisible\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [header]=\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [style]=\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\"\r\n [closable]=\"mode !== 'form-only'\"\r\n [dismissableMask]=\"mode !== 'form-only'\"\r\n>\r\n <!-- [breakpoints]=\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\" -->\r\n <div class=\"relative\">\r\n <div\r\n *ngIf=\"isViewMode\"\r\n class=\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\"\r\n ></div>\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n </div>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n *ngIf=\"!isViewMode\"\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n (click)=\"onSubmit()\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\"\r\n severity=\"secondary\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n}\r\n\r\n<!-- Inline Form for form-only mode -->\r\n@if (mode === 'form-only' && displayMode === 'inline'){\r\n<div class=\"w-full\">\r\n <form *ngIf=\"form\" [formGroup]=\"form\"
|
|
223
|
-
}], propDecorators: {
|
|
244
|
+
], providers: [MessageService], template: "<!-- Drawer -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\r\ndisplayMode === 'drawer'))) {\r\n<p-drawer\r\n [(visible)]=\"drawerVisible\"\r\n [closable]=\"true\"\r\n [dismissible]=\"false\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [styleClass]=\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [blockScroll]=\"mode !== 'form-only'\"\r\n>\r\n <ng-template pTemplate=\"header\">\r\n <span class=\"font-bold text-lg\">\r\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\r\n translate): ('VIEW' | translate) }}\r\n </span>\r\n </ng-template>\r\n <!-- (ngSubmit)=\"onSubmit()\" -->\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n\r\n <ng-template pTemplate=\"footer\" *ngIf=\"!isViewMode\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ 'CANCEL' | translate }}\"\r\n severity=\"danger\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n}\r\n<!-- Dialog -->\r\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\r\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\r\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\r\ndisplayMode === 'dialog'))) {\r\n<p-dialog\r\n [(visible)]=\"dialogVisible\"\r\n [closeOnEscape]=\"true\"\r\n (visibleChange)=\"visibleChange.emit($event)\"\r\n [header]=\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\"\r\n [modal]=\"mode !== 'form-only'\"\r\n [style]=\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\"\r\n [closable]=\"mode !== 'form-only'\"\r\n [dismissableMask]=\"mode !== 'form-only'\"\r\n>\r\n <!-- [breakpoints]=\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\" -->\r\n <div class=\"relative\">\r\n <div\r\n *ngIf=\"isViewMode\"\r\n class=\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\"\r\n ></div>\r\n <form *ngIf=\"form\" [formGroup]=\"form\" class=\"p-4\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n </div>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <div class=\"flex justify-end gap-2\">\r\n <button\r\n *ngIf=\"!isViewMode\"\r\n pButton\r\n [label]=\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\"\r\n type=\"button\"\r\n [disabled]=\"loading || form.invalid\"\r\n [loading]=\"loading\"\r\n (click)=\"onSubmit()\"\r\n ></button>\r\n <button\r\n pButton\r\n label=\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\"\r\n severity=\"secondary\"\r\n (click)=\"visibleChange.emit(false);closeForm();\"\r\n ></button>\r\n </div>\r\n </ng-template>\r\n</p-dialog>\r\n}\r\n\r\n<!-- Inline Form for form-only mode -->\r\n@if (mode === 'form-only' && displayMode === 'inline'){\r\n<div class=\"w-full\">\r\n <form *ngIf=\"form\" [formGroup]=\"form\">\r\n <formly-form\r\n [form]=\"form\"\r\n [fields]=\"formFields_\"\r\n [model]=\"model\"\r\n [options]=\"options\"\r\n ></formly-form>\r\n </form>\r\n</div>\r\n}\r\n" }]
|
|
245
|
+
}], propDecorators: { form: [{
|
|
246
|
+
type: Input
|
|
247
|
+
}], service: [{
|
|
224
248
|
type: Input
|
|
225
249
|
}], formFields: [{
|
|
226
250
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elite.framework-ng.ui.core-generic-dialog.mjs","sources":["../tmp-esm2022/generic-dialog/lib/generic-dialog-module.js","../tmp-esm2022/generic-dialog/lib/generic-dialog.js","../tmp-esm2022/generic-dialog/elite.framework-ng.ui.core-generic-dialog.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericDialogModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2ctbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nL3NyYy9saWIvZ2VuZXJpYy1kaWFsb2ctbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sbUJBQW1CO3VHQUFuQixtQkFBbUI7d0dBQW5CLG1CQUFtQixZQUZwQixZQUFZO3dHQUVYLG1CQUFtQixZQUZwQixZQUFZOzsyRkFFWCxtQkFBbUI7a0JBSC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0RpYWxvZ01vZHVsZSB7fVxuIl19","import { Component, EventEmitter, Input, Output, inject, } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup, } from '@angular/forms';\nimport { FormlyForm, } from '@ngx-formly/core';\nimport { MessageService } from 'primeng/api';\nimport { DrawerModule, Drawer } from 'primeng/drawer';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\nimport { BaseService, SwalService } from '@elite.framework/ng.core/services';\nimport { DialogModule } from 'primeng/dialog';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/api\";\nimport * as i4 from \"@angular/forms\";\nimport * as i5 from \"primeng/drawer\";\nimport * as i6 from \"primeng/dialog\";\nimport * as i7 from \"@ngx-translate/core\";\nexport class GenericDialogComponent {\n // الخدمات المحقونة\n translate = inject(TranslateService);\n swalService = inject(SwalService);\n // الحالة الداخلية للفورم\n form = new UntypedFormGroup({});\n options = {};\n formFields_ = [];\n model_ = {};\n // المدخلات (Inputs)\n service = inject(BaseService);\n formFields = [];\n model;\n apiName = '';\n idField = 'id';\n dialogMaxWidth = '40rem'; // أقصى عرض للدايلوج\n displayMode = 'drawer';\n mode = 'full'; // وضع العرض\n forceState = null; // إجبار حالة معينة\n drawerVisible = false; // ظهور الـ drawer\n dialogVisible = false; // ظهور الـ dialog\n isViewMode = false; // وضع المشاهدة فقط\n isEditMode = false; // وضع التعديل\n useConfirmOnSave = false; // استخدام تأكيد عند الحفظ\n loading = false; // حالة التحميل\n errorMsg = ''; // رسالة خطأ مختصرة\n errorMessage = ''; // رسالة خطأ تفصيلية\n beforeSaveTransform; // ⚡ دوال مخصصة قبل الحفظ\n // المدخلات المحسوبة\n get hideTable() {\n return ((this.mode === 'form-only' ||\n (this.forceState && this.mode !== 'table-only')) ??\n false);\n }\n get autoShowForm() {\n return this.mode === 'form-only' && !!this.forceState;\n }\n // المخرجات (Outputs)\n action = new EventEmitter();\n afterSave = new EventEmitter();\n afterDelete = new EventEmitter();\n beforeSave = new EventEmitter();\n beforeDelete = new EventEmitter();\n formCancel = new EventEmitter();\n formInit = new EventEmitter();\n dataLoaded = new EventEmitter();\n selectionChange = new EventEmitter();\n error = new EventEmitter();\n visibleChange = new EventEmitter();\n ngOnInit() {\n if (this.apiName && this.apiName != '') {\n this.service.apiName = this.apiName;\n }\n // Auto-show form when in form-only mode with forceState\n this.formFields_ = this.formFields;\n if (this.autoShowForm) {\n this.initializeFormState();\n }\n }\n ngOnChanges(changes) { }\n // Helper method to open form programmatically\n openForm(mode, model) {\n this.forceState = mode;\n this.formFields_ = this.formFields;\n if (model) {\n this.model = model;\n }\n else {\n this.model = {};\n }\n // Trigger form opening based on displayMode\n if (this.displayMode === 'drawer') {\n this.drawerVisible = true;\n }\n else if (this.displayMode === 'dialog') {\n this.dialogVisible = true;\n }\n }\n // Method to close form programmatically\n closeForm() {\n this.drawerVisible = false;\n this.dialogVisible = false;\n this.forceState = null;\n }\n initializeFormState() {\n if (this.forceState && this.mode === 'form-only') {\n this.formFields_ = this.formFields;\n switch (this.forceState) {\n case 'create':\n this.isEditMode = false;\n this.isViewMode = false;\n this.model = {};\n break;\n case 'edit':\n this.isEditMode = true;\n this.isViewMode = false;\n break;\n case 'view':\n this.isEditMode = false;\n this.isViewMode = true;\n break;\n }\n // Auto-show the form\n if (this.displayMode === 'drawer') {\n this.drawerVisible = true;\n }\n else if (this.displayMode === 'dialog') {\n this.dialogVisible = true;\n }\n }\n }\n onSubmit() {\n if (this.form.invalid)\n return;\n const save = () => {\n this.loading = true;\n this.errorMessage = null;\n const id = this.isEditMode ? this.model[this.idField] : null;\n // Emit beforeSave event\n const beforeSaveData = {\n record: { ...this.model },\n isEdit: this.isEditMode,\n };\n this.beforeSave.emit(beforeSaveData);\n // Allow parent to modify data before save\n let recordToSave = this.beforeSaveTransform\n ? this.beforeSaveTransform(beforeSaveData.record, this.isEditMode)\n : beforeSaveData.record;\n const operation$ = this.isEditMode\n ? this.service.update(id, recordToSave)\n : this.service.create(recordToSave);\n operation$.subscribe({\n next: (response) => {\n this.loading = false;\n // ✅ رسالة نجاح\n this.swalService.success(this.isEditMode ? 'تم التعديل بنجاح' : 'تم الحفظ بنجاح');\n // Emit afterSave event\n this.afterSave.emit({\n record: recordToSave,\n isEdit: this.isEditMode,\n response: response,\n });\n this.visibleChange.emit(false);\n this.closeForm();\n if (this.mode != 'form-only') {\n }\n },\n error: (error) => {\n // ❌ ما نعرض رسالة خطأ هنا لأن الـ interceptor يتكفل فيها\n this.loading = false;\n this.error.emit({ error: error, context: 'save' });\n },\n });\n };\n if (this.useConfirmOnSave) {\n this.swalService\n .confirm(this.isEditMode ? 'تأكيد التعديل' : 'تأكيد الحفظ', this.isEditMode\n ? 'هل تريد حفظ التعديلات على هذا السجل؟'\n : 'هل تريد حفظ هذا السجل؟', 'نعم', 'إلغاء')\n .then((result) => {\n if (result.isConfirmed) {\n save();\n }\n });\n }\n else {\n save();\n }\n }\n /** New cancel method for form-only mode */\n onCancel() {\n this.visibleChange.emit(false);\n // Emit cancel event for parent component to handle navigation\n this.action.emit({ name: 'cancel', row: null });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericDialogComponent, isStandalone: true, selector: \"app-generic-dialog\", inputs: { service: \"service\", formFields: \"formFields\", model: \"model\", apiName: \"apiName\", idField: \"idField\", dialogMaxWidth: \"dialogMaxWidth\", displayMode: \"displayMode\", mode: \"mode\", forceState: \"forceState\", drawerVisible: \"drawerVisible\", dialogVisible: \"dialogVisible\", isViewMode: \"isViewMode\", isEditMode: \"isEditMode\", useConfirmOnSave: \"useConfirmOnSave\", loading: \"loading\", errorMsg: \"errorMsg\", errorMessage: \"errorMessage\", beforeSaveTransform: \"beforeSaveTransform\", hideTable: \"hideTable\", autoShowForm: \"autoShowForm\" }, outputs: { action: \"action\", afterSave: \"afterSave\", afterDelete: \"afterDelete\", beforeSave: \"beforeSave\", beforeDelete: \"beforeDelete\", formCancel: \"formCancel\", formInit: \"formInit\", dataLoaded: \"dataLoaded\", selectionChange: \"selectionChange\", error: \"error\", visibleChange: \"visibleChange\" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: \"<!-- Drawer -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\\r\\ndisplayMode === 'drawer'))) {\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n [closable]=\\\"true\\\"\\r\\n [dismissible]=\\\"false\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [styleClass]=\\\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [blockScroll]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <ng-template pTemplate=\\\"header\\\">\\r\\n <span class=\\\"font-bold text-lg\\\">\\r\\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\\r\\n translate): ('VIEW' | translate) }}\\r\\n </span>\\r\\n </ng-template>\\r\\n <!-- (ngSubmit)=\\\"onSubmit()\\\" -->\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\" *ngIf=\\\"!isViewMode\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ 'CANCEL' | translate }}\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-drawer>\\r\\n}\\r\\n<!-- Dialog -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\\r\\ndisplayMode === 'dialog'))) {\\r\\n<p-dialog\\r\\n [(visible)]=\\\"dialogVisible\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [header]=\\\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [style]=\\\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\\\"\\r\\n [closable]=\\\"mode !== 'form-only'\\\"\\r\\n [dismissableMask]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <!-- [breakpoints]=\\\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\\\" -->\\r\\n <div class=\\\"relative\\\">\\r\\n <div\\r\\n *ngIf=\\\"isViewMode\\\"\\r\\n class=\\\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\\\"\\r\\n ></div>\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n *ngIf=\\\"!isViewMode\\\"\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-dialog>\\r\\n}\\r\\n\\r\\n<!-- Inline Form for form-only mode -->\\r\\n@if (mode === 'form-only' && displayMode === 'inline'){\\r\\n<div class=\\\"w-full\\\">\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n\\r\\n <div *ngIf=\\\"!isViewMode\\\" class=\\\"flex justify-end gap-2 mt-4\\\">\\r\\n <button\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ 'CANCEL' | translate }}\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"onCancel()\\\"\\r\\n ></button>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i4.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i4.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i4.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"component\", type: i5.Drawer, selector: \"p-drawer\", inputs: [\"appendTo\", \"blockScroll\", \"style\", \"styleClass\", \"ariaCloseLabel\", \"autoZIndex\", \"baseZIndex\", \"modal\", \"closeButtonProps\", \"dismissible\", \"showCloseIcon\", \"closeOnEscape\", \"transitionOptions\", \"visible\", \"position\", \"fullScreen\", \"header\", \"maskStyle\", \"closable\"], outputs: [\"onShow\", \"onHide\", \"visibleChange\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"component\", type: i6.Dialog, selector: \"p-dialog\", inputs: [\"header\", \"draggable\", \"resizable\", \"contentStyle\", \"contentStyleClass\", \"modal\", \"closeOnEscape\", \"dismissableMask\", \"rtl\", \"closable\", \"breakpoints\", \"styleClass\", \"maskStyleClass\", \"maskStyle\", \"showHeader\", \"blockScroll\", \"autoZIndex\", \"baseZIndex\", \"minX\", \"minY\", \"focusOnShow\", \"maximizable\", \"keepInViewport\", \"focusTrap\", \"transitionOptions\", \"closeIcon\", \"closeAriaLabel\", \"closeTabindex\", \"minimizeIcon\", \"maximizeIcon\", \"closeButtonProps\", \"maximizeButtonProps\", \"visible\", \"style\", \"position\", \"role\", \"appendTo\", \"content\", \"contentTemplate\", \"footerTemplate\", \"closeIconTemplate\", \"maximizeIconTemplate\", \"minimizeIconTemplate\", \"headlessTemplate\"], outputs: [\"onShow\", \"onHide\", \"visibleChange\", \"onResizeInit\", \"onResizeEnd\", \"onDragEnd\", \"onMaximize\"] }, { kind: \"pipe\", type: i7.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, selector: 'app-generic-dialog', imports: [\n CommonModule,\n ButtonModule,\n FormlyForm,\n FormsModule,\n ReactiveFormsModule,\n DrawerModule,\n TranslateModule,\n Drawer,\n DialogModule,\n ], providers: [MessageService], template: \"<!-- Drawer -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\\r\\ndisplayMode === 'drawer'))) {\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n [closable]=\\\"true\\\"\\r\\n [dismissible]=\\\"false\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [styleClass]=\\\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [blockScroll]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <ng-template pTemplate=\\\"header\\\">\\r\\n <span class=\\\"font-bold text-lg\\\">\\r\\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\\r\\n translate): ('VIEW' | translate) }}\\r\\n </span>\\r\\n </ng-template>\\r\\n <!-- (ngSubmit)=\\\"onSubmit()\\\" -->\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\" *ngIf=\\\"!isViewMode\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ 'CANCEL' | translate }}\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-drawer>\\r\\n}\\r\\n<!-- Dialog -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\\r\\ndisplayMode === 'dialog'))) {\\r\\n<p-dialog\\r\\n [(visible)]=\\\"dialogVisible\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [header]=\\\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [style]=\\\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\\\"\\r\\n [closable]=\\\"mode !== 'form-only'\\\"\\r\\n [dismissableMask]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <!-- [breakpoints]=\\\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\\\" -->\\r\\n <div class=\\\"relative\\\">\\r\\n <div\\r\\n *ngIf=\\\"isViewMode\\\"\\r\\n class=\\\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\\\"\\r\\n ></div>\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n *ngIf=\\\"!isViewMode\\\"\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-dialog>\\r\\n}\\r\\n\\r\\n<!-- Inline Form for form-only mode -->\\r\\n@if (mode === 'form-only' && displayMode === 'inline'){\\r\\n<div class=\\\"w-full\\\">\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n\\r\\n <div *ngIf=\\\"!isViewMode\\\" class=\\\"flex justify-end gap-2 mt-4\\\">\\r\\n <button\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ 'CANCEL' | translate }}\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"onCancel()\\\"\\r\\n ></button>\\r\\n </div>\\r\\n</div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { service: [{\n type: Input\n }], formFields: [{\n type: Input\n }], model: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], dialogMaxWidth: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], mode: [{\n type: Input\n }], forceState: [{\n type: Input\n }], drawerVisible: [{\n type: Input\n }], dialogVisible: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], useConfirmOnSave: [{\n type: Input\n }], loading: [{\n type: Input\n }], errorMsg: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], beforeSaveTransform: [{\n type: Input\n }], hideTable: [{\n type: Input\n }], autoShowForm: [{\n type: Input\n }], action: [{\n type: Output\n }], afterSave: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], beforeSave: [{\n type: Output\n }], beforeDelete: [{\n type: Output\n }], formCancel: [{\n type: Output\n }], formInit: [{\n type: Output\n }], dataLoaded: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], error: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cvc3JjL2xpYi9nZW5lcmljLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWRpYWxvZy9zcmMvbGliL2dlbmVyaWMtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUwsVUFBVSxHQUVYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBb0I5QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLG1CQUFtQjtJQUNuQixTQUFTLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUMseUJBQXlCO0lBQ3pCLElBQUksR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sR0FBc0IsRUFBRSxDQUFDO0lBQ2hDLFdBQVcsR0FBd0IsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFFakIsb0JBQW9CO0lBQ1gsT0FBTyxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsVUFBVSxHQUF3QixFQUFFLENBQUM7SUFDckMsS0FBSyxDQUFNO0lBQ1gsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDZixjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsb0JBQW9CO0lBQzlDLFdBQVcsR0FVZCxRQUFRLENBQUM7SUFDTixJQUFJLEdBQXdDLE1BQU0sQ0FBQyxDQUFDLFlBQVk7SUFDaEUsVUFBVSxHQUFzQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUI7SUFDekUsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLGtCQUFrQjtJQUN6QyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsa0JBQWtCO0lBQ3pDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxtQkFBbUI7SUFDdkMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLGNBQWM7SUFDbEMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsMEJBQTBCO0lBQ3BELE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxlQUFlO0lBQ2hDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7SUFDbEMsWUFBWSxHQUFpQixFQUFFLENBQUMsQ0FBQyxvQkFBb0I7SUFDckQsbUJBQW1CLENBQXlDLENBQUMseUJBQXlCO0lBRS9GLG9CQUFvQjtJQUNwQixJQUFhLFNBQVM7UUFDcEIsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXO1lBQ3hCLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO1lBQ2xELEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVELElBQWEsWUFBWTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3hELENBQUM7SUFFRCxxQkFBcUI7SUFDWCxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQThCLENBQUM7SUFDeEQsU0FBUyxHQUFHLElBQUksWUFBWSxFQUlsQyxDQUFDO0lBQ0ssV0FBVyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO0lBQ2xFLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBb0MsQ0FBQztJQUNsRSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFDbkQsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDdEMsUUFBUSxHQUFHLElBQUksWUFBWSxFQUdqQyxDQUFDO0lBQ0ssVUFBVSxHQUFHLElBQUksWUFBWSxFQUFrQyxDQUFDO0lBQ2hFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFHeEMsQ0FBQztJQUNLLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQztJQUM1RCxhQUFhLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFFN0UsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEMsQ0FBQztRQUNELHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0IsSUFBSSxDQUFDO0lBQ3ZDLDhDQUE4QztJQUM5QyxRQUFRLENBQUMsSUFBZ0MsRUFBRSxLQUFXO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzthQUNHLENBQUM7WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBRUQsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLFNBQVM7UUFDUCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxRQUFRO29CQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ2hCLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQkFDeEIsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN2QixNQUFNO1lBQ1YsQ0FBQztZQUVELHFCQUFxQjtZQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTlCLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUV6QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRXRFLHdCQUF3QjtZQUN4QixNQUFNLGNBQWMsR0FBRztnQkFDckIsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDeEIsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXJDLDBDQUEwQztZQUMxQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFFMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVU7Z0JBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDO2dCQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdEMsVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUVyQixlQUFlO29CQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQ3hELENBQUM7b0JBRUYsdUJBQXVCO29CQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFDbEIsTUFBTSxFQUFFLFlBQVk7d0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTt3QkFDdkIsUUFBUSxFQUFFLFFBQVE7cUJBQ25CLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQy9CLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtvQkFDcEIseURBQXlEO29CQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVztpQkFDYixPQUFPLENBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQ2pELElBQUksQ0FBQyxVQUFVO2dCQUNiLENBQUMsQ0FBQyxzQ0FBc0M7Z0JBQ3hDLENBQUMsQ0FBQyx3QkFBd0IsRUFDNUIsS0FBSyxFQUNMLE9BQU8sQ0FDUjtpQkFDQSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDZixJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxFQUFFLENBQUM7Z0JBQ1QsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUM7SUFDSCxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQiw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7dUdBNU5VLHNCQUFzQjsyRkFBdEIsc0JBQXNCLHM0QkFKdEIsQ0FBQyxjQUFjLENBQUMsK0NDMUM3Qix3cUpBc0lBLHlERHRHSSxZQUFZLGtJQUNaLFlBQVksNFdBQ1osVUFBVSxpSUFDVixXQUFXLG1TQUNYLG1CQUFtQiwrS0FDbkIsWUFBWSxpYUFDWixlQUFlLDhCQUVmLFlBQVk7OzJGQU1ILHNCQUFzQjtrQkFsQmxDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG9CQUFvQixXQUNyQjt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLE1BQU07d0JBQ04sWUFBWTtxQkFDYixhQUNVLENBQUMsY0FBYyxDQUFDOzhCQWdCbEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQVdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUU8sWUFBWTtzQkFBeEIsS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUlHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7XHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBGb3JtbHlGaWVsZENvbmZpZyxcclxuICBGb3JtbHlGb3JtLFxyXG4gIEZvcm1seUZvcm1PcHRpb25zLFxyXG59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHJhd2VyTW9kdWxlLCBEcmF3ZXIgfSBmcm9tICdwcmltZW5nL2RyYXdlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtZGlhbG9nJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtbHlGb3JtLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgRHJhd2VyLFxyXG4gICAgRGlhbG9nTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWRpYWxvZy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWRpYWxvZy5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgLy8g2KfZhNiu2K/Zhdin2Kog2KfZhNmF2K3ZgtmI2YbYqVxyXG4gIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIHN3YWxTZXJ2aWNlID0gaW5qZWN0KFN3YWxTZXJ2aWNlKTtcclxuXHJcbiAgLy8g2KfZhNit2KfZhNipINin2YTYr9in2K7ZhNmK2Kkg2YTZhNmB2YjYsdmFXHJcbiAgZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xyXG4gIGZvcm1GaWVsZHNfOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XHJcbiAgbW9kZWxfOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8g2KfZhNmF2K/YrtmE2KfYqiAoSW5wdXRzKVxyXG4gIEBJbnB1dCgpIHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gaW5qZWN0KEJhc2VTZXJ2aWNlKTtcclxuICBASW5wdXQoKSBmb3JtRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XHJcbiAgQElucHV0KCkgbW9kZWw6IGFueTtcclxuICBASW5wdXQoKSBhcGlOYW1lID0gJyc7XHJcbiAgQElucHV0KCkgaWRGaWVsZCA9ICdpZCc7XHJcbiAgQElucHV0KCkgZGlhbG9nTWF4V2lkdGggPSAnNDByZW0nOyAvLyDYo9mC2LXZiSDYudix2LYg2YTZhNiv2KfZitmE2YjYrFxyXG4gIEBJbnB1dCgpIGRpc3BsYXlNb2RlOlxyXG4gICAgfCAnZHJhd2VyJ1xyXG4gICAgfCAnZGlhbG9nJ1xyXG4gICAgfCAncm91dGUnXHJcbiAgICB8ICdpbmxpbmUnXHJcbiAgICB8IFBhcnRpYWw8XHJcbiAgICAgIFJlY29yZDxcclxuICAgICAgICAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JyxcclxuICAgICAgICAnZHJhd2VyJyB8ICdkaWFsb2cnIHwgJ3JvdXRlJyB8ICdpbmxpbmUnXHJcbiAgICAgID5cclxuICAgID4gPSAnZHJhd2VyJztcclxuICBASW5wdXQoKSBtb2RlOiAnZnVsbCcgfCAnZm9ybS1vbmx5JyB8ICd0YWJsZS1vbmx5JyA9ICdmdWxsJzsgLy8g2YjYtti5INin2YTYudix2LZcclxuICBASW5wdXQoKSBmb3JjZVN0YXRlOiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3JyB8IG51bGwgPSBudWxsOyAvLyDYpdis2KjYp9ixINit2KfZhNipINmF2LnZitmG2KlcclxuICBASW5wdXQoKSBkcmF3ZXJWaXNpYmxlID0gZmFsc2U7IC8vINi42YfZiNixINin2YTZgCBkcmF3ZXJcclxuICBASW5wdXQoKSBkaWFsb2dWaXNpYmxlID0gZmFsc2U7IC8vINi42YfZiNixINin2YTZgCBkaWFsb2dcclxuICBASW5wdXQoKSBpc1ZpZXdNb2RlID0gZmFsc2U7IC8vINmI2LbYuSDYp9mE2YXYtNin2YfYr9ipINmB2YLYt1xyXG4gIEBJbnB1dCgpIGlzRWRpdE1vZGUgPSBmYWxzZTsgLy8g2YjYtti5INin2YTYqti52K/ZitmEXHJcbiAgQElucHV0KCkgdXNlQ29uZmlybU9uU2F2ZSA9IGZhbHNlOyAvLyDYp9iz2KrYrtiv2KfZhSDYqtij2YPZitivINi52YbYryDYp9mE2K3Zgdi4XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlOyAvLyDYrdin2YTYqSDYp9mE2KrYrdmF2YrZhFxyXG4gIEBJbnB1dCgpIGVycm9yTXNnID0gJyc7IC8vINix2LPYp9mE2Kkg2K7Yt9ijINmF2K7Yqti12LHYqVxyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgYW55ID0gJyc7IC8vINix2LPYp9mE2Kkg2K7Yt9ijINiq2YHYtdmK2YTZitipXHJcbiAgQElucHV0KCkgYmVmb3JlU2F2ZVRyYW5zZm9ybT86IChyZWNvcmQ6IGFueSwgaXNFZGl0OiBib29sZWFuKSA9PiBhbnk7IC8vIOKaoSDYr9mI2KfZhCDZhdiu2LXYtdipINmC2KjZhCDYp9mE2K3Zgdi4XHJcblxyXG4gIC8vINin2YTZhdiv2K7ZhNin2Kog2KfZhNmF2K3Ys9mI2KjYqVxyXG4gIEBJbnB1dCgpIGdldCBoaWRlVGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5tb2RlID09PSAnZm9ybS1vbmx5JyB8fFxyXG4gICAgICAgICh0aGlzLmZvcmNlU3RhdGUgJiYgdGhpcy5tb2RlICE9PSAndGFibGUtb25seScpKSA/P1xyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGdldCBhdXRvU2hvd0Zvcm0oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZm9ybS1vbmx5JyAmJiAhIXRoaXMuZm9yY2VTdGF0ZTtcclxuICB9XHJcblxyXG4gIC8vINin2YTZhdiu2LHYrNin2KogKE91dHB1dHMpXHJcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHJvdzogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgcmVjb3JkOiBhbnk7XHJcbiAgICBpc0VkaXQ6IGJvb2xlYW47XHJcbiAgICByZXNwb25zZT86IGFueTtcclxuICB9PigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlckRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IGFueTsgcmVzcG9uc2U/OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IGFueTsgaXNFZGl0OiBib29sZWFuIH0+KCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZURlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IGFueSB9PigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIG1vZGVsOiBhbnk7XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBhbnlbXTsgdG90YWw6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNlbGVjdGVkOiBhbnlbXTtcclxuICAgIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcclxuICB9PigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8eyBlcnJvcjogYW55OyBjb250ZXh0OiBzdHJpbmcgfT4oKTtcclxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmFwaU5hbWUgJiYgdGhpcy5hcGlOYW1lICE9ICcnKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5hcGlOYW1lID0gdGhpcy5hcGlOYW1lO1xyXG4gICAgfVxyXG4gICAgLy8gQXV0by1zaG93IGZvcm0gd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSB3aXRoIGZvcmNlU3RhdGVcclxuICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICBpZiAodGhpcy5hdXRvU2hvd0Zvcm0pIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybVN0YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHsgfVxyXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gb3BlbiBmb3JtIHByb2dyYW1tYXRpY2FsbHlcclxuICBvcGVuRm9ybShtb2RlOiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3JywgbW9kZWw/OiBhbnkpIHtcclxuICAgIHRoaXMuZm9yY2VTdGF0ZSA9IG1vZGU7XHJcbiAgICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMubW9kZWwgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUcmlnZ2VyIGZvcm0gb3BlbmluZyBiYXNlZCBvbiBkaXNwbGF5TW9kZVxyXG4gICAgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICdkcmF3ZXInKSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICdkaWFsb2cnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gY2xvc2UgZm9ybSBwcm9ncmFtbWF0aWNhbGx5XHJcbiAgY2xvc2VGb3JtKCkge1xyXG4gICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9yY2VTdGF0ZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JjZVN0YXRlICYmIHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScpIHtcclxuICAgICAgdGhpcy5mb3JtRmllbGRzXyA9IHRoaXMuZm9ybUZpZWxkcztcclxuICAgICAgc3dpdGNoICh0aGlzLmZvcmNlU3RhdGUpIHtcclxuICAgICAgICBjYXNlICdjcmVhdGUnOlxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubW9kZWwgPSB7fTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2VkaXQnOlxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndmlldyc6XHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQXV0by1zaG93IHRoZSBmb3JtXHJcbiAgICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnZHJhd2VyJykge1xyXG4gICAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXNwbGF5TW9kZSA9PT0gJ2RpYWxvZycpIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNhdmUgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5pc0VkaXRNb2RlID8gKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmlkRmllbGRdIDogbnVsbDtcclxuXHJcbiAgICAgIC8vIEVtaXQgYmVmb3JlU2F2ZSBldmVudFxyXG4gICAgICBjb25zdCBiZWZvcmVTYXZlRGF0YSA9IHtcclxuICAgICAgICByZWNvcmQ6IHsgLi4udGhpcy5tb2RlbCB9LFxyXG4gICAgICAgIGlzRWRpdDogdGhpcy5pc0VkaXRNb2RlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmJlZm9yZVNhdmUuZW1pdChiZWZvcmVTYXZlRGF0YSk7XHJcblxyXG4gICAgICAvLyBBbGxvdyBwYXJlbnQgdG8gbW9kaWZ5IGRhdGEgYmVmb3JlIHNhdmVcclxuICAgICAgbGV0IHJlY29yZFRvU2F2ZSA9IHRoaXMuYmVmb3JlU2F2ZVRyYW5zZm9ybVxyXG4gICAgICAgID8gdGhpcy5iZWZvcmVTYXZlVHJhbnNmb3JtKGJlZm9yZVNhdmVEYXRhLnJlY29yZCwgdGhpcy5pc0VkaXRNb2RlKVxyXG4gICAgICAgIDogYmVmb3JlU2F2ZURhdGEucmVjb3JkO1xyXG5cclxuICAgICAgY29uc3Qgb3BlcmF0aW9uJCA9IHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShpZCwgcmVjb3JkVG9TYXZlKVxyXG4gICAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZShyZWNvcmRUb1NhdmUpO1xyXG5cclxuICAgICAgb3BlcmF0aW9uJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAvLyDinIUg2LHYs9in2YTYqSDZhtis2KfYrVxyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPyAn2KrZhSDYp9mE2KrYudiv2YrZhCDYqNmG2KzYp9itJyA6ICfYqtmFINin2YTYrdmB2Lgg2KjZhtis2KfYrSdcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgLy8gRW1pdCBhZnRlclNhdmUgZXZlbnRcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJTYXZlLmVtaXQoe1xyXG4gICAgICAgICAgICByZWNvcmQ6IHJlY29yZFRvU2F2ZSxcclxuICAgICAgICAgICAgaXNFZGl0OiB0aGlzLmlzRWRpdE1vZGUsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUZvcm0oKTtcclxuICAgICAgICAgIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8g4p2MINmF2Kcg2YbYudix2LYg2LHYs9in2YTYqSDYrti32KMg2YfZhtinINmE2KPZhiDYp9mE2YAgaW50ZXJjZXB0b3Ig2YrYqtmD2YHZhCDZgdmK2YfYp1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoeyBlcnJvcjogZXJyb3IsIGNvbnRleHQ6ICdzYXZlJyB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMudXNlQ29uZmlybU9uU2F2ZSkge1xyXG4gICAgICB0aGlzLnN3YWxTZXJ2aWNlXHJcbiAgICAgICAgLmNvbmZpcm0oXHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPyAn2KrYo9mD2YrYryDYp9mE2KrYudiv2YrZhCcgOiAn2KrYo9mD2YrYryDYp9mE2K3Zgdi4JyxcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgICAgICA/ICfZh9mEINiq2LHZitivINit2YHYuCDYp9mE2KrYudiv2YrZhNin2Kog2LnZhNmJINmH2LDYpyDYp9mE2LPYrNmE2J8nXHJcbiAgICAgICAgICAgIDogJ9mH2YQg2KrYsdmK2K8g2K3Zgdi4INmH2LDYpyDYp9mE2LPYrNmE2J8nLFxyXG4gICAgICAgICAgJ9mG2LnZhScsXHJcbiAgICAgICAgICAn2KXZhNi62KfYoSdcclxuICAgICAgICApXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICBzYXZlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzYXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTmV3IGNhbmNlbCBtZXRob2QgZm9yIGZvcm0tb25seSBtb2RlICovXHJcbiAgb25DYW5jZWwoKSB7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAvLyBFbWl0IGNhbmNlbCBldmVudCBmb3IgcGFyZW50IGNvbXBvbmVudCB0byBoYW5kbGUgbmF2aWdhdGlvblxyXG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IG5hbWU6ICdjYW5jZWwnLCByb3c6IG51bGwhIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIERyYXdlciAtLT5cclxuQGlmICgoKHR5cGVvZiBkaXNwbGF5TW9kZSA9PT0gJ3N0cmluZycgPyBkaXNwbGF5TW9kZSA6IGlzRWRpdE1vZGUgP1xyXG5kaXNwbGF5TW9kZVsnZWRpdCddIDogaXNWaWV3TW9kZSA9PT0gZmFsc2UgPyBkaXNwbGF5TW9kZVsnYWRkJ10gOlxyXG5kaXNwbGF5TW9kZVsndmlldyddKSA9PT0gJ2RyYXdlcicpICYmIChkcmF3ZXJWaXNpYmxlIHx8IChhdXRvU2hvd0Zvcm0gJiZcclxuZGlzcGxheU1vZGUgPT09ICdkcmF3ZXInKSkpIHtcclxuPHAtZHJhd2VyXHJcbiAgWyh2aXNpYmxlKV09XCJkcmF3ZXJWaXNpYmxlXCJcclxuICBbY2xvc2FibGVdPVwidHJ1ZVwiXHJcbiAgW2Rpc21pc3NpYmxlXT1cImZhbHNlXCJcclxuICBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCJcclxuICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgW3N0eWxlQ2xhc3NdPVwibW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgZm9yY2VTdGF0ZSA9PT0gJ3ZpZXcnID8gJyF3LWZ1bGwgbWQ6IXctODAgbGc6IXctWzQwcmVtXSAhaC1mdWxsJyA6ICchdy1mdWxsIG1kOiF3LTgwIGxnOiF3LVs0MHJlbV0nXCJcclxuICBbbW9kYWxdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4gIFtibG9ja1Njcm9sbF09XCJtb2RlICE9PSAnZm9ybS1vbmx5J1wiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+XHJcbiAgICAgIHt7IGlzRWRpdE1vZGUgPyAoJ1VQREFURScgfCB0cmFuc2xhdGUpOiBpc1ZpZXdNb2RlID09PSBmYWxzZSA/ICgnQUREJyB8XHJcbiAgICAgIHRyYW5zbGF0ZSk6ICgnVklFVycgfCB0cmFuc2xhdGUpIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8IS0tIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgLS0+XHJcbiAgPGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJwLTRcIj5cclxuICAgIDxmb3JtbHktZm9ybVxyXG4gICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgW2ZpZWxkc109XCJmb3JtRmllbGRzX1wiXHJcbiAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgPjwvZm9ybWx5LWZvcm0+XHJcbiAgPC9mb3JtPlxyXG5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCIgKm5nSWY9XCIhaXNWaWV3TW9kZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgZ2FwLTJcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBbbGFiZWxdPVwiaXNFZGl0TW9kZSA/ICgnVVBEQVRFJyB8IHRyYW5zbGF0ZSkgOiAoJ1NBVkUnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgID48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBsYWJlbD1cInt7ICdDQU5DRUwnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICBzZXZlcml0eT1cImRhbmdlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7Y2xvc2VGb3JtKCk7XCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRyYXdlcj5cclxufVxyXG48IS0tIERpYWxvZyAtLT5cclxuQGlmICgoKHR5cGVvZiBkaXNwbGF5TW9kZSA9PT0gJ3N0cmluZycgPyBkaXNwbGF5TW9kZSA6IGlzRWRpdE1vZGUgP1xyXG5kaXNwbGF5TW9kZVsnZWRpdCddIDogaXNWaWV3TW9kZSA9PT0gZmFsc2UgPyBkaXNwbGF5TW9kZVsnYWRkJ10gOlxyXG5kaXNwbGF5TW9kZVsndmlldyddKSA9PT0gJ2RpYWxvZycpICYmIChkaWFsb2dWaXNpYmxlIHx8IChhdXRvU2hvd0Zvcm0gJiZcclxuZGlzcGxheU1vZGUgPT09ICdkaWFsb2cnKSkpIHtcclxuPHAtZGlhbG9nXHJcbiAgWyh2aXNpYmxlKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCJcclxuICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgW2hlYWRlcl09XCJpc0VkaXRNb2RlID8gKCdVUERBVEUnIHwgdHJhbnNsYXRlKSA6IGlzVmlld01vZGUgPT09IGZhbHNlID8gKCdBREQnfCB0cmFuc2xhdGUpIDogKCdWSUVXJ3wgdHJhbnNsYXRlKVwiXHJcbiAgW21vZGFsXT1cIm1vZGUgIT09ICdmb3JtLW9ubHknXCJcclxuICBbc3R5bGVdPVwibW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgZm9yY2VTdGF0ZSA9PT0gJ3ZpZXcnID8geyB3aWR0aDogJzEwMHZ3JywgaGVpZ2h0OiAnMTAwdmgnLCBtYXhXaWR0aDogJ25vbmUnIH0gOiB7IHdpZHRoOiAnOTV2dycsIG1heFdpZHRoOiBkaWFsb2dNYXhXaWR0aCB9XCJcclxuICBbY2xvc2FibGVdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4gIFtkaXNtaXNzYWJsZU1hc2tdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4+XHJcbiAgPCEtLSBbYnJlYWtwb2ludHNdPVwieyAnMTIwMHB4JzogJzUwdncnLCAnNzY4cHgnOiAnNzB2dycsICc1NjBweCc6ICc5NXZ3JyB9XCIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiaXNWaWV3TW9kZVwiXHJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTEwIGJnLXdoaXRlLzUwIHBvaW50ZXItZXZlbnRzLWF1dG8gcm91bmRlZC1tZFwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInAtNFwiPlxyXG4gICAgICA8Zm9ybWx5LWZvcm1cclxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBbZmllbGRzXT1cImZvcm1GaWVsZHNfXCJcclxuICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgICA+PC9mb3JtbHktZm9ybT5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgZ2FwLTJcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiIWlzVmlld01vZGVcIlxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBbbGFiZWxdPVwiaXNFZGl0TW9kZSA/ICgnVVBEQVRFJyB8IHRyYW5zbGF0ZSkgOiAoJ1NBVkUnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZm9ybS5pbnZhbGlkXCJcclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiXHJcbiAgICAgID48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBsYWJlbD1cInt7IGlzVmlld01vZGUgPyAoJ0NMT1NFJyB8IHRyYW5zbGF0ZSkgOiAoJ0NBTkNFTCcgfCB0cmFuc2xhdGUpIH19XCJcclxuICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7Y2xvc2VGb3JtKCk7XCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRpYWxvZz5cclxufVxyXG5cclxuPCEtLSBJbmxpbmUgRm9ybSBmb3IgZm9ybS1vbmx5IG1vZGUgLS0+XHJcbkBpZiAobW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgZGlzcGxheU1vZGUgPT09ICdpbmxpbmUnKXtcclxuPGRpdiBjbGFzcz1cInctZnVsbFwiPlxyXG4gIDxmb3JtICpuZ0lmPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicC00XCI+XHJcbiAgICA8Zm9ybWx5LWZvcm1cclxuICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgIFtmaWVsZHNdPVwiZm9ybUZpZWxkc19cIlxyXG4gICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcclxuICAgID48L2Zvcm1seS1mb3JtPlxyXG4gIDwvZm9ybT5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFpc1ZpZXdNb2RlXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIG10LTRcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgcEJ1dHRvblxyXG4gICAgICBbbGFiZWxdPVwiaXNFZGl0TW9kZSA/ICgnVVBEQVRFJyB8IHRyYW5zbGF0ZSkgOiAoJ1NBVkUnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGZvcm0uaW52YWxpZFwiXHJcbiAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBwQnV0dG9uXHJcbiAgICAgIGxhYmVsPVwie3sgJ0NBTkNFTCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICBzZXZlcml0eT1cImRhbmdlclwiXHJcbiAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcclxuICAgID48L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cvc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWdlbmVyaWMtZGlhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"elite.framework-ng.ui.core-generic-dialog.mjs","sources":["../tmp-esm2022/generic-dialog/lib/generic-dialog-module.js","../tmp-esm2022/generic-dialog/lib/generic-dialog.js","../tmp-esm2022/generic-dialog/elite.framework-ng.ui.core-generic-dialog.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericDialogModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2ctbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtZGlhbG9nL3NyYy9saWIvZ2VuZXJpYy1kaWFsb2ctbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sbUJBQW1CO3VHQUFuQixtQkFBbUI7d0dBQW5CLG1CQUFtQixZQUZwQixZQUFZO3dHQUVYLG1CQUFtQixZQUZwQixZQUFZOzsyRkFFWCxtQkFBbUI7a0JBSC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0RpYWxvZ01vZHVsZSB7fVxuIl19","import { Component, EventEmitter, Input, Output, inject, } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup, } from '@angular/forms';\nimport { FormlyForm, } from '@ngx-formly/core';\nimport { MessageService } from 'primeng/api';\nimport { DrawerModule, Drawer } from 'primeng/drawer';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\nimport { BaseService, SwalService } from '@elite.framework/ng.core/services';\nimport { DialogModule } from 'primeng/dialog';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/api\";\nimport * as i4 from \"@angular/forms\";\nimport * as i5 from \"primeng/drawer\";\nimport * as i6 from \"primeng/dialog\";\nimport * as i7 from \"@ngx-translate/core\";\nexport class GenericDialogComponent {\n // الخدمات المحقونة\n translate = inject(TranslateService);\n swalService = inject(SwalService);\n // الحالة الداخلية للفورم\n form = new UntypedFormGroup({});\n options = {};\n formFields_ = [];\n model_ = {};\n // المدخلات (Inputs)\n service = inject(BaseService);\n formFields = [];\n model;\n apiName = '';\n idField = 'id';\n dialogMaxWidth = '40rem'; // أقصى عرض للدايلوج\n displayMode = 'drawer';\n mode = 'full'; // وضع العرض\n forceState = null; // إجبار حالة معينة\n drawerVisible = false; // ظهور الـ drawer\n dialogVisible = false; // ظهور الـ dialog\n isViewMode = false; // وضع المشاهدة فقط\n isEditMode = false; // وضع التعديل\n useConfirmOnSave = false; // استخدام تأكيد عند الحفظ\n loading = false; // حالة التحميل\n errorMsg = ''; // رسالة خطأ مختصرة\n errorMessage = ''; // رسالة خطأ تفصيلية\n beforeSaveTransform; // ⚡ دوال مخصصة قبل الحفظ\n // المدخلات المحسوبة\n get hideTable() {\n return ((this.mode === 'form-only' ||\n (this.forceState && this.mode !== 'table-only')) ??\n false);\n }\n get autoShowForm() {\n return this.mode === 'form-only' && !!this.forceState;\n }\n // المخرجات (Outputs)\n action = new EventEmitter();\n afterSave = new EventEmitter();\n afterDelete = new EventEmitter();\n beforeSave = new EventEmitter();\n beforeDelete = new EventEmitter();\n formCancel = new EventEmitter();\n formInit = new EventEmitter();\n dataLoaded = new EventEmitter();\n selectionChange = new EventEmitter();\n error = new EventEmitter();\n visibleChange = new EventEmitter();\n ngOnInit() {\n if (this.apiName && this.apiName != '') {\n this.service.apiName = this.apiName;\n }\n // Auto-show form when in form-only mode with forceState\n this.formFields_ = this.formFields;\n if (this.autoShowForm) {\n this.initializeFormState();\n }\n }\n ngOnChanges(changes) { }\n // Helper method to open form programmatically\n openForm(mode, model) {\n this.forceState = mode;\n this.formFields_ = this.formFields;\n if (model) {\n this.model = model;\n }\n else {\n this.model = {};\n }\n switch (mode) {\n case 'create':\n this.isEditMode = false;\n this.isViewMode = false;\n this.model = {};\n break;\n case 'edit':\n this.isEditMode = true;\n this.isViewMode = false;\n break;\n case 'view':\n this.isEditMode = false;\n this.isViewMode = true;\n break;\n }\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[mode] ?? 'drawer';\n // Trigger form opening based on displayMode\n if (modeConfig === 'drawer') {\n this.drawerVisible = true;\n }\n else if (modeConfig === 'dialog') {\n this.dialogVisible = true;\n }\n }\n // Method to close form programmatically\n closeForm() {\n this.drawerVisible = false;\n this.dialogVisible = false;\n this.forceState = null;\n }\n initializeFormState() {\n if (this.forceState && this.mode === 'form-only') {\n this.formFields_ = this.formFields;\n switch (this.forceState) {\n case 'create':\n this.isEditMode = false;\n this.isViewMode = false;\n this.model = {};\n break;\n case 'edit':\n this.isEditMode = true;\n this.isViewMode = false;\n break;\n case 'view':\n this.isEditMode = false;\n this.isViewMode = true;\n break;\n }\n // Auto-show the form\n const modeConfig = typeof this.displayMode === 'string'\n ? this.displayMode\n : this.displayMode[this.forceState] ?? 'drawer';\n // Trigger form opening based on displayMode\n if (modeConfig === 'drawer') {\n this.drawerVisible = true;\n }\n else if (modeConfig === 'dialog') {\n this.dialogVisible = true;\n }\n }\n }\n onSubmit() {\n if (this.form.invalid)\n return;\n const save = () => {\n this.loading = true;\n this.errorMessage = null;\n const id = this.isEditMode ? this.model[this.idField] : null;\n // Emit beforeSave event\n const beforeSaveData = {\n record: { ...this.model },\n isEdit: this.isEditMode,\n };\n this.beforeSave.emit(beforeSaveData);\n // Allow parent to modify data before save\n let recordToSave = this.beforeSaveTransform\n ? this.beforeSaveTransform(beforeSaveData.record, this.isEditMode)\n : beforeSaveData.record;\n const operation$ = this.isEditMode\n ? this.service.update(id, recordToSave)\n : this.service.create(recordToSave);\n operation$.subscribe({\n next: (response) => {\n this.loading = false;\n // ✅ رسالة نجاح\n this.swalService.success(this.isEditMode ? 'تم التعديل بنجاح' : 'تم الحفظ بنجاح');\n // Emit afterSave event\n this.afterSave.emit({\n record: recordToSave,\n isEdit: this.isEditMode,\n response: response,\n });\n this.visibleChange.emit(false);\n this.closeForm();\n if (this.mode != 'form-only') {\n }\n },\n error: (error) => {\n // ❌ ما نعرض رسالة خطأ هنا لأن الـ interceptor يتكفل فيها\n this.loading = false;\n this.error.emit({ error: error, context: 'save' });\n },\n });\n };\n if (this.useConfirmOnSave) {\n this.swalService\n .confirm(this.isEditMode ? 'تأكيد التعديل' : 'تأكيد الحفظ', this.isEditMode\n ? 'هل تريد حفظ التعديلات على هذا السجل؟'\n : 'هل تريد حفظ هذا السجل؟', 'نعم', 'إلغاء')\n .then((result) => {\n if (result.isConfirmed) {\n save();\n }\n });\n }\n else {\n save();\n }\n }\n /** New cancel method for form-only mode */\n onCancel() {\n this.visibleChange.emit(false);\n // Emit cancel event for parent component to handle navigation\n this.action.emit({ name: 'cancel', row: null });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericDialogComponent, isStandalone: true, selector: \"app-generic-dialog\", inputs: { form: \"form\", service: \"service\", formFields: \"formFields\", model: \"model\", apiName: \"apiName\", idField: \"idField\", dialogMaxWidth: \"dialogMaxWidth\", displayMode: \"displayMode\", mode: \"mode\", forceState: \"forceState\", drawerVisible: \"drawerVisible\", dialogVisible: \"dialogVisible\", isViewMode: \"isViewMode\", isEditMode: \"isEditMode\", useConfirmOnSave: \"useConfirmOnSave\", loading: \"loading\", errorMsg: \"errorMsg\", errorMessage: \"errorMessage\", beforeSaveTransform: \"beforeSaveTransform\", hideTable: \"hideTable\", autoShowForm: \"autoShowForm\" }, outputs: { action: \"action\", afterSave: \"afterSave\", afterDelete: \"afterDelete\", beforeSave: \"beforeSave\", beforeDelete: \"beforeDelete\", formCancel: \"formCancel\", formInit: \"formInit\", dataLoaded: \"dataLoaded\", selectionChange: \"selectionChange\", error: \"error\", visibleChange: \"visibleChange\" }, providers: [MessageService], usesOnChanges: true, ngImport: i0, template: \"<!-- Drawer -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\\r\\ndisplayMode === 'drawer'))) {\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n [closable]=\\\"true\\\"\\r\\n [dismissible]=\\\"false\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [styleClass]=\\\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [blockScroll]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <ng-template pTemplate=\\\"header\\\">\\r\\n <span class=\\\"font-bold text-lg\\\">\\r\\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\\r\\n translate): ('VIEW' | translate) }}\\r\\n </span>\\r\\n </ng-template>\\r\\n <!-- (ngSubmit)=\\\"onSubmit()\\\" -->\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\" *ngIf=\\\"!isViewMode\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ 'CANCEL' | translate }}\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-drawer>\\r\\n}\\r\\n<!-- Dialog -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\\r\\ndisplayMode === 'dialog'))) {\\r\\n<p-dialog\\r\\n [(visible)]=\\\"dialogVisible\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [header]=\\\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [style]=\\\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\\\"\\r\\n [closable]=\\\"mode !== 'form-only'\\\"\\r\\n [dismissableMask]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <!-- [breakpoints]=\\\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\\\" -->\\r\\n <div class=\\\"relative\\\">\\r\\n <div\\r\\n *ngIf=\\\"isViewMode\\\"\\r\\n class=\\\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\\\"\\r\\n ></div>\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n *ngIf=\\\"!isViewMode\\\"\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-dialog>\\r\\n}\\r\\n\\r\\n<!-- Inline Form for form-only mode -->\\r\\n@if (mode === 'form-only' && displayMode === 'inline'){\\r\\n<div class=\\\"w-full\\\">\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n</div>\\r\\n}\\r\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i4.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i4.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i4.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"component\", type: i5.Drawer, selector: \"p-drawer\", inputs: [\"appendTo\", \"blockScroll\", \"style\", \"styleClass\", \"ariaCloseLabel\", \"autoZIndex\", \"baseZIndex\", \"modal\", \"closeButtonProps\", \"dismissible\", \"showCloseIcon\", \"closeOnEscape\", \"transitionOptions\", \"visible\", \"position\", \"fullScreen\", \"header\", \"maskStyle\", \"closable\"], outputs: [\"onShow\", \"onHide\", \"visibleChange\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: DialogModule }, { kind: \"component\", type: i6.Dialog, selector: \"p-dialog\", inputs: [\"header\", \"draggable\", \"resizable\", \"contentStyle\", \"contentStyleClass\", \"modal\", \"closeOnEscape\", \"dismissableMask\", \"rtl\", \"closable\", \"breakpoints\", \"styleClass\", \"maskStyleClass\", \"maskStyle\", \"showHeader\", \"blockScroll\", \"autoZIndex\", \"baseZIndex\", \"minX\", \"minY\", \"focusOnShow\", \"maximizable\", \"keepInViewport\", \"focusTrap\", \"transitionOptions\", \"closeIcon\", \"closeAriaLabel\", \"closeTabindex\", \"minimizeIcon\", \"maximizeIcon\", \"closeButtonProps\", \"maximizeButtonProps\", \"visible\", \"style\", \"position\", \"role\", \"appendTo\", \"content\", \"contentTemplate\", \"footerTemplate\", \"closeIconTemplate\", \"maximizeIconTemplate\", \"minimizeIconTemplate\", \"headlessTemplate\"], outputs: [\"onShow\", \"onHide\", \"visibleChange\", \"onResizeInit\", \"onResizeEnd\", \"onDragEnd\", \"onMaximize\"] }, { kind: \"pipe\", type: i7.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericDialogComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, selector: 'app-generic-dialog', imports: [\n CommonModule,\n ButtonModule,\n FormlyForm,\n FormsModule,\n ReactiveFormsModule,\n DrawerModule,\n TranslateModule,\n Drawer,\n DialogModule,\n ], providers: [MessageService], template: \"<!-- Drawer -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'drawer') && (drawerVisible || (autoShowForm &&\\r\\ndisplayMode === 'drawer'))) {\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n [closable]=\\\"true\\\"\\r\\n [dismissible]=\\\"false\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [styleClass]=\\\"mode === 'form-only' && forceState === 'view' ? '!w-full md:!w-80 lg:!w-[40rem] !h-full' : '!w-full md:!w-80 lg:!w-[40rem]'\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [blockScroll]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <ng-template pTemplate=\\\"header\\\">\\r\\n <span class=\\\"font-bold text-lg\\\">\\r\\n {{ isEditMode ? ('UPDATE' | translate): isViewMode === false ? ('ADD' |\\r\\n translate): ('VIEW' | translate) }}\\r\\n </span>\\r\\n </ng-template>\\r\\n <!-- (ngSubmit)=\\\"onSubmit()\\\" -->\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\" *ngIf=\\\"!isViewMode\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ 'CANCEL' | translate }}\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-drawer>\\r\\n}\\r\\n<!-- Dialog -->\\r\\n@if (((typeof displayMode === 'string' ? displayMode : isEditMode ?\\r\\ndisplayMode['edit'] : isViewMode === false ? displayMode['add'] :\\r\\ndisplayMode['view']) === 'dialog') && (dialogVisible || (autoShowForm &&\\r\\ndisplayMode === 'dialog'))) {\\r\\n<p-dialog\\r\\n [(visible)]=\\\"dialogVisible\\\"\\r\\n [closeOnEscape]=\\\"true\\\"\\r\\n (visibleChange)=\\\"visibleChange.emit($event)\\\"\\r\\n [header]=\\\"isEditMode ? ('UPDATE' | translate) : isViewMode === false ? ('ADD'| translate) : ('VIEW'| translate)\\\"\\r\\n [modal]=\\\"mode !== 'form-only'\\\"\\r\\n [style]=\\\"mode === 'form-only' && forceState === 'view' ? { width: '100vw', height: '100vh', maxWidth: 'none' } : { width: '95vw', maxWidth: dialogMaxWidth }\\\"\\r\\n [closable]=\\\"mode !== 'form-only'\\\"\\r\\n [dismissableMask]=\\\"mode !== 'form-only'\\\"\\r\\n>\\r\\n <!-- [breakpoints]=\\\"{ '1200px': '50vw', '768px': '70vw', '560px': '95vw' }\\\" -->\\r\\n <div class=\\\"relative\\\">\\r\\n <div\\r\\n *ngIf=\\\"isViewMode\\\"\\r\\n class=\\\"absolute inset-0 z-10 bg-white/50 pointer-events-auto rounded-md\\\"\\r\\n ></div>\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\" class=\\\"p-4\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n </div>\\r\\n\\r\\n <ng-template pTemplate=\\\"footer\\\">\\r\\n <div class=\\\"flex justify-end gap-2\\\">\\r\\n <button\\r\\n *ngIf=\\\"!isViewMode\\\"\\r\\n pButton\\r\\n [label]=\\\"isEditMode ? ('UPDATE' | translate) : ('SAVE' | translate)\\\"\\r\\n type=\\\"button\\\"\\r\\n [disabled]=\\\"loading || form.invalid\\\"\\r\\n [loading]=\\\"loading\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n ></button>\\r\\n <button\\r\\n pButton\\r\\n label=\\\"{{ isViewMode ? ('CLOSE' | translate) : ('CANCEL' | translate) }}\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (click)=\\\"visibleChange.emit(false);closeForm();\\\"\\r\\n ></button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-dialog>\\r\\n}\\r\\n\\r\\n<!-- Inline Form for form-only mode -->\\r\\n@if (mode === 'form-only' && displayMode === 'inline'){\\r\\n<div class=\\\"w-full\\\">\\r\\n <form *ngIf=\\\"form\\\" [formGroup]=\\\"form\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"formFields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n ></formly-form>\\r\\n </form>\\r\\n</div>\\r\\n}\\r\\n\" }]\n }], propDecorators: { form: [{\n type: Input\n }], service: [{\n type: Input\n }], formFields: [{\n type: Input\n }], model: [{\n type: Input\n }], apiName: [{\n type: Input\n }], idField: [{\n type: Input\n }], dialogMaxWidth: [{\n type: Input\n }], displayMode: [{\n type: Input\n }], mode: [{\n type: Input\n }], forceState: [{\n type: Input\n }], drawerVisible: [{\n type: Input\n }], dialogVisible: [{\n type: Input\n }], isViewMode: [{\n type: Input\n }], isEditMode: [{\n type: Input\n }], useConfirmOnSave: [{\n type: Input\n }], loading: [{\n type: Input\n }], errorMsg: [{\n type: Input\n }], errorMessage: [{\n type: Input\n }], beforeSaveTransform: [{\n type: Input\n }], hideTable: [{\n type: Input\n }], autoShowForm: [{\n type: Input\n }], action: [{\n type: Output\n }], afterSave: [{\n type: Output\n }], afterDelete: [{\n type: Output\n }], beforeSave: [{\n type: Output\n }], beforeDelete: [{\n type: Output\n }], formCancel: [{\n type: Output\n }], formInit: [{\n type: Output\n }], dataLoaded: [{\n type: Output\n }], selectionChange: [{\n type: Output\n }], error: [{\n type: Output\n }], visibleChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cvc3JjL2xpYi9nZW5lcmljLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWRpYWxvZy9zcmMvbGliL2dlbmVyaWMtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUwsVUFBVSxHQUVYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBb0I5QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLG1CQUFtQjtJQUNuQixTQUFTLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7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c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQVdHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBUU8sWUFBWTtzQkFBeEIsS0FBSztnQkFLSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUlHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7XHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBGb3JtbHlGaWVsZENvbmZpZyxcclxuICBGb3JtbHlGb3JtLFxyXG4gIEZvcm1seUZvcm1PcHRpb25zLFxyXG59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRHJhd2VyTW9kdWxlLCBEcmF3ZXIgfSBmcm9tICdwcmltZW5nL2RyYXdlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtZGlhbG9nJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtbHlGb3JtLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgRHJhd2VyLFxyXG4gICAgRGlhbG9nTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWRpYWxvZy5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWRpYWxvZy5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgLy8g2KfZhNiu2K/Zhdin2Kog2KfZhNmF2K3ZgtmI2YbYqVxyXG4gIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIHN3YWxTZXJ2aWNlID0gaW5qZWN0KFN3YWxTZXJ2aWNlKTtcclxuXHJcbiAgLy8g2KfZhNit2KfZhNipINin2YTYr9in2K7ZhNmK2Kkg2YTZhNmB2YjYsdmFXHJcbiAgQElucHV0KCkgZm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xyXG4gIGZvcm1GaWVsZHNfOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XHJcbiAgbW9kZWxfOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8g2KfZhNmF2K/YrtmE2KfYqiAoSW5wdXRzKVxyXG4gIEBJbnB1dCgpIHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gaW5qZWN0KEJhc2VTZXJ2aWNlKTtcclxuICBASW5wdXQoKSBmb3JtRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XHJcbiAgQElucHV0KCkgbW9kZWw6IGFueTtcclxuICBASW5wdXQoKSBhcGlOYW1lID0gJyc7XHJcbiAgQElucHV0KCkgaWRGaWVsZCA9ICdpZCc7XHJcbiAgQElucHV0KCkgZGlhbG9nTWF4V2lkdGggPSAnNDByZW0nOyAvLyDYo9mC2LXZiSDYudix2LYg2YTZhNiv2KfZitmE2YjYrFxyXG4gIEBJbnB1dCgpIGRpc3BsYXlNb2RlOlxyXG4gICAgfCAnZHJhd2VyJ1xyXG4gICAgfCAnZGlhbG9nJ1xyXG4gICAgfCAncm91dGUnXHJcbiAgICB8ICdpbmxpbmUnXHJcbiAgICB8IFBhcnRpYWw8XHJcbiAgICAgIFJlY29yZDxcclxuICAgICAgICAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JyxcclxuICAgICAgICAnZHJhd2VyJyB8ICdkaWFsb2cnIHwgJ3JvdXRlJyB8ICdpbmxpbmUnXHJcbiAgICAgID5cclxuICAgID4gPSAnZHJhd2VyJztcclxuICBASW5wdXQoKSBtb2RlOiAnZnVsbCcgfCAnZm9ybS1vbmx5JyB8ICd0YWJsZS1vbmx5JyB8ICdkZXRhaWwnID0gJ2Z1bGwnOyAvLyDZiNi22Lkg2KfZhNi52LHYtlxyXG4gIEBJbnB1dCgpIGZvcmNlU3RhdGU6ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnIHwgbnVsbCA9IG51bGw7IC8vINil2KzYqNin2LEg2K3Yp9mE2Kkg2YXYudmK2YbYqVxyXG4gIEBJbnB1dCgpIGRyYXdlclZpc2libGUgPSBmYWxzZTsgLy8g2LjZh9mI2LEg2KfZhNmAIGRyYXdlclxyXG4gIEBJbnB1dCgpIGRpYWxvZ1Zpc2libGUgPSBmYWxzZTsgLy8g2LjZh9mI2LEg2KfZhNmAIGRpYWxvZ1xyXG4gIEBJbnB1dCgpIGlzVmlld01vZGUgPSBmYWxzZTsgLy8g2YjYtti5INin2YTZhdi02KfZh9iv2Kkg2YHZgti3XHJcbiAgQElucHV0KCkgaXNFZGl0TW9kZSA9IGZhbHNlOyAvLyDZiNi22Lkg2KfZhNiq2LnYr9mK2YRcclxuICBASW5wdXQoKSB1c2VDb25maXJtT25TYXZlID0gZmFsc2U7IC8vINin2LPYqtiu2K/Yp9mFINiq2KPZg9mK2K8g2LnZhtivINin2YTYrdmB2LhcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7IC8vINit2KfZhNipINin2YTYqtit2YXZitmEXHJcbiAgQElucHV0KCkgZXJyb3JNc2cgPSAnJzsgLy8g2LHYs9in2YTYqSDYrti32KMg2YXYrtiq2LXYsdipXHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBhbnkgPSAnJzsgLy8g2LHYs9in2YTYqSDYrti32KMg2KrZgdi12YrZhNmK2KlcclxuICBASW5wdXQoKSBiZWZvcmVTYXZlVHJhbnNmb3JtPzogKHJlY29yZDogYW55LCBpc0VkaXQ6IGJvb2xlYW4pID0+IGFueTsgLy8g4pqhINiv2YjYp9mEINmF2K7Ytdi12Kkg2YLYqNmEINin2YTYrdmB2LhcclxuXHJcbiAgLy8g2KfZhNmF2K/YrtmE2KfYqiDYp9mE2YXYrdiz2YjYqNipXHJcbiAgQElucHV0KCkgZ2V0IGhpZGVUYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLm1vZGUgPT09ICdmb3JtLW9ubHknIHx8XHJcbiAgICAgICAgKHRoaXMuZm9yY2VTdGF0ZSAmJiB0aGlzLm1vZGUgIT09ICd0YWJsZS1vbmx5JykpID8/XHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZ2V0IGF1dG9TaG93Rm9ybSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdmb3JtLW9ubHknICYmICEhdGhpcy5mb3JjZVN0YXRlO1xyXG4gIH1cclxuXHJcbiAgLy8g2KfZhNmF2K7Ysdis2KfYqiAoT3V0cHV0cylcclxuICBAT3V0cHV0KCkgYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG5hbWU6IHN0cmluZzsgcm93OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICByZWNvcmQ6IGFueTtcclxuICAgIGlzRWRpdDogYm9vbGVhbjtcclxuICAgIHJlc3BvbnNlPzogYW55O1xyXG4gIH0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogYW55OyByZXNwb25zZT86IGFueSB9PigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogYW55OyBpc0VkaXQ6IGJvb2xlYW4gfT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHJlY29yZDogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1Jbml0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gICAgbW9kZWw6IGFueTtcclxuICB9PigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRhdGE6IGFueVtdOyB0b3RhbDogbnVtYmVyIH0+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgc2VsZWN0ZWQ6IGFueVtdO1xyXG4gICAgc2VsZWN0ZWRDb3VudDogbnVtYmVyO1xyXG4gIH0+KCk7XHJcbiAgQE91dHB1dCgpIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjx7IGVycm9yOiBhbnk7IGNvbnRleHQ6IHN0cmluZyB9PigpO1xyXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXBpTmFtZSAmJiB0aGlzLmFwaU5hbWUgIT0gJycpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLmFwaU5hbWUgPSB0aGlzLmFwaU5hbWU7XHJcbiAgICB9XHJcbiAgICAvLyBBdXRvLXNob3cgZm9ybSB3aGVuIGluIGZvcm0tb25seSBtb2RlIHdpdGggZm9yY2VTdGF0ZVxyXG4gICAgdGhpcy5mb3JtRmllbGRzXyA9IHRoaXMuZm9ybUZpZWxkcztcclxuICAgIGlmICh0aGlzLmF1dG9TaG93Rm9ybSkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtU3RhdGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykgeyB9XHJcbiAgLy8gSGVscGVyIG1ldGhvZCB0byBvcGVuIGZvcm0gcHJvZ3JhbW1hdGljYWxseVxyXG4gIG9wZW5Gb3JtKG1vZGU6ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnLCBtb2RlbD86IGFueSkge1xyXG4gICAgdGhpcy5mb3JjZVN0YXRlID0gbW9kZTtcclxuICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICBpZiAobW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnY3JlYXRlJzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0ge307XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlZGl0JzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICBjb25zdCBtb2RlQ29uZmlnID0gdHlwZW9mIHRoaXMuZGlzcGxheU1vZGUgPT09ICdzdHJpbmcnXHJcbiAgICA/IHRoaXMuZGlzcGxheU1vZGVcclxuICAgIDogKHRoaXMuZGlzcGxheU1vZGUgYXMgYW55KVttb2RlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgICAvLyBUcmlnZ2VyIGZvcm0gb3BlbmluZyBiYXNlZCBvbiBkaXNwbGF5TW9kZVxyXG4gICAgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGNsb3NlIGZvcm0gcHJvZ3JhbW1hdGljYWxseVxyXG4gIGNsb3NlRm9ybSgpIHtcclxuICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcmNlU3RhdGUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybVN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZm9yY2VTdGF0ZSAmJiB0aGlzLm1vZGUgPT09ICdmb3JtLW9ubHknKSB7XHJcbiAgICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5mb3JjZVN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSAnY3JlYXRlJzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0ge307XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlZGl0JzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEF1dG8tc2hvdyB0aGUgZm9ybVxyXG4gICAgICAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6ICh0aGlzLmRpc3BsYXlNb2RlIGFzIGFueSlbdGhpcy5mb3JjZVN0YXRlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgICAvLyBUcmlnZ2VyIGZvcm0gb3BlbmluZyBiYXNlZCBvbiBkaXNwbGF5TW9kZVxyXG4gICAgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNhdmUgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5pc0VkaXRNb2RlID8gKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmlkRmllbGRdIDogbnVsbDtcclxuXHJcbiAgICAgIC8vIEVtaXQgYmVmb3JlU2F2ZSBldmVudFxyXG4gICAgICBjb25zdCBiZWZvcmVTYXZlRGF0YSA9IHtcclxuICAgICAgICByZWNvcmQ6IHsgLi4udGhpcy5tb2RlbCB9LFxyXG4gICAgICAgIGlzRWRpdDogdGhpcy5pc0VkaXRNb2RlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmJlZm9yZVNhdmUuZW1pdChiZWZvcmVTYXZlRGF0YSk7XHJcblxyXG4gICAgICAvLyBBbGxvdyBwYXJlbnQgdG8gbW9kaWZ5IGRhdGEgYmVmb3JlIHNhdmVcclxuICAgICAgbGV0IHJlY29yZFRvU2F2ZSA9IHRoaXMuYmVmb3JlU2F2ZVRyYW5zZm9ybVxyXG4gICAgICAgID8gdGhpcy5iZWZvcmVTYXZlVHJhbnNmb3JtKGJlZm9yZVNhdmVEYXRhLnJlY29yZCwgdGhpcy5pc0VkaXRNb2RlKVxyXG4gICAgICAgIDogYmVmb3JlU2F2ZURhdGEucmVjb3JkO1xyXG5cclxuICAgICAgY29uc3Qgb3BlcmF0aW9uJCA9IHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShpZCwgcmVjb3JkVG9TYXZlKVxyXG4gICAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZShyZWNvcmRUb1NhdmUpO1xyXG5cclxuICAgICAgb3BlcmF0aW9uJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAvLyDinIUg2LHYs9in2YTYqSDZhtis2KfYrVxyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPyAn2KrZhSDYp9mE2KrYudiv2YrZhCDYqNmG2KzYp9itJyA6ICfYqtmFINin2YTYrdmB2Lgg2KjZhtis2KfYrSdcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgLy8gRW1pdCBhZnRlclNhdmUgZXZlbnRcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJTYXZlLmVtaXQoe1xyXG4gICAgICAgICAgICByZWNvcmQ6IHJlY29yZFRvU2F2ZSxcclxuICAgICAgICAgICAgaXNFZGl0OiB0aGlzLmlzRWRpdE1vZGUsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUZvcm0oKTtcclxuICAgICAgICAgIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8g4p2MINmF2Kcg2YbYudix2LYg2LHYs9in2YTYqSDYrti32KMg2YfZhtinINmE2KPZhiDYp9mE2YAgaW50ZXJjZXB0b3Ig2YrYqtmD2YHZhCDZgdmK2YfYp1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoeyBlcnJvcjogZXJyb3IsIGNvbnRleHQ6ICdzYXZlJyB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMudXNlQ29uZmlybU9uU2F2ZSkge1xyXG4gICAgICB0aGlzLnN3YWxTZXJ2aWNlXHJcbiAgICAgICAgLmNvbmZpcm0oXHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPyAn2KrYo9mD2YrYryDYp9mE2KrYudiv2YrZhCcgOiAn2KrYo9mD2YrYryDYp9mE2K3Zgdi4JyxcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgICAgICA/ICfZh9mEINiq2LHZitivINit2YHYuCDYp9mE2KrYudiv2YrZhNin2Kog2LnZhNmJINmH2LDYpyDYp9mE2LPYrNmE2J8nXHJcbiAgICAgICAgICAgIDogJ9mH2YQg2KrYsdmK2K8g2K3Zgdi4INmH2LDYpyDYp9mE2LPYrNmE2J8nLFxyXG4gICAgICAgICAgJ9mG2LnZhScsXHJcbiAgICAgICAgICAn2KXZhNi62KfYoSdcclxuICAgICAgICApXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICBzYXZlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzYXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTmV3IGNhbmNlbCBtZXRob2QgZm9yIGZvcm0tb25seSBtb2RlICovXHJcbiAgb25DYW5jZWwoKSB7XHJcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAvLyBFbWl0IGNhbmNlbCBldmVudCBmb3IgcGFyZW50IGNvbXBvbmVudCB0byBoYW5kbGUgbmF2aWdhdGlvblxyXG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IG5hbWU6ICdjYW5jZWwnLCByb3c6IG51bGwhIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIERyYXdlciAtLT5cclxuQGlmICgoKHR5cGVvZiBkaXNwbGF5TW9kZSA9PT0gJ3N0cmluZycgPyBkaXNwbGF5TW9kZSA6IGlzRWRpdE1vZGUgP1xyXG5kaXNwbGF5TW9kZVsnZWRpdCddIDogaXNWaWV3TW9kZSA9PT0gZmFsc2UgPyBkaXNwbGF5TW9kZVsnYWRkJ10gOlxyXG5kaXNwbGF5TW9kZVsndmlldyddKSA9PT0gJ2RyYXdlcicpICYmIChkcmF3ZXJWaXNpYmxlIHx8IChhdXRvU2hvd0Zvcm0gJiZcclxuZGlzcGxheU1vZGUgPT09ICdkcmF3ZXInKSkpIHtcclxuPHAtZHJhd2VyXHJcbiAgWyh2aXNpYmxlKV09XCJkcmF3ZXJWaXNpYmxlXCJcclxuICBbY2xvc2FibGVdPVwidHJ1ZVwiXHJcbiAgW2Rpc21pc3NpYmxlXT1cImZhbHNlXCJcclxuICBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCJcclxuICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgW3N0eWxlQ2xhc3NdPVwibW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgZm9yY2VTdGF0ZSA9PT0gJ3ZpZXcnID8gJyF3LWZ1bGwgbWQ6IXctODAgbGc6IXctWzQwcmVtXSAhaC1mdWxsJyA6ICchdy1mdWxsIG1kOiF3LTgwIGxnOiF3LVs0MHJlbV0nXCJcclxuICBbbW9kYWxdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4gIFtibG9ja1Njcm9sbF09XCJtb2RlICE9PSAnZm9ybS1vbmx5J1wiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+XHJcbiAgICAgIHt7IGlzRWRpdE1vZGUgPyAoJ1VQREFURScgfCB0cmFuc2xhdGUpOiBpc1ZpZXdNb2RlID09PSBmYWxzZSA/ICgnQUREJyB8XHJcbiAgICAgIHRyYW5zbGF0ZSk6ICgnVklFVycgfCB0cmFuc2xhdGUpIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8IS0tIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgLS0+XHJcbiAgPGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJwLTRcIj5cclxuICAgIDxmb3JtbHktZm9ybVxyXG4gICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgW2ZpZWxkc109XCJmb3JtRmllbGRzX1wiXHJcbiAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgPjwvZm9ybWx5LWZvcm0+XHJcbiAgPC9mb3JtPlxyXG5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCIgKm5nSWY9XCIhaXNWaWV3TW9kZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgZ2FwLTJcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBbbGFiZWxdPVwiaXNFZGl0TW9kZSA/ICgnVVBEQVRFJyB8IHRyYW5zbGF0ZSkgOiAoJ1NBVkUnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgID48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBsYWJlbD1cInt7ICdDQU5DRUwnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgICAgICBzZXZlcml0eT1cImRhbmdlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7Y2xvc2VGb3JtKCk7XCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRyYXdlcj5cclxufVxyXG48IS0tIERpYWxvZyAtLT5cclxuQGlmICgoKHR5cGVvZiBkaXNwbGF5TW9kZSA9PT0gJ3N0cmluZycgPyBkaXNwbGF5TW9kZSA6IGlzRWRpdE1vZGUgP1xyXG5kaXNwbGF5TW9kZVsnZWRpdCddIDogaXNWaWV3TW9kZSA9PT0gZmFsc2UgPyBkaXNwbGF5TW9kZVsnYWRkJ10gOlxyXG5kaXNwbGF5TW9kZVsndmlldyddKSA9PT0gJ2RpYWxvZycpICYmIChkaWFsb2dWaXNpYmxlIHx8IChhdXRvU2hvd0Zvcm0gJiZcclxuZGlzcGxheU1vZGUgPT09ICdkaWFsb2cnKSkpIHtcclxuPHAtZGlhbG9nXHJcbiAgWyh2aXNpYmxlKV09XCJkaWFsb2dWaXNpYmxlXCJcclxuICBbY2xvc2VPbkVzY2FwZV09XCJ0cnVlXCJcclxuICAodmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgW2hlYWRlcl09XCJpc0VkaXRNb2RlID8gKCdVUERBVEUnIHwgdHJhbnNsYXRlKSA6IGlzVmlld01vZGUgPT09IGZhbHNlID8gKCdBREQnfCB0cmFuc2xhdGUpIDogKCdWSUVXJ3wgdHJhbnNsYXRlKVwiXHJcbiAgW21vZGFsXT1cIm1vZGUgIT09ICdmb3JtLW9ubHknXCJcclxuICBbc3R5bGVdPVwibW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgZm9yY2VTdGF0ZSA9PT0gJ3ZpZXcnID8geyB3aWR0aDogJzEwMHZ3JywgaGVpZ2h0OiAnMTAwdmgnLCBtYXhXaWR0aDogJ25vbmUnIH0gOiB7IHdpZHRoOiAnOTV2dycsIG1heFdpZHRoOiBkaWFsb2dNYXhXaWR0aCB9XCJcclxuICBbY2xvc2FibGVdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4gIFtkaXNtaXNzYWJsZU1hc2tdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4+XHJcbiAgPCEtLSBbYnJlYWtwb2ludHNdPVwieyAnMTIwMHB4JzogJzUwdncnLCAnNzY4cHgnOiAnNzB2dycsICc1NjBweCc6ICc5NXZ3JyB9XCIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiaXNWaWV3TW9kZVwiXHJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTEwIGJnLXdoaXRlLzUwIHBvaW50ZXItZXZlbnRzLWF1dG8gcm91bmRlZC1tZFwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInAtNFwiPlxyXG4gICAgICA8Zm9ybWx5LWZvcm1cclxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBbZmllbGRzXT1cImZvcm1GaWVsZHNfXCJcclxuICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gICAgICA+PC9mb3JtbHktZm9ybT5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgZ2FwLTJcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiIWlzVmlld01vZGVcIlxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBbbGFiZWxdPVwiaXNFZGl0TW9kZSA/ICgnVVBEQVRFJyB8IHRyYW5zbGF0ZSkgOiAoJ1NBVkUnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZm9ybS5pbnZhbGlkXCJcclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiXHJcbiAgICAgID48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBsYWJlbD1cInt7IGlzVmlld01vZGUgPyAoJ0NMT1NFJyB8IHRyYW5zbGF0ZSkgOiAoJ0NBTkNFTCcgfCB0cmFuc2xhdGUpIH19XCJcclxuICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7Y2xvc2VGb3JtKCk7XCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRpYWxvZz5cclxufVxyXG5cclxuPCEtLSBJbmxpbmUgRm9ybSBmb3IgZm9ybS1vbmx5IG1vZGUgLS0+XHJcbkBpZiAobW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgZGlzcGxheU1vZGUgPT09ICdpbmxpbmUnKXtcclxuPGRpdiBjbGFzcz1cInctZnVsbFwiPlxyXG4gIDxmb3JtICpuZ0lmPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgPGZvcm1seS1mb3JtXHJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICBbZmllbGRzXT1cImZvcm1GaWVsZHNfXCJcclxuICAgICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICA+PC9mb3JtbHktZm9ybT5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG59XHJcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cvc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWdlbmVyaWMtZGlhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
|
|
@@ -435,7 +435,7 @@ class GenericSelectorTypeComponent extends FieldType {
|
|
|
435
435
|
</app-generic-dialog>
|
|
436
436
|
|
|
437
437
|
|
|
438
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i3.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "appendTo"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i4.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i5.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i6.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
438
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i3.AutoComplete, selector: "p-autoComplete, p-autocomplete, p-auto-complete", inputs: ["minLength", "minQueryLength", "delay", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "typeahead", "appendTo"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i4.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i5.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i6.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: GenericDialogComponent, selector: "app-generic-dialog", inputs: ["form", "service", "formFields", "model", "apiName", "idField", "dialogMaxWidth", "displayMode", "mode", "forceState", "drawerVisible", "dialogVisible", "isViewMode", "isEditMode", "useConfirmOnSave", "loading", "errorMsg", "errorMessage", "beforeSaveTransform", "hideTable", "autoShowForm"], outputs: ["action", "afterSave", "afterDelete", "beforeSave", "beforeDelete", "formCancel", "formInit", "dataLoaded", "selectionChange", "error", "visibleChange"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
439
439
|
}
|
|
440
440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericSelectorTypeComponent, decorators: [{
|
|
441
441
|
type: Component,
|