@elite.framework/ng.ui.core 2.0.31 → 2.0.34

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.
@@ -43,6 +43,7 @@ class GenericDialogComponent {
43
43
  formFields = [];
44
44
  model;
45
45
  apiName = '';
46
+ moduleName = '';
46
47
  idField = 'id';
47
48
  dialogMaxWidth = '40rem'; // أقصى عرض للدايلوج
48
49
  displayMode = 'drawer';
@@ -81,6 +82,7 @@ class GenericDialogComponent {
81
82
  ngOnInit() {
82
83
  if (this.apiName && this.apiName != '') {
83
84
  this.service.apiName = this.apiName;
85
+ this.service.moduleName = this.moduleName;
84
86
  }
85
87
  // Auto-show form when in form-only mode with forceState
86
88
  this.formFields_ = this.formFields;
@@ -230,7 +232,7 @@ class GenericDialogComponent {
230
232
  this.action.emit({ name: 'cancel', row: null });
231
233
  }
232
234
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
233
- 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: 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: TranslatePipe, name: "translate" }] });
235
+ 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", moduleName: "moduleName", 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: 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: TranslatePipe, name: "translate" }] });
234
236
  }
235
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericDialogComponent, decorators: [{
236
238
  type: Component,
@@ -255,6 +257,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
255
257
  type: Input
256
258
  }], apiName: [{
257
259
  type: Input
260
+ }], moduleName: [{
261
+ type: Input
258
262
  }], idField: [{
259
263
  type: Input
260
264
  }], dialogMaxWidth: [{
@@ -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 { TranslatePipe } from '@elite.framework/ng.core/pipes';\nimport { BaseService, IdParserService, LocalizationService, 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\";\nexport class GenericDialogComponent {\n idParser = inject(IdParserService);\n // الخدمات المحقونة\n translate = inject(LocalizationService);\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 as any)[this.idField] : null;\n const id = this.isEditMode\n ? this.idParser.parseIds(this.model, this.idField)\n : 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: 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: 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 TranslatePipe,\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cvc3JjL2xpYi9nZW5lcmljLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWRpYWxvZy9zcmMvbGliL2dlbmVyaWMtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUwsVUFBVSxHQUVYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBb0I5QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ3pCLFFBQVEsR0FBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUMsbUJBQW1CO0lBQ25CLFNBQVMsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixD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bEIsSUFBSTtzQkFBWixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFXRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHTyxTQUFTO3NCQUFyQixLQUFLO2dCQVFPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFJRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybWx5RmllbGRDb25maWcsXHJcbiAgRm9ybWx5Rm9ybSxcclxuICBGb3JtbHlGb3JtT3B0aW9ucyxcclxufSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyYXdlck1vZHVsZSwgRHJhd2VyIH0gZnJvbSAncHJpbWVuZy9kcmF3ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3BpcGVzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIElkUGFyc2VyU2VydmljZSwgTG9jYWxpemF0aW9uU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtZGlhbG9nJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtbHlGb3JtLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIERyYXdlcixcclxuICAgIERpYWxvZ01vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1kaWFsb2cuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1kaWFsb2cuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgaWRQYXJzZXI9IGluamVjdChJZFBhcnNlclNlcnZpY2UpO1xyXG4gIC8vINin2YTYrtiv2YXYp9iqINin2YTZhdit2YLZiNmG2KlcclxuICB0cmFuc2xhdGU6IExvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBzd2FsU2VydmljZSA9IGluamVjdChTd2FsU2VydmljZSk7XHJcblxyXG4gIC8vINin2YTYrdin2YTYqSDYp9mE2K/Yp9iu2YTZitipINmE2YTZgdmI2LHZhVxyXG4gIEBJbnB1dCgpIGZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiAgb3B0aW9uczogRm9ybWx5Rm9ybU9wdGlvbnMgPSB7fTtcclxuICBmb3JtRmllbGRzXzogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIG1vZGVsXzogYW55ID0ge307XHJcblxyXG4gIC8vINin2YTZhdiv2K7ZhNin2KogKElucHV0cylcclxuICBASW5wdXQoKSBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IGluamVjdChCYXNlU2VydmljZSk7XHJcbiAgQElucHV0KCkgZm9ybUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG1vZGVsOiBhbnk7XHJcbiAgQElucHV0KCkgYXBpTmFtZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGlkRmllbGQgPSAnaWQnO1xyXG4gIEBJbnB1dCgpIGRpYWxvZ01heFdpZHRoID0gJzQwcmVtJzsgLy8g2KPZgti12Ykg2LnYsdi2INmE2YTYr9in2YrZhNmI2KxcclxuICBASW5wdXQoKSBkaXNwbGF5TW9kZTpcclxuICAgIHwgJ2RyYXdlcidcclxuICAgIHwgJ2RpYWxvZydcclxuICAgIHwgJ3JvdXRlJ1xyXG4gICAgfCAnaW5saW5lJ1xyXG4gICAgfCBQYXJ0aWFsPFxyXG4gICAgICBSZWNvcmQ8XHJcbiAgICAgICAgJ2FkZCcgfCAnZWRpdCcgfCAndmlldycsXHJcbiAgICAgICAgJ2RyYXdlcicgfCAnZGlhbG9nJyB8ICdyb3V0ZScgfCAnaW5saW5lJ1xyXG4gICAgICA+XHJcbiAgICA+ID0gJ2RyYXdlcic7XHJcbiAgQElucHV0KCkgbW9kZTogJ2Z1bGwnIHwgJ2Zvcm0tb25seScgfCAndGFibGUtb25seScgfCAnZGV0YWlsJyA9ICdmdWxsJzsgLy8g2YjYtti5INin2YTYudix2LZcclxuICBASW5wdXQoKSBmb3JjZVN0YXRlOiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3JyB8IG51bGwgPSBudWxsOyAvLyDYpdis2KjYp9ixINit2KfZhNipINmF2LnZitmG2KlcclxuICBASW5wdXQoKSBkcmF3ZXJWaXNpYmxlID0gZmFsc2U7IC8vINi42YfZiNixINin2YTZgCBkcmF3ZXJcclxuICBASW5wdXQoKSBkaWFsb2dWaXNpYmxlID0gZmFsc2U7IC8vINi42YfZiNixINin2YTZgCBkaWFsb2dcclxuICBASW5wdXQoKSBpc1ZpZXdNb2RlID0gZmFsc2U7IC8vINmI2LbYuSDYp9mE2YXYtNin2YfYr9ipINmB2YLYt1xyXG4gIEBJbnB1dCgpIGlzRWRpdE1vZGUgPSBmYWxzZTsgLy8g2YjYtti5INin2YTYqti52K/ZitmEXHJcbiAgQElucHV0KCkgdXNlQ29uZmlybU9uU2F2ZSA9IGZhbHNlOyAvLyDYp9iz2KrYrtiv2KfZhSDYqtij2YPZitivINi52YbYryDYp9mE2K3Zgdi4XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlOyAvLyDYrdin2YTYqSDYp9mE2KrYrdmF2YrZhFxyXG4gIEBJbnB1dCgpIGVycm9yTXNnID0gJyc7IC8vINix2LPYp9mE2Kkg2K7Yt9ijINmF2K7Yqti12LHYqVxyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgYW55ID0gJyc7IC8vINix2LPYp9mE2Kkg2K7Yt9ijINiq2YHYtdmK2YTZitipXHJcbiAgQElucHV0KCkgYmVmb3JlU2F2ZVRyYW5zZm9ybT86IChyZWNvcmQ6IGFueSwgaXNFZGl0OiBib29sZWFuKSA9PiBhbnk7IC8vIOKaoSDYr9mI2KfZhCDZhdiu2LXYtdipINmC2KjZhCDYp9mE2K3Zgdi4XHJcblxyXG4gIC8vINin2YTZhdiv2K7ZhNin2Kog2KfZhNmF2K3Ys9mI2KjYqVxyXG4gIEBJbnB1dCgpIGdldCBoaWRlVGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5tb2RlID09PSAnZm9ybS1vbmx5JyB8fFxyXG4gICAgICAgICh0aGlzLmZvcmNlU3RhdGUgJiYgdGhpcy5tb2RlICE9PSAndGFibGUtb25seScpKSA/P1xyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGdldCBhdXRvU2hvd0Zvcm0oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZm9ybS1vbmx5JyAmJiAhIXRoaXMuZm9yY2VTdGF0ZTtcclxuICB9XHJcblxyXG4gIC8vINin2YTZhdiu2LHYrNin2KogKE91dHB1dHMpXHJcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHJvdzogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgcmVjb3JkOiBhbnk7XHJcbiAgICBpc0VkaXQ6IGJvb2xlYW47XHJcbiAgICByZXNwb25zZT86IGFueTtcclxuICB9PigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlckRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IGFueTsgcmVzcG9uc2U/OiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgYmVmb3JlU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IGFueTsgaXNFZGl0OiBib29sZWFuIH0+KCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZURlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyByZWNvcmQ6IGFueSB9PigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgIG1vZGVsOiBhbnk7XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBhbnlbXTsgdG90YWw6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNlbGVjdGVkOiBhbnlbXTtcclxuICAgIHNlbGVjdGVkQ291bnQ6IG51bWJlcjtcclxuICB9PigpO1xyXG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8eyBlcnJvcjogYW55OyBjb250ZXh0OiBzdHJpbmcgfT4oKTtcclxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmFwaU5hbWUgJiYgdGhpcy5hcGlOYW1lICE9ICcnKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5hcGlOYW1lID0gdGhpcy5hcGlOYW1lO1xyXG4gICAgfVxyXG4gICAgLy8gQXV0by1zaG93IGZvcm0gd2hlbiBpbiBmb3JtLW9ubHkgbW9kZSB3aXRoIGZvcmNlU3RhdGVcclxuICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICBpZiAodGhpcy5hdXRvU2hvd0Zvcm0pIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybVN0YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHsgfVxyXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gb3BlbiBmb3JtIHByb2dyYW1tYXRpY2FsbHlcclxuICBvcGVuRm9ybShtb2RlOiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3JywgbW9kZWw/OiBhbnkpIHtcclxuICAgIHRoaXMuZm9yY2VTdGF0ZSA9IG1vZGU7XHJcbiAgICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gICAgaWYgKG1vZGVsKSB7XHJcbiAgICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRoaXMubW9kZWwgPSB7fTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZWRpdCc6XHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6ICh0aGlzLmRpc3BsYXlNb2RlIGFzIGFueSlbbW9kZV0gPz8gJ2RyYXdlcic7XHJcblxyXG4gICAgLy8gVHJpZ2dlciBmb3JtIG9wZW5pbmcgYmFzZWQgb24gZGlzcGxheU1vZGVcclxuICAgIGlmIChtb2RlQ29uZmlnID09PSAnZHJhd2VyJykge1xyXG4gICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnID09PSAnZGlhbG9nJykge1xyXG4gICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIE1ldGhvZCB0byBjbG9zZSBmb3JtIHByb2dyYW1tYXRpY2FsbHlcclxuICBjbG9zZUZvcm0oKSB7XHJcbiAgICB0aGlzLmRyYXdlclZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JjZVN0YXRlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm1TdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmZvcmNlU3RhdGUgJiYgdGhpcy5tb2RlID09PSAnZm9ybS1vbmx5Jykge1xyXG4gICAgICB0aGlzLmZvcm1GaWVsZHNfID0gdGhpcy5mb3JtRmllbGRzO1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZm9yY2VTdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgJ2NyZWF0ZSc6XHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNWaWV3TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZWRpdCc6XHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd2aWV3JzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBdXRvLXNob3cgdGhlIGZvcm1cclxuICAgICAgIGNvbnN0IG1vZGVDb25maWcgPSB0eXBlb2YgdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3N0cmluZydcclxuICAgID8gdGhpcy5kaXNwbGF5TW9kZVxyXG4gICAgOiAodGhpcy5kaXNwbGF5TW9kZSBhcyBhbnkpW3RoaXMuZm9yY2VTdGF0ZV0gPz8gJ2RyYXdlcic7XHJcblxyXG4gICAgLy8gVHJpZ2dlciBmb3JtIG9wZW5pbmcgYmFzZWQgb24gZGlzcGxheU1vZGVcclxuICAgIGlmIChtb2RlQ29uZmlnID09PSAnZHJhd2VyJykge1xyXG4gICAgICB0aGlzLmRyYXdlclZpc2libGUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnID09PSAnZGlhbG9nJykge1xyXG4gICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzYXZlID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcblxyXG4gICAgICAvLyBjb25zdCBpZCA9IHRoaXMuaXNFZGl0TW9kZSA/ICh0aGlzLm1vZGVsIGFzIGFueSlbdGhpcy5pZEZpZWxkXSA6IG51bGw7XHJcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5pc0VkaXRNb2RlXHJcbiAgICAgID8gdGhpcy5pZFBhcnNlci5wYXJzZUlkcyh0aGlzLm1vZGVsLCB0aGlzLmlkRmllbGQpXHJcbiAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgIC8vIEVtaXQgYmVmb3JlU2F2ZSBldmVudFxyXG4gICAgICBjb25zdCBiZWZvcmVTYXZlRGF0YSA9IHtcclxuICAgICAgICByZWNvcmQ6IHsgLi4udGhpcy5tb2RlbCB9LFxyXG4gICAgICAgIGlzRWRpdDogdGhpcy5pc0VkaXRNb2RlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmJlZm9yZVNhdmUuZW1pdChiZWZvcmVTYXZlRGF0YSk7XHJcblxyXG4gICAgICAvLyBBbGxvdyBwYXJlbnQgdG8gbW9kaWZ5IGRhdGEgYmVmb3JlIHNhdmVcclxuICAgICAgbGV0IHJlY29yZFRvU2F2ZSA9IHRoaXMuYmVmb3JlU2F2ZVRyYW5zZm9ybVxyXG4gICAgICAgID8gdGhpcy5iZWZvcmVTYXZlVHJhbnNmb3JtKGJlZm9yZVNhdmVEYXRhLnJlY29yZCwgdGhpcy5pc0VkaXRNb2RlKVxyXG4gICAgICAgIDogYmVmb3JlU2F2ZURhdGEucmVjb3JkO1xyXG5cclxuICAgICAgY29uc3Qgb3BlcmF0aW9uJCA9IHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShpZCwgcmVjb3JkVG9TYXZlKVxyXG4gICAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZShyZWNvcmRUb1NhdmUpO1xyXG5cclxuICAgICAgb3BlcmF0aW9uJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAvLyDinIUg2LHYs9in2YTYqSDZhtis2KfYrVxyXG4gICAgICAgICAgdGhpcy5zd2FsU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPyAn2KrZhSDYp9mE2KrYudiv2YrZhCDYqNmG2KzYp9itJyA6ICfYqtmFINin2YTYrdmB2Lgg2KjZhtis2KfYrSdcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgLy8gRW1pdCBhZnRlclNhdmUgZXZlbnRcclxuICAgICAgICAgIHRoaXMuYWZ0ZXJTYXZlLmVtaXQoe1xyXG4gICAgICAgICAgICByZWNvcmQ6IHJlY29yZFRvU2F2ZSxcclxuICAgICAgICAgICAgaXNFZGl0OiB0aGlzLmlzRWRpdE1vZGUsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUZvcm0oKTtcclxuICAgICAgICAgIGlmICh0aGlzLm1vZGUgIT0gJ2Zvcm0tb25seScpIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8g4p2MINmF2Kcg2YbYudix2LYg2LHYs9in2YTYqSDYrti32KMg2YfZhtinINmE2KPZhiDYp9mE2YAgaW50ZXJjZXB0b3Ig2YrYqtmD2YHZhCDZgdmK2YfYp1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoeyBlcnJvcjogZXJyb3IsIGNvbnRleHQ6ICdzYXZlJyB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMudXNlQ29uZmlybU9uU2F2ZSkge1xyXG4gICAgICB0aGlzLnN3YWxTZXJ2aWNlXHJcbiAgICAgICAgLmNvbmZpcm0oXHJcbiAgICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPyAn2KrYo9mD2YrYryDYp9mE2KrYudiv2YrZhCcgOiAn2KrYo9mD2YrYryDYp9mE2K3Zgdi4JyxcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZVxyXG4gICAgICAgICAgICA/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":";;;;;;;;;;;;;;;;;;AAGO,MAAM,mBAAmB,CAAC;AACjC,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AAC5K,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;AACvJ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;AACvJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,YAAY,CAAC;AAC3C,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACIN,MAAM,sBAAsB,CAAC;AACpC,IAAI,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC;AACA,IAAI,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC;AACnC,IAAI,OAAO,GAAG,EAAE;AAChB,IAAI,WAAW,GAAG,EAAE;AACpB,IAAI,MAAM,GAAG,EAAE;AACf;AACA,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAI,UAAU,GAAG,EAAE;AACnB,IAAI,KAAK;AACT,IAAI,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,cAAc,GAAG,OAAO,CAAC;AAC7B,IAAI,WAAW,GAAG,QAAQ;AAC1B,IAAI,IAAI,GAAG,MAAM,CAAC;AAClB,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,IAAI,mBAAmB,CAAC;AACxB;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;AAC1C,aAAa,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AAC3D,YAAY,KAAK;AACjB;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU;AAC7D;AACA;AACA,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE;AAC/B,IAAI,SAAS,GAAG,IAAI,YAAY,EAAE;AAClC,IAAI,WAAW,GAAG,IAAI,YAAY,EAAE;AACpC,IAAI,UAAU,GAAG,IAAI,YAAY,EAAE;AACnC,IAAI,YAAY,GAAG,IAAI,YAAY,EAAE;AACrC,IAAI,UAAU,GAAG,IAAI,YAAY,EAAE;AACnC,IAAI,QAAQ,GAAG,IAAI,YAAY,EAAE;AACjC,IAAI,UAAU,GAAG,IAAI,YAAY,EAAE;AACnC,IAAI,eAAe,GAAG,IAAI,YAAY,EAAE;AACxC,IAAI,KAAK,GAAG,IAAI,YAAY,EAAE;AAC9B,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE;AACtC,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE;AAChD,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC/C;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAC1C,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAC1C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK;AAC9B;AACA,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,EAAE;AAC3B;AACA,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,IAAI,CAAC,UAAU,GAAG,KAAK;AACvC,gBAAgB,IAAI,CAAC,UAAU,GAAG,KAAK;AACvC,gBAAgB,IAAI,CAAC,KAAK,GAAG,EAAE;AAC/B,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,UAAU,GAAG,IAAI;AACtC,gBAAgB,IAAI,CAAC,UAAU,GAAG,KAAK;AACvC,gBAAgB;AAChB,YAAY,KAAK,MAAM;AACvB,gBAAgB,IAAI,CAAC,UAAU,GAAG,KAAK;AACvC,gBAAgB,IAAI,CAAC,UAAU,GAAG,IAAI;AACtC,gBAAgB;AAChB;AACA,QAAQ,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK;AACvD,cAAc,IAAI,CAAC;AACnB,cAAc,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,QAAQ;AAChD;AACA,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE;AACrC,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI;AACrC;AACA,aAAa,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC1C,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI;AACrC;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI;AAC9B;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC1D,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAC9C,YAAY,QAAQ,IAAI,CAAC,UAAU;AACnC,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3C,oBAAoB,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3C,oBAAoB,IAAI,CAAC,KAAK,GAAG,EAAE;AACnC,oBAAoB;AACpB,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1C,oBAAoB,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3C,oBAAoB;AACpB,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3C,oBAAoB,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1C,oBAAoB;AACpB;AACA;AACA,YAAY,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK;AAC3D,kBAAkB,IAAI,CAAC;AACvB,kBAAkB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ;AAC/D;AACA,YAAY,IAAI,UAAU,KAAK,QAAQ,EAAE;AACzC,gBAAgB,IAAI,CAAC,aAAa,GAAG,IAAI;AACzC;AACA,iBAAiB,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC9C,gBAAgB,IAAI,CAAC,aAAa,GAAG,IAAI;AACzC;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;AAC7B,YAAY;AACZ,QAAQ,MAAM,IAAI,GAAG,MAAM;AAC3B,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI;AAC/B,YAAY,IAAI,CAAC,YAAY,GAAG,IAAI;AACpC;AACA,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC;AAC5B,kBAAkB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO;AACjE,kBAAkB,IAAI;AACtB;AACA,YAAY,MAAM,cAAc,GAAG;AACnC,gBAAgB,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AACzC,gBAAgB,MAAM,EAAE,IAAI,CAAC,UAAU;AACvC,aAAa;AACb,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AAChD;AACA,YAAY,IAAI,YAAY,GAAG,IAAI,CAAC;AACpC,kBAAkB,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU;AACjF,kBAAkB,cAAc,CAAC,MAAM;AACvC,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC;AACpC,kBAAkB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY;AACtD,kBAAkB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACnD,YAAY,UAAU,CAAC,SAAS,CAAC;AACjC,gBAAgB,IAAI,EAAE,CAAC,QAAQ,KAAK;AACpC,oBAAoB,IAAI,CAAC,OAAO,GAAG,KAAK;AACxC;AACA,oBAAoB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AACrG;AACA,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,wBAAwB,MAAM,EAAE,YAAY;AAC5C,wBAAwB,MAAM,EAAE,IAAI,CAAC,UAAU;AAC/C,wBAAwB,QAAQ,EAAE,QAAQ;AAC1C,qBAAqB,CAAC;AACtB,oBAAoB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAClD,oBAAoB,IAAI,CAAC,SAAS,EAAE;AACpC,oBAAoB,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW,EAAE;AAClD;AACA,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,CAAC,KAAK,KAAK;AAClC;AACA,oBAAoB,IAAI,CAAC,OAAO,GAAG,KAAK;AACxC,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtE,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,IAAI,CAAC;AACjB,iBAAiB,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,eAAe,GAAG,aAAa,EAAE,IAAI,CAAC;AACjF,kBAAkB;AAClB,kBAAkB,wBAAwB,EAAE,KAAK,EAAE,OAAO;AAC1D,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK;AAClC,gBAAgB,IAAI,MAAM,CAAC,WAAW,EAAE;AACxC,oBAAoB,IAAI,EAAE;AAC1B;AACA,aAAa,CAAC;AACd;AACA,aAAa;AACb,YAAY,IAAI,EAAE;AAClB;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvD;AACA,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAChL,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,4pIAA4pI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,8CAA8C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,0FAA0F,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC7tP;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AAChI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE;AAChF,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC,wBAAwB,UAAU;AAClC,wBAAwB,WAAW;AACnC,wBAAwB,mBAAmB;AAC3C,wBAAwB,YAAY;AACpC,wBAAwB,aAAa;AACrC,wBAAwB,MAAM;AAC9B,wBAAwB,YAAY;AACpC,qBAAqB,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,4pIAA4pI,EAAE;AAC5tI,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;AACnC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;AAC1B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;AACtC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;AAC/B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;AC1SnB;AACA;AACA;;;;"}
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 { TranslatePipe } from '@elite.framework/ng.core/pipes';\nimport { BaseService, IdParserService, LocalizationService, 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\";\nexport class GenericDialogComponent {\n idParser = inject(IdParserService);\n // الخدمات المحقونة\n translate = inject(LocalizationService);\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 moduleName = '';\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 this.service.moduleName = this.moduleName;\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 as any)[this.idField] : null;\n const id = this.isEditMode\n ? this.idParser.parseIds(this.model, this.idField)\n : 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\", moduleName: \"moduleName\", 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: 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: 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 TranslatePipe,\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 }], moduleName: [{\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1kaWFsb2cvc3JjL2xpYi9nZW5lcmljLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLWRpYWxvZy9zcmMvbGliL2dlbmVyaWMtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUwsVUFBVSxHQUVYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBb0I5QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ3pCLFFBQVEsR0FBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUMsbUJBQW1CO0lBQ25CLFNBQVMsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixD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ICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQge1xyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybWx5RmllbGRDb25maWcsXHJcbiAgRm9ybWx5Rm9ybSxcclxuICBGb3JtbHlGb3JtT3B0aW9ucyxcclxufSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IERyYXdlck1vZHVsZSwgRHJhd2VyIH0gZnJvbSAncHJpbWVuZy9kcmF3ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3BpcGVzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIElkUGFyc2VyU2VydmljZSwgTG9jYWxpemF0aW9uU2VydmljZSwgU3dhbFNlcnZpY2UgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyaWMtZGlhbG9nJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtbHlGb3JtLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRHJhd2VyTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIERyYXdlcixcclxuICAgIERpYWxvZ01vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1kaWFsb2cuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1kaWFsb2cuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgaWRQYXJzZXI9IGluamVjdChJZFBhcnNlclNlcnZpY2UpO1xyXG4gIC8vINin2YTYrtiv2YXYp9iqINin2YTZhdit2YLZiNmG2KlcclxuICB0cmFuc2xhdGU6IExvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBzd2FsU2VydmljZSA9IGluamVjdChTd2FsU2VydmljZSk7XHJcblxyXG4gIC8vINin2YTYrdin2YTYqSDYp9mE2K/Yp9iu2YTZitipINmE2YTZgdmI2LHZhVxyXG4gIEBJbnB1dCgpIGZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcbiAgb3B0aW9uczogRm9ybWx5Rm9ybU9wdGlvbnMgPSB7fTtcclxuICBmb3JtRmllbGRzXzogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIG1vZGVsXzogYW55ID0ge307XHJcblxyXG4gIC8vINin2YTZhdiv2K7ZhNin2KogKElucHV0cylcclxuICBASW5wdXQoKSBzZXJ2aWNlOiBCYXNlU2VydmljZSA9IGluamVjdChCYXNlU2VydmljZSk7XHJcbiAgQElucHV0KCkgZm9ybUZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG1vZGVsOiBhbnk7XHJcbiAgQElucHV0KCkgYXBpTmFtZSA9ICcnO1xyXG4gIEBJbnB1dCgpIG1vZHVsZU5hbWUgPSAnJztcclxuICBASW5wdXQoKSBpZEZpZWxkID0gJ2lkJztcclxuICBASW5wdXQoKSBkaWFsb2dNYXhXaWR0aCA9ICc0MHJlbSc7IC8vINij2YLYtdmJINi52LHYtiDZhNmE2K/Yp9mK2YTZiNisXHJcbiAgQElucHV0KCkgZGlzcGxheU1vZGU6XHJcbiAgICB8ICdkcmF3ZXInXHJcbiAgICB8ICdkaWFsb2cnXHJcbiAgICB8ICdyb3V0ZSdcclxuICAgIHwgJ2lubGluZSdcclxuICAgIHwgUGFydGlhbDxcclxuICAgICAgUmVjb3JkPFxyXG4gICAgICAgICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLFxyXG4gICAgICAgICdkcmF3ZXInIHwgJ2RpYWxvZycgfCAncm91dGUnIHwgJ2lubGluZSdcclxuICAgICAgPlxyXG4gICAgPiA9ICdkcmF3ZXInO1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdmdWxsJyB8ICdmb3JtLW9ubHknIHwgJ3RhYmxlLW9ubHknIHwgJ2RldGFpbCcgPSAnZnVsbCc7IC8vINmI2LbYuSDYp9mE2LnYsdi2XHJcbiAgQElucHV0KCkgZm9yY2VTdGF0ZTogJ2NyZWF0ZScgfCAnZWRpdCcgfCAndmlldycgfCBudWxsID0gbnVsbDsgLy8g2KXYrNio2KfYsSDYrdin2YTYqSDZhdi52YrZhtipXHJcbiAgQElucHV0KCkgZHJhd2VyVmlzaWJsZSA9IGZhbHNlOyAvLyDYuNmH2YjYsSDYp9mE2YAgZHJhd2VyXHJcbiAgQElucHV0KCkgZGlhbG9nVmlzaWJsZSA9IGZhbHNlOyAvLyDYuNmH2YjYsSDYp9mE2YAgZGlhbG9nXHJcbiAgQElucHV0KCkgaXNWaWV3TW9kZSA9IGZhbHNlOyAvLyDZiNi22Lkg2KfZhNmF2LTYp9mH2K/YqSDZgdmC2LdcclxuICBASW5wdXQoKSBpc0VkaXRNb2RlID0gZmFsc2U7IC8vINmI2LbYuSDYp9mE2KrYudiv2YrZhFxyXG4gIEBJbnB1dCgpIHVzZUNvbmZpcm1PblNhdmUgPSBmYWxzZTsgLy8g2KfYs9iq2K7Yr9in2YUg2KrYo9mD2YrYryDYudmG2K8g2KfZhNit2YHYuFxyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTsgLy8g2K3Yp9mE2Kkg2KfZhNiq2K3ZhdmK2YRcclxuICBASW5wdXQoKSBlcnJvck1zZyA9ICcnOyAvLyDYsdiz2KfZhNipINiu2LfYoyDZhdiu2KrYtdix2KlcclxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IGFueSA9ICcnOyAvLyDYsdiz2KfZhNipINiu2LfYoyDYqtmB2LXZitmE2YrYqVxyXG4gIEBJbnB1dCgpIGJlZm9yZVNhdmVUcmFuc2Zvcm0/OiAocmVjb3JkOiBhbnksIGlzRWRpdDogYm9vbGVhbikgPT4gYW55OyAvLyDimqEg2K/ZiNin2YQg2YXYrti12LXYqSDZgtio2YQg2KfZhNit2YHYuFxyXG5cclxuICAvLyDYp9mE2YXYr9iu2YTYp9iqINin2YTZhdit2LPZiNio2KlcclxuICBASW5wdXQoKSBnZXQgaGlkZVRhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgfHxcclxuICAgICAgICAodGhpcy5mb3JjZVN0YXRlICYmIHRoaXMubW9kZSAhPT0gJ3RhYmxlLW9ubHknKSkgPz9cclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBnZXQgYXV0b1Nob3dGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2Zvcm0tb25seScgJiYgISF0aGlzLmZvcmNlU3RhdGU7XHJcbiAgfVxyXG5cclxuICAvLyDYp9mE2YXYrtix2KzYp9iqIChPdXRwdXRzKVxyXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgbmFtZTogc3RyaW5nOyByb3c6IGFueSB9PigpO1xyXG4gIEBPdXRwdXQoKSBhZnRlclNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHJlY29yZDogYW55O1xyXG4gICAgaXNFZGl0OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2U/OiBhbnk7XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBhbnk7IHJlc3BvbnNlPzogYW55IH0+KCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZVNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBhbnk7IGlzRWRpdDogYm9vbGVhbiB9PigpO1xyXG4gIEBPdXRwdXQoKSBiZWZvcmVEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcmVjb3JkOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgICBtb2RlbDogYW55O1xyXG4gIH0+KCk7XHJcbiAgQE91dHB1dCgpIGRhdGFMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF0YTogYW55W107IHRvdGFsOiBudW1iZXIgfT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBzZWxlY3RlZDogYW55W107XHJcbiAgICBzZWxlY3RlZENvdW50OiBudW1iZXI7XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZXJyb3I6IGFueTsgY29udGV4dDogc3RyaW5nIH0+KCk7XHJcbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5hcGlOYW1lICYmIHRoaXMuYXBpTmFtZSAhPSAnJykge1xyXG4gICAgICB0aGlzLnNlcnZpY2UuYXBpTmFtZSA9IHRoaXMuYXBpTmFtZTtcclxuICAgICAgdGhpcy5zZXJ2aWNlLm1vZHVsZU5hbWUgPSB0aGlzLm1vZHVsZU5hbWU7XHJcbiAgICB9XHJcbiAgICAvLyBBdXRvLXNob3cgZm9ybSB3aGVuIGluIGZvcm0tb25seSBtb2RlIHdpdGggZm9yY2VTdGF0ZVxyXG4gICAgdGhpcy5mb3JtRmllbGRzXyA9IHRoaXMuZm9ybUZpZWxkcztcclxuICAgIGlmICh0aGlzLmF1dG9TaG93Rm9ybSkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtU3RhdGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykgeyB9XHJcbiAgLy8gSGVscGVyIG1ldGhvZCB0byBvcGVuIGZvcm0gcHJvZ3JhbW1hdGljYWxseVxyXG4gIG9wZW5Gb3JtKG1vZGU6ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnLCBtb2RlbD86IGFueSkge1xyXG4gICAgdGhpcy5mb3JjZVN0YXRlID0gbW9kZTtcclxuICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICBpZiAobW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgdGhpcy5tb2RlbCA9IHt9O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgICAgY2FzZSAnY3JlYXRlJzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0ge307XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlZGl0JzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICBjb25zdCBtb2RlQ29uZmlnID0gdHlwZW9mIHRoaXMuZGlzcGxheU1vZGUgPT09ICdzdHJpbmcnXHJcbiAgICA/IHRoaXMuZGlzcGxheU1vZGVcclxuICAgIDogKHRoaXMuZGlzcGxheU1vZGUgYXMgYW55KVttb2RlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgICAvLyBUcmlnZ2VyIGZvcm0gb3BlbmluZyBiYXNlZCBvbiBkaXNwbGF5TW9kZVxyXG4gICAgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGNsb3NlIGZvcm0gcHJvZ3JhbW1hdGljYWxseVxyXG4gIGNsb3NlRm9ybSgpIHtcclxuICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvcmNlU3RhdGUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybVN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZm9yY2VTdGF0ZSAmJiB0aGlzLm1vZGUgPT09ICdmb3JtLW9ubHknKSB7XHJcbiAgICAgIHRoaXMuZm9ybUZpZWxkc18gPSB0aGlzLmZvcm1GaWVsZHM7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5mb3JjZVN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSAnY3JlYXRlJzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1ZpZXdNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0ge307XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlZGl0JzpcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3ZpZXcnOlxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzVmlld01vZGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEF1dG8tc2hvdyB0aGUgZm9ybVxyXG4gICAgICAgY29uc3QgbW9kZUNvbmZpZyA9IHR5cGVvZiB0aGlzLmRpc3BsYXlNb2RlID09PSAnc3RyaW5nJ1xyXG4gICAgPyB0aGlzLmRpc3BsYXlNb2RlXHJcbiAgICA6ICh0aGlzLmRpc3BsYXlNb2RlIGFzIGFueSlbdGhpcy5mb3JjZVN0YXRlXSA/PyAnZHJhd2VyJztcclxuXHJcbiAgICAvLyBUcmlnZ2VyIGZvcm0gb3BlbmluZyBiYXNlZCBvbiBkaXNwbGF5TW9kZVxyXG4gICAgaWYgKG1vZGVDb25maWcgPT09ICdkcmF3ZXInKSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKG1vZGVDb25maWcgPT09ICdkaWFsb2cnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHNhdmUgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuXHJcbiAgICAgIC8vIGNvbnN0IGlkID0gdGhpcy5pc0VkaXRNb2RlID8gKHRoaXMubW9kZWwgYXMgYW55KVt0aGlzLmlkRmllbGRdIDogbnVsbDtcclxuICAgICAgY29uc3QgaWQgPSB0aGlzLmlzRWRpdE1vZGVcclxuICAgICAgPyB0aGlzLmlkUGFyc2VyLnBhcnNlSWRzKHRoaXMubW9kZWwsIHRoaXMuaWRGaWVsZClcclxuICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgLy8gRW1pdCBiZWZvcmVTYXZlIGV2ZW50XHJcbiAgICAgIGNvbnN0IGJlZm9yZVNhdmVEYXRhID0ge1xyXG4gICAgICAgIHJlY29yZDogeyAuLi50aGlzLm1vZGVsIH0sXHJcbiAgICAgICAgaXNFZGl0OiB0aGlzLmlzRWRpdE1vZGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYmVmb3JlU2F2ZS5lbWl0KGJlZm9yZVNhdmVEYXRhKTtcclxuXHJcbiAgICAgIC8vIEFsbG93IHBhcmVudCB0byBtb2RpZnkgZGF0YSBiZWZvcmUgc2F2ZVxyXG4gICAgICBsZXQgcmVjb3JkVG9TYXZlID0gdGhpcy5iZWZvcmVTYXZlVHJhbnNmb3JtXHJcbiAgICAgICAgPyB0aGlzLmJlZm9yZVNhdmVUcmFuc2Zvcm0oYmVmb3JlU2F2ZURhdGEucmVjb3JkLCB0aGlzLmlzRWRpdE1vZGUpXHJcbiAgICAgICAgOiBiZWZvcmVTYXZlRGF0YS5yZWNvcmQ7XHJcblxyXG4gICAgICBjb25zdCBvcGVyYXRpb24kID0gdGhpcy5pc0VkaXRNb2RlXHJcbiAgICAgICAgPyB0aGlzLnNlcnZpY2UudXBkYXRlKGlkLCByZWNvcmRUb1NhdmUpXHJcbiAgICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKHJlY29yZFRvU2F2ZSk7XHJcblxyXG4gICAgICBvcGVyYXRpb24kLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIC8vIOKchSDYsdiz2KfZhNipINmG2KzYp9itXHJcbiAgICAgICAgICB0aGlzLnN3YWxTZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA/ICfYqtmFINin2YTYqti52K/ZitmEINio2YbYrNin2K0nIDogJ9iq2YUg2KfZhNit2YHYuCDYqNmG2KzYp9itJ1xyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAvLyBFbWl0IGFmdGVyU2F2ZSBldmVudFxyXG4gICAgICAgICAgdGhpcy5hZnRlclNhdmUuZW1pdCh7XHJcbiAgICAgICAgICAgIHJlY29yZDogcmVjb3JkVG9TYXZlLFxyXG4gICAgICAgICAgICBpc0VkaXQ6IHRoaXMuaXNFZGl0TW9kZSxcclxuICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlRm9ybSgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMubW9kZSAhPSAnZm9ybS1vbmx5Jykge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAvLyDinYwg2YXYpyDZhti52LHYtiDYsdiz2KfZhNipINiu2LfYoyDZh9mG2Kcg2YTYo9mGINin2YTZgCBpbnRlcmNlcHRvciDZitiq2YPZgdmEINmB2YrZh9inXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdCh7IGVycm9yOiBlcnJvciwgY29udGV4dDogJ3NhdmUnIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VDb25maXJtT25TYXZlKSB7XHJcbiAgICAgIHRoaXMuc3dhbFNlcnZpY2VcclxuICAgICAgICAuY29uZmlybShcclxuICAgICAgICAgIHRoaXMuaXNFZGl0TW9kZSA/ICfYqtij2YPZitivINin2YTYqti52K/ZitmEJyA6ICfYqtij2YPZitivINin2YTYrdmB2LgnLFxyXG4gICAgICAgICAgdGhpcy5pc0VkaXRNb2RlXHJcbiAgICAgICAgICAgID8gJ9mH2YQg2KrYsdmK2K8g2K3Zgdi4INin2YTYqti52K/ZitmE2KfYqiDYudmE2Ykg2YfYsNinINin2YTYs9is2YTYnydcclxuICAgICAgICAgICAgOiAn2YfZhCDYqtix2YrYryDYrdmB2Lgg2YfYsNinINin2YTYs9is2YTYnycsXHJcbiAgICAgICAgICAn2YbYudmFJyxcclxuICAgICAgICAgICfYpdmE2LrYp9ihJ1xyXG4gICAgICAgIClcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgICAgICAgIHNhdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNhdmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBOZXcgY2FuY2VsIG1ldGhvZCBmb3IgZm9ybS1vbmx5IG1vZGUgKi9cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgIC8vIEVtaXQgY2FuY2VsIGV2ZW50IGZvciBwYXJlbnQgY29tcG9uZW50IHRvIGhhbmRsZSBuYXZpZ2F0aW9uXHJcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgbmFtZTogJ2NhbmNlbCcsIHJvdzogbnVsbCEgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gRHJhd2VyIC0tPlxyXG5AaWYgKCgodHlwZW9mIGRpc3BsYXlNb2RlID09PSAnc3RyaW5nJyA/IGRpc3BsYXlNb2RlIDogaXNFZGl0TW9kZSA/XHJcbmRpc3BsYXlNb2RlWydlZGl0J10gOiBpc1ZpZXdNb2RlID09PSBmYWxzZSA/IGRpc3BsYXlNb2RlWydhZGQnXSA6XHJcbmRpc3BsYXlNb2RlWyd2aWV3J10pID09PSAnZHJhd2VyJykgJiYgKGRyYXdlclZpc2libGUgfHwgKGF1dG9TaG93Rm9ybSAmJlxyXG5kaXNwbGF5TW9kZSA9PT0gJ2RyYXdlcicpKSkge1xyXG48cC1kcmF3ZXJcclxuICBbKHZpc2libGUpXT1cImRyYXdlclZpc2libGVcIlxyXG4gIFtjbG9zYWJsZV09XCJ0cnVlXCJcclxuICBbZGlzbWlzc2libGVdPVwiZmFsc2VcIlxyXG4gIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIlxyXG4gICh2aXNpYmxlQ2hhbmdlKT1cInZpc2libGVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICBbc3R5bGVDbGFzc109XCJtb2RlID09PSAnZm9ybS1vbmx5JyAmJiBmb3JjZVN0YXRlID09PSAndmlldycgPyAnIXctZnVsbCBtZDohdy04MCBsZzohdy1bNDByZW1dICFoLWZ1bGwnIDogJyF3LWZ1bGwgbWQ6IXctODAgbGc6IXctWzQwcmVtXSdcIlxyXG4gIFttb2RhbF09XCJtb2RlICE9PSAnZm9ybS1vbmx5J1wiXHJcbiAgW2Jsb2NrU2Nyb2xsXT1cIm1vZGUgIT09ICdmb3JtLW9ubHknXCJcclxuPlxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGdcIj5cclxuICAgICAge3sgaXNFZGl0TW9kZSA/ICgnVVBEQVRFJyB8IHRyYW5zbGF0ZSk6IGlzVmlld01vZGUgPT09IGZhbHNlID8gKCdBREQnIHxcclxuICAgICAgdHJhbnNsYXRlKTogKCdWSUVXJyB8IHRyYW5zbGF0ZSkgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIiAtLT5cclxuICA8Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInAtNFwiPlxyXG4gICAgPGZvcm1seS1mb3JtXHJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICBbZmllbGRzXT1cImZvcm1GaWVsZHNfXCJcclxuICAgICAgW21vZGVsXT1cIm1vZGVsXCJcclxuICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICA+PC9mb3JtbHktZm9ybT5cclxuICA8L2Zvcm0+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIiAqbmdJZj1cIiFpc1ZpZXdNb2RlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMlwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgIFtsYWJlbF09XCJpc0VkaXRNb2RlID8gKCdVUERBVEUnIHwgdHJhbnNsYXRlKSA6ICgnU0FWRScgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZm9ybS5pbnZhbGlkXCJcclxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgIGxhYmVsPVwie3sgJ0NBTkNFTCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgIHNldmVyaXR5PVwiZGFuZ2VyXCJcclxuICAgICAgICAoY2xpY2spPVwidmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtjbG9zZUZvcm0oKTtcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZHJhd2VyPlxyXG59XHJcbjwhLS0gRGlhbG9nIC0tPlxyXG5AaWYgKCgodHlwZW9mIGRpc3BsYXlNb2RlID09PSAnc3RyaW5nJyA/IGRpc3BsYXlNb2RlIDogaXNFZGl0TW9kZSA/XHJcbmRpc3BsYXlNb2RlWydlZGl0J10gOiBpc1ZpZXdNb2RlID09PSBmYWxzZSA/IGRpc3BsYXlNb2RlWydhZGQnXSA6XHJcbmRpc3BsYXlNb2RlWyd2aWV3J10pID09PSAnZGlhbG9nJykgJiYgKGRpYWxvZ1Zpc2libGUgfHwgKGF1dG9TaG93Rm9ybSAmJlxyXG5kaXNwbGF5TW9kZSA9PT0gJ2RpYWxvZycpKSkge1xyXG48cC1kaWFsb2dcclxuICBbKHZpc2libGUpXT1cImRpYWxvZ1Zpc2libGVcIlxyXG4gIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIlxyXG4gICh2aXNpYmxlQ2hhbmdlKT1cInZpc2libGVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICBbaGVhZGVyXT1cImlzRWRpdE1vZGUgPyAoJ1VQREFURScgfCB0cmFuc2xhdGUpIDogaXNWaWV3TW9kZSA9PT0gZmFsc2UgPyAoJ0FERCd8IHRyYW5zbGF0ZSkgOiAoJ1ZJRVcnfCB0cmFuc2xhdGUpXCJcclxuICBbbW9kYWxdPVwibW9kZSAhPT0gJ2Zvcm0tb25seSdcIlxyXG4gIFtzdHlsZV09XCJtb2RlID09PSAnZm9ybS1vbmx5JyAmJiBmb3JjZVN0YXRlID09PSAndmlldycgPyB7IHdpZHRoOiAnMTAwdncnLCBoZWlnaHQ6ICcxMDB2aCcsIG1heFdpZHRoOiAnbm9uZScgfSA6IHsgd2lkdGg6ICc5NXZ3JywgbWF4V2lkdGg6IGRpYWxvZ01heFdpZHRoIH1cIlxyXG4gIFtjbG9zYWJsZV09XCJtb2RlICE9PSAnZm9ybS1vbmx5J1wiXHJcbiAgW2Rpc21pc3NhYmxlTWFza109XCJtb2RlICE9PSAnZm9ybS1vbmx5J1wiXHJcbj5cclxuICA8IS0tIFticmVha3BvaW50c109XCJ7ICcxMjAwcHgnOiAnNTB2dycsICc3NjhweCc6ICc3MHZ3JywgJzU2MHB4JzogJzk1dncnIH1cIiAtLT5cclxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJpc1ZpZXdNb2RlXCJcclxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIHotMTAgYmctd2hpdGUvNTAgcG9pbnRlci1ldmVudHMtYXV0byByb3VuZGVkLW1kXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxmb3JtICpuZ0lmPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicC00XCI+XHJcbiAgICAgIDxmb3JtbHktZm9ybVxyXG4gICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFtmaWVsZHNdPVwiZm9ybUZpZWxkc19cIlxyXG4gICAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICAgID48L2Zvcm1seS1mb3JtPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMlwiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCIhaXNWaWV3TW9kZVwiXHJcbiAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgIFtsYWJlbF09XCJpc0VkaXRNb2RlID8gKCdVUERBVEUnIHwgdHJhbnNsYXRlKSA6ICgnU0FWRScgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZyB8fCBmb3JtLmludmFsaWRcIlxyXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgIGxhYmVsPVwie3sgaXNWaWV3TW9kZSA/ICgnQ0xPU0UnIHwgdHJhbnNsYXRlKSA6ICgnQ0FOQ0VMJyB8IHRyYW5zbGF0ZSkgfX1cIlxyXG4gICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAoY2xpY2spPVwidmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtjbG9zZUZvcm0oKTtcIlxyXG4gICAgICA+PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPlxyXG59XHJcblxyXG48IS0tIElubGluZSBGb3JtIGZvciBmb3JtLW9ubHkgbW9kZSAtLT5cclxuQGlmIChtb2RlID09PSAnZm9ybS1vbmx5JyAmJiBkaXNwbGF5TW9kZSA9PT0gJ2lubGluZScpe1xyXG48ZGl2IGNsYXNzPVwidy1mdWxsXCI+XHJcbiAgPGZvcm0gKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICA8Zm9ybWx5LWZvcm1cclxuICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgIFtmaWVsZHNdPVwiZm9ybUZpZWxkc19cIlxyXG4gICAgICBbbW9kZWxdPVwibW9kZWxcIlxyXG4gICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcclxuICAgID48L2Zvcm1seS1mb3JtPlxyXG4gIDwvZm9ybT5cclxuPC9kaXY+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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"}
@@ -99,6 +99,7 @@ class GenericSelectorTypeComponent extends FieldType {
99
99
  this.api = this.svc;
100
100
  const to = this.props;
101
101
  this.api.apiName = to['serviceName'];
102
+ this.api.moduleName = to['moduleName'];
102
103
  if (to['offline']) {
103
104
  if (to['offlineDataFn']) {
104
105
  this._offlineList = to['offlineDataFn']();
@@ -378,6 +379,7 @@ class GenericSelectorTypeComponent extends FieldType {
378
379
  orderBy: [],
379
380
  groupBy: [],
380
381
  expand: [],
382
+ select: [],
381
383
  top: 10,
382
384
  skip: 0,
383
385
  };
@@ -415,6 +417,7 @@ class GenericSelectorTypeComponent extends FieldType {
415
417
  queryParams.orderBy = this.to['query'].orderBy;
416
418
  queryParams.groupBy = this.to['query'].groupBy;
417
419
  queryParams.expand = this.to['query'].expand;
420
+ queryParams.select = this.to['query'].select;
418
421
  }
419
422
  // Merge dynamic filters (function or array)
420
423
  let dynamicFilters = [];
@@ -560,6 +563,7 @@ class GenericSelectorTypeComponent extends FieldType {
560
563
  #dialog
561
564
  [formFields]="props.formFields ?? []"
562
565
  [apiName]="props.serviceName"
566
+ [moduleName]="props.moduleName"
563
567
  [idField]="props.idField ??'id'"
564
568
  [displayMode]="props.dialogDisplayMode ?? 'dialog'"
565
569
  (afterSave)="afterSave($event)"
@@ -567,7 +571,7 @@ class GenericSelectorTypeComponent extends FieldType {
567
571
  </app-generic-dialog>
568
572
 
569
573
 
570
- `, 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: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i5.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i6.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i7.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: TranslatePipe, name: "translate" }] });
574
+ `, 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: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i5.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }, { kind: "component", type: i6.InputGroupAddon, selector: "p-inputgroup-addon, p-inputGroupAddon", inputs: ["style", "styleClass"] }, { kind: "directive", type: FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i7.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", "moduleName", "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: TranslatePipe, name: "translate" }] });
571
575
  }
572
576
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: GenericSelectorTypeComponent, decorators: [{
573
577
  type: Component,
@@ -635,6 +639,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
635
639
  #dialog
636
640
  [formFields]="props.formFields ?? []"
637
641
  [apiName]="props.serviceName"
642
+ [moduleName]="props.moduleName"
638
643
  [idField]="props.idField ??'id'"
639
644
  [displayMode]="props.dialogDisplayMode ?? 'dialog'"
640
645
  (afterSave)="afterSave($event)"