@abp/ng.components 10.0.2 → 10.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/abp-ng.components-chart.js.mjs +7 -7
- package/fesm2022/abp-ng.components-chart.js.mjs.map +1 -1
- package/fesm2022/abp-ng.components-extensible.mjs +53 -53
- package/fesm2022/abp-ng.components-extensible.mjs.map +1 -1
- package/fesm2022/abp-ng.components-lookup.mjs +107 -0
- package/fesm2022/abp-ng.components-lookup.mjs.map +1 -0
- package/fesm2022/abp-ng.components-page.mjs +19 -19
- package/fesm2022/abp-ng.components-page.mjs.map +1 -1
- package/fesm2022/abp-ng.components-tree.mjs +14 -14
- package/fesm2022/abp-ng.components-tree.mjs.map +1 -1
- package/fesm2022/abp-ng.components.mjs.map +1 -1
- package/package.json +16 -12
- package/{extensible/index.d.ts → types/abp-ng.components-extensible.d.ts} +2 -2
- package/types/abp-ng.components-lookup.d.ts +46 -0
- /package/{chart.js/index.d.ts → types/abp-ng.components-chart.js.d.ts} +0 -0
- /package/{page/index.d.ts → types/abp-ng.components-page.d.ts} +0 -0
- /package/{tree/index.d.ts → types/abp-ng.components-tree.d.ts} +0 -0
- /package/{index.d.ts → types/abp-ng.components.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../tmp-esm2022/extensible/lib/utils/factory.util.js","../tmp-esm2022/extensible/lib/components/date-time-picker/extensible-date-time-picker.component.js","../tmp-esm2022/extensible/lib/tokens/extensions.token.js","../tmp-esm2022/extensible/lib/constants/extra-properties.js","../tmp-esm2022/extensible/lib/models/props.js","../tmp-esm2022/extensible/lib/models/form-props.js","../tmp-esm2022/extensible/lib/utils/typeahead.util.js","../tmp-esm2022/extensible/lib/services/extensible-form-prop.service.js","../tmp-esm2022/extensible/lib/components/multi-select/extensible-form-multiselect.component.js","../tmp-esm2022/extensible/lib/components/extensible-form/extensible-form-prop.component.js","../tmp-esm2022/extensible/lib/models/actions.js","../tmp-esm2022/extensible/lib/models/entity-actions.js","../tmp-esm2022/extensible/lib/models/entity-props.js","../tmp-esm2022/extensible/lib/models/toolbar-actions.js","../tmp-esm2022/extensible/lib/services/extensions.service.js","../tmp-esm2022/extensible/lib/directives/prop-data.directive.js","../tmp-esm2022/extensible/lib/components/extensible-form/extensible-form.component.js","../tmp-esm2022/extensible/lib/components/abstract-actions/abstract-actions.component.js","../tmp-esm2022/extensible/lib/components/grid-actions/grid-actions.component.js","../tmp-esm2022/extensible/lib/components/extensible-table/extensible-table.component.js","../tmp-esm2022/extensible/lib/pipes/create-injector.pipe.js","../tmp-esm2022/extensible/lib/components/page-toolbar/page-toolbar.component.js","../tmp-esm2022/extensible/lib/tokens/extensible-form-view-provider.token.js","../tmp-esm2022/extensible/lib/utils/actions.util.js","../tmp-esm2022/extensible/lib/utils/form-props.util.js","../tmp-esm2022/extensible/lib/utils/props.util.js","../tmp-esm2022/extensible/lib/utils/enum.util.js","../tmp-esm2022/extensible/lib/utils/localization.util.js","../tmp-esm2022/extensible/lib/utils/validation.util.js","../tmp-esm2022/extensible/lib/utils/state.util.js","../tmp-esm2022/extensible/lib/extensible.module.js","../tmp-esm2022/extensible/abp-ng.components-extensible.js"],"sourcesContent":["export function selfFactory(dependency) {\n return dependency;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvdXRpbHMvZmFjdG9yeS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxXQUFXLENBQUMsVUFBZ0I7SUFDMUMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBzZWxmRmFjdG9yeShkZXBlbmRlbmN5PzogYW55KSB7XHJcbiAgcmV0dXJuIGRlcGVuZGVuY3k7XHJcbn1cclxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, input, Optional, SkipSelf, ViewChild, } from '@angular/core';\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDateAdapter, NgbDatepickerModule, NgbInputDatepicker, NgbTimeAdapter, NgbTimepicker, NgbTimepickerModule, } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { DateTimeAdapter } from '@abp/ng.theme.shared';\nimport { selfFactory } from '../../utils/factory.util';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@ng-bootstrap/ng-bootstrap\";\nimport * as i3 from \"@ngx-validate/core\";\nexport class ExtensibleDateTimePickerComponent {\n constructor() {\n this.cdRef = inject(ChangeDetectorRef);\n this.prop = input();\n this.meridian = input(false);\n this.placement = input('bottom-left');\n }\n setDate(dateStr) {\n this.date.writeValue(dateStr);\n }\n setTime(dateStr) {\n this.time.writeValue(dateStr);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleDateTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.7\", type: ExtensibleDateTimePickerComponent, isStandalone: true, selector: \"abp-extensible-date-time-picker\", inputs: { prop: { classPropertyName: \"prop\", publicName: \"prop\", isSignal: true, isRequired: false, transformFunction: null }, meridian: { classPropertyName: \"meridian\", publicName: \"meridian\", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: \"placement\", publicName: \"placement\", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: \"date\", first: true, predicate: NgbInputDatepicker, descendants: true }, { propertyName: \"time\", first: true, predicate: NgbTimepicker, descendants: true }], exportAs: [\"abpExtensibleDateTimePicker\"], ngImport: i0, template: `\r\n <input\r\n [id]=\"prop().id\"\r\n [formControlName]=\"prop().name\"\r\n (ngModelChange)=\"setTime($event)\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [placement]=\"placement()\"\r\n />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop().name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian()\"\r\n />\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"ngmodule\", type: NgbDatepickerModule }, { kind: \"directive\", type: i2.NgbInputDatepicker, selector: \"input[ngbDatepicker]\", inputs: [\"autoClose\", \"contentTemplate\", \"datepickerClass\", \"dayTemplate\", \"dayTemplateData\", \"displayMonths\", \"firstDayOfWeek\", \"footerTemplate\", \"markDisabled\", \"minDate\", \"maxDate\", \"navigation\", \"outsideDays\", \"placement\", \"popperOptions\", \"restoreFocus\", \"showWeekNumbers\", \"startDate\", \"container\", \"positionTarget\", \"weekdays\", \"disabled\"], outputs: [\"dateSelect\", \"navigate\", \"closed\"], exportAs: [\"ngbDatepicker\"] }, { kind: \"ngmodule\", type: NgbTimepickerModule }, { kind: \"component\", type: i2.NgbTimepicker, selector: \"ngb-timepicker\", inputs: [\"meridian\", \"spinners\", \"seconds\", \"hourStep\", \"minuteStep\", \"secondStep\", \"readonlyInputs\", \"size\"], exportAs: [\"ngbTimepicker\"] }, { kind: \"ngmodule\", type: NgxValidateCoreModule }, { kind: \"directive\", type: i3.ValidationDirective, selector: \"[formControl],[formControlName]\", exportAs: [\"validationDirective\"] }], viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n {\n provide: NgbDateAdapter,\n useClass: DateTimeAdapter,\n },\n {\n provide: NgbTimeAdapter,\n useClass: DateTimeAdapter,\n },\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleDateTimePickerComponent, decorators: [{\n type: Component,\n args: [{\n exportAs: 'abpExtensibleDateTimePicker',\n imports: [\n ReactiveFormsModule,\n NgbDatepickerModule,\n NgbTimepickerModule,\n NgxValidateCoreModule,\n ],\n selector: 'abp-extensible-date-time-picker',\n template: `\r\n <input\r\n [id]=\"prop().id\"\r\n [formControlName]=\"prop().name\"\r\n (ngModelChange)=\"setTime($event)\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [placement]=\"placement()\"\r\n />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop().name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian()\"\r\n />\r\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n {\n provide: NgbDateAdapter,\n useClass: DateTimeAdapter,\n },\n {\n provide: NgbTimeAdapter,\n useClass: DateTimeAdapter,\n },\n ],\n }]\n }], propDecorators: { date: [{\n type: ViewChild,\n args: [NgbInputDatepicker]\n }], time: [{\n type: ViewChild,\n args: [NgbTimepicker]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZS10aW1lLXBpY2tlci9leHRlbnNpYmxlLWRhdGUtdGltZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsYUFBYSxFQUNiLG1CQUFtQixHQUVwQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBZ0R2RCxNQUFNLE9BQU8saUNBQWlDO0lBOUM5QztRQStDa0IsVUFBSyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWxELFNBQUksR0FBRyxLQUFLLEVBQVksQ0FBQztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxLQUFLLENBQVksYUFBYSxDQUFDLENBQUM7S0FZN0M7SUFQQyxPQUFPLENBQUMsT0FBZTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0FoQlUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsdWdCQU9qQyxrQkFBa0IsdUVBQ2xCLGFBQWEsMkZBN0NkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULDJEQXpCQyxtQkFBbUIsc2pCQUNuQixtQkFBbUIsNGhCQUNuQixtQkFBbUIscVBBQ25CLHFCQUFxQix5SkF3QlI7WUFDYjtnQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixVQUFVLEVBQUUsV0FBVztnQkFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUMzRDtZQUNEO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixRQUFRLEVBQUUsZUFBZTthQUMxQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixRQUFRLEVBQUUsZUFBZTthQUMxQjtTQUNGOzsyRkFFVSxpQ0FBaUM7a0JBOUM3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixxQkFBcUI7cUJBQ3RCO29CQUNELFFBQVEsRUFBRSxpQ0FBaUM7b0JBQzNDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSxnQkFBZ0I7NEJBQ3pCLFVBQVUsRUFBRSxXQUFXOzRCQUN2QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUMzRDt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsUUFBUSxFQUFFLGVBQWU7eUJBQzFCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixRQUFRLEVBQUUsZUFBZTt5QkFDMUI7cUJBQ0Y7aUJBQ0Y7OEJBUWdDLElBQUk7c0JBQWxDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNILElBQUk7c0JBQTdCLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBTa2lwU2VsZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgTmdiRGF0ZUFkYXB0ZXIsXHJcbiAgTmdiRGF0ZXBpY2tlck1vZHVsZSxcclxuICBOZ2JJbnB1dERhdGVwaWNrZXIsXHJcbiAgTmdiVGltZUFkYXB0ZXIsXHJcbiAgTmdiVGltZXBpY2tlcixcclxuICBOZ2JUaW1lcGlja2VyTW9kdWxlLFxyXG4gIFBsYWNlbWVudCxcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IE5neFZhbGlkYXRlQ29yZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XHJcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRm9ybVByb3AgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1wcm9wcyc7XHJcbmltcG9ydCB7IHNlbGZGYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZmFjdG9yeS51dGlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZURhdGVUaW1lUGlja2VyJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmdiRGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE5nYlRpbWVwaWNrZXJNb2R1bGUsXHJcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXHJcbiAgXSxcclxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLWRhdGUtdGltZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8aW5wdXRcclxuICAgICAgW2lkXT1cInByb3AoKS5pZFwiXHJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcCgpLm5hbWVcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRUaW1lKCRldmVudClcIlxyXG4gICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAoa2V5dXAuc3BhY2UpPVwiZGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICBbcGxhY2VtZW50XT1cInBsYWNlbWVudCgpXCJcclxuICAgIC8+XHJcbiAgICA8bmdiLXRpbWVwaWNrZXJcclxuICAgICAgI3RpbWVwaWNrZXJcclxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wKCkubmFtZVwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldERhdGUoJGV2ZW50KVwiXHJcbiAgICAgIFttZXJpZGlhbl09XCJtZXJpZGlhbigpXCJcclxuICAgIC8+XHJcbiAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IHNlbGZGYWN0b3J5LFxyXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBEYXRlVGltZUFkYXB0ZXIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOZ2JUaW1lQWRhcHRlcixcclxuICAgICAgdXNlQ2xhc3M6IERhdGVUaW1lQWRhcHRlcixcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVEYXRlVGltZVBpY2tlckNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgcHJvcCA9IGlucHV0PEZvcm1Qcm9wPigpO1xyXG4gIG1lcmlkaWFuID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHBsYWNlbWVudCA9IGlucHV0PFBsYWNlbWVudD4oJ2JvdHRvbS1sZWZ0Jyk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTmdiSW5wdXREYXRlcGlja2VyKSBkYXRlITogTmdiSW5wdXREYXRlcGlja2VyO1xyXG4gIEBWaWV3Q2hpbGQoTmdiVGltZXBpY2tlcikgdGltZSE6IE5nYlRpbWVwaWNrZXI7XHJcblxyXG4gIHNldERhdGUoZGF0ZVN0cjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRhdGUud3JpdGVWYWx1ZShkYXRlU3RyKTtcclxuICB9XHJcblxyXG4gIHNldFRpbWUoZGF0ZVN0cjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRpbWUud3JpdGVWYWx1ZShkYXRlU3RyKTtcclxuICB9XHJcbn1cclxuIl19","import { InjectionToken } from '@angular/core';\nexport const EXTENSIONS_IDENTIFIER = new InjectionToken('EXTENSIONS_IDENTIFIER');\nexport const EXTENSIONS_ACTION_TYPE = new InjectionToken('EXTENSIONS_ACTION_TYPE');\nexport const EXTENSIONS_ACTION_DATA = new InjectionToken('EXTENSIONS_ACTION_DATA');\nexport const EXTENSIONS_ACTION_CALLBACK = new InjectionToken('EXTENSIONS_ACTION_DATA');\nexport const PROP_DATA_STREAM = new InjectionToken('PROP_DATA_STREAM');\nexport const ROW_RECORD = new InjectionToken('ROW_RECORD');\nexport const ENTITY_PROP_TYPE_CLASSES = new InjectionToken('ENTITY_PROP_TYPE_CLASSES', {\n factory: () => ({}),\n});\nexport const EXTENSIONS_FORM_PROP = new InjectionToken('EXTENSIONS_FORM_PROP');\nexport const EXTENSIONS_FORM_PROP_DATA = new InjectionToken('EXTENSIONS_FORM_PROP_DATA');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL3Rva2Vucy9leHRlbnNpb25zLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQVMsdUJBQXVCLENBQUMsQ0FBQztBQUd6RixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBYSx3QkFBd0IsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFhLHdCQUF3QixDQUFDLENBQUM7QUFDL0YsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELHdCQUF3QixDQUN6QixDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGtCQUFrQixDQUFDLENBQUM7QUFLeEYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFNLFlBQVksQ0FBQyxDQUFDO0FBR2hFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCwwQkFBMEIsRUFDMUI7SUFDRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUEwQixDQUFBO0NBQzNDLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFXLHNCQUFzQixDQUFDLENBQUM7QUFDekYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxjQUFjLENBQVUsMkJBQTJCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkNhbGxiYWNrLCBSZWFkb25seUFjdGlvbkRhdGEgYXMgQWN0aW9uRGF0YSB9IGZyb20gJy4uL21vZGVscy9hY3Rpb25zJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9leHRlbnNpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuXHJcbmV4cG9ydCBjb25zdCBFWFRFTlNJT05TX0lERU5USUZJRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignRVhURU5TSU9OU19JREVOVElGSUVSJyk7XHJcbmV4cG9ydCB0eXBlIEFjdGlvbktleXMgPSBFeHRyYWN0PCdlbnRpdHlBY3Rpb25zJyB8ICd0b29sYmFyQWN0aW9ucycsIGtleW9mIEV4dGVuc2lvbnNTZXJ2aWNlPjtcclxuXHJcbmV4cG9ydCBjb25zdCBFWFRFTlNJT05TX0FDVElPTl9UWVBFID0gbmV3IEluamVjdGlvblRva2VuPEFjdGlvbktleXM+KCdFWFRFTlNJT05TX0FDVElPTl9UWVBFJyk7XHJcblxyXG5leHBvcnQgY29uc3QgRVhURU5TSU9OU19BQ1RJT05fREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBY3Rpb25EYXRhPignRVhURU5TSU9OU19BQ1RJT05fREFUQScpO1xyXG5leHBvcnQgY29uc3QgRVhURU5TSU9OU19BQ1RJT05fQ0FMTEJBQ0sgPSBuZXcgSW5qZWN0aW9uVG9rZW48QWN0aW9uQ2FsbGJhY2s8dW5rbm93bj4+KFxyXG4gICdFWFRFTlNJT05TX0FDVElPTl9EQVRBJyxcclxuKTtcclxuZXhwb3J0IGNvbnN0IFBST1BfREFUQV9TVFJFQU0gPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxhbnk+PignUFJPUF9EQVRBX1NUUkVBTScpO1xyXG50eXBlIEVudGl0eVByb3BUeXBlQ2xhc3NNYXAgPSB7XHJcbiAgW2tleSBpbiBlUHJvcFR5cGVdOiBzdHJpbmc7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgUk9XX1JFQ09SRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdST1dfUkVDT1JEJyk7XHJcblxyXG5leHBvcnQgdHlwZSBFbnRpdHlQcm9wVHlwZUNsYXNzID0gUGFydGlhbDxFbnRpdHlQcm9wVHlwZUNsYXNzTWFwPjtcclxuZXhwb3J0IGNvbnN0IEVOVElUWV9QUk9QX1RZUEVfQ0xBU1NFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlQcm9wVHlwZUNsYXNzPihcclxuICAnRU5USVRZX1BST1BfVFlQRV9DTEFTU0VTJyxcclxuICB7XHJcbiAgICBmYWN0b3J5OiAoKSA9PiAoe30gYXMgRW50aXR5UHJvcFR5cGVDbGFzcyksXHJcbiAgfSxcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBFWFRFTlNJT05TX0ZPUk1fUFJPUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGb3JtUHJvcD4oJ0VYVEVOU0lPTlNfRk9STV9QUk9QJyk7XHJcbmV4cG9ydCBjb25zdCBFWFRFTlNJT05TX0ZPUk1fUFJPUF9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPHVua25vd24+KCdFWFRFTlNJT05TX0ZPUk1fUFJPUF9EQVRBJyk7XHJcbiJdfQ==","export const EXTRA_PROPERTIES_KEY = 'extraProperties';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmEtcHJvcGVydGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2NvbnN0YW50cy9leHRyYS1wcm9wZXJ0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVYVFJBX1BST1BFUlRJRVNfS0VZID0gJ2V4dHJhUHJvcGVydGllcyc7XHJcbiJdfQ==","import { LinkedList } from '@abp/utils';\nexport class PropList extends LinkedList {\n}\nexport class PropData {\n get data() {\n return {\n getInjected: this.getInjected,\n index: this.index,\n record: this.record,\n };\n }\n}\nexport class Prop {\n constructor(type, name, displayName, permission, visible = _ => true, isExtra = false, template, className, formText, tooltip, displayTextResolver) {\n this.type = type;\n this.name = name;\n this.displayName = displayName;\n this.permission = permission;\n this.visible = visible;\n this.isExtra = isExtra;\n this.template = template;\n this.className = className;\n this.formText = formText;\n this.tooltip = tooltip;\n this.displayTextResolver = displayTextResolver;\n this.displayName = this.displayName || this.name;\n }\n}\nexport class PropsFactory {\n constructor() {\n this.contributorCallbacks = {};\n }\n get(name) {\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\n return new this._ctor(this.contributorCallbacks[name]);\n }\n}\nexport class Props {\n get props() {\n const propList = new this._ctor();\n this.callbackList.forEach(callback => callback(propList));\n return propList;\n }\n constructor(callbackList) {\n this.callbackList = callbackList;\n }\n addContributor(contributeCallback) {\n this.callbackList.push(contributeCallback);\n }\n clearContributors() {\n while (this.callbackList.length)\n this.callbackList.pop();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9tb2RlbHMvcHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUl4QyxNQUFNLE9BQWdCLFFBQStCLFNBQVEsVUFBYTtDQUFHO0FBRTdFLE1BQU0sT0FBZ0IsUUFBUTtJQVM1QixJQUFJLElBQUk7UUFDTixPQUFPO1lBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUlELE1BQU0sT0FBZ0IsSUFBSTtJQUN4QixZQUNrQixJQUFlLEVBQ2YsSUFBWSxFQUNaLFdBQW1CLEVBQ25CLFVBQWtCLEVBQ2xCLFVBQTRCLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUNyQyxVQUFVLEtBQUssRUFDZixRQUFvQixFQUNwQixTQUFrQixFQUNsQixRQUFpQixFQUNqQixPQUF5QixFQUN6QixtQkFBZ0Q7UUFWaEQsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQ3BCLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTZCO1FBRWhFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQU1ELE1BQU0sT0FBZ0IsWUFBWTtJQUFsQztRQUVVLHlCQUFvQixHQUFrRCxFQUFFLENBQUM7SUFPbkYsQ0FBQztJQUxDLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEUsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFnQixLQUFLO0lBR3pCLElBQUksS0FBSztRQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFMUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQTZCLFlBQTBDO1FBQTFDLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtJQUFHLENBQUM7SUFFM0UsY0FBYyxDQUFDLGtCQUE4QztRQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEluamVjdE9wdGlvbnMsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJ0BhYnAvdXRpbHMnO1xyXG5pbXBvcnQgeyBlUHJvcFR5cGUgfSBmcm9tICcuLi9lbnVtcy9wcm9wcy5lbnVtJztcclxuaW1wb3J0IHsgRm9ybVByb3BUb29sdGlwIH0gZnJvbSAnLi9mb3JtLXByb3BzJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9wTGlzdDxSID0gYW55LCBBID0gUHJvcDxSPj4gZXh0ZW5kcyBMaW5rZWRMaXN0PEE+IHt9XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvcERhdGE8UiA9IGFueT4ge1xyXG4gIGFic3RyYWN0IGdldEluamVjdGVkOiA8VD4oXHJcbiAgICB0b2tlbjogVHlwZTxUPiB8IEluamVjdGlvblRva2VuPFQ+LFxyXG4gICAgbm90Rm91bmRWYWx1ZT86IFQsXHJcbiAgICBvcHRpb25zPzogSW5qZWN0T3B0aW9ucyxcclxuICApID0+IFQ7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgYWJzdHJhY3QgcmVjb3JkOiBSO1xyXG5cclxuICBnZXQgZGF0YSgpOiBSZWFkb25seVByb3BEYXRhPFI+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGdldEluamVjdGVkOiB0aGlzLmdldEluamVjdGVkLFxyXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcclxuICAgICAgcmVjb3JkOiB0aGlzLnJlY29yZCxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBSZWFkb25seVByb3BEYXRhPFIgPSBhbnk+ID0gUmVhZG9ubHk8T21pdDxQcm9wRGF0YTxSPiwgJ2RhdGEnPj47XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJvcDxSID0gYW55PiB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogZVByb3BUeXBlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyByZWFkb25seSBkaXNwbGF5TmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHBlcm1pc3Npb246IHN0cmluZyxcclxuICAgIHB1YmxpYyByZWFkb25seSB2aXNpYmxlOiBQcm9wUHJlZGljYXRlPFI+ID0gXyA9PiB0cnVlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGlzRXh0cmEgPSBmYWxzZSxcclxuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZT86IFR5cGU8YW55PixcclxuICAgIHB1YmxpYyByZWFkb25seSBjbGFzc05hbWU/OiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybVRleHQ/OiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcD86IEZvcm1Qcm9wVG9vbHRpcCxcclxuICAgIHB1YmxpYyByZWFkb25seSBkaXNwbGF5VGV4dFJlc29sdmVyPzogUHJvcERpc3BsYXlUZXh0UmVzb2x2ZXI8Uj4sXHJcbiAgKSB7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gdGhpcy5kaXNwbGF5TmFtZSB8fCB0aGlzLm5hbWU7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9wQ2FsbGJhY2s8VCwgUiA9IGFueT4gPSAoZGF0YTogT21pdDxQcm9wRGF0YTxUPiwgJ2RhdGEnPiwgYXV4RGF0YT86IGFueSkgPT4gUjtcclxuZXhwb3J0IHR5cGUgUHJvcFByZWRpY2F0ZTxUPiA9IChkYXRhPzogT21pdDxQcm9wRGF0YTxUPiwgJ2RhdGEnPiwgYXV4RGF0YT86IGFueSkgPT4gYm9vbGVhbjtcclxuZXhwb3J0IHR5cGUgUHJvcERpc3BsYXlUZXh0UmVzb2x2ZXI8VD4gPSAoZGF0YT86IE9taXQ8UHJvcERhdGE8VD4sICdkYXRhJz4pID0+IHN0cmluZztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9wc0ZhY3Rvcnk8QyBleHRlbmRzIFByb3BzPGFueT4+IHtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2N0b3I6IFR5cGU8Qz47XHJcbiAgcHJpdmF0ZSBjb250cmlidXRvckNhbGxiYWNrczogUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2tzPEluZmVycmVkUHJvcExpc3Q8Qz4+ID0ge307XHJcblxyXG4gIGdldChuYW1lOiBzdHJpbmcpOiBDIHtcclxuICAgIHRoaXMuY29udHJpYnV0b3JDYWxsYmFja3NbbmFtZV0gPSB0aGlzLmNvbnRyaWJ1dG9yQ2FsbGJhY2tzW25hbWVdIHx8IFtdO1xyXG5cclxuICAgIHJldHVybiBuZXcgdGhpcy5fY3Rvcih0aGlzLmNvbnRyaWJ1dG9yQ2FsbGJhY2tzW25hbWVdKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9wczxMIGV4dGVuZHMgUHJvcExpc3Q8YW55LCBJbmZlcnJlZFByb3A8TD4+PiB7XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9jdG9yOiBUeXBlPEw+O1xyXG5cclxuICBnZXQgcHJvcHMoKTogTCB7XHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IG5ldyB0aGlzLl9jdG9yKCk7XHJcblxyXG4gICAgdGhpcy5jYWxsYmFja0xpc3QuZm9yRWFjaChjYWxsYmFjayA9PiBjYWxsYmFjayhwcm9wTGlzdCkpO1xyXG5cclxuICAgIHJldHVybiBwcm9wTGlzdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FsbGJhY2tMaXN0OiBQcm9wQ29udHJpYnV0b3JDYWxsYmFjazxMPltdKSB7fVxyXG5cclxuICBhZGRDb250cmlidXRvcihjb250cmlidXRlQ2FsbGJhY2s6IFByb3BDb250cmlidXRvckNhbGxiYWNrPEw+KSB7XHJcbiAgICB0aGlzLmNhbGxiYWNrTGlzdC5wdXNoKGNvbnRyaWJ1dGVDYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBjbGVhckNvbnRyaWJ1dG9ycygpIHtcclxuICAgIHdoaWxlICh0aGlzLmNhbGxiYWNrTGlzdC5sZW5ndGgpIHRoaXMuY2FsbGJhY2tMaXN0LnBvcCgpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2tzPEwgZXh0ZW5kcyBQcm9wTGlzdDxhbnksIEluZmVycmVkUHJvcDxMPj4+ID0gUmVjb3JkPFxyXG4gIHN0cmluZyxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFjazxMPltdXHJcbj47XHJcblxyXG5leHBvcnQgdHlwZSBQcm9wQ29udHJpYnV0b3JDYWxsYmFjazxMIGV4dGVuZHMgUHJvcExpc3Q8YW55LCBJbmZlcnJlZFByb3A8TD4+PiA9IChcclxuICBwcm9wTGlzdDogTCxcclxuKSA9PiBhbnk7XHJcblxyXG50eXBlIEluZmVycmVkUHJvcExpc3Q8Qz4gPSBDIGV4dGVuZHMgUHJvcHM8aW5mZXIgTD4gPyBMIDogbmV2ZXI7XHJcbmV4cG9ydCB0eXBlIEluZmVycmVkUHJvcDxUPiA9IFQgZXh0ZW5kcyBQcm9wTGlzdDxhbnksIGluZmVyIFU+ID8gVSA6IFQ7XHJcbiJdfQ==","import { Prop, PropData, PropList, Props, PropsFactory, } from './props';\nexport class FormPropList extends PropList {\n}\nexport class FormProps extends Props {\n constructor() {\n super(...arguments);\n this._ctor = FormPropList;\n }\n}\nexport class GroupedFormPropList {\n constructor() {\n this.items = [];\n this.count = 1;\n }\n addItem(item) {\n const groupName = item.group?.name;\n let group = this.items.find(i => i.group?.name === groupName);\n if (group) {\n group.formPropList.addTail(item);\n }\n else {\n group = {\n formPropList: new FormPropList(),\n group: item.group || { name: `default${this.count++}`, className: item.group?.className },\n };\n group.formPropList.addHead(item);\n this.items.push(group);\n }\n }\n}\nexport class CreateFormPropsFactory extends PropsFactory {\n constructor() {\n super(...arguments);\n this._ctor = FormProps;\n }\n}\nexport class EditFormPropsFactory extends PropsFactory {\n constructor() {\n super(...arguments);\n this._ctor = FormProps;\n }\n}\nexport class FormProp extends Prop {\n constructor(options) {\n super(options.type, options.name, options.displayName || '', options.permission || '', options.visible, options.isExtra, options.template, options.className, options.formText, options.tooltip);\n this.group = options.group;\n this.className = options.className;\n this.formText = options.formText;\n this.tooltip = options.tooltip;\n this.asyncValidators = options.asyncValidators || (_ => []);\n this.validators = options.validators || (_ => []);\n this.disabled = options.disabled || (_ => false);\n this.readonly = options.readonly || (_ => false);\n this.autocomplete = options.autocomplete || 'off';\n this.options = options.options;\n this.id = options.id || options.name;\n const defaultValue = options.defaultValue;\n this.defaultValue = isFalsyValue(defaultValue) ? defaultValue : defaultValue || '';\n this.displayTextResolver = options.displayTextResolver;\n }\n static create(options) {\n return new FormProp(options);\n }\n static createMany(arrayOfOptions) {\n return arrayOfOptions.map(FormProp.create);\n }\n}\nexport class FormPropData extends PropData {\n constructor(injector, record) {\n super();\n this.record = record;\n this.getInjected = injector.get.bind(injector);\n }\n}\nfunction isFalsyValue(defaultValue) {\n return [0, '', false].indexOf(defaultValue) > -1;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL21vZGVscy9mb3JtLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFDTCxJQUFJLEVBSUosUUFBUSxFQUVSLFFBQVEsRUFFUixLQUFLLEVBQ0wsWUFBWSxHQUNiLE1BQU0sU0FBUyxDQUFDO0FBR2pCLE1BQU0sT0FBTyxZQUFzQixTQUFRLFFBQXdCO0NBQUc7QUFFdEUsTUFBTSxPQUFPLFNBQW1CLFNBQVEsS0FBK0I7SUFBdkU7O1FBQ1ksVUFBSyxHQUEwQixZQUFZLENBQUM7SUFDeEQsQ0FBQztDQUFBO0FBWUQsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUNrQixVQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUNsRCxVQUFLLEdBQUcsQ0FBQyxDQUFDO0lBZVosQ0FBQztJQWRDLE9BQU8sQ0FBQyxJQUFpQjtRQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztRQUNuQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzlELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssR0FBRztnQkFDTixZQUFZLEVBQUUsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxL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LENBQUc7UUFJekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUE0QkQsU0FBUyxZQUFZLENBQUMsWUFBdUM7SUFDM0QsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBQcm9wLFxyXG4gIFByb3BDYWxsYmFjayxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFjayxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3MsXHJcbiAgUHJvcERhdGEsXHJcbiAgUHJvcERpc3BsYXlUZXh0UmVzb2x2ZXIsXHJcbiAgUHJvcExpc3QsXHJcbiAgUHJvcFByZWRpY2F0ZSxcclxuICBQcm9wcyxcclxuICBQcm9wc0ZhY3RvcnksXHJcbn0gZnJvbSAnLi9wcm9wcyc7XHJcbmltcG9ydCB7IEZpbHRlcmVkV2l0aE9wdGlvbnMsIFBhcnRpYWxXaXRoT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL21vZGVsLnV0aWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtUHJvcExpc3Q8UiA9IGFueT4gZXh0ZW5kcyBQcm9wTGlzdDxSLCBGb3JtUHJvcDxSPj4ge31cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtUHJvcHM8UiA9IGFueT4gZXh0ZW5kcyBQcm9wczxQcm9wTGlzdDxSLCBGb3JtUHJvcDxSPj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8Rm9ybVByb3BMaXN0PFI+PiA9IEZvcm1Qcm9wTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtUHJvcEdyb3VwIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1Qcm9wVG9vbHRpcCB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIHBsYWNlbWVudD86ICd0b3AnIHwgJ2VuZCcgfCAnYm90dG9tJyB8ICdzdGFydCc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHcm91cGVkRm9ybVByb3BMaXN0PFIgPSBhbnk+IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaXRlbXM6IEdyb3VwZWRGb3JtUHJvcEl0ZW1bXSA9IFtdO1xyXG4gIGNvdW50ID0gMTtcclxuICBhZGRJdGVtKGl0ZW06IEZvcm1Qcm9wPFI+KSB7XHJcbiAgICBjb25zdCBncm91cE5hbWUgPSBpdGVtLmdyb3VwPy5uYW1lO1xyXG4gICAgbGV0IGdyb3VwID0gdGhpcy5pdGVtcy5maW5kKGkgPT4gaS5ncm91cD8ubmFtZSA9PT0gZ3JvdXBOYW1lKTtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICBncm91cC5mb3JtUHJvcExpc3QuYWRkVGFpbChpdGVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VwID0ge1xyXG4gICAgICAgIGZvcm1Qcm9wTGlzdDogbmV3IEZvcm1Qcm9wTGlzdCgpLFxyXG4gICAgICAgIGdyb3VwOiBpdGVtLmdyb3VwIHx8IHsgbmFtZTogYGRlZmF1bHQke3RoaXMuY291bnQrK31gLCBjbGFzc05hbWU6IGl0ZW0uZ3JvdXA/LmNsYXNzTmFtZSB9LFxyXG4gICAgICB9O1xyXG4gICAgICBncm91cC5mb3JtUHJvcExpc3QuYWRkSGVhZChpdGVtKTtcclxuICAgICAgdGhpcy5pdGVtcy5wdXNoKGdyb3VwKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBlZEZvcm1Qcm9wSXRlbSB7XHJcbiAgZ3JvdXA/OiBGb3JtUHJvcEdyb3VwO1xyXG4gIGZvcm1Qcm9wTGlzdDogRm9ybVByb3BMaXN0O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlRm9ybVByb3BzRmFjdG9yeTxSID0gYW55PiBleHRlbmRzIFByb3BzRmFjdG9yeTxGb3JtUHJvcHM8Uj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8Rm9ybVByb3BzPFI+PiA9IEZvcm1Qcm9wcztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVkaXRGb3JtUHJvcHNGYWN0b3J5PFIgPSBhbnk+IGV4dGVuZHMgUHJvcHNGYWN0b3J5PEZvcm1Qcm9wczxSPj4ge1xyXG4gIHByb3RlY3RlZCBfY3RvcjogVHlwZTxGb3JtUHJvcHM8Uj4+ID0gRm9ybVByb3BzO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVByb3A8UiA9IGFueT4gZXh0ZW5kcyBQcm9wPFI+IHtcclxuICByZWFkb25seSB2YWxpZGF0b3JzOiBQcm9wQ2FsbGJhY2s8UiwgVmFsaWRhdG9yRm5bXT47XHJcbiAgcmVhZG9ubHkgYXN5bmNWYWxpZGF0b3JzOiBQcm9wQ2FsbGJhY2s8UiwgQXN5bmNWYWxpZGF0b3JGbltdPjtcclxuICByZWFkb25seSBkaXNhYmxlZDogUHJvcFByZWRpY2F0ZTxSPjtcclxuICByZWFkb25seSByZWFkb25seTogUHJvcFByZWRpY2F0ZTxSPjtcclxuICByZWFkb25seSBhdXRvY29tcGxldGU6IHN0cmluZztcclxuICByZWFkb25seSBkZWZhdWx0VmFsdWU6IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmcgfCBEYXRlIHwgQXJyYXk8c3RyaW5nPjtcclxuICByZWFkb25seSBvcHRpb25zOiBQcm9wQ2FsbGJhY2s8UiwgT2JzZXJ2YWJsZTxBQlAuT3B0aW9uPGFueT5bXT4+IHwgdW5kZWZpbmVkO1xyXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcmVhZG9ubHkgdGVtcGxhdGU/OiBUeXBlPGFueT47XHJcbiAgcmVhZG9ubHkgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IGdyb3VwPzogRm9ybVByb3BHcm91cCB8IHVuZGVmaW5lZDtcclxuICByZWFkb25seSBkaXNwbGF5VGV4dFJlc29sdmVyPzogUHJvcERpc3BsYXlUZXh0UmVzb2x2ZXI8Uj47XHJcbiAgcmVhZG9ubHkgZm9ybVRleHQ/OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgdG9vbHRpcD86IEZvcm1Qcm9wVG9vbHRpcDtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczogRm9ybVByb3BPcHRpb25zPFI+KSB7XHJcbiAgICBzdXBlcihcclxuICAgICAgb3B0aW9ucy50eXBlLFxyXG4gICAgICBvcHRpb25zLm5hbWUsXHJcbiAgICAgIG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgJycsXHJcbiAgICAgIG9wdGlvbnMucGVybWlzc2lvbiB8fCAnJyxcclxuICAgICAgb3B0aW9ucy52aXNpYmxlLFxyXG4gICAgICBvcHRpb25zLmlzRXh0cmEsXHJcbiAgICAgIG9wdGlvbnMudGVtcGxhdGUsXHJcbiAgICAgIG9wdGlvbnMuY2xhc3NOYW1lLFxyXG4gICAgICBvcHRpb25zLmZvcm1UZXh0LFxyXG4gICAgICBvcHRpb25zLnRvb2x0aXAsXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cCA9IG9wdGlvbnMuZ3JvdXA7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3NOYW1lO1xyXG4gICAgdGhpcy5mb3JtVGV4dCA9IG9wdGlvbnMuZm9ybVRleHQ7XHJcbiAgICB0aGlzLnRvb2x0aXAgPSBvcHRpb25zLnRvb2x0aXA7XHJcbiAgICB0aGlzLmFzeW5jVmFsaWRhdG9ycyA9IG9wdGlvbnMuYXN5bmNWYWxpZGF0b3JzIHx8IChfID0+IFtdKTtcclxuICAgIHRoaXMudmFsaWRhdG9ycyA9IG9wdGlvbnMudmFsaWRhdG9ycyB8fCAoXyA9PiBbXSk7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gb3B0aW9ucy5kaXNhYmxlZCB8fCAoXyA9PiBmYWxzZSk7XHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gb3B0aW9ucy5yZWFkb25seSB8fCAoXyA9PiBmYWxzZSk7XHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZSA9IG9wdGlvbnMuYXV0b2NvbXBsZXRlIHx8ICdvZmYnO1xyXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zO1xyXG4gICAgdGhpcy5pZCA9IG9wdGlvbnMuaWQgfHwgb3B0aW9ucy5uYW1lO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gb3B0aW9ucy5kZWZhdWx0VmFsdWU7XHJcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGlzRmFsc3lWYWx1ZShkZWZhdWx0VmFsdWUpID8gKGRlZmF1bHRWYWx1ZSBhcyBudW1iZXIpIDogZGVmYXVsdFZhbHVlIHx8ICcnO1xyXG4gICAgdGhpcy5kaXNwbGF5VGV4dFJlc29sdmVyID0gb3B0aW9ucy5kaXNwbGF5VGV4dFJlc29sdmVyO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZTxSID0gYW55PihvcHRpb25zOiBGb3JtUHJvcE9wdGlvbnM8Uj4pIHtcclxuICAgIHJldHVybiBuZXcgRm9ybVByb3A8Uj4ob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlTWFueTxSID0gYW55PihhcnJheU9mT3B0aW9uczogRm9ybVByb3BPcHRpb25zPFI+W10pIHtcclxuICAgIHJldHVybiBhcnJheU9mT3B0aW9ucy5tYXAoRm9ybVByb3AuY3JlYXRlKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtUHJvcERhdGE8UiA9IGFueT4gZXh0ZW5kcyBQcm9wRGF0YTxSPiB7XHJcbiAgZ2V0SW5qZWN0ZWQ6IFByb3BEYXRhPFI+WydnZXRJbmplY3RlZCddO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHB1YmxpYyByZWFkb25seSByZWNvcmQ6IFIsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIHRoaXMuZ2V0SW5qZWN0ZWQgPSBpbmplY3Rvci5nZXQuYmluZChpbmplY3Rvcik7XHJcbiAgfVxyXG59XHJcblxyXG50eXBlIE9wdGlvbmFsS2V5cyA9XHJcbiAgfCAncGVybWlzc2lvbidcclxuICB8ICd2aXNpYmxlJ1xyXG4gIHwgJ2Rpc3BsYXlOYW1lJ1xyXG4gIHwgJ2lzRXh0cmEnXHJcbiAgfCAndmFsaWRhdG9ycydcclxuICB8ICdhc3luY1ZhbGlkYXRvcnMnXHJcbiAgfCAnZGlzYWJsZWQnXHJcbiAgfCAncmVhZG9ubHknXHJcbiAgfCAnYXV0b2NvbXBsZXRlJ1xyXG4gIHwgJ2RlZmF1bHRWYWx1ZSdcclxuICB8ICdvcHRpb25zJ1xyXG4gIHwgJ2lkJ1xyXG4gIHwgJ2Rpc3BsYXlUZXh0UmVzb2x2ZXInXHJcbiAgfCAnZm9ybVRleHQnXHJcbiAgfCAndG9vbHRpcCc7XHJcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wT3B0aW9uczxSID0gYW55PiA9IFBhcnRpYWxXaXRoT3B0aW9uczxGb3JtUHJvcDxSPiwgT3B0aW9uYWxLZXlzPiAmXHJcbiAgRmlsdGVyZWRXaXRoT3B0aW9uczxGb3JtUHJvcDxSPiwgT3B0aW9uYWxLZXlzPjtcclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZUZvcm1Qcm9wRGVmYXVsdHM8UiA9IGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBGb3JtUHJvcDxSPltdPjtcclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8Rm9ybVByb3BMaXN0PFI+PjtcclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrczxSID0gYW55PiA9IFByb3BDb250cmlidXRvckNhbGxiYWNrczxGb3JtUHJvcExpc3Q8Uj4+O1xyXG5leHBvcnQgdHlwZSBFZGl0Rm9ybVByb3BEZWZhdWx0czxSID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIEZvcm1Qcm9wPFI+W10+O1xyXG5leHBvcnQgdHlwZSBFZGl0Rm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8Rm9ybVByb3BMaXN0PFI+PjtcclxuZXhwb3J0IHR5cGUgRWRpdEZvcm1Qcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8UiA9IGFueT4gPSBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8Rm9ybVByb3BMaXN0PFI+PjtcclxuXHJcbmZ1bmN0aW9uIGlzRmFsc3lWYWx1ZShkZWZhdWx0VmFsdWU/OiBGb3JtUHJvcFsnZGVmYXVsdFZhbHVlJ10pOiBib29sZWFuIHtcclxuICByZXR1cm4gWzAsICcnLCBmYWxzZV0uaW5kZXhPZihkZWZhdWx0VmFsdWUgYXMgYW55KSA+IC0xO1xyXG59XHJcbiJdfQ==","import { RestService } from '@abp/ng.core';\nimport { of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nconst TYPEAHEAD_TEXT_SUFFIX = '_Text';\nconst TYPEAHEAD_TEXT_SUFFIX_REGEX = /_Text$/;\nexport function createTypeaheadOptions(lookup) {\n return (data, searchText) => searchText && data\n ? data\n .getInjected(RestService)\n .request({\n method: 'GET',\n url: lookup.url || '',\n params: {\n [lookup.filterParamName || '']: searchText,\n },\n }, { apiName: 'Default' })\n .pipe(map((response) => {\n const list = response[lookup.resultListPropertyName || ''];\n const mapToOption = (item) => ({\n key: item[lookup.displayPropertyName || ''],\n value: item[lookup.valuePropertyName || ''],\n });\n return list.map(mapToOption);\n }))\n : of([]);\n}\nexport function getTypeaheadType(lookup, name) {\n if (!lookup.url) {\n return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? \"hidden\" /* ePropType.Hidden */ : undefined;\n }\n else {\n return \"typeahead\" /* ePropType.Typeahead */;\n }\n}\nexport function createTypeaheadDisplayNameGenerator(displayNameGeneratorFn, properties) {\n return (displayName, fallback) => {\n const name = removeTypeaheadTextSuffix(fallback.name || '');\n return displayNameGeneratorFn(displayName || properties[name].displayName, {\n name,\n resource: fallback.resource,\n });\n };\n}\nexport function addTypeaheadTextSuffix(name) {\n return name + TYPEAHEAD_TEXT_SUFFIX;\n}\nexport function hasTypeaheadTextSuffix(name) {\n return TYPEAHEAD_TEXT_SUFFIX_REGEX.test(name);\n}\nexport function removeTypeaheadTextSuffix(name) {\n return name.replace(TYPEAHEAD_TEXT_SUFFIX_REGEX, '');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi91dGlscy90eXBlYWhlYWQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFDLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtyQyxNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQztBQUN0QyxNQUFNLDJCQUEyQixHQUFHLFFBQVEsQ0FBQztBQUU3QyxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQW9DO0lBRXBDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDMUIsVUFBVSxJQUFJLElBQUk7UUFDaEIsQ0FBQyxDQUFDLElBQUk7YUFDRCxXQUFXLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FDTjtZQUNFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRTtZQUNyQixNQUFNLEVBQUU7Z0JBQ04sQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVU7YUFDM0M7U0FDRixFQUNELEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUN2QjthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNwQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7Z0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQzthQUM1QyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0g7UUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFvQyxFQUFFLElBQVk7SUFDakYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLGlDQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzdFLENBQUM7U0FBTSxDQUFDO1FBQ04sNkNBQTJCO0lBQzdCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1DQUFtQyxDQUNqRCxzQkFBK0QsRUFDL0QsVUFBc0Q7SUFFdEQsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUMvQixNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE9BQU8sc0JBQXNCLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDekUsSUFBSTtZQUNKLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQVk7SUFDakQsT0FBTyxJQUFJLEdBQUcscUJBQXFCLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxJQUFZO0lBQ2pELE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsSUFBWTtJQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgRXh0ZW5zaW9uUHJvcGVydHlVaUxvb2t1cER0bywgUmVzdFNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBPYmplY3RFeHRlbnNpb25zIH0gZnJvbSAnLi4vbW9kZWxzL29iamVjdC1leHRlbnNpb25zJztcclxuaW1wb3J0IHsgUHJvcENhbGxiYWNrIH0gZnJvbSAnLi4vbW9kZWxzL3Byb3BzJztcclxuXHJcbmNvbnN0IFRZUEVBSEVBRF9URVhUX1NVRkZJWCA9ICdfVGV4dCc7XHJcbmNvbnN0IFRZUEVBSEVBRF9URVhUX1NVRkZJWF9SRUdFWCA9IC9fVGV4dCQvO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVR5cGVhaGVhZE9wdGlvbnMoXHJcbiAgbG9va3VwOiBFeHRlbnNpb25Qcm9wZXJ0eVVpTG9va3VwRHRvLFxyXG4pOiBQcm9wQ2FsbGJhY2s8YW55LCBPYnNlcnZhYmxlPEFCUC5PcHRpb248YW55PltdPj4ge1xyXG4gIHJldHVybiAoZGF0YSwgc2VhcmNoVGV4dCkgPT5cclxuICAgIHNlYXJjaFRleHQgJiYgZGF0YVxyXG4gICAgICA/IGRhdGFcclxuICAgICAgICAgIC5nZXRJbmplY3RlZChSZXN0U2VydmljZSlcclxuICAgICAgICAgIC5yZXF1ZXN0KFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICB1cmw6IGxvb2t1cC51cmwgfHwgJycsXHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBbbG9va3VwLmZpbHRlclBhcmFtTmFtZSB8fCAnJ106IHNlYXJjaFRleHQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBhcGlOYW1lOiAnRGVmYXVsdCcgfSxcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gcmVzcG9uc2VbbG9va3VwLnJlc3VsdExpc3RQcm9wZXJ0eU5hbWUgfHwgJyddO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG1hcFRvT3B0aW9uID0gKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGtleTogaXRlbVtsb29rdXAuZGlzcGxheVByb3BlcnR5TmFtZSB8fCAnJ10sXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVtsb29rdXAudmFsdWVQcm9wZXJ0eU5hbWUgfHwgJyddLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiBsaXN0Lm1hcChtYXBUb09wdGlvbik7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKVxyXG4gICAgICA6IG9mKFtdKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVhaGVhZFR5cGUobG9va3VwOiBFeHRlbnNpb25Qcm9wZXJ0eVVpTG9va3VwRHRvLCBuYW1lOiBzdHJpbmcpIHtcclxuICBpZiAoIWxvb2t1cC51cmwpIHtcclxuICAgIHJldHVybiBuYW1lLmVuZHNXaXRoKFRZUEVBSEVBRF9URVhUX1NVRkZJWCkgPyBlUHJvcFR5cGUuSGlkZGVuIDogdW5kZWZpbmVkO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZVByb3BUeXBlLlR5cGVhaGVhZDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUeXBlYWhlYWREaXNwbGF5TmFtZUdlbmVyYXRvcihcclxuICBkaXNwbGF5TmFtZUdlbmVyYXRvckZuOiBPYmplY3RFeHRlbnNpb25zLkRpc3BsYXlOYW1lR2VuZXJhdG9yRm4sXHJcbiAgcHJvcGVydGllczogT2JqZWN0RXh0ZW5zaW9ucy5FbnRpdHlFeHRlbnNpb25Qcm9wZXJ0aWVzLFxyXG4pOiBPYmplY3RFeHRlbnNpb25zLkRpc3BsYXlOYW1lR2VuZXJhdG9yRm4ge1xyXG4gIHJldHVybiAoZGlzcGxheU5hbWUsIGZhbGxiYWNrKSA9PiB7XHJcbiAgICBjb25zdCBuYW1lID0gcmVtb3ZlVHlwZWFoZWFkVGV4dFN1ZmZpeChmYWxsYmFjay5uYW1lIHx8ICcnKTtcclxuICAgIHJldHVybiBkaXNwbGF5TmFtZUdlbmVyYXRvckZuKGRpc3BsYXlOYW1lIHx8IHByb3BlcnRpZXNbbmFtZV0uZGlzcGxheU5hbWUsIHtcclxuICAgICAgbmFtZSxcclxuICAgICAgcmVzb3VyY2U6IGZhbGxiYWNrLnJlc291cmNlLFxyXG4gICAgfSk7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFR5cGVhaGVhZFRleHRTdWZmaXgobmFtZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG5hbWUgKyBUWVBFQUhFQURfVEVYVF9TVUZGSVg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNUeXBlYWhlYWRUZXh0U3VmZml4KG5hbWU6IHN0cmluZykge1xyXG4gIHJldHVybiBUWVBFQUhFQURfVEVYVF9TVUZGSVhfUkVHRVgudGVzdChuYW1lKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVR5cGVhaGVhZFRleHRTdWZmaXgobmFtZTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIG5hbWUucmVwbGFjZShUWVBFQUhFQURfVEVYVF9TVUZGSVhfUkVHRVgsICcnKTtcclxufVxyXG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { AbpValidators, ConfigStateService } from '@abp/ng.core';\nimport { map } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nexport class ExtensibleFormPropService {\n constructor() {\n this.#configStateService = inject(ConfigStateService);\n this.meridian$ = this.#configStateService\n .getDeep$('localization.currentCulture.dateTimeFormat.shortTimePattern')\n .pipe(map((shortTimePattern) => (shortTimePattern || '').includes('tt')));\n }\n #configStateService;\n isRequired(validator) {\n return (validator === Validators.required ||\n validator === AbpValidators.required ||\n validator.name === 'required');\n }\n getComponent(prop) {\n if (prop.template) {\n return 'template';\n }\n switch (prop.type) {\n case \"boolean\" /* ePropType.Boolean */:\n return 'checkbox';\n case \"date\" /* ePropType.Date */:\n return 'date';\n case \"datetime\" /* ePropType.DateTime */:\n return 'dateTime';\n case \"hidden\" /* ePropType.Hidden */:\n return 'hidden';\n case \"multiselect\" /* ePropType.MultiSelect */:\n return 'multiselect';\n case \"text\" /* ePropType.Text */:\n return 'textarea';\n case \"time\" /* ePropType.Time */:\n return 'time';\n case \"typeahead\" /* ePropType.Typeahead */:\n return 'typeahead';\n case \"passwordinputgroup\" /* ePropType.PasswordInputGroup */:\n return 'passwordinputgroup';\n default:\n return prop.options ? 'select' : 'input';\n }\n }\n getType(prop) {\n switch (prop.type) {\n case \"date\" /* ePropType.Date */:\n case \"string\" /* ePropType.String */:\n return 'text';\n case \"boolean\" /* ePropType.Boolean */:\n return 'checkbox';\n case \"number\" /* ePropType.Number */:\n return 'number';\n case \"email\" /* ePropType.Email */:\n return 'email';\n case \"password\" /* ePropType.Password */:\n return 'password';\n case \"passwordinputgroup\" /* ePropType.PasswordInputGroup */:\n return 'passwordinputgroup';\n default:\n return 'hidden';\n }\n }\n calcAsterisks(validators) {\n if (!validators)\n return '';\n const required = validators.find(v => this.isRequired(v));\n return required ? '*' : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormPropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormPropService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormPropService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXByb3Auc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2libGUtZm9ybS1wcm9wLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUtyQyxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRVksd0JBQW1CLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFM0QsY0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUI7YUFDakMsUUFBUSxDQUFDLDZEQUE2RCxDQUFDO2FBQ3ZFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBb0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBK0RqRztJQW5FVyxtQkFBbUIsQ0FBOEI7SUFNM0QsVUFBVSxDQUFDLFNBQXNCO1FBQy9CLE9BQU8sQ0FDTCxTQUFTLEtBQUssVUFBVSxDQUFDLFFBQVE7WUFDakMsU0FBUyxLQUFLLGFBQWEsQ0FBQyxRQUFRO1lBQ3BDLFNBQVMsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFjO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQjtnQkFDRSxPQUFPLFVBQVUsQ0FBQztZQUNwQjtnQkFDRSxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLFVBQVUsQ0FBQztZQUNwQjtnQkFDRSxPQUFPLFFBQVEsQ0FBQztZQUNsQjtnQkFDRSxPQUFPLGFBQWEsQ0FBQztZQUN2QjtnQkFDRSxPQUFPLFVBQVUsQ0FBQztZQUNwQjtnQkFDRSxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLFdBQVcsQ0FBQztZQUNyQjtnQkFDRSxPQUFPLG9CQUFvQixDQUFDO1lBQzlCO2dCQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsSUFBYztRQUNwQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixpQ0FBb0I7WUFDcEI7Z0JBQ0UsT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsT0FBTyxVQUFVLENBQUM7WUFDcEI7Z0JBQ0UsT0FBTyxRQUFRLENBQUM7WUFDbEI7Z0JBQ0UsT0FBTyxPQUFPLENBQUM7WUFDakI7Z0JBQ0UsT0FBTyxVQUFVLENBQUM7WUFDcEI7Z0JBQ0UsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QjtnQkFDRSxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUF5QjtRQUNyQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBbkVVLHlCQUF5QjtrSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiBpbXBvcnQgeyBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWJwVmFsaWRhdG9ycywgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpYmxlRm9ybVByb3BTZXJ2aWNlIHtcclxuICByZWFkb25seSAgI2NvbmZpZ1N0YXRlU2VydmljZSA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG5cclxuICBtZXJpZGlhbiQgPSB0aGlzLiNjb25maWdTdGF0ZVNlcnZpY2VcclxuICAgIC5nZXREZWVwJCgnbG9jYWxpemF0aW9uLmN1cnJlbnRDdWx0dXJlLmRhdGVUaW1lRm9ybWF0LnNob3J0VGltZVBhdHRlcm4nKVxyXG4gICAgLnBpcGUobWFwKChzaG9ydFRpbWVQYXR0ZXJuOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IChzaG9ydFRpbWVQYXR0ZXJuIHx8ICcnKS5pbmNsdWRlcygndHQnKSkpO1xyXG5cclxuICBpc1JlcXVpcmVkKHZhbGlkYXRvcjogVmFsaWRhdG9yRm4pIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHZhbGlkYXRvciA9PT0gVmFsaWRhdG9ycy5yZXF1aXJlZCB8fFxyXG4gICAgICB2YWxpZGF0b3IgPT09IEFicFZhbGlkYXRvcnMucmVxdWlyZWQgfHxcclxuICAgICAgdmFsaWRhdG9yLm5hbWUgPT09ICdyZXF1aXJlZCdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDb21wb25lbnQocHJvcDogRm9ybVByb3ApIHtcclxuICAgIGlmIChwcm9wLnRlbXBsYXRlKSB7XHJcbiAgICAgIHJldHVybiAndGVtcGxhdGUnO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuQm9vbGVhbjpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrYm94JztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgICByZXR1cm4gJ2RhdGUnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5EYXRlVGltZTpcclxuICAgICAgICByZXR1cm4gJ2RhdGVUaW1lJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuSGlkZGVuOlxyXG4gICAgICAgIHJldHVybiAnaGlkZGVuJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuTXVsdGlTZWxlY3Q6XHJcbiAgICAgICAgcmV0dXJuICdtdWx0aXNlbGVjdCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlRleHQ6XHJcbiAgICAgICAgcmV0dXJuICd0ZXh0YXJlYSc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLlRpbWU6XHJcbiAgICAgICAgcmV0dXJuICd0aW1lJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuVHlwZWFoZWFkOlxyXG4gICAgICAgIHJldHVybiAndHlwZWFoZWFkJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuUGFzc3dvcmRJbnB1dEdyb3VwOlxyXG4gICAgICAgIHJldHVybiAncGFzc3dvcmRpbnB1dGdyb3VwJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gcHJvcC5vcHRpb25zID8gJ3NlbGVjdCcgOiAnaW5wdXQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZShwcm9wOiBGb3JtUHJvcCkge1xyXG4gICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuU3RyaW5nOlxyXG4gICAgICAgIHJldHVybiAndGV4dCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgcmV0dXJuICdjaGVja2JveCc7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLk51bWJlcjpcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICAgIGNhc2UgZVByb3BUeXBlLkVtYWlsOlxyXG4gICAgICAgIHJldHVybiAnZW1haWwnO1xyXG4gICAgICBjYXNlIGVQcm9wVHlwZS5QYXNzd29yZDpcclxuICAgICAgICByZXR1cm4gJ3Bhc3N3b3JkJztcclxuICAgICAgY2FzZSBlUHJvcFR5cGUuUGFzc3dvcmRJbnB1dEdyb3VwOlxyXG4gICAgICAgIHJldHVybiAncGFzc3dvcmRpbnB1dGdyb3VwJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ2hpZGRlbic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxjQXN0ZXJpc2tzKHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10pIHtcclxuICAgIGlmICghdmFsaWRhdG9ycykgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgcmVxdWlyZWQgPSB2YWxpZGF0b3JzLmZpbmQodiA9PiB0aGlzLmlzUmVxdWlyZWQodikpO1xyXG4gICAgcmV0dXJuIHJlcXVpcmVkID8gJyonIDogJyc7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { Component, ChangeDetectionStrategy, forwardRef, input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { LocalizationPipe } from '@abp/ng.core';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngx-validate/core\";\nconst EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ExtensibleFormMultiselectComponent),\n multi: true,\n};\nexport class ExtensibleFormMultiselectComponent {\n constructor() {\n this.prop = input.required();\n this.options = input.required();\n this.selectedValues = [];\n this.disabled = false;\n this.onChange = () => { };\n this.onTouched = () => { };\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n isChecked(value) {\n return this.selectedValues.includes(value);\n }\n onCheckboxChange(value, checked) {\n this.selectedValues = checked\n ? [...this.selectedValues, value]\n : this.selectedValues.filter(item => item !== value);\n this.onChange(this.selectedValues);\n this.onTouched();\n }\n writeValue(value) {\n this.selectedValues = Array.isArray(value) ? [...value] : [];\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: ExtensibleFormMultiselectComponent, isStandalone: true, selector: \"abp-extensible-form-multi-select\", inputs: { prop: { classPropertyName: \"prop\", publicName: \"prop\", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: true, transformFunction: null } }, providers: [EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: `\r\n <div [id]=\"prop().id\">\r\n @for (option of options(); track option.value) {\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [id]=\"'checkbox_' + option.value\"\r\n [disabled]=\"disabled\"\r\n [checked]=\"isChecked(option.value)\"\r\n (change)=\"onCheckboxChange(option.value, $event.target.checked)\"\r\n />\r\n <label [for]=\"'checkbox_' + option.value\">\r\n @if (prop().isExtra) {\r\n {{ '::' + option.key | abpLocalization }}\r\n } @else {\r\n {{ option.key }}\r\n }\r\n </label>\r\n </div>\r\n }\r\n </div>\r\n `, isInline: true, dependencies: [{ kind: \"pipe\", type: LocalizationPipe, name: \"abpLocalization\" }, { kind: \"ngmodule\", type: NgxValidateCoreModule }, { kind: \"directive\", type: i1.ValidationTargetDirective, selector: \"[validationTarget]\", exportAs: [\"validationTarget\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormMultiselectComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'abp-extensible-form-multi-select',\n template: `\r\n <div [id]=\"prop().id\">\r\n @for (option of options(); track option.value) {\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [id]=\"'checkbox_' + option.value\"\r\n [disabled]=\"disabled\"\r\n [checked]=\"isChecked(option.value)\"\r\n (change)=\"onCheckboxChange(option.value, $event.target.checked)\"\r\n />\r\n <label [for]=\"'checkbox_' + option.value\">\r\n @if (prop().isExtra) {\r\n {{ '::' + option.key | abpLocalization }}\r\n } @else {\r\n {{ option.key }}\r\n }\r\n </label>\r\n </div>\r\n }\r\n </div>\r\n `,\n providers: [EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR],\n imports: [LocalizationPipe, NgxValidateCoreModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L2V4dGVuc2libGUtZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQU8sZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUUzRCxNQUFNLG1EQUFtRCxHQUFHO0lBQzFELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztJQUNqRSxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUErQkYsTUFBTSxPQUFPLGtDQUFrQztJQTdCL0M7UUE4QkUsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVksQ0FBQztRQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBcUIsQ0FBQztRQUU5QyxtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVQsYUFBUSxHQUF5QixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDMUMsY0FBUyxHQUFlLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQThCMUM7SUE1QkMsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVUsRUFBRSxPQUFnQjtRQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU87WUFDM0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQztZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBWTtRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBckNVLGtDQUFrQztrR0FBbEMsa0NBQWtDLDRVQUpsQyxDQUFDLG1EQUFtRCxDQUFDLDBCQXZCdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQsdURBRVMsZ0JBQWdCLHVEQUFFLHFCQUFxQjs7MkZBR3RDLGtDQUFrQztrQkE3QjlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELFNBQVMsRUFBRSxDQUFDLG1EQUFtRCxDQUFDO29CQUNoRSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQztvQkFDbEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgZm9yd2FyZFJlZiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBQlAsIExvY2FsaXphdGlvblBpcGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcclxuXHJcbmNvbnN0IEVYVEVOU0lCTEVfRk9STV9NVUxUSV9TRUxFQ1RfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFeHRlbnNpYmxlRm9ybU11bHRpc2VsZWN0Q29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWV4dGVuc2libGUtZm9ybS1tdWx0aS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IFtpZF09XCJwcm9wKCkuaWRcIj5cclxuICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgIFtpZF09XCInY2hlY2tib3hfJyArIG9wdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZChvcHRpb24udmFsdWUpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKG9wdGlvbi52YWx1ZSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2NoZWNrYm94XycgKyBvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgICAgQGlmIChwcm9wKCkuaXNFeHRyYSkge1xyXG4gICAgICAgICAgICAgIHt7ICc6OicgKyBvcHRpb24ua2V5IHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFtFWFRFTlNJQkxFX0ZPUk1fTVVMVElfU0VMRUNUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxyXG4gIGltcG9ydHM6IFtMb2NhbGl6YXRpb25QaXBlLCBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGVdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZUZvcm1NdWx0aXNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwcm9wID0gaW5wdXQucmVxdWlyZWQ8Rm9ybVByb3A+KCk7XHJcbiAgb3B0aW9ucyA9IGlucHV0LnJlcXVpcmVkPEFCUC5PcHRpb248YW55PltdPigpO1xyXG5cclxuICBzZWxlY3RlZFZhbHVlczogYW55W10gPSBbXTtcclxuICBkaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBpc0NoZWNrZWQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSh2YWx1ZTogYW55LCBjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gY2hlY2tlZFxyXG4gICAgICA/IFsuLi50aGlzLnNlbGVjdGVkVmFsdWVzLCB2YWx1ZV1cclxuICAgICAgOiB0aGlzLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHZhbHVlKTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbLi4udmFsdWVdIDogW107XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { EXTENSIONS_FORM_PROP, EXTENSIONS_FORM_PROP_DATA } from './../../tokens/extensions.token';\nimport { LocalizationPipe, PermissionDirective, ShowPasswordDirective, TrackByService, } from '@abp/ng.core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, Injector, Input, Optional, SkipSelf, ViewChild, } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, FormsModule, ReactiveFormsModule, } from '@angular/forms';\nimport { NgbDateAdapter, NgbDatepickerModule, NgbTimeAdapter, NgbTimepickerModule, NgbTypeaheadModule, } from '@ng-bootstrap/ng-bootstrap';\nimport { of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { DateAdapter, DisabledDirective, TimeAdapter } from '@abp/ng.theme.shared';\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\nimport { FormProp } from '../../models/form-props';\nimport { PropData } from '../../models/props';\nimport { selfFactory } from '../../utils/factory.util';\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\nimport { ExtensibleDateTimePickerComponent } from '../date-time-picker/extensible-date-time-picker.component';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';\nimport { AsyncPipe, NgClass, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { ExtensibleFormMultiselectComponent } from '../multi-select/extensible-form-multiselect.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-bootstrap/ng-bootstrap\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@ngx-validate/core\";\nexport class ExtensibleFormPropComponent {\n constructor() {\n this.service = inject(ExtensibleFormPropService);\n this.cdRef = inject(ChangeDetectorRef);\n this.track = inject(TrackByService);\n this.#groupDirective = inject(FormGroupDirective);\n this.injector = inject(Injector);\n this.form = this.#groupDirective.form;\n this.asterisk = '';\n this.containerClassName = 'mb-2';\n this.showPassword = false;\n this.options$ = of([]);\n this.validators = [];\n this.passwordKey = \"ThemeShared.Extensions.PasswordComponent\" /* eExtensibleComponents.PasswordComponent */;\n this.disabledFn = (data) => false;\n this.search = (text$) => text$\n ? text$.pipe(debounceTime(300), distinctUntilChanged(), switchMap(text => this.prop?.options?.(this.data, text) || of([])))\n : of([]);\n this.typeaheadFormatter = (option) => option.key;\n this.meridian$ = this.service.meridian$;\n }\n #groupDirective;\n get disabled() {\n return this.disabledFn(this.data);\n }\n setTypeaheadValue(selectedOption) {\n this.typeaheadModel = selectedOption || { key: null, value: null };\n const { key, value } = this.typeaheadModel;\n const [keyControl, valueControl] = this.getTypeaheadControls();\n if (valueControl?.value && !value)\n valueControl.markAsDirty();\n keyControl?.setValue(key);\n valueControl?.setValue(value);\n }\n get isInvalid() {\n const control = this.form.get(this.prop.name);\n return control?.touched && control.invalid;\n }\n getTypeaheadControls() {\n const { name } = this.prop;\n const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\n const keyControl = this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\n this.form.get(addTypeaheadTextSuffix(name));\n const valueControl = this.form.get(extraPropName) || this.form.get(name);\n return [keyControl, valueControl];\n }\n setAsterisk() {\n this.asterisk = this.service.calcAsterisks(this.validators);\n }\n ngAfterViewInit() {\n if (this.isFirstGroup && this.first && this.fieldRef) {\n requestAnimationFrame(() => {\n this.fieldRef.nativeElement.focus();\n });\n }\n }\n getComponent(prop) {\n return this.service.getComponent(prop);\n }\n getType(prop) {\n return this.service.getType(prop);\n }\n ngOnChanges({ prop, data }) {\n const currentProp = prop?.currentValue;\n const { options, readonly, disabled, validators, className, template } = currentProp || {};\n if (template) {\n this.injectorForCustomComponent = Injector.create({\n providers: [\n {\n provide: EXTENSIONS_FORM_PROP,\n useValue: currentProp,\n },\n {\n provide: EXTENSIONS_FORM_PROP_DATA,\n useValue: data?.currentValue?.record,\n },\n { provide: ControlContainer, useExisting: FormGroupDirective },\n ],\n parent: this.injector,\n });\n }\n if (options)\n this.options$ = options(this.data);\n if (readonly)\n this.readonly = readonly(this.data);\n if (disabled) {\n this.disabledFn = disabled;\n }\n if (validators) {\n this.validators = validators(this.data);\n this.setAsterisk();\n }\n if (className !== undefined) {\n this.containerClassName = className;\n }\n const [keyControl, valueControl] = this.getTypeaheadControls();\n if (keyControl && valueControl)\n this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormPropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: ExtensibleFormPropComponent, isStandalone: true, selector: \"abp-extensible-form-prop\", inputs: { data: \"data\", prop: \"prop\", first: \"first\", isFirstGroup: \"isFirstGroup\" }, providers: [ExtensibleFormPropService], viewQueries: [{ propertyName: \"fieldRef\", first: true, predicate: [\"field\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<ng-container *abpPermission=\\\"prop.permission; runChangeDetection: false\\\">\\r\\n @switch (getComponent(prop)) {\\r\\n @case ('template') {\\r\\n <ng-container *ngComponentOutlet=\\\"prop.template; injector: injectorForCustomComponent\\\" />\\r\\n }\\r\\n }\\r\\n\\r\\n <div [ngClass]=\\\"containerClassName\\\" class=\\\"mb-2\\\">\\r\\n @switch (getComponent(prop)) {\\r\\n @case ('input') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <input\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [autocomplete]=\\\"prop.autocomplete\\\"\\r\\n [type]=\\\"getType(prop)\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n [readonly]=\\\"readonly\\\"\\r\\n class=\\\"form-control\\\"\\r\\n />\\r\\n }\\r\\n @case ('hidden') {\\r\\n <input [formControlName]=\\\"prop.name\\\" type=\\\"hidden\\\" />\\r\\n }\\r\\n @case ('checkbox') {\\r\\n <div class=\\\"form-check\\\" validationTarget>\\r\\n <input\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n type=\\\"checkbox\\\"\\r\\n class=\\\"form-check-input\\\"\\r\\n />\\r\\n <ng-template\\r\\n [ngTemplateOutlet]=\\\"label\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ $implicit: 'form-check-label' }\\\"\\r\\n />\\r\\n </div>\\r\\n }\\r\\n @case ('select') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <select\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n class=\\\"form-select form-control\\\"\\r\\n >\\r\\n @for (option of options$ | async; track option.value) {\\r\\n <option [ngValue]=\\\"option.value\\\">\\r\\n @if (prop.isExtra) {\\r\\n {{ '::' + option.key | abpLocalization }}\\r\\n } @else {\\r\\n {{ option.key }}\\r\\n }\\r\\n </option>\\r\\n }\\r\\n </select>\\r\\n }\\r\\n @case ('multiselect') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\"></ng-template>\\r\\n <abp-extensible-form-multi-select\\r\\n [prop]=\\\"prop\\\"\\r\\n [options]=\\\"options$ | async\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n />\\r\\n }\\r\\n @case ('typeahead') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <div #typeahead class=\\\"position-relative\\\" validationStyle validationTarget>\\r\\n <input\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [autocomplete]=\\\"prop.autocomplete\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n [ngbTypeahead]=\\\"search\\\"\\r\\n [editable]=\\\"false\\\"\\r\\n [inputFormatter]=\\\"typeaheadFormatter\\\"\\r\\n [resultFormatter]=\\\"typeaheadFormatter\\\"\\r\\n [ngModelOptions]=\\\"{ standalone: true }\\\"\\r\\n [(ngModel)]=\\\"typeaheadModel\\\"\\r\\n (selectItem)=\\\"setTypeaheadValue($event.item)\\\"\\r\\n (blur)=\\\"setTypeaheadValue(typeaheadModel)\\\"\\r\\n [class.is-invalid]=\\\"typeahead.classList.contains('is-invalid')\\\"\\r\\n class=\\\"form-control\\\"\\r\\n />\\r\\n <input [formControlName]=\\\"prop.name\\\" type=\\\"hidden\\\" />\\r\\n </div>\\r\\n }\\r\\n @case ('date') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <input\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n (click)=\\\"datepicker.open()\\\"\\r\\n (keyup.space)=\\\"datepicker.open()\\\"\\r\\n ngbDatepicker\\r\\n #datepicker=\\\"ngbDatepicker\\\"\\r\\n type=\\\"text\\\"\\r\\n class=\\\"form-control\\\"\\r\\n />\\r\\n }\\r\\n @case ('time') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <ngb-timepicker [formControlName]=\\\"prop.name\\\" />\\r\\n }\\r\\n @case ('dateTime') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <abp-extensible-date-time-picker [prop]=\\\"prop\\\" [meridian]=\\\"meridian$ | async\\\" />\\r\\n }\\r\\n @case ('textarea') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <textarea\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n [readonly]=\\\"readonly\\\"\\r\\n class=\\\"form-control\\\"\\r\\n ></textarea>\\r\\n }\\r\\n @case ('passwordinputgroup') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <div class=\\\"input-group form-group\\\" validationTarget>\\r\\n <input\\r\\n class=\\\"form-control\\\"\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpShowPassword]=\\\"showPassword\\\"\\r\\n />\\r\\n <button class=\\\"btn btn-secondary\\\" type=\\\"button\\\" (click)=\\\"showPassword = !showPassword\\\">\\r\\n <i\\r\\n class=\\\"fa\\\"\\r\\n aria-hidden=\\\"true\\\"\\r\\n [ngClass]=\\\"{\\r\\n 'fa-eye-slash': !showPassword,\\r\\n 'fa-eye': showPassword,\\r\\n }\\\"\\r\\n ></i>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n }\\r\\n\\r\\n @if (prop.formText) {\\r\\n <small class=\\\"text-muted d-block\\\">{{ prop.formText | abpLocalization }}</small>\\r\\n }\\r\\n </div>\\r\\n</ng-container>\\r\\n\\r\\n<ng-template #label let-classes>\\r\\n <label [htmlFor]=\\\"prop.id\\\" [ngClass]=\\\"classes || 'form-label d-inline-block'\\\">\\r\\n <span class=\\\"d-inline-flex align-items-center gap-1 text-nowrap\\\">\\r\\n @if (prop.displayTextResolver) {\\r\\n {{ prop.displayTextResolver(data) | abpLocalization }}\\r\\n } @else {\\r\\n @if (prop.isExtra) {\\r\\n {{ '::' + prop.displayName | abpLocalization }}\\r\\n } @else {\\r\\n {{ prop.displayName | abpLocalization }}\\r\\n }\\r\\n }\\r\\n {{ asterisk }}\\r\\n @if (prop.tooltip) {\\r\\n <i\\r\\n [ngbTooltip]=\\\"prop.tooltip.text | abpLocalization\\\"\\r\\n [placement]=\\\"prop.tooltip.placement || 'auto'\\\"\\r\\n container=\\\"body\\\"\\r\\n class=\\\"bi bi-info-circle\\\"\\r\\n ></i>\\r\\n }\\r\\n </span>\\r\\n </label>\\r\\n</ng-template>\\r\\n\", dependencies: [{ kind: \"component\", type: ExtensibleDateTimePickerComponent, selector: \"abp-extensible-date-time-picker\", inputs: [\"prop\", \"meridian\", \"placement\"], exportAs: [\"abpExtensibleDateTimePicker\"] }, { kind: \"component\", type: ExtensibleFormMultiselectComponent, selector: \"abp-extensible-form-multi-select\", inputs: [\"prop\", \"options\"] }, { kind: \"ngmodule\", type: NgbDatepickerModule }, { kind: \"directive\", type: i1.NgbInputDatepicker, selector: \"input[ngbDatepicker]\", inputs: [\"autoClose\", \"contentTemplate\", \"datepickerClass\", \"dayTemplate\", \"dayTemplateData\", \"displayMonths\", \"firstDayOfWeek\", \"footerTemplate\", \"markDisabled\", \"minDate\", \"maxDate\", \"navigation\", \"outsideDays\", \"placement\", \"popperOptions\", \"restoreFocus\", \"showWeekNumbers\", \"startDate\", \"container\", \"positionTarget\", \"weekdays\", \"disabled\"], outputs: [\"dateSelect\", \"navigate\", \"closed\"], exportAs: [\"ngbDatepicker\"] }, { kind: \"ngmodule\", type: NgbTimepickerModule }, { kind: \"component\", type: i1.NgbTimepicker, selector: \"ngb-timepicker\", inputs: [\"meridian\", \"spinners\", \"seconds\", \"hourStep\", \"minuteStep\", \"secondStep\", \"readonlyInputs\", \"size\"], exportAs: [\"ngbTimepicker\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\" }, { kind: \"directive\", type: i2.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"directive\", type: DisabledDirective, selector: \"[abpDisabled]\", inputs: [\"abpDisabled\"] }, { kind: \"ngmodule\", type: NgxValidateCoreModule }, { kind: \"directive\", type: i3.ValidationStyleDirective, selector: \"[validationStyle]\", exportAs: [\"validationStyle\"] }, { kind: \"directive\", type: i3.ValidationTargetDirective, selector: \"[validationTarget]\", exportAs: [\"validationTarget\"] }, { kind: \"directive\", type: i3.ValidationDirective, selector: \"[formControl],[formControlName]\", exportAs: [\"validationDirective\"] }, { kind: \"directive\", type: NgbTooltip, selector: \"[ngbTooltip]\", inputs: [\"animation\", \"autoClose\", \"placement\", \"popperOptions\", \"triggers\", \"positionTarget\", \"container\", \"disableTooltip\", \"tooltipClass\", \"tooltipContext\", \"openDelay\", \"closeDelay\", \"ngbTooltip\"], outputs: [\"shown\", \"hidden\"], exportAs: [\"ngbTooltip\"] }, { kind: \"ngmodule\", type: NgbTypeaheadModule }, { kind: \"directive\", type: i1.NgbTypeahead, selector: \"input[ngbTypeahead]\", inputs: [\"autocomplete\", \"container\", \"editable\", \"focusFirst\", \"inputFormatter\", \"ngbTypeahead\", \"resultFormatter\", \"resultTemplate\", \"selectOnExact\", \"showHint\", \"placement\", \"popperOptions\", \"popupClass\"], outputs: [\"selectItem\"], exportAs: [\"ngbTypeahead\"] }, { kind: \"directive\", type: ShowPasswordDirective, selector: \"[abpShowPassword]\", inputs: [\"abpShowPassword\"] }, { kind: \"directive\", type: PermissionDirective, selector: \"[abpPermission]\", inputs: [\"abpPermission\", \"abpPermissionRunChangeDetection\"] }, { kind: \"pipe\", type: LocalizationPipe, name: \"abpLocalization\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }], viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n { provide: NgbDateAdapter, useClass: DateAdapter },\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormPropComponent, decorators: [{\n type: Component,\n args: [{ selector: 'abp-extensible-form-prop', imports: [\n ExtensibleDateTimePickerComponent,\n ExtensibleFormMultiselectComponent,\n NgbDatepickerModule,\n NgbTimepickerModule,\n ReactiveFormsModule,\n DisabledDirective,\n NgxValidateCoreModule,\n NgbTooltip,\n NgbTypeaheadModule,\n ShowPasswordDirective,\n PermissionDirective,\n LocalizationPipe,\n AsyncPipe,\n NgClass,\n NgComponentOutlet,\n NgTemplateOutlet,\n FormsModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [ExtensibleFormPropService], viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n { provide: NgbDateAdapter, useClass: DateAdapter },\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\n ], template: \"<ng-container *abpPermission=\\\"prop.permission; runChangeDetection: false\\\">\\r\\n @switch (getComponent(prop)) {\\r\\n @case ('template') {\\r\\n <ng-container *ngComponentOutlet=\\\"prop.template; injector: injectorForCustomComponent\\\" />\\r\\n }\\r\\n }\\r\\n\\r\\n <div [ngClass]=\\\"containerClassName\\\" class=\\\"mb-2\\\">\\r\\n @switch (getComponent(prop)) {\\r\\n @case ('input') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <input\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [autocomplete]=\\\"prop.autocomplete\\\"\\r\\n [type]=\\\"getType(prop)\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n [readonly]=\\\"readonly\\\"\\r\\n class=\\\"form-control\\\"\\r\\n />\\r\\n }\\r\\n @case ('hidden') {\\r\\n <input [formControlName]=\\\"prop.name\\\" type=\\\"hidden\\\" />\\r\\n }\\r\\n @case ('checkbox') {\\r\\n <div class=\\\"form-check\\\" validationTarget>\\r\\n <input\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n type=\\\"checkbox\\\"\\r\\n class=\\\"form-check-input\\\"\\r\\n />\\r\\n <ng-template\\r\\n [ngTemplateOutlet]=\\\"label\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ $implicit: 'form-check-label' }\\\"\\r\\n />\\r\\n </div>\\r\\n }\\r\\n @case ('select') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <select\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n class=\\\"form-select form-control\\\"\\r\\n >\\r\\n @for (option of options$ | async; track option.value) {\\r\\n <option [ngValue]=\\\"option.value\\\">\\r\\n @if (prop.isExtra) {\\r\\n {{ '::' + option.key | abpLocalization }}\\r\\n } @else {\\r\\n {{ option.key }}\\r\\n }\\r\\n </option>\\r\\n }\\r\\n </select>\\r\\n }\\r\\n @case ('multiselect') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\"></ng-template>\\r\\n <abp-extensible-form-multi-select\\r\\n [prop]=\\\"prop\\\"\\r\\n [options]=\\\"options$ | async\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n />\\r\\n }\\r\\n @case ('typeahead') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <div #typeahead class=\\\"position-relative\\\" validationStyle validationTarget>\\r\\n <input\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [autocomplete]=\\\"prop.autocomplete\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n [ngbTypeahead]=\\\"search\\\"\\r\\n [editable]=\\\"false\\\"\\r\\n [inputFormatter]=\\\"typeaheadFormatter\\\"\\r\\n [resultFormatter]=\\\"typeaheadFormatter\\\"\\r\\n [ngModelOptions]=\\\"{ standalone: true }\\\"\\r\\n [(ngModel)]=\\\"typeaheadModel\\\"\\r\\n (selectItem)=\\\"setTypeaheadValue($event.item)\\\"\\r\\n (blur)=\\\"setTypeaheadValue(typeaheadModel)\\\"\\r\\n [class.is-invalid]=\\\"typeahead.classList.contains('is-invalid')\\\"\\r\\n class=\\\"form-control\\\"\\r\\n />\\r\\n <input [formControlName]=\\\"prop.name\\\" type=\\\"hidden\\\" />\\r\\n </div>\\r\\n }\\r\\n @case ('date') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <input\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n (click)=\\\"datepicker.open()\\\"\\r\\n (keyup.space)=\\\"datepicker.open()\\\"\\r\\n ngbDatepicker\\r\\n #datepicker=\\\"ngbDatepicker\\\"\\r\\n type=\\\"text\\\"\\r\\n class=\\\"form-control\\\"\\r\\n />\\r\\n }\\r\\n @case ('time') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <ngb-timepicker [formControlName]=\\\"prop.name\\\" />\\r\\n }\\r\\n @case ('dateTime') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <abp-extensible-date-time-picker [prop]=\\\"prop\\\" [meridian]=\\\"meridian$ | async\\\" />\\r\\n }\\r\\n @case ('textarea') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <textarea\\r\\n #field\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpDisabled]=\\\"disabled\\\"\\r\\n [readonly]=\\\"readonly\\\"\\r\\n class=\\\"form-control\\\"\\r\\n ></textarea>\\r\\n }\\r\\n @case ('passwordinputgroup') {\\r\\n <ng-template [ngTemplateOutlet]=\\\"label\\\" />\\r\\n <div class=\\\"input-group form-group\\\" validationTarget>\\r\\n <input\\r\\n class=\\\"form-control\\\"\\r\\n [id]=\\\"prop.id\\\"\\r\\n [formControlName]=\\\"prop.name\\\"\\r\\n [abpShowPassword]=\\\"showPassword\\\"\\r\\n />\\r\\n <button class=\\\"btn btn-secondary\\\" type=\\\"button\\\" (click)=\\\"showPassword = !showPassword\\\">\\r\\n <i\\r\\n class=\\\"fa\\\"\\r\\n aria-hidden=\\\"true\\\"\\r\\n [ngClass]=\\\"{\\r\\n 'fa-eye-slash': !showPassword,\\r\\n 'fa-eye': showPassword,\\r\\n }\\\"\\r\\n ></i>\\r\\n </button>\\r\\n </div>\\r\\n }\\r\\n }\\r\\n\\r\\n @if (prop.formText) {\\r\\n <small class=\\\"text-muted d-block\\\">{{ prop.formText | abpLocalization }}</small>\\r\\n }\\r\\n </div>\\r\\n</ng-container>\\r\\n\\r\\n<ng-template #label let-classes>\\r\\n <label [htmlFor]=\\\"prop.id\\\" [ngClass]=\\\"classes || 'form-label d-inline-block'\\\">\\r\\n <span class=\\\"d-inline-flex align-items-center gap-1 text-nowrap\\\">\\r\\n @if (prop.displayTextResolver) {\\r\\n {{ prop.displayTextResolver(data) | abpLocalization }}\\r\\n } @else {\\r\\n @if (prop.isExtra) {\\r\\n {{ '::' + prop.displayName | abpLocalization }}\\r\\n } @else {\\r\\n {{ prop.displayName | abpLocalization }}\\r\\n }\\r\\n }\\r\\n {{ asterisk }}\\r\\n @if (prop.tooltip) {\\r\\n <i\\r\\n [ngbTooltip]=\\\"prop.tooltip.text | abpLocalization\\\"\\r\\n [placement]=\\\"prop.tooltip.placement || 'auto'\\\"\\r\\n container=\\\"body\\\"\\r\\n class=\\\"bi bi-info-circle\\\"\\r\\n ></i>\\r\\n }\\r\\n </span>\\r\\n </label>\\r\\n</ng-template>\\r\\n\" }]\n }], propDecorators: { data: [{\n type: Input\n }], prop: [{\n type: Input\n }], first: [{\n type: Input\n }], isFirstGroup: [{\n type: Input\n }], fieldRef: [{\n type: ViewChild,\n args: ['field']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvY29tcG9uZW50cy9leHRlbnNpYmxlLWZvcm0vZXh0ZW5zaWJsZS1mb3JtLXByb3AuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEcsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLFFBQVEsRUFFUixRQUFRLEVBQ1IsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFB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QUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNzQixRQUFRO3NCQUFuQyxTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFRFTlNJT05TX0ZPUk1fUFJPUCwgRVhURU5TSU9OU19GT1JNX1BST1BfREFUQSB9IGZyb20gJy4vLi4vLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5pbXBvcnQge1xyXG4gIEFCUCxcclxuICBMb2NhbGl6YXRpb25QaXBlLFxyXG4gIFBlcm1pc3Npb25EaXJlY3RpdmUsXHJcbiAgU2hvd1Bhc3N3b3JkRGlyZWN0aXZlLFxyXG4gIFRyYWNrQnlTZXJ2aWNlLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBpbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIHNpZ25hbCxcclxuICBlZmZlY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbENvbnRhaW5lcixcclxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0b3JGbixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgTmdiRGF0ZUFkYXB0ZXIsXHJcbiAgTmdiRGF0ZXBpY2tlck1vZHVsZSxcclxuICBOZ2JUaW1lQWRhcHRlcixcclxuICBOZ2JUaW1lcGlja2VyTW9kdWxlLFxyXG4gIE5nYlR5cGVhaGVhZE1vZHVsZSxcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIERpc2FibGVkRGlyZWN0aXZlLCBUaW1lQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IEZvcm1Qcm9wIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tcHJvcHMnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9wcyc7XHJcbmltcG9ydCB7IHNlbGZGYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZmFjdG9yeS51dGlsJztcclxuaW1wb3J0IHsgYWRkVHlwZWFoZWFkVGV4dFN1ZmZpeCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVhaGVhZC51dGlsJztcclxuaW1wb3J0IHsgZUV4dGVuc2libGVDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IEV4dGVuc2libGVEYXRlVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtdGltZS1waWNrZXIvZXh0ZW5zaWJsZS1kYXRlLXRpbWUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neFZhbGlkYXRlQ29yZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XHJcbmltcG9ydCB7IEV4dGVuc2libGVGb3JtUHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHRlbnNpYmxlLWZvcm0tcHJvcC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEV4dGVuc2libGVGb3JtTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9tdWx0aS1zZWxlY3QvZXh0ZW5zaWJsZS1mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLWZvcm0tcHJvcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVuc2libGUtZm9ybS1wcm9wLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBFeHRlbnNpYmxlRGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBFeHRlbnNpYmxlRm9ybU11bHRpc2VsZWN0Q29tcG9uZW50LFxyXG4gICAgTmdiRGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE5nYlRpbWVwaWNrZXJNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRGlzYWJsZWREaXJlY3RpdmUsXHJcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXHJcbiAgICBOZ2JUb29sdGlwLFxyXG4gICAgTmdiVHlwZWFoZWFkTW9kdWxlLFxyXG4gICAgU2hvd1Bhc3N3b3JkRGlyZWN0aXZlLFxyXG4gICAgUGVybWlzc2lvbkRpcmVjdGl2ZSxcclxuICAgIExvY2FsaXphdGlvblBpcGUsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtFeHRlbnNpYmxlRm9ybVByb3BTZXJ2aWNlXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IHNlbGZGYWN0b3J5LFxyXG4gICAgICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgQ29udHJvbENvbnRhaW5lcl1dLFxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JUaW1lQWRhcHRlciwgdXNlQ2xhc3M6IFRpbWVBZGFwdGVyIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoRXh0ZW5zaWJsZUZvcm1Qcm9wU2VydmljZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGNkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgdHJhY2sgPSBpbmplY3QoVHJhY2tCeVNlcnZpY2UpO1xyXG4gICNncm91cERpcmVjdGl2ZSA9IGluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUpO1xyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybSA9IHRoaXMuI2dyb3VwRGlyZWN0aXZlLmZvcm07XHJcblxyXG4gIEBJbnB1dCgpIGRhdGEhOiBQcm9wRGF0YTtcclxuICBASW5wdXQoKSBwcm9wITogRm9ybVByb3A7XHJcbiAgQElucHV0KCkgZmlyc3Q/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlzRmlyc3RHcm91cD86IGJvb2xlYW47XHJcbiAgQFZpZXdDaGlsZCgnZmllbGQnKSBwcml2YXRlIGZpZWxkUmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50PzogSW5qZWN0b3I7XHJcbiAgYXN0ZXJpc2sgPSAnJztcclxuICBjb250YWluZXJDbGFzc05hbWUgPSAnbWItMic7XHJcbiAgc2hvd1Bhc3N3b3JkID0gZmFsc2U7XHJcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8QUJQLk9wdGlvbjxhbnk+W10+ID0gb2YoW10pO1xyXG4gIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICByZWFkb25seSE6IGJvb2xlYW47XHJcbiAgdHlwZWFoZWFkTW9kZWw6IGFueTtcclxuICBwYXNzd29yZEtleSA9IGVFeHRlbnNpYmxlQ29tcG9uZW50cy5QYXNzd29yZENvbXBvbmVudDtcclxuXHJcbiAgZGlzYWJsZWRGbiA9IChkYXRhOiBQcm9wRGF0YSkgPT4gZmFsc2U7XHJcblxyXG4gIGdldCBkaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRpc2FibGVkRm4odGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIHNldFR5cGVhaGVhZFZhbHVlKHNlbGVjdGVkT3B0aW9uOiBBQlAuT3B0aW9uPHN0cmluZz4pIHtcclxuICAgIHRoaXMudHlwZWFoZWFkTW9kZWwgPSBzZWxlY3RlZE9wdGlvbiB8fCB7IGtleTogbnVsbCwgdmFsdWU6IG51bGwgfTtcclxuICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gdGhpcy50eXBlYWhlYWRNb2RlbDtcclxuICAgIGNvbnN0IFtrZXlDb250cm9sLCB2YWx1ZUNvbnRyb2xdID0gdGhpcy5nZXRUeXBlYWhlYWRDb250cm9scygpO1xyXG4gICAgaWYgKHZhbHVlQ29udHJvbD8udmFsdWUgJiYgIXZhbHVlKSB2YWx1ZUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgIGtleUNvbnRyb2w/LnNldFZhbHVlKGtleSk7XHJcbiAgICB2YWx1ZUNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaCA9ICh0ZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+KSA9PlxyXG4gICAgdGV4dCRcclxuICAgICAgPyB0ZXh0JC5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHRleHQgPT4gdGhpcy5wcm9wPy5vcHRpb25zPy4odGhpcy5kYXRhLCB0ZXh0KSB8fCBvZihbXSkpLFxyXG4gICAgICAgIClcclxuICAgICAgOiBvZihbXSk7XHJcblxyXG4gIHR5cGVhaGVhZEZvcm1hdHRlciA9IChvcHRpb246IEFCUC5PcHRpb248YW55PikgPT4gb3B0aW9uLmtleTtcclxuXHJcbiAgbWVyaWRpYW4kID0gdGhpcy5zZXJ2aWNlLm1lcmlkaWFuJDtcclxuXHJcbiAgZ2V0IGlzSW52YWxpZCgpIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHRoaXMucHJvcC5uYW1lKTtcclxuICAgIHJldHVybiBjb250cm9sPy50b3VjaGVkICYmIGNvbnRyb2wuaW52YWxpZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VHlwZWFoZWFkQ29udHJvbHMoKSB7XHJcbiAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMucHJvcDtcclxuICAgIGNvbnN0IGV4dHJhUHJvcE5hbWUgPSBgJHtFWFRSQV9QUk9QRVJUSUVTX0tFWX0uJHtuYW1lfWA7XHJcbiAgICBjb25zdCBrZXlDb250cm9sID1cclxuICAgICAgdGhpcy5mb3JtLmdldChhZGRUeXBlYWhlYWRUZXh0U3VmZml4KGV4dHJhUHJvcE5hbWUpKSB8fFxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KGFkZFR5cGVhaGVhZFRleHRTdWZmaXgobmFtZSkpO1xyXG4gICAgY29uc3QgdmFsdWVDb250cm9sID0gdGhpcy5mb3JtLmdldChleHRyYVByb3BOYW1lKSB8fCB0aGlzLmZvcm0uZ2V0KG5hbWUpO1xyXG4gICAgcmV0dXJuIFtrZXlDb250cm9sLCB2YWx1ZUNvbnRyb2xdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBc3RlcmlzaygpIHtcclxuICAgIHRoaXMuYXN0ZXJpc2sgPSB0aGlzLnNlcnZpY2UuY2FsY0FzdGVyaXNrcyh0aGlzLnZhbGlkYXRvcnMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNGaXJzdEdyb3VwICYmIHRoaXMuZmlyc3QgJiYgdGhpcy5maWVsZFJlZikge1xyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmllbGRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbXBvbmVudChwcm9wOiBGb3JtUHJvcCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldENvbXBvbmVudChwcm9wKTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUocHJvcDogRm9ybVByb3ApOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5nZXRUeXBlKHByb3ApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoeyBwcm9wLCBkYXRhIH06IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRQcm9wID0gcHJvcD8uY3VycmVudFZhbHVlIGFzIEZvcm1Qcm9wO1xyXG4gICAgY29uc3QgeyBvcHRpb25zLCByZWFkb25seSwgZGlzYWJsZWQsIHZhbGlkYXRvcnMsIGNsYXNzTmFtZSwgdGVtcGxhdGUgfSA9IGN1cnJlbnRQcm9wIHx8IHt9O1xyXG4gICAgaWYgKHRlbXBsYXRlKSB7XHJcbiAgICAgIHRoaXMuaW5qZWN0b3JGb3JDdXN0b21Db21wb25lbnQgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0ZPUk1fUFJPUCxcclxuICAgICAgICAgICAgdXNlVmFsdWU6IGN1cnJlbnRQcm9wLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19GT1JNX1BST1BfREFUQSxcclxuICAgICAgICAgICAgdXNlVmFsdWU6IChkYXRhPy5jdXJyZW50VmFsdWUgYXMgUHJvcERhdGEpPy5yZWNvcmQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgeyBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLCB1c2VFeGlzdGluZzogRm9ybUdyb3VwRGlyZWN0aXZlIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zKSB0aGlzLm9wdGlvbnMkID0gb3B0aW9ucyh0aGlzLmRhdGEpO1xyXG4gICAgaWYgKHJlYWRvbmx5KSB0aGlzLnJlYWRvbmx5ID0gcmVhZG9ubHkodGhpcy5kYXRhKTtcclxuXHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZEZuID0gZGlzYWJsZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsaWRhdG9ycykge1xyXG4gICAgICB0aGlzLnZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzKHRoaXMuZGF0YSk7XHJcbiAgICAgIHRoaXMuc2V0QXN0ZXJpc2soKTtcclxuICAgIH1cclxuICAgIGlmIChjbGFzc05hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lckNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBba2V5Q29udHJvbCwgdmFsdWVDb250cm9sXSA9IHRoaXMuZ2V0VHlwZWFoZWFkQ29udHJvbHMoKTtcclxuICAgIGlmIChrZXlDb250cm9sICYmIHZhbHVlQ29udHJvbClcclxuICAgICAgdGhpcy50eXBlYWhlYWRNb2RlbCA9IHsga2V5OiBrZXlDb250cm9sLnZhbHVlLCB2YWx1ZTogdmFsdWVDb250cm9sLnZhbHVlIH07XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKmFicFBlcm1pc3Npb249XCJwcm9wLnBlcm1pc3Npb247IHJ1bkNoYW5nZURldGVjdGlvbjogZmFsc2VcIj5cclxuICBAc3dpdGNoIChnZXRDb21wb25lbnQocHJvcCkpIHtcclxuICAgIEBjYXNlICgndGVtcGxhdGUnKSB7XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwicHJvcC50ZW1wbGF0ZTsgaW5qZWN0b3I6IGluamVjdG9yRm9yQ3VzdG9tQ29tcG9uZW50XCIgLz5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NOYW1lXCIgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICBAc3dpdGNoIChnZXRDb21wb25lbnQocHJvcCkpIHtcclxuICAgICAgQGNhc2UgKCdpbnB1dCcpIHtcclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIiAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cInByb3AuYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICAgIFt0eXBlXT1cImdldFR5cGUocHJvcClcIlxyXG4gICAgICAgICAgW2FicERpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ2hpZGRlbicpIHtcclxuICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIiB0eXBlPVwiaGlkZGVuXCIgLz5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgdmFsaWRhdGlvblRhcmdldD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAjZmllbGRcclxuICAgICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiAnZm9ybS1jaGVjay1sYWJlbCcgfVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnc2VsZWN0Jykge1xyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiIC8+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgI2ZpZWxkXHJcbiAgICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBvcHRpb25zJCB8IGFzeW5jOyB0cmFjayBvcHRpb24udmFsdWUpIHtcclxuICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJvcHRpb24udmFsdWVcIj5cclxuICAgICAgICAgICAgICBAaWYgKHByb3AuaXNFeHRyYSkge1xyXG4gICAgICAgICAgICAgICAge3sgJzo6JyArIG9wdGlvbi5rZXkgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnbXVsdGlzZWxlY3QnKSB7XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8YWJwLWV4dGVuc2libGUtZm9ybS1tdWx0aS1zZWxlY3RcclxuICAgICAgICAgIFtwcm9wXT1cInByb3BcIlxyXG4gICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9ucyQgfCBhc3luY1wiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd0eXBlYWhlYWQnKSB7XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCIgLz5cclxuICAgICAgICA8ZGl2ICN0eXBlYWhlYWQgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiIHZhbGlkYXRpb25TdHlsZSB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICNmaWVsZFxyXG4gICAgICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwicHJvcC5hdXRvY29tcGxldGVcIlxyXG4gICAgICAgICAgICBbYWJwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbbmdiVHlwZWFoZWFkXT1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJ0eXBlYWhlYWRGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgICBbcmVzdWx0Rm9ybWF0dGVyXT1cInR5cGVhaGVhZEZvcm1hdHRlclwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidHlwZWFoZWFkTW9kZWxcIlxyXG4gICAgICAgICAgICAoc2VsZWN0SXRlbSk9XCJzZXRUeXBlYWhlYWRWYWx1ZSgkZXZlbnQuaXRlbSlcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJzZXRUeXBlYWhlYWRWYWx1ZSh0eXBlYWhlYWRNb2RlbClcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJ0eXBlYWhlYWQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1pbnZhbGlkJylcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCIgdHlwZT1cImhpZGRlblwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdkYXRlJykge1xyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbaWRdPVwicHJvcC5pZFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5vcGVuKClcIlxyXG4gICAgICAgICAgKGtleXVwLnNwYWNlKT1cImRhdGVwaWNrZXIub3BlbigpXCJcclxuICAgICAgICAgIG5nYkRhdGVwaWNrZXJcclxuICAgICAgICAgICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3RpbWUnKSB7XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCIgLz5cclxuICAgICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wLm5hbWVcIiAvPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCIgLz5cclxuICAgICAgICA8YWJwLWV4dGVuc2libGUtZGF0ZS10aW1lLXBpY2tlciBbcHJvcF09XCJwcm9wXCIgW21lcmlkaWFuXT1cIm1lcmlkaWFuJCB8IGFzeW5jXCIgLz5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3RleHRhcmVhJykge1xyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiIC8+XHJcbiAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAjZmllbGRcclxuICAgICAgICAgIFtpZF09XCJwcm9wLmlkXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcC5uYW1lXCJcclxuICAgICAgICAgIFthYnBEaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgID48L3RleHRhcmVhPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgncGFzc3dvcmRpbnB1dGdyb3VwJykge1xyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGZvcm0tZ3JvdXBcIiB2YWxpZGF0aW9uVGFyZ2V0PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgW2lkXT1cInByb3AuaWRcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3AubmFtZVwiXHJcbiAgICAgICAgICAgIFthYnBTaG93UGFzc3dvcmRdPVwic2hvd1Bhc3N3b3JkXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICBjbGFzcz1cImZhXCJcclxuICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdmYS1leWUtc2xhc2gnOiAhc2hvd1Bhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgJ2ZhLWV5ZSc6IHNob3dQYXNzd29yZCxcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChwcm9wLmZvcm1UZXh0KSB7XHJcbiAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWQgZC1ibG9ja1wiPnt7IHByb3AuZm9ybVRleHQgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NtYWxsPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbGFiZWwgbGV0LWNsYXNzZXM+XHJcbiAgPGxhYmVsIFtodG1sRm9yXT1cInByb3AuaWRcIiBbbmdDbGFzc109XCJjbGFzc2VzIHx8ICdmb3JtLWxhYmVsIGQtaW5saW5lLWJsb2NrJ1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICBAaWYgKHByb3AuZGlzcGxheVRleHRSZXNvbHZlcikge1xyXG4gICAgICAgIHt7IHByb3AuZGlzcGxheVRleHRSZXNvbHZlcihkYXRhKSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAaWYgKHByb3AuaXNFeHRyYSkge1xyXG4gICAgICAgICAge3sgJzo6JyArIHByb3AuZGlzcGxheU5hbWUgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIHt7IHByb3AuZGlzcGxheU5hbWUgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAge3sgYXN0ZXJpc2sgfX1cclxuICAgICAgQGlmIChwcm9wLnRvb2x0aXApIHtcclxuICAgICAgICA8aVxyXG4gICAgICAgICAgW25nYlRvb2x0aXBdPVwicHJvcC50b29sdGlwLnRleHQgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgW3BsYWNlbWVudF09XCJwcm9wLnRvb2x0aXAucGxhY2VtZW50IHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgICAgIGNsYXNzPVwiYmkgYmktaW5mby1jaXJjbGVcIlxyXG4gICAgICAgID48L2k+XHJcbiAgICAgIH1cclxuICAgIDwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=","import { LinkedList } from '@abp/utils';\nexport class ActionList extends LinkedList {\n}\nexport class ActionData {\n get data() {\n return {\n getInjected: this.getInjected,\n index: this.index,\n record: this.record,\n };\n }\n}\nexport class Action {\n constructor(permission, visible = () => true, action = () => { }, btnClass, btnStyle) {\n this.permission = permission;\n this.visible = visible;\n this.action = action;\n this.btnClass = btnClass;\n this.btnStyle = btnStyle;\n }\n}\nexport class ActionsFactory {\n constructor() {\n this.contributorCallbacks = {};\n }\n get(name) {\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\n return new this._ctor(this.contributorCallbacks[name]);\n }\n}\nexport class Actions {\n get actions() {\n const actionList = new this._ctor();\n this.callbackList.forEach(callback => callback(actionList));\n return actionList;\n }\n constructor(callbackList) {\n this.callbackList = callbackList;\n }\n addContributor(contributeCallback) {\n this.callbackList.push(contributeCallback);\n }\n clearContributors() {\n while (this.callbackList.length)\n this.callbackList.pop();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL21vZGVscy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFnQixVQUFtQyxTQUFRLFVBQWE7Q0FBRztBQUVqRixNQUFNLE9BQWdCLFVBQVU7SUFTOUIsSUFBSSxJQUFJO1FBQ04sT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFJRCxNQUFNLE9BQWdCLE1BQU07SUFDMUIsWUFDa0IsVUFBa0IsRUFDbEIsVUFBOEIsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUN4QyxTQUE0QixHQUFHLEVBQUUsR0FBRSxDQUFDLEVBQ3BDLFFBQWlCLEVBQ2pCLFFBQWlCO1FBSmpCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUM7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBOEI7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFTO0lBQ2hDLENBQUM7Q0FDTDtBQUtELE1BQU0sT0FBZ0IsY0FBYztJQUFwQztRQUVVLHlCQUFvQixHQUFzRCxFQUFFLENBQUM7SUFPdkYsQ0FBQztJQUxDLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEUsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFnQixPQUFPO0lBRzNCLElBQUksT0FBTztRQUNULE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXBDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFNUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQTZCLFlBQTRDO1FBQTVDLGlCQUFZLEdBQVosWUFBWSxDQUFnQztJQUFHLENBQUM7SUFFN0UsY0FBYyxDQUFDLGtCQUFnRDtRQUM3RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIEluamVjdE9wdGlvbnMsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTGlua2VkTGlzdCB9IGZyb20gJ0BhYnAvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjdGlvbkxpc3Q8UiA9IGFueSwgQSA9IEFjdGlvbjxSPj4gZXh0ZW5kcyBMaW5rZWRMaXN0PEE+IHt9XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWN0aW9uRGF0YTxSID0gYW55PiB7XHJcbiAgYWJzdHJhY3QgZ2V0SW5qZWN0ZWQ6IDxUPihcclxuICAgIHRva2VuOiBUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4sXHJcbiAgICBub3RGb3VuZFZhbHVlPzogVCxcclxuICAgIGZsYWdzPzogSW5qZWN0T3B0aW9ucyxcclxuICApID0+IFQ7XHJcbiAgaW5kZXg/OiBudW1iZXI7XHJcbiAgYWJzdHJhY3QgcmVjb3JkOiBSO1xyXG5cclxuICBnZXQgZGF0YSgpOiBSZWFkb25seUFjdGlvbkRhdGE8Uj4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZ2V0SW5qZWN0ZWQ6IHRoaXMuZ2V0SW5qZWN0ZWQsXHJcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxyXG4gICAgICByZWNvcmQ6IHRoaXMucmVjb3JkLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlYWRvbmx5QWN0aW9uRGF0YTxSID0gYW55PiA9IFJlYWRvbmx5PE9taXQ8QWN0aW9uRGF0YTxSPiwgJ2RhdGEnPj47XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWN0aW9uPFIgPSBhbnk+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBwZXJtaXNzaW9uOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlzaWJsZTogQWN0aW9uUHJlZGljYXRlPFI+ID0gKCkgPT4gdHJ1ZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpb246IEFjdGlvbkNhbGxiYWNrPFI+ID0gKCkgPT4ge30sXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnRuQ2xhc3M/OiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnRuU3R5bGU/OiBzdHJpbmcsXHJcbiAgKSB7fVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25DYWxsYmFjazxULCBSID0gYW55PiA9IChkYXRhOiBPbWl0PEFjdGlvbkRhdGE8VD4sICdkYXRhJz4pID0+IFI7XHJcbmV4cG9ydCB0eXBlIEFjdGlvblByZWRpY2F0ZTxUPiA9IChkYXRhPzogT21pdDxBY3Rpb25EYXRhPFQ+LCAnZGF0YSc+KSA9PiBib29sZWFuO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjdGlvbnNGYWN0b3J5PEMgZXh0ZW5kcyBBY3Rpb25zPGFueT4+IHtcclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2N0b3I6IFR5cGU8Qz47XHJcbiAgcHJpdmF0ZSBjb250cmlidXRvckNhbGxiYWNrczogQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFja3M8SW5mZXJyZWRBY3Rpb25MaXN0PEM+PiA9IHt9O1xyXG5cclxuICBnZXQobmFtZTogc3RyaW5nKTogQyB7XHJcbiAgICB0aGlzLmNvbnRyaWJ1dG9yQ2FsbGJhY2tzW25hbWVdID0gdGhpcy5jb250cmlidXRvckNhbGxiYWNrc1tuYW1lXSB8fCBbXTtcclxuXHJcbiAgICByZXR1cm4gbmV3IHRoaXMuX2N0b3IodGhpcy5jb250cmlidXRvckNhbGxiYWNrc1tuYW1lXSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWN0aW9uczxMIGV4dGVuZHMgQWN0aW9uTGlzdDxhbnksIEluZmVycmVkQWN0aW9uPEw+Pj4ge1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfY3RvcjogVHlwZTxMPjtcclxuXHJcbiAgZ2V0IGFjdGlvbnMoKTogTCB7XHJcbiAgICBjb25zdCBhY3Rpb25MaXN0ID0gbmV3IHRoaXMuX2N0b3IoKTtcclxuXHJcbiAgICB0aGlzLmNhbGxiYWNrTGlzdC5mb3JFYWNoKGNhbGxiYWNrID0+IGNhbGxiYWNrKGFjdGlvbkxpc3QpKTtcclxuXHJcbiAgICByZXR1cm4gYWN0aW9uTGlzdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FsbGJhY2tMaXN0OiBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrPEw+W10pIHt9XHJcblxyXG4gIGFkZENvbnRyaWJ1dG9yKGNvbnRyaWJ1dGVDYWxsYmFjazogQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFjazxMPikge1xyXG4gICAgdGhpcy5jYWxsYmFja0xpc3QucHVzaChjb250cmlidXRlQ2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJDb250cmlidXRvcnMoKSB7XHJcbiAgICB3aGlsZSAodGhpcy5jYWxsYmFja0xpc3QubGVuZ3RoKSB0aGlzLmNhbGxiYWNrTGlzdC5wb3AoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbkNvbnRyaWJ1dG9yQ2FsbGJhY2tzPEwgZXh0ZW5kcyBBY3Rpb25MaXN0PGFueSwgSW5mZXJyZWRBY3Rpb248TD4+PiA9IFJlY29yZDxcclxuICBzdHJpbmcsXHJcbiAgQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFjazxMPltdXHJcbj47XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrPEwgZXh0ZW5kcyBBY3Rpb25MaXN0PGFueSwgSW5mZXJyZWRBY3Rpb248TD4+PiA9IChcclxuICBhY3Rpb25MaXN0OiBMLFxyXG4pID0+IGFueTtcclxuXHJcbnR5cGUgSW5mZXJyZWRBY3Rpb25MaXN0PEM+ID0gQyBleHRlbmRzIEFjdGlvbnM8aW5mZXIgTD4gPyBMIDogbmV2ZXI7XHJcbmV4cG9ydCB0eXBlIEluZmVycmVkQWN0aW9uPFQ+ID0gVCBleHRlbmRzIEFjdGlvbkxpc3Q8YW55LCBpbmZlciBVPiA/IFUgOiBUO1xyXG4iXX0=","import { Action, ActionList, Actions, ActionsFactory, } from './actions';\nexport class EntityActionList extends ActionList {\n}\nexport class EntityActions extends Actions {\n constructor() {\n super(...arguments);\n this._ctor = EntityActionList;\n }\n}\nexport class EntityActionsFactory extends ActionsFactory {\n constructor() {\n super(...arguments);\n this._ctor = EntityActions;\n }\n}\nexport class EntityAction extends Action {\n constructor(options) {\n super(options.permission || '', options.visible, options.action);\n this.text = options.text;\n this.icon = options.icon || '';\n this.btnClass = options.btnClass || 'btn btn-primary text-center';\n this.btnStyle = options.btnStyle;\n this.showOnlyIcon = options.showOnlyIcon || false;\n this.tooltip = options.tooltip;\n }\n static create(options) {\n return new EntityAction(options);\n }\n static createMany(arrayOfOptions) {\n return arrayOfOptions.map(EntityAction.create);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9tb2RlbHMvZW50aXR5LWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLE1BQU0sRUFHTixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsR0FDZixNQUFNLFdBQVcsQ0FBQztBQUluQixNQUFNLE9BQU8sZ0JBQTBCLFNBQVEsVUFBOEI7Q0FBRztBQUVoRixNQUFNLE9BQU8sYUFBdUIsU0FBUSxPQUE0QjtJQUF4RTs7UUFDWSxVQUFLLEdBQThCLGdCQUFnQixDQUFDO0lBQ2hFLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxvQkFBOEIsU0FBUSxjQUFnQztJQUFuRjs7UUFDWSxVQUFLLEdBQTJCLGFBQWEsQ0FBQztJQUMxRCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sWUFBc0IsU0FBUSxNQUFTO0lBUWxELFlBQVksT0FBK0I7UUFDekMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSw2QkFBNkIsQ0FBQztRQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQVUsT0FBK0I7UUFDcEQsT0FBTyxJQUFJLFlBQVksQ0FBSSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBVSxjQUF3QztRQUNqRSxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBY3Rpb24sXHJcbiAgQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFjayxcclxuICBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrcyxcclxuICBBY3Rpb25MaXN0LFxyXG4gIEFjdGlvbnMsXHJcbiAgQWN0aW9uc0ZhY3RvcnksXHJcbn0gZnJvbSAnLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgRm9ybVByb3BUb29sdGlwIH0gZnJvbSAnLi9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgRmlsdGVyZWRXaXRoT3B0aW9ucywgUGFydGlhbFdpdGhPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvbW9kZWwudXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eUFjdGlvbkxpc3Q8UiA9IGFueT4gZXh0ZW5kcyBBY3Rpb25MaXN0PFIsIEVudGl0eUFjdGlvbjxSPj4ge31cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlBY3Rpb25zPFIgPSBhbnk+IGV4dGVuZHMgQWN0aW9uczxFbnRpdHlBY3Rpb25MaXN0PFI+PiB7XHJcbiAgcHJvdGVjdGVkIF9jdG9yOiBUeXBlPEVudGl0eUFjdGlvbkxpc3Q8Uj4+ID0gRW50aXR5QWN0aW9uTGlzdDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eUFjdGlvbnNGYWN0b3J5PFIgPSBhbnk+IGV4dGVuZHMgQWN0aW9uc0ZhY3Rvcnk8RW50aXR5QWN0aW9uczxSPj4ge1xyXG4gIHByb3RlY3RlZCBfY3RvcjogVHlwZTxFbnRpdHlBY3Rpb25zPFI+PiA9IEVudGl0eUFjdGlvbnM7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlBY3Rpb248UiA9IGFueT4gZXh0ZW5kcyBBY3Rpb248Uj4ge1xyXG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcclxuICByZWFkb25seSBpY29uOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgYnRuQ2xhc3M/OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgYnRuU3R5bGU/OiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgc2hvd09ubHlJY29uPzogYm9vbGVhbjtcclxuICByZWFkb25seSB0b29sdGlwPzogRm9ybVByb3BUb29sdGlwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBFbnRpdHlBY3Rpb25PcHRpb25zPFI+KSB7XHJcbiAgICBzdXBlcihvcHRpb25zLnBlcm1pc3Npb24gfHwgJycsIG9wdGlvbnMudmlzaWJsZSwgb3B0aW9ucy5hY3Rpb24pO1xyXG4gICAgdGhpcy50ZXh0ID0gb3B0aW9ucy50ZXh0O1xyXG4gICAgdGhpcy5pY29uID0gb3B0aW9ucy5pY29uIHx8ICcnO1xyXG4gICAgdGhpcy5idG5DbGFzcyA9IG9wdGlvbnMuYnRuQ2xhc3MgfHwgJ2J0biBidG4tcHJpbWFyeSB0ZXh0LWNlbnRlcic7XHJcbiAgICB0aGlzLmJ0blN0eWxlID0gb3B0aW9ucy5idG5TdHlsZTtcclxuICAgIHRoaXMuc2hvd09ubHlJY29uID0gb3B0aW9ucy5zaG93T25seUljb24gfHwgZmFsc2U7XHJcbiAgICB0aGlzLnRvb2x0aXAgPSBvcHRpb25zLnRvb2x0aXA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlPFIgPSBhbnk+KG9wdGlvbnM6IEVudGl0eUFjdGlvbk9wdGlvbnM8Uj4pIHtcclxuICAgIHJldHVybiBuZXcgRW50aXR5QWN0aW9uPFI+KG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZU1hbnk8UiA9IGFueT4oYXJyYXlPZk9wdGlvbnM6IEVudGl0eUFjdGlvbk9wdGlvbnM8Uj5bXSkge1xyXG4gICAgcmV0dXJuIGFycmF5T2ZPcHRpb25zLm1hcChFbnRpdHlBY3Rpb24uY3JlYXRlKTtcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgT3B0aW9uYWxLZXlzID0gJ3Blcm1pc3Npb24nIHwgJ3Zpc2libGUnIHwgJ2ljb24nO1xyXG5leHBvcnQgdHlwZSBFbnRpdHlBY3Rpb25PcHRpb25zPFIgPSBhbnk+ID0gUGFydGlhbFdpdGhPcHRpb25zPEVudGl0eUFjdGlvbjxSPiwgT3B0aW9uYWxLZXlzPiAmXHJcbiAgRmlsdGVyZWRXaXRoT3B0aW9uczxFbnRpdHlBY3Rpb248Uj4sIE9wdGlvbmFsS2V5cz47XHJcblxyXG5leHBvcnQgdHlwZSBFbnRpdHlBY3Rpb25EZWZhdWx0czxSID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIEVudGl0eUFjdGlvbjxSPltdPjtcclxuZXhwb3J0IHR5cGUgRW50aXR5QWN0aW9uQ29udHJpYnV0b3JDYWxsYmFjazxSID0gYW55PiA9IEFjdGlvbkNvbnRyaWJ1dG9yQ2FsbGJhY2s8XHJcbiAgRW50aXR5QWN0aW9uTGlzdDxSPlxyXG4+O1xyXG5leHBvcnQgdHlwZSBFbnRpdHlBY3Rpb25Db250cmlidXRvckNhbGxiYWNrczxSID0gYW55PiA9IEFjdGlvbkNvbnRyaWJ1dG9yQ2FsbGJhY2tzPFxyXG4gIEVudGl0eUFjdGlvbkxpc3Q8Uj5cclxuPjtcclxuIl19","import { escapeHtmlChars } from '@abp/ng.core';\nimport { of } from 'rxjs';\nimport { Prop, PropList, Props, PropsFactory, } from './props';\nexport class EntityPropList extends PropList {\n}\nexport class EntityProps extends Props {\n constructor() {\n super(...arguments);\n this._ctor = EntityPropList;\n }\n}\nexport class EntityPropsFactory extends PropsFactory {\n constructor() {\n super(...arguments);\n this._ctor = EntityProps;\n }\n}\nexport class EntityProp extends Prop {\n constructor(options) {\n super(options.type, options.name, options.displayName || '', options.permission || '', options.visible, options.isExtra);\n this.columnVisible = options.columnVisible || (() => true);\n this.columnWidth = options.columnWidth;\n this.sortable = options.sortable || false;\n this.valueResolver =\n options.valueResolver ||\n (data => of(escapeHtmlChars(data.record[this.name])));\n if (options.action) {\n this.action = options.action;\n }\n if (options.component) {\n this.component = options.component;\n }\n if (options.enumList) {\n this.enumList = options.enumList;\n }\n this.tooltip = options.tooltip;\n }\n static create(options) {\n return new EntityProp(options);\n }\n static createMany(arrayOfOptions) {\n return arrayOfOptions.map(EntityProp.create);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvbW9kZWxzL2VudGl0eS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQU8sZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUNMLElBQUksRUFJSixRQUFRLEVBQ1IsS0FBSyxFQUNMLFlBQVksR0FDYixNQUFNLFNBQVMsQ0FBQztBQUlqQixNQUFNLE9BQU8sY0FBd0IsU0FBUSxRQUEwQjtDQUFHO0FBRTFFLE1BQU0sT0FBTyxXQUFxQixTQUFRLEtBQXdCO0lBQWxFOztRQUNZLFVBQUssR0FBNEIsY0FBYyxDQUFDO0lBQzVELENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxrQkFBNEIsU0FBUSxZQUE0QjtJQUE3RTs7UUFDWSxVQUFLLEdBQXlCLFdBQVcsQ0FBQztJQUN0RCxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sVUFBb0IsU0FBUSxJQUFPO0lBVTlDLFlBQVksT0FBNkI7UUFDdkMsS0FBSyxDQUNILE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFDekIsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQ3hCLE9BQU8sQ0FBQyxPQUFPLEVBQ2YsT0FBTyxDQUFDLE9BQU8sQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhO1lBQ2hCLE9BQU8sQ0FBQyxhQUFhO2dCQUNyQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBRSxJQUFJLENBQUMsTUFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFVLE9BQTZCO1FBQ2xELE9BQU8sSUFBSSxVQUFVLENBQUksT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQVUsY0FBc0M7UUFDL0QsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGVzY2FwZUh0bWxDaGFycyB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEluamVjdE9wdGlvbnMsIEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFjdGlvbkNhbGxiYWNrIH0gZnJvbSAnLi9hY3Rpb25zJztcclxuaW1wb3J0IHtcclxuICBQcm9wLFxyXG4gIFByb3BDYWxsYmFjayxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFjayxcclxuICBQcm9wQ29udHJpYnV0b3JDYWxsYmFja3MsXHJcbiAgUHJvcExpc3QsXHJcbiAgUHJvcHMsXHJcbiAgUHJvcHNGYWN0b3J5LFxyXG59IGZyb20gJy4vcHJvcHMnO1xyXG5pbXBvcnQgeyBGb3JtUHJvcFRvb2x0aXAgfSBmcm9tICcuL2Zvcm0tcHJvcHMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJlZFdpdGhPcHRpb25zLCBQYXJ0aWFsV2l0aE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9tb2RlbC51dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UHJvcExpc3Q8UiA9IGFueT4gZXh0ZW5kcyBQcm9wTGlzdDxSLCBFbnRpdHlQcm9wPFI+PiB7fVxyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eVByb3BzPFIgPSBhbnk+IGV4dGVuZHMgUHJvcHM8RW50aXR5UHJvcExpc3Q8Uj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8RW50aXR5UHJvcExpc3Q8Uj4+ID0gRW50aXR5UHJvcExpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQcm9wc0ZhY3Rvcnk8UiA9IGFueT4gZXh0ZW5kcyBQcm9wc0ZhY3Rvcnk8RW50aXR5UHJvcHM8Uj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8RW50aXR5UHJvcHM8Uj4+ID0gRW50aXR5UHJvcHM7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQcm9wPFIgPSBhbnk+IGV4dGVuZHMgUHJvcDxSPiB7XHJcbiAgcmVhZG9ubHkgY29sdW1uV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICByZWFkb25seSBzb3J0YWJsZTogYm9vbGVhbjtcclxuICByZWFkb25seSB2YWx1ZVJlc29sdmVyOiBQcm9wQ2FsbGJhY2s8UiwgT2JzZXJ2YWJsZTxhbnk+PjtcclxuICByZWFkb25seSBhY3Rpb24/OiBBY3Rpb25DYWxsYmFjazxSPjtcclxuICByZWFkb25seSBjb21wb25lbnQ/OiBUeXBlPGFueT47XHJcbiAgcmVhZG9ubHkgZW51bUxpc3Q/OiBBcnJheTxBQlAuT3B0aW9uPGFueT4+O1xyXG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBGb3JtUHJvcFRvb2x0aXA7XHJcbiAgcmVhZG9ubHkgY29sdW1uVmlzaWJsZTogQ29sdW1uUHJlZGljYXRlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBFbnRpdHlQcm9wT3B0aW9uczxSPikge1xyXG4gICAgc3VwZXIoXHJcbiAgICAgIG9wdGlvbnMudHlwZSxcclxuICAgICAgb3B0aW9ucy5uYW1lLFxyXG4gICAgICBvcHRpb25zLmRpc3BsYXlOYW1lIHx8ICcnLFxyXG4gICAgICBvcHRpb25zLnBlcm1pc3Npb24gfHwgJycsXHJcbiAgICAgIG9wdGlvbnMudmlzaWJsZSxcclxuICAgICAgb3B0aW9ucy5pc0V4dHJhLFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtblZpc2libGUgPSBvcHRpb25zLmNvbHVtblZpc2libGUgfHwgKCgpID0+IHRydWUpO1xyXG4gICAgdGhpcy5jb2x1bW5XaWR0aCA9IG9wdGlvbnMuY29sdW1uV2lkdGg7XHJcbiAgICB0aGlzLnNvcnRhYmxlID0gb3B0aW9ucy5zb3J0YWJsZSB8fCBmYWxzZTtcclxuICAgIHRoaXMudmFsdWVSZXNvbHZlciA9XHJcbiAgICAgIG9wdGlvbnMudmFsdWVSZXNvbHZlciB8fFxyXG4gICAgICAoZGF0YSA9PiBvZihlc2NhcGVIdG1sQ2hhcnMoKGRhdGEucmVjb3JkIGFzIFByb3BEYXRhT2JqZWN0KVt0aGlzLm5hbWVdKSkpO1xyXG4gICAgaWYgKG9wdGlvbnMuYWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uID0gb3B0aW9ucy5hY3Rpb247XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5jb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnQgPSBvcHRpb25zLmNvbXBvbmVudDtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25zLmVudW1MaXN0KSB7XHJcbiAgICAgIHRoaXMuZW51bUxpc3QgPSBvcHRpb25zLmVudW1MaXN0O1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29sdGlwID0gb3B0aW9ucy50b29sdGlwO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZTxSID0gYW55PihvcHRpb25zOiBFbnRpdHlQcm9wT3B0aW9uczxSPikge1xyXG4gICAgcmV0dXJuIG5ldyBFbnRpdHlQcm9wPFI+KG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZU1hbnk8UiA9IGFueT4oYXJyYXlPZk9wdGlvbnM6IEVudGl0eVByb3BPcHRpb25zPFI+W10pIHtcclxuICAgIHJldHVybiBhcnJheU9mT3B0aW9ucy5tYXAoRW50aXR5UHJvcC5jcmVhdGUpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBPcHRpb25hbEtleXMgPVxyXG4gIHwgJ3Blcm1pc3Npb24nXHJcbiAgfCAndmlzaWJsZSdcclxuICB8ICdjb2x1bW5WaXNpYmxlJ1xyXG4gIHwgJ2Rpc3BsYXlOYW1lJ1xyXG4gIHwgJ2lzRXh0cmEnXHJcbiAgfCAnY29sdW1uV2lkdGgnXHJcbiAgfCAnc29ydGFibGUnXHJcbiAgfCAndmFsdWVSZXNvbHZlcidcclxuICB8ICdhY3Rpb24nXHJcbiAgfCAnY29tcG9uZW50J1xyXG4gIHwgJ2VudW1MaXN0JztcclxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcE9wdGlvbnM8UiA9IGFueT4gPSBQYXJ0aWFsV2l0aE9wdGlvbnM8RW50aXR5UHJvcDxSPiwgT3B0aW9uYWxLZXlzPiAmXHJcbiAgRmlsdGVyZWRXaXRoT3B0aW9uczxFbnRpdHlQcm9wPFI+LCBPcHRpb25hbEtleXM+O1xyXG5cclxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcERlZmF1bHRzPFIgPSBhbnk+ID0gUmVjb3JkPHN0cmluZywgRW50aXR5UHJvcDxSPltdPjtcclxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8UiA9IGFueT4gPSBQcm9wQ29udHJpYnV0b3JDYWxsYmFjazxFbnRpdHlQcm9wTGlzdDxSPj47XHJcbmV4cG9ydCB0eXBlIEVudGl0eVByb3BDb250cmlidXRvckNhbGxiYWNrczxSID0gYW55PiA9IFByb3BDb250cmlidXRvckNhbGxiYWNrczxFbnRpdHlQcm9wTGlzdDxSPj47XHJcbmV4cG9ydCB0eXBlIENvbHVtblByZWRpY2F0ZSA9IChnZXRJbmplY3RlZDogR2V0SW5qZWN0ZWQsIGF1eERhdGE/OiBhbnkpID0+IGJvb2xlYW47XHJcbmV4cG9ydCB0eXBlIEdldEluamVjdGVkID0gPFQ+KFxyXG4gIHRva2VuOiBUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4sXHJcbiAgbm90Rm91bmRWYWx1ZT86IFQsXHJcbiAgb3B0aW9ucz86IEluamVjdE9wdGlvbnMsXHJcbikgPT4gVDtcclxudHlwZSBQcm9wRGF0YU9iamVjdCA9IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbiJdfQ==","import { Action, ActionList, Actions, ActionsFactory, } from './actions';\nexport class ToolbarActionList extends ActionList {\n}\nexport class ToolbarActions extends Actions {\n constructor() {\n super(...arguments);\n this._ctor = ToolbarActionList;\n }\n}\nexport class ToolbarActionsFactory extends ActionsFactory {\n constructor() {\n super(...arguments);\n this._ctor = ToolbarActions;\n }\n}\nexport class ToolbarAction extends Action {\n constructor(options) {\n super(options.permission || '', options.visible, options.action);\n this.text = options.text;\n this.icon = options.icon || '';\n if (options.btnClass) {\n this.btnClass = options.btnClass;\n }\n }\n static create(options) {\n return new ToolbarAction(options);\n }\n static createMany(arrayOfOptions) {\n return arrayOfOptions.map(ToolbarAction.create);\n }\n}\nexport class ToolbarComponent extends Action {\n constructor(options) {\n super(options.permission || '', options.visible, options.action);\n this.component = options.component;\n }\n static create(options) {\n return new ToolbarComponent(options);\n }\n static createMany(arrayOfOptions) {\n return arrayOfOptions.map(ToolbarComponent.create);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvbW9kZWxzL3Rvb2xiYXItYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsTUFBTSxFQUlOLFVBQVUsRUFDVixPQUFPLEVBQ1AsY0FBYyxHQUVmLE1BQU0sV0FBVyxDQUFDO0FBR25CLE1BQU0sT0FBTyxpQkFBMkIsU0FBUSxVQUFzQztDQUFHO0FBRXpGLE1BQU0sT0FBTyxjQUF3QixTQUFRLE9BQTZCO0lBQTFFOztRQUNZLFVBQUssR0FBK0IsaUJBQWlCLENBQUM7SUFDbEUsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLHFCQUErQixTQUFRLGNBQWlDO0lBQXJGOztRQUNZLFVBQUssR0FBNEIsY0FBYyxDQUFDO0lBQzVELENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxhQUF1QixTQUFRLE1BQVM7SUFLbkQsWUFBWSxPQUFnQztRQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBVSxPQUFnQztRQUNyRCxPQUFPLElBQUksYUFBYSxDQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFVLGNBQXlDO1FBQ2xFLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUEwQixTQUFRLE1BQVM7SUFHdEQsWUFBWSxPQUFtQztRQUM3QyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFVLE9BQW1DO1FBQ3hELE9BQU8sSUFBSSxnQkFBZ0IsQ0FBSSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBVSxjQUE0QztRQUNyRSxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBY3Rpb24sXHJcbiAgQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFjayxcclxuICBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrcyxcclxuICBBY3Rpb25EYXRhLFxyXG4gIEFjdGlvbkxpc3QsXHJcbiAgQWN0aW9ucyxcclxuICBBY3Rpb25zRmFjdG9yeSxcclxuICBSZWFkb25seUFjdGlvbkRhdGEsXHJcbn0gZnJvbSAnLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgRmlsdGVyZWRXaXRoT3B0aW9ucywgUGFydGlhbFdpdGhPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvbW9kZWwudXRpbHMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRvb2xiYXJBY3Rpb25MaXN0PFIgPSBhbnk+IGV4dGVuZHMgQWN0aW9uTGlzdDxSLCBUb29sYmFyQWN0aW9uRGVmYXVsdDxSPj4ge31cclxuXHJcbmV4cG9ydCBjbGFzcyBUb29sYmFyQWN0aW9uczxSID0gYW55PiBleHRlbmRzIEFjdGlvbnM8VG9vbGJhckFjdGlvbkxpc3Q8Uj4+IHtcclxuICBwcm90ZWN0ZWQgX2N0b3I6IFR5cGU8VG9vbGJhckFjdGlvbkxpc3Q8Uj4+ID0gVG9vbGJhckFjdGlvbkxpc3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUb29sYmFyQWN0aW9uc0ZhY3Rvcnk8UiA9IGFueT4gZXh0ZW5kcyBBY3Rpb25zRmFjdG9yeTxUb29sYmFyQWN0aW9uczxSPj4ge1xyXG4gIHByb3RlY3RlZCBfY3RvcjogVHlwZTxUb29sYmFyQWN0aW9uczxSPj4gPSBUb29sYmFyQWN0aW9ucztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvb2xiYXJBY3Rpb248UiA9IGFueT4gZXh0ZW5kcyBBY3Rpb248Uj4ge1xyXG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcclxuICByZWFkb25seSBpY29uOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgYnRuQ2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRvb2xiYXJBY3Rpb25PcHRpb25zPFI+KSB7XHJcbiAgICBzdXBlcihvcHRpb25zLnBlcm1pc3Npb24gfHwgJycsIG9wdGlvbnMudmlzaWJsZSwgb3B0aW9ucy5hY3Rpb24pO1xyXG4gICAgdGhpcy50ZXh0ID0gb3B0aW9ucy50ZXh0O1xyXG4gICAgdGhpcy5pY29uID0gb3B0aW9ucy5pY29uIHx8ICcnO1xyXG4gICAgaWYgKG9wdGlvbnMuYnRuQ2xhc3MpIHtcclxuICAgICAgdGhpcy5idG5DbGFzcyA9IG9wdGlvbnMuYnRuQ2xhc3M7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlPFIgPSBhbnk+KG9wdGlvbnM6IFRvb2xiYXJBY3Rpb25PcHRpb25zPFI+KSB7XHJcbiAgICByZXR1cm4gbmV3IFRvb2xiYXJBY3Rpb248Uj4ob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlTWFueTxSID0gYW55PihhcnJheU9mT3B0aW9uczogVG9vbGJhckFjdGlvbk9wdGlvbnM8Uj5bXSkge1xyXG4gICAgcmV0dXJuIGFycmF5T2ZPcHRpb25zLm1hcChUb29sYmFyQWN0aW9uLmNyZWF0ZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudDxSID0gYW55PiBleHRlbmRzIEFjdGlvbjxSPiB7XHJcbiAgcmVhZG9ubHkgY29tcG9uZW50OiBUeXBlPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRvb2xiYXJDb21wb25lbnRPcHRpb25zPFI+KSB7XHJcbiAgICBzdXBlcihvcHRpb25zLnBlcm1pc3Npb24gfHwgJycsIG9wdGlvbnMudmlzaWJsZSwgb3B0aW9ucy5hY3Rpb24pO1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBvcHRpb25zLmNvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGU8UiA9IGFueT4ob3B0aW9uczogVG9vbGJhckNvbXBvbmVudE9wdGlvbnM8Uj4pIHtcclxuICAgIHJldHVybiBuZXcgVG9vbGJhckNvbXBvbmVudDxSPihvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVNYW55PFIgPSBhbnk+KGFycmF5T2ZPcHRpb25zOiBUb29sYmFyQ29tcG9uZW50T3B0aW9uczxSPltdKSB7XHJcbiAgICByZXR1cm4gYXJyYXlPZk9wdGlvbnMubWFwKFRvb2xiYXJDb21wb25lbnQuY3JlYXRlKTtcclxuICB9XHJcbn1cclxuXHJcbnR5cGUgT3B0aW9uYWxBY3Rpb25LZXlzID0gJ3Blcm1pc3Npb24nIHwgJ3Zpc2libGUnIHwgJ2ljb24nIHwgJ2J0bkNsYXNzJztcclxuZXhwb3J0IHR5cGUgVG9vbGJhckFjdGlvbk9wdGlvbnM8UiA9IGFueT4gPSBQYXJ0aWFsV2l0aE9wdGlvbnM8XHJcbiAgVG9vbGJhckFjdGlvbjxSPixcclxuICBPcHRpb25hbEFjdGlvbktleXNcclxuPiAmXHJcbiAgRmlsdGVyZWRXaXRoT3B0aW9uczxUb29sYmFyQWN0aW9uPFI+LCBPcHRpb25hbEFjdGlvbktleXM+O1xyXG5cclxudHlwZSBPcHRpb25hbENvbXBvbmVudEtleXMgPSAncGVybWlzc2lvbicgfCAndmlzaWJsZScgfCAnYWN0aW9uJztcclxuZXhwb3J0IHR5cGUgVG9vbGJhckNvbXBvbmVudE9wdGlvbnM8UiA9IGFueT4gPSBQYXJ0aWFsV2l0aE9wdGlvbnM8XHJcbiAgVG9vbGJhckNvbXBvbmVudDxSPixcclxuICBPcHRpb25hbENvbXBvbmVudEtleXNcclxuPiAmXHJcbiAgRmlsdGVyZWRXaXRoT3B0aW9uczxUb29sYmFyQ29tcG9uZW50PFI+LCBPcHRpb25hbENvbXBvbmVudEtleXM+O1xyXG5cclxuZXhwb3J0IHR5cGUgVG9vbGJhckFjdGlvbkRlZmF1bHQ8UiA9IGFueT4gPSBUb29sYmFyQWN0aW9uPFI+IHwgVG9vbGJhckNvbXBvbmVudDxSPjtcclxuXHJcbmV4cG9ydCB0eXBlIFRvb2xiYXJBY3Rpb25EZWZhdWx0czxSID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIEFycmF5PFRvb2xiYXJBY3Rpb25EZWZhdWx0PFI+Pj47XHJcbmV4cG9ydCB0eXBlIFRvb2xiYXJBY3Rpb25Db250cmlidXRvckNhbGxiYWNrPFIgPSBhbnk+ID0gQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFjazxcclxuICBUb29sYmFyQWN0aW9uTGlzdDxSPlxyXG4+O1xyXG5leHBvcnQgdHlwZSBUb29sYmFyQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFja3M8UiA9IGFueT4gPSBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrczxcclxuICBUb29sYmFyQWN0aW9uTGlzdDxSPlxyXG4+O1xyXG5leHBvcnQgdHlwZSBJbmZlcnJlZERhdGE8TD4gPSBBY3Rpb25EYXRhPEluZmVycmVkUmVjb3JkPEw+PjtcclxuZXhwb3J0IHR5cGUgSW5mZXJyZWRSZWNvcmQ8TD4gPSBMIGV4dGVuZHMgQWN0aW9uTGlzdDxpbmZlciBSPiA/IFIgOiBhbnk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhhc0NyZWF0ZUluamVjdG9yUGlwZTxSPiB7XHJcbiAgZ2V0RGF0YTogKCkgPT4gUmVhZG9ubHlBY3Rpb25EYXRhPFI+O1xyXG4gIGluamVjdG9yOiBJbmplY3RvcjtcclxuICBnZXRJbmplY3RlZDogSW5mZXJyZWREYXRhPFRvb2xiYXJBY3Rpb25MaXN0PFI+PlsnZ2V0SW5qZWN0ZWQnXTtcclxufVxyXG4iXX0=","import { Injectable } from '@angular/core';\nimport { EntityActionsFactory } from '../models/entity-actions';\nimport { EntityPropsFactory } from '../models/entity-props';\nimport { CreateFormPropsFactory, EditFormPropsFactory } from '../models/form-props';\nimport { ToolbarActionsFactory } from '../models/toolbar-actions';\nimport * as i0 from \"@angular/core\";\nexport class ExtensionsService {\n constructor() {\n this.entityActions = new EntityActionsFactory();\n this.toolbarActions = new ToolbarActionsFactory();\n this.entityProps = new EntityPropsFactory();\n this.createFormProps = new CreateFormPropsFactory();\n this.editFormProps = new EditFormPropsFactory();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensionsService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensionsService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBS2xFLE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFJVyxrQkFBYSxHQUFHLElBQUksb0JBQW9CLEVBQUssQ0FBQztRQUM5QyxtQkFBYyxHQUFHLElBQUkscUJBQXFCLEVBQU8sQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksa0JBQWtCLEVBQUssQ0FBQztRQUMxQyxvQkFBZSxHQUFHLElBQUksc0JBQXNCLEVBQUssQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksb0JBQW9CLEVBQUssQ0FBQztLQUN4RDs4R0FOWSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb25zRmFjdG9yeSB9IGZyb20gJy4uL21vZGVscy9lbnRpdHktYWN0aW9ucyc7XHJcbmltcG9ydCB7IEVudGl0eVByb3BzRmFjdG9yeSB9IGZyb20gJy4uL21vZGVscy9lbnRpdHktcHJvcHMnO1xyXG5pbXBvcnQgeyBDcmVhdGVGb3JtUHJvcHNGYWN0b3J5LCBFZGl0Rm9ybVByb3BzRmFjdG9yeSB9IGZyb20gJy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgVG9vbGJhckFjdGlvbnNGYWN0b3J5IH0gZnJvbSAnLi4vbW9kZWxzL3Rvb2xiYXItYWN0aW9ucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaW9uc1NlcnZpY2U8UiA9IGFueT4ge1xyXG4gIHJlYWRvbmx5IGVudGl0eUFjdGlvbnMgPSBuZXcgRW50aXR5QWN0aW9uc0ZhY3Rvcnk8Uj4oKTtcclxuICByZWFkb25seSB0b29sYmFyQWN0aW9ucyA9IG5ldyBUb29sYmFyQWN0aW9uc0ZhY3Rvcnk8UltdPigpO1xyXG4gIHJlYWRvbmx5IGVudGl0eVByb3BzID0gbmV3IEVudGl0eVByb3BzRmFjdG9yeTxSPigpO1xyXG4gIHJlYWRvbmx5IGNyZWF0ZUZvcm1Qcm9wcyA9IG5ldyBDcmVhdGVGb3JtUHJvcHNGYWN0b3J5PFI+KCk7XHJcbiAgcmVhZG9ubHkgZWRpdEZvcm1Qcm9wcyA9IG5ldyBFZGl0Rm9ybVByb3BzRmFjdG9yeTxSPigpO1xyXG59XHJcbiJdfQ==","/* eslint-disable @angular-eslint/no-input-rename */\nimport { Directive, Injector, Input, TemplateRef, ViewContainerRef, inject } from '@angular/core';\nimport { PropData } from '../models/props';\nimport * as i0 from \"@angular/core\";\nexport class PropDataDirective extends PropData {\n constructor() {\n const injector = inject(Injector);\n super();\n this.tempRef = inject(TemplateRef);\n this.vcRef = inject(ViewContainerRef);\n this.getInjected = injector.get.bind(injector);\n }\n ngOnChanges() {\n this.vcRef.clear();\n this.vcRef.createEmbeddedView(this.tempRef, {\n $implicit: this.data,\n index: 0,\n });\n }\n ngOnDestroy() {\n this.vcRef.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PropDataDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: PropDataDirective, isStandalone: true, selector: \"[abpPropData]\", inputs: { propList: [\"abpPropDataFromList\", \"propList\"], record: [\"abpPropDataWithRecord\", \"record\"], index: [\"abpPropDataAtIndex\", \"index\"] }, exportAs: [\"abpPropData\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PropDataDirective, decorators: [{\n type: Directive,\n args: [{\n exportAs: 'abpPropData',\n selector: '[abpPropData]',\n }]\n }], ctorParameters: () => [], propDecorators: { propList: [{\n type: Input,\n args: ['abpPropDataFromList']\n }], record: [{\n type: Input,\n args: ['abpPropDataWithRecord']\n }], index: [{\n type: Input,\n args: ['abpPropDataAtIndex']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC1kYXRhLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2RpcmVjdGl2ZXMvcHJvcC1kYXRhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUdMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxpQkFBaUIsQ0FBQzs7QUFNckQsTUFBTSxPQUFPLGlCQUNYLFNBQVEsUUFBeUI7SUFjakM7UUFDRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEMsS0FBSyxFQUFFLENBQUM7UUFkRixZQUFPLEdBQUcsTUFBTSxDQUFtQixXQUFXLENBQUMsQ0FBQztRQUNoRCxVQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFldkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNwQixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWxDVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLGVBQWU7aUJBQzFCO3dEQVErQixRQUFRO3NCQUFyQyxLQUFLO3VCQUFDLHFCQUFxQjtnQkFFSSxNQUFNO3NCQUFyQyxLQUFLO3VCQUFDLHVCQUF1QjtnQkFFRCxLQUFLO3NCQUFqQyxLQUFLO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWUgKi9cclxuaW1wb3J0IHsgXHJcbiAgRGlyZWN0aXZlLCBcclxuICBJbmplY3RvciwgXHJcbiAgSW5wdXQsIFxyXG4gIE9uQ2hhbmdlcywgXHJcbiAgT25EZXN0cm95LCBcclxuICBUZW1wbGF0ZVJlZiwgXHJcbiAgVmlld0NvbnRhaW5lclJlZiwgXHJcbiAgaW5qZWN0IFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSwgUHJvcExpc3QgfSBmcm9tICcuLi9tb2RlbHMvcHJvcHMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgZXhwb3J0QXM6ICdhYnBQcm9wRGF0YScsXHJcbiAgc2VsZWN0b3I6ICdbYWJwUHJvcERhdGFdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3BEYXRhRGlyZWN0aXZlPEwgZXh0ZW5kcyBQcm9wTGlzdDxhbnk+PlxyXG4gIGV4dGVuZHMgUHJvcERhdGE8SW5mZXJyZWREYXRhPEw+PlxyXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcclxue1xyXG4gIHByaXZhdGUgdGVtcFJlZiA9IGluamVjdDxUZW1wbGF0ZVJlZjxhbnk+PihUZW1wbGF0ZVJlZik7XHJcbiAgcHJpdmF0ZSB2Y1JlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuXHJcbiAgQElucHV0KCdhYnBQcm9wRGF0YUZyb21MaXN0JykgcHJvcExpc3Q/OiBMO1xyXG5cclxuICBASW5wdXQoJ2FicFByb3BEYXRhV2l0aFJlY29yZCcpIHJlY29yZCE6IEluZmVycmVkRGF0YTxMPlsncmVjb3JkJ107XHJcblxyXG4gIEBJbnB1dCgnYWJwUHJvcERhdGFBdEluZGV4JykgaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gIHJlYWRvbmx5IGdldEluamVjdGVkOiBJbmZlcnJlZERhdGE8TD5bJ2dldEluamVjdGVkJ107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy5nZXRJbmplY3RlZCA9IGluamVjdG9yLmdldC5iaW5kKGluamVjdG9yKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy52Y1JlZi5jbGVhcigpO1xyXG5cclxuICAgIHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcFJlZiwge1xyXG4gICAgICAkaW1wbGljaXQ6IHRoaXMuZGF0YSxcclxuICAgICAgaW5kZXg6IDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy52Y1JlZi5jbGVhcigpO1xyXG4gIH1cclxufVxyXG5cclxudHlwZSBJbmZlcnJlZERhdGE8TD4gPSBQcm9wRGF0YTxJbmZlcnJlZFJlY29yZDxMPj47XHJcbnR5cGUgSW5mZXJyZWRSZWNvcmQ8TD4gPSBMIGV4dGVuZHMgUHJvcExpc3Q8aW5mZXIgUj4gPyBSIDogbmV2ZXI7XHJcbiJdfQ==","import { TrackByService } from '@abp/ng.core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, Optional, QueryList, SkipSelf, ViewChildren, } from '@angular/core';\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\nimport { GroupedFormPropList } from '../../models/form-props';\nimport { ExtensionsService } from '../../services/extensions.service';\nimport { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\nimport { selfFactory } from '../../utils/factory.util';\nimport { ExtensibleFormPropComponent } from './extensible-form-prop.component';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { PropDataDirective } from '../../directives/prop-data.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport class ExtensibleFormComponent {\n constructor() {\n this.cdRef = inject(ChangeDetectorRef);\n this.track = inject(TrackByService);\n this.container = inject(ControlContainer);\n this.extensions = inject(ExtensionsService);\n this.identifier = inject(EXTENSIONS_IDENTIFIER);\n this.extraPropertiesKey = EXTRA_PROPERTIES_KEY;\n }\n set selectedRecord(record) {\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\n const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\n this.groupedPropList = this.createGroupedList(propList);\n this.record = record;\n }\n get form() {\n return (this.container ? this.container.control : { controls: {} });\n }\n get extraProperties() {\n return (this.form.controls.extraProperties || { controls: {} });\n }\n createGroupedList(propList) {\n const groupedFormPropList = new GroupedFormPropList();\n propList.forEach(item => {\n groupedFormPropList.addItem(item.value);\n });\n return groupedFormPropList;\n }\n //TODO: Reactor this method\n isAnyGroupMemberVisible(index, data) {\n const { items } = this.groupedPropList;\n const formPropList = items[index].formPropList.toArray();\n return formPropList.some(prop => prop.visible(data));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: ExtensibleFormComponent, isStandalone: true, selector: \"abp-extensible-form\", inputs: { selectedRecord: \"selectedRecord\" }, viewQueries: [{ propertyName: \"formProps\", predicate: ExtensibleFormPropComponent, descendants: true }], exportAs: [\"abpExtensibleForm\"], ngImport: i0, template: \"@if (form) {\\r\\n @for (groupedProp of groupedPropList.items; track i; let i = $index; let first = $first) {\\r\\n <ng-container *abpPropData=\\\"let data; fromList: groupedProp.formPropList; withRecord: record\\\">\\r\\n @if (isAnyGroupMemberVisible(i, data) && groupedProp.group?.className) {\\r\\n <div\\r\\n [ngClass]=\\\"groupedProp.group?.className\\\"\\r\\n [attr.data-name]=\\\"groupedProp.group?.name || groupedProp.group?.className\\\"\\r\\n >\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"propListTemplate\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\\\"\\r\\n >\\r\\n </ng-container>\\r\\n </div>\\r\\n } @else {\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"propListTemplate\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n }\\r\\n </ng-container>\\r\\n }\\r\\n}\\r\\n\\r\\n<ng-template let-groupedProp=\\\"groupedProp\\\" let-data=\\\"data\\\" let-isFirstGroup=\\\"isFirstGroup\\\" #propListTemplate>\\r\\n @for (prop of groupedProp.formPropList; let index = $index; let first = $first; track prop.name) {\\r\\n @if (prop.visible(data)) {\\r\\n @if (extraProperties.controls[prop.name]) {\\r\\n <ng-container [formGroupName]=\\\"extraPropertiesKey\\\">\\r\\n <abp-extensible-form-prop [prop]=\\\"prop\\\" [data]=\\\"data\\\" [class]=\\\"prop.className\\\" />\\r\\n </ng-container>\\r\\n } @else {\\r\\n @if (form.get(prop.name)) {\\r\\n <abp-extensible-form-prop\\r\\n [class]=\\\"prop.className\\\"\\r\\n [prop]=\\\"prop\\\"\\r\\n [data]=\\\"data\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [isFirstGroup]=\\\"isFirstGroup\\\"\\r\\n />\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n</ng-template>\\r\\n\", dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: PropDataDirective, selector: \"[abpPropData]\", inputs: [\"abpPropDataFromList\", \"abpPropDataWithRecord\", \"abpPropDataAtIndex\"], exportAs: [\"abpPropData\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i1.FormGroupName, selector: \"[formGroupName]\", inputs: [\"formGroupName\"] }, { kind: \"component\", type: ExtensibleFormPropComponent, selector: \"abp-extensible-form-prop\", inputs: [\"data\", \"prop\", \"first\", \"isFirstGroup\"] }], viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleFormComponent, decorators: [{\n type: Component,\n args: [{ exportAs: 'abpExtensibleForm', selector: 'abp-extensible-form', imports: [NgClass, NgTemplateOutlet, PropDataDirective, ReactiveFormsModule, ExtensibleFormPropComponent], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [\n {\n provide: ControlContainer,\n useFactory: selfFactory,\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\n },\n ], template: \"@if (form) {\\r\\n @for (groupedProp of groupedPropList.items; track i; let i = $index; let first = $first) {\\r\\n <ng-container *abpPropData=\\\"let data; fromList: groupedProp.formPropList; withRecord: record\\\">\\r\\n @if (isAnyGroupMemberVisible(i, data) && groupedProp.group?.className) {\\r\\n <div\\r\\n [ngClass]=\\\"groupedProp.group?.className\\\"\\r\\n [attr.data-name]=\\\"groupedProp.group?.name || groupedProp.group?.className\\\"\\r\\n >\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"propListTemplate\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\\\"\\r\\n >\\r\\n </ng-container>\\r\\n </div>\\r\\n } @else {\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"propListTemplate\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n }\\r\\n </ng-container>\\r\\n }\\r\\n}\\r\\n\\r\\n<ng-template let-groupedProp=\\\"groupedProp\\\" let-data=\\\"data\\\" let-isFirstGroup=\\\"isFirstGroup\\\" #propListTemplate>\\r\\n @for (prop of groupedProp.formPropList; let index = $index; let first = $first; track prop.name) {\\r\\n @if (prop.visible(data)) {\\r\\n @if (extraProperties.controls[prop.name]) {\\r\\n <ng-container [formGroupName]=\\\"extraPropertiesKey\\\">\\r\\n <abp-extensible-form-prop [prop]=\\\"prop\\\" [data]=\\\"data\\\" [class]=\\\"prop.className\\\" />\\r\\n </ng-container>\\r\\n } @else {\\r\\n @if (form.get(prop.name)) {\\r\\n <abp-extensible-form-prop\\r\\n [class]=\\\"prop.className\\\"\\r\\n [prop]=\\\"prop\\\"\\r\\n [data]=\\\"data\\\"\\r\\n [first]=\\\"first\\\"\\r\\n [isFirstGroup]=\\\"isFirstGroup\\\"\\r\\n />\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n</ng-template>\\r\\n\" }]\n }], propDecorators: { formProps: [{\n type: ViewChildren,\n args: [ExtensibleFormPropComponent]\n }], selectedRecord: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS1mb3JtL2V4dGVuc2libGUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtZm9ybS9leHRlbnNpYmxlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBMEIsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVE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QkFBaUIsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsQ0FBQyxtQkFDeEYsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEM7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsVUFBVSxFQUFFLFdBQVc7NEJBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7eUJBQzNEO3FCQUNGOzhCQVVELFNBQVM7c0JBRFIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBSXJDLGNBQWM7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2tpcFNlbGYsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFWFRSQV9QUk9QRVJUSUVTX0tFWSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9leHRyYS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHsgRm9ybVByb3AsIEZvcm1Qcm9wTGlzdCwgR3JvdXBlZEZvcm1Qcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHRlbnNpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFWFRFTlNJT05TX0lERU5USUZJRVIgfSBmcm9tICcuLi8uLi90b2tlbnMvZXh0ZW5zaW9ucy50b2tlbic7XHJcbmltcG9ydCB7IHNlbGZGYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZmFjdG9yeS51dGlsJztcclxuaW1wb3J0IHsgRXh0ZW5zaWJsZUZvcm1Qcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9leHRlbnNpYmxlLWZvcm0tcHJvcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUHJvcERhdGFEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Byb3AtZGF0YS5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgZXhwb3J0QXM6ICdhYnBFeHRlbnNpYmxlRm9ybScsXHJcbiAgc2VsZWN0b3I6ICdhYnAtZXh0ZW5zaWJsZS1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZW5zaWJsZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCwgUHJvcERhdGFEaXJlY3RpdmUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgdmlld1Byb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgICB1c2VGYWN0b3J5OiBzZWxmRmFjdG9yeSxcclxuICAgICAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIENvbnRyb2xDb250YWluZXJdXSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVuc2libGVGb3JtQ29tcG9uZW50PFIgPSBhbnk+IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHB1YmxpYyByZWFkb25seSB0cmFjayA9IGluamVjdChUcmFja0J5U2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXIgPSBpbmplY3QoQ29udHJvbENvbnRhaW5lcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBleHRlbnNpb25zID0gaW5qZWN0KEV4dGVuc2lvbnNTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlkZW50aWZpZXIgPSBpbmplY3QoRVhURU5TSU9OU19JREVOVElGSUVSKTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihFeHRlbnNpYmxlRm9ybVByb3BDb21wb25lbnQpXHJcbiAgZm9ybVByb3BzITogUXVlcnlMaXN0PEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudD47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNlbGVjdGVkUmVjb3JkKHJlY29yZDogUikge1xyXG4gICAgY29uc3QgdHlwZSA9ICFyZWNvcmQgfHwgSlNPTi5zdHJpbmdpZnkocmVjb3JkKSA9PT0gJ3t9JyA/ICdjcmVhdGUnIDogJ2VkaXQnO1xyXG4gICAgY29uc3QgcHJvcExpc3QgPSB0aGlzLmV4dGVuc2lvbnNbYCR7dHlwZX1Gb3JtUHJvcHNgXS5nZXQodGhpcy5pZGVudGlmaWVyKS5wcm9wcztcclxuICAgIHRoaXMuZ3JvdXBlZFByb3BMaXN0ID0gdGhpcy5jcmVhdGVHcm91cGVkTGlzdChwcm9wTGlzdCk7XHJcbiAgICB0aGlzLnJlY29yZCA9IHJlY29yZDtcclxuICB9XHJcblxyXG4gIGV4dHJhUHJvcGVydGllc0tleSA9IEVYVFJBX1BST1BFUlRJRVNfS0VZO1xyXG4gIGdyb3VwZWRQcm9wTGlzdCE6IEdyb3VwZWRGb3JtUHJvcExpc3Q7XHJcbiAgZ3JvdXBlZFByb3BMaXN0T2ZBcnJheTogRm9ybVByb3A8YW55PltdW107XHJcbiAgcmVjb3JkITogUjtcclxuXHJcbiAgZ2V0IGZvcm0oKTogVW50eXBlZEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gKHRoaXMuY29udGFpbmVyID8gdGhpcy5jb250YWluZXIuY29udHJvbCA6IHsgY29udHJvbHM6IHt9IH0pIGFzIFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBnZXQgZXh0cmFQcm9wZXJ0aWVzKCk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMuZXh0cmFQcm9wZXJ0aWVzIHx8IHsgY29udHJvbHM6IHt9IH0pIGFzIFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVHcm91cGVkTGlzdChwcm9wTGlzdDogRm9ybVByb3BMaXN0PFI+KSB7XHJcbiAgICBjb25zdCBncm91cGVkRm9ybVByb3BMaXN0ID0gbmV3IEdyb3VwZWRGb3JtUHJvcExpc3QoKTtcclxuICAgIHByb3BMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGdyb3VwZWRGb3JtUHJvcExpc3QuYWRkSXRlbShpdGVtLnZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBncm91cGVkRm9ybVByb3BMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy9UT0RPOiBSZWFjdG9yIHRoaXMgbWV0aG9kXHJcbiAgaXNBbnlHcm91cE1lbWJlclZpc2libGUoaW5kZXg6IG51bWJlciwgZGF0YSkge1xyXG4gICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy5ncm91cGVkUHJvcExpc3Q7XHJcbiAgICBjb25zdCBmb3JtUHJvcExpc3QgPSBpdGVtc1tpbmRleF0uZm9ybVByb3BMaXN0LnRvQXJyYXkoKTtcclxuICAgIHJldHVybiBmb3JtUHJvcExpc3Quc29tZShwcm9wID0+IHByb3AudmlzaWJsZShkYXRhKSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoZm9ybSkge1xyXG4gIEBmb3IgKGdyb3VwZWRQcm9wIG9mIGdyb3VwZWRQcm9wTGlzdC5pdGVtczsgdHJhY2sgaTsgbGV0IGkgPSAkaW5kZXg7IGxldCBmaXJzdCA9ICRmaXJzdCkge1xyXG4gICAgPG5nLWNvbnRhaW5lciAqYWJwUHJvcERhdGE9XCJsZXQgZGF0YTsgZnJvbUxpc3Q6IGdyb3VwZWRQcm9wLmZvcm1Qcm9wTGlzdDsgd2l0aFJlY29yZDogcmVjb3JkXCI+XHJcbiAgICAgIEBpZiAoaXNBbnlHcm91cE1lbWJlclZpc2libGUoaSwgZGF0YSkgJiYgZ3JvdXBlZFByb3AuZ3JvdXA/LmNsYXNzTmFtZSkge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwZWRQcm9wLmdyb3VwPy5jbGFzc05hbWVcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1uYW1lXT1cImdyb3VwZWRQcm9wLmdyb3VwPy5uYW1lIHx8IGdyb3VwZWRQcm9wLmdyb3VwPy5jbGFzc05hbWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvcExpc3RUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdyb3VwZWRQcm9wOiBncm91cGVkUHJvcCwgZGF0YTogZGF0YSwgaXNGaXJzdEdyb3VwOiBmaXJzdH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb3BMaXN0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ3JvdXBlZFByb3A6IGdyb3VwZWRQcm9wLCBkYXRhOiBkYXRhLCBpc0ZpcnN0R3JvdXA6IGZpcnN0IH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgbGV0LWdyb3VwZWRQcm9wPVwiZ3JvdXBlZFByb3BcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQtaXNGaXJzdEdyb3VwPVwiaXNGaXJzdEdyb3VwXCIgI3Byb3BMaXN0VGVtcGxhdGU+XHJcbiAgQGZvciAocHJvcCBvZiBncm91cGVkUHJvcC5mb3JtUHJvcExpc3Q7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0OyB0cmFjayBwcm9wLm5hbWUpIHtcclxuICAgIEBpZiAocHJvcC52aXNpYmxlKGRhdGEpKSB7XHJcbiAgICAgIEBpZiAoZXh0cmFQcm9wZXJ0aWVzLmNvbnRyb2xzW3Byb3AubmFtZV0pIHtcclxuICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImV4dHJhUHJvcGVydGllc0tleVwiPlxyXG4gICAgICAgICAgPGFicC1leHRlbnNpYmxlLWZvcm0tcHJvcCBbcHJvcF09XCJwcm9wXCIgW2RhdGFdPVwiZGF0YVwiIFtjbGFzc109XCJwcm9wLmNsYXNzTmFtZVwiIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIEBpZiAoZm9ybS5nZXQocHJvcC5uYW1lKSkge1xyXG4gICAgICAgICAgPGFicC1leHRlbnNpYmxlLWZvcm0tcHJvcFxyXG4gICAgICAgICAgICBbY2xhc3NdPVwicHJvcC5jbGFzc05hbWVcIlxyXG4gICAgICAgICAgICBbcHJvcF09XCJwcm9wXCJcclxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgIFtpc0ZpcnN0R3JvdXBdPVwiaXNGaXJzdEdyb3VwXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=","import { Directive, Injector, Input, inject } from '@angular/core';\nimport { ActionData } from '../../models/actions';\nimport { ExtensionsService } from '../../services/extensions.service';\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\nimport * as i0 from \"@angular/core\";\n// Fix for https://github.com/angular/angular/issues/23904\n// @dynamic\nexport class AbstractActionsComponent extends ActionData {\n constructor() {\n const injector = inject(Injector);\n super();\n this.getInjected = injector.get.bind(injector);\n const extensions = injector.get(ExtensionsService);\n const name = injector.get(EXTENSIONS_IDENTIFIER);\n const type = injector.get(EXTENSIONS_ACTION_TYPE);\n this.actionList = extensions[type].get(name).actions;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.7\", type: AbstractActionsComponent, isStandalone: true, inputs: { record: \"record\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AbstractActionsComponent, decorators: [{\n type: Directive\n }], ctorParameters: () => [], propDecorators: { record: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2Fic3RyYWN0LWFjdGlvbnMvYWJzdHJhY3QtYWN0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUE4QixNQUFNLHNCQUFzQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUc5RiwwREFBMEQ7QUFDMUQsV0FBVztBQUVYLE1BQU0sT0FBZ0Isd0JBRXBCLFNBQVEsVUFBNkI7SUFPckM7UUFDRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUF1QixDQUFDO0lBQ3ZFLENBQUM7OEdBbEJtQix3QkFBd0I7a0dBQXhCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEN0MsU0FBUzt3REFRQyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdG9yLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkRhdGEsIEFjdGlvbkxpc3QsIEluZmVycmVkQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbnMnO1xyXG5pbXBvcnQgeyBFeHRlbnNpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4dGVuc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IEVYVEVOU0lPTlNfQUNUSU9OX1RZUEUsIEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL3Rva2Vucy9leHRlbnNpb25zLnRva2VuJztcclxuaW1wb3J0IHsgSW5mZXJyZWREYXRhLCBJbmZlcnJlZFJlY29yZCB9IGZyb20gJy4uLy4uL21vZGVscy90b29sYmFyLWFjdGlvbnMnO1xyXG5cclxuLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yMzkwNFxyXG4vLyBAZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0QWN0aW9uc0NvbXBvbmVudDxcclxuICBMIGV4dGVuZHMgQWN0aW9uTGlzdDxhbnksIEluZmVycmVkQWN0aW9uPEw+PixcclxuPiBleHRlbmRzIEFjdGlvbkRhdGE8SW5mZXJyZWRSZWNvcmQ8TD4+IHtcclxuICByZWFkb25seSBhY3Rpb25MaXN0OiBMO1xyXG5cclxuICByZWFkb25seSBnZXRJbmplY3RlZDogSW5mZXJyZWREYXRhPEw+WydnZXRJbmplY3RlZCddO1xyXG5cclxuICBASW5wdXQoKSByZWNvcmQhOiBJbmZlcnJlZERhdGE8TD5bJ3JlY29yZCddO1xyXG5cclxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2V0SW5qZWN0ZWQgPSBpbmplY3Rvci5nZXQuYmluZChpbmplY3Rvcik7XHJcbiAgICBjb25zdCBleHRlbnNpb25zID0gaW5qZWN0b3IuZ2V0KEV4dGVuc2lvbnNTZXJ2aWNlKTtcclxuICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRVhURU5TSU9OU19JREVOVElGSUVSKTtcclxuICAgIGNvbnN0IHR5cGUgPSBpbmplY3Rvci5nZXQoRVhURU5TSU9OU19BQ1RJT05fVFlQRSk7XHJcbiAgICB0aGlzLmFjdGlvbkxpc3QgPSBleHRlbnNpb25zW3R5cGVdLmdldChuYW1lKS5hY3Rpb25zIGFzIHVua25vd24gYXMgTDtcclxuICB9XHJcbn1cclxuIl19","import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\nimport { NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\nimport { LocalizationPipe, PermissionDirective } from '@abp/ng.core';\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-bootstrap/ng-bootstrap\";\nexport class GridActionsComponent extends AbstractActionsComponent {\n constructor() {\n super();\n this.icon = 'fa fa-cog';\n this.text = '';\n this.trackByFn = (_, item) => item.text;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: GridActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: GridActionsComponent, isStandalone: true, selector: \"abp-grid-actions\", inputs: { icon: \"icon\", index: \"index\", text: \"text\" }, providers: [\n {\n provide: EXTENSIONS_ACTION_TYPE,\n useValue: 'entityActions',\n },\n ], exportAs: [\"abpGridActions\"], usesInheritance: true, ngImport: i0, template: \"@if (actionList.length > 1) {\\r\\n <div ngbDropdown container=\\\"body\\\" class=\\\"d-inline-block\\\">\\r\\n <button\\r\\n class=\\\"btn btn-primary btn-sm dropdown-toggle\\\"\\r\\n data-toggle=\\\"dropdown\\\"\\r\\n aria-haspopup=\\\"true\\\"\\r\\n ngbDropdownToggle\\r\\n >\\r\\n <i [ngClass]=\\\"icon\\\" [class.me-1]=\\\"icon\\\"></i>{{ text | abpLocalization }}\\r\\n </button>\\r\\n <div ngbDropdownMenu>\\r\\n @for (action of actionList; track action.text) {\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"dropDownBtnItemTmp\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ $implicit: action }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n }\\r\\n </div>\\r\\n </div>\\r\\n}\\r\\n\\r\\n@if (actionList.length === 1) {\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"btnTmp\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ $implicit: actionList.get(0).value }\\\"\\r\\n ></ng-container>\\r\\n}\\r\\n\\r\\n<ng-template #dropDownBtnItemTmp let-action>\\r\\n @if (action.visible(data)) {\\r\\n <button\\r\\n ngbDropdownItem\\r\\n *abpPermission=\\\"action.permission; runChangeDetection: false\\\"\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"buttonContentTmp; context: { $implicit: action }\\\"\\r\\n ></ng-container>\\r\\n </button>\\r\\n }\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #buttonContentTmp let-action>\\r\\n <i [ngClass]=\\\"action.icon\\\" [class.me-1]=\\\"action.icon && !action.showOnlyIcon\\\"></i>\\r\\n @if (!action.showOnlyIcon) {\\r\\n @if (action.icon) {\\r\\n <span>{{ action.text | abpLocalization }}</span>\\r\\n } @else {\\r\\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\\r\\n }\\r\\n }\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #btnTmp let-action>\\r\\n @if (action.visible(data)) {\\r\\n @if (action.tooltip) {\\r\\n <button\\r\\n *abpPermission=\\\"action.permission; runChangeDetection: false\\\"\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n [class]=\\\"action.btnClass\\\"\\r\\n [style]=\\\"action.btnStyle\\\"\\r\\n [ngbTooltip]=\\\"action.tooltip.text | abpLocalization\\\"\\r\\n [placement]=\\\"action.tooltip.placement || 'auto'\\\"\\r\\n triggers=\\\"hover\\\"\\r\\n container=\\\"body\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"buttonContentTmp; context: { $implicit: action }\\\"\\r\\n ></ng-container>\\r\\n </button>\\r\\n } @else {\\r\\n <button\\r\\n *abpPermission=\\\"action.permission; runChangeDetection: false\\\"\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n [class]=\\\"action.btnClass\\\"\\r\\n [style]=\\\"action.btnStyle\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"buttonContentTmp; context: { $implicit: action }\\\"\\r\\n ></ng-container>\\r\\n </button>\\r\\n }\\r\\n }\\r\\n</ng-template>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: NgbDropdownModule }, { kind: \"directive\", type: i1.NgbDropdown, selector: \"[ngbDropdown]\", inputs: [\"autoClose\", \"dropdownClass\", \"open\", \"placement\", \"popperOptions\", \"container\", \"display\"], outputs: [\"openChange\"], exportAs: [\"ngbDropdown\"] }, { kind: \"directive\", type: i1.NgbDropdownToggle, selector: \"[ngbDropdownToggle]\" }, { kind: \"directive\", type: i1.NgbDropdownMenu, selector: \"[ngbDropdownMenu]\" }, { kind: \"directive\", type: i1.NgbDropdownItem, selector: \"[ngbDropdownItem]\", inputs: [\"tabindex\", \"disabled\"] }, { kind: \"directive\", type: i1.NgbDropdownButtonItem, selector: \"button[ngbDropdownItem]\" }, { kind: \"directive\", type: EllipsisDirective, selector: \"[abpEllipsis]\", inputs: [\"abpEllipsis\", \"title\", \"abpEllipsisEnabled\"] }, { kind: \"directive\", type: PermissionDirective, selector: \"[abpPermission]\", inputs: [\"abpPermission\", \"abpPermissionRunChangeDetection\"] }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: LocalizationPipe, name: \"abpLocalization\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: NgbTooltipModule }, { kind: \"directive\", type: i1.NgbTooltip, selector: \"[ngbTooltip]\", inputs: [\"animation\", \"autoClose\", \"placement\", \"popperOptions\", \"triggers\", \"positionTarget\", \"container\", \"disableTooltip\", \"tooltipClass\", \"tooltipContext\", \"openDelay\", \"closeDelay\", \"ngbTooltip\"], outputs: [\"shown\", \"hidden\"], exportAs: [\"ngbTooltip\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: GridActionsComponent, decorators: [{\n type: Component,\n args: [{ exportAs: 'abpGridActions', imports: [\n NgbDropdownModule,\n EllipsisDirective,\n PermissionDirective,\n NgClass,\n LocalizationPipe,\n NgTemplateOutlet,\n NgbTooltipModule,\n ], selector: 'abp-grid-actions', providers: [\n {\n provide: EXTENSIONS_ACTION_TYPE,\n useValue: 'entityActions',\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@if (actionList.length > 1) {\\r\\n <div ngbDropdown container=\\\"body\\\" class=\\\"d-inline-block\\\">\\r\\n <button\\r\\n class=\\\"btn btn-primary btn-sm dropdown-toggle\\\"\\r\\n data-toggle=\\\"dropdown\\\"\\r\\n aria-haspopup=\\\"true\\\"\\r\\n ngbDropdownToggle\\r\\n >\\r\\n <i [ngClass]=\\\"icon\\\" [class.me-1]=\\\"icon\\\"></i>{{ text | abpLocalization }}\\r\\n </button>\\r\\n <div ngbDropdownMenu>\\r\\n @for (action of actionList; track action.text) {\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"dropDownBtnItemTmp\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ $implicit: action }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n }\\r\\n </div>\\r\\n </div>\\r\\n}\\r\\n\\r\\n@if (actionList.length === 1) {\\r\\n <ng-container\\r\\n [ngTemplateOutlet]=\\\"btnTmp\\\"\\r\\n [ngTemplateOutletContext]=\\\"{ $implicit: actionList.get(0).value }\\\"\\r\\n ></ng-container>\\r\\n}\\r\\n\\r\\n<ng-template #dropDownBtnItemTmp let-action>\\r\\n @if (action.visible(data)) {\\r\\n <button\\r\\n ngbDropdownItem\\r\\n *abpPermission=\\\"action.permission; runChangeDetection: false\\\"\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"buttonContentTmp; context: { $implicit: action }\\\"\\r\\n ></ng-container>\\r\\n </button>\\r\\n }\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #buttonContentTmp let-action>\\r\\n <i [ngClass]=\\\"action.icon\\\" [class.me-1]=\\\"action.icon && !action.showOnlyIcon\\\"></i>\\r\\n @if (!action.showOnlyIcon) {\\r\\n @if (action.icon) {\\r\\n <span>{{ action.text | abpLocalization }}</span>\\r\\n } @else {\\r\\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\\r\\n }\\r\\n }\\r\\n</ng-template>\\r\\n\\r\\n<ng-template #btnTmp let-action>\\r\\n @if (action.visible(data)) {\\r\\n @if (action.tooltip) {\\r\\n <button\\r\\n *abpPermission=\\\"action.permission; runChangeDetection: false\\\"\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n [class]=\\\"action.btnClass\\\"\\r\\n [style]=\\\"action.btnStyle\\\"\\r\\n [ngbTooltip]=\\\"action.tooltip.text | abpLocalization\\\"\\r\\n [placement]=\\\"action.tooltip.placement || 'auto'\\\"\\r\\n triggers=\\\"hover\\\"\\r\\n container=\\\"body\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"buttonContentTmp; context: { $implicit: action }\\\"\\r\\n ></ng-container>\\r\\n </button>\\r\\n } @else {\\r\\n <button\\r\\n *abpPermission=\\\"action.permission; runChangeDetection: false\\\"\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n [class]=\\\"action.btnClass\\\"\\r\\n [style]=\\\"action.btnStyle\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"buttonContentTmp; context: { $implicit: action }\\\"\\r\\n ></ng-container>\\r\\n </button>\\r\\n }\\r\\n }\\r\\n</ng-template>\\r\\n\" }]\n }], ctorParameters: () => [], propDecorators: { icon: [{\n type: Input\n }], index: [{\n type: Input\n }], text: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZ3JpZC1hY3Rpb25zL2dyaWQtYWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQtYWN0aW9ucy9ncmlkLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQXVCNUQsTUFBTSxPQUFPLG9CQUE4QixTQUFRLHdCQUE2QztJQVM5RjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBVEQsU0FBSSxHQUFHLFdBQVcsQ0FBQztRQUluQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVYsY0FBUyxHQUFxQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFJOUUsQ0FBQzs4R0FYVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1SEFScEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsc0JBQXNCO2dCQUMvQixRQUFRLEVBQUUsZUFBZTthQUMxQjtTQUNGLCtFQ2hDSCw0ekZBd0ZBLDJDRHZFSSxpQkFBaUIsbW5CQUNqQixpQkFBaUIsa0hBQ2pCLG1CQUFtQiwwSEFDbkIsT0FBTywrRUFDUCxnQkFBZ0Isd0RBQ2hCLGdCQUFnQixtSkFDaEIsZ0JBQWdCOzsyRkFZUCxvQkFBb0I7a0JBckJoQyxTQUFTOytCQUNFLGdCQUFnQixXQUNqQjt3QkFDUCxpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7cUJBQ2pCLFlBQ1Msa0JBQWtCLGFBRWpCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFFBQVEsRUFBRSxlQUFlO3lCQUMxQjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTt3REFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUVZLEtBQUs7c0JBQXRCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFxyXG4gIENvbXBvbmVudCwgXHJcbiAgSW5wdXQsIFxyXG4gIFRyYWNrQnlGdW5jdGlvbiwgXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbiwgRW50aXR5QWN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktYWN0aW9ucyc7XHJcbmltcG9ydCB7IEVYVEVOU0lPTlNfQUNUSU9OX1RZUEUgfSBmcm9tICcuLi8uLi90b2tlbnMvZXh0ZW5zaW9ucy50b2tlbic7XHJcbmltcG9ydCB7IEFic3RyYWN0QWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0LWFjdGlvbnMvYWJzdHJhY3QtYWN0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ2JEcm9wZG93bk1vZHVsZSwgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uUGlwZSwgUGVybWlzc2lvbkRpcmVjdGl2ZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEVsbGlwc2lzRGlyZWN0aXZlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGV4cG9ydEFzOiAnYWJwR3JpZEFjdGlvbnMnLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gICAgRWxsaXBzaXNEaXJlY3RpdmUsXHJcbiAgICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIExvY2FsaXphdGlvblBpcGUsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgTmdiVG9vbHRpcE1vZHVsZSxcclxuICBdLFxyXG4gIHNlbGVjdG9yOiAnYWJwLWdyaWQtYWN0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfQUNUSU9OX1RZUEUsXHJcbiAgICAgIHVzZVZhbHVlOiAnZW50aXR5QWN0aW9ucycsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkQWN0aW9uc0NvbXBvbmVudDxSID0gYW55PiBleHRlbmRzIEFic3RyYWN0QWN0aW9uc0NvbXBvbmVudDxFbnRpdHlBY3Rpb25MaXN0PFI+PiB7XHJcbiAgQElucHV0KCkgaWNvbiA9ICdmYSBmYS1jb2cnO1xyXG5cclxuICBASW5wdXQoKSByZWFkb25seSBpbmRleD86IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgdGV4dCA9ICcnO1xyXG5cclxuICByZWFkb25seSB0cmFja0J5Rm46IFRyYWNrQnlGdW5jdGlvbjxFbnRpdHlBY3Rpb248Uj4+ID0gKF8sIGl0ZW0pID0+IGl0ZW0udGV4dDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGFjdGlvbkxpc3QubGVuZ3RoID4gMSkge1xyXG4gIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlXHJcbiAgICA+XHJcbiAgICAgIDxpIFtuZ0NsYXNzXT1cImljb25cIiBbY2xhc3MubWUtMV09XCJpY29uXCI+PC9pPnt7IHRleHQgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25MaXN0OyB0cmFjayBhY3Rpb24udGV4dCkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3BEb3duQnRuSXRlbVRtcFwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGFjdGlvbiB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG59XHJcblxyXG5AaWYgKGFjdGlvbkxpc3QubGVuZ3RoID09PSAxKSB7XHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnRuVG1wXCJcclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogYWN0aW9uTGlzdC5nZXQoMCkudmFsdWUgfVwiXHJcbiAgPjwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgI2Ryb3BEb3duQnRuSXRlbVRtcCBsZXQtYWN0aW9uPlxyXG4gIEBpZiAoYWN0aW9uLnZpc2libGUoZGF0YSkpIHtcclxuICAgIDxidXR0b25cclxuICAgICAgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICphYnBQZXJtaXNzaW9uPVwiYWN0aW9uLnBlcm1pc3Npb247IHJ1bkNoYW5nZURldGVjdGlvbjogZmFsc2VcIlxyXG4gICAgICAoY2xpY2spPVwiYWN0aW9uLmFjdGlvbihkYXRhKVwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25Db250ZW50VG1wOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYWN0aW9uIH1cIlxyXG4gICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2J1dHRvbkNvbnRlbnRUbXAgbGV0LWFjdGlvbj5cclxuICA8aSBbbmdDbGFzc109XCJhY3Rpb24uaWNvblwiIFtjbGFzcy5tZS0xXT1cImFjdGlvbi5pY29uICYmICFhY3Rpb24uc2hvd09ubHlJY29uXCI+PC9pPlxyXG4gIEBpZiAoIWFjdGlvbi5zaG93T25seUljb24pIHtcclxuICAgIEBpZiAoYWN0aW9uLmljb24pIHtcclxuICAgICAgPHNwYW4+e3sgYWN0aW9uLnRleHQgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPGRpdiBhYnBFbGxpcHNpcz57eyBhY3Rpb24udGV4dCB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnRuVG1wIGxldC1hY3Rpb24+XHJcbiAgQGlmIChhY3Rpb24udmlzaWJsZShkYXRhKSkge1xyXG4gICAgQGlmIChhY3Rpb24udG9vbHRpcCkge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKmFicFBlcm1pc3Npb249XCJhY3Rpb24ucGVybWlzc2lvbjsgcnVuQ2hhbmdlRGV0ZWN0aW9uOiBmYWxzZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5hY3Rpb24oZGF0YSlcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtjbGFzc109XCJhY3Rpb24uYnRuQ2xhc3NcIlxyXG4gICAgICAgIFtzdHlsZV09XCJhY3Rpb24uYnRuU3R5bGVcIlxyXG4gICAgICAgIFtuZ2JUb29sdGlwXT1cImFjdGlvbi50b29sdGlwLnRleHQgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgIFtwbGFjZW1lbnRdPVwiYWN0aW9uLnRvb2x0aXAucGxhY2VtZW50IHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgdHJpZ2dlcnM9XCJob3ZlclwiXHJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbkNvbnRlbnRUbXA7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBhY3Rpb24gfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKmFicFBlcm1pc3Npb249XCJhY3Rpb24ucGVybWlzc2lvbjsgcnVuQ2hhbmdlRGV0ZWN0aW9uOiBmYWxzZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5hY3Rpb24oZGF0YSlcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtjbGFzc109XCJhY3Rpb24uYnRuQ2xhc3NcIlxyXG4gICAgICAgIFtzdHlsZV09XCJhY3Rpb24uYnRuU3R5bGVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25Db250ZW50VG1wOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYWN0aW9uIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, EventEmitter, inject, Injector, Input, LOCALE_ID, Output, PLATFORM_ID, signal, TemplateRef, } from '@angular/core';\nimport { AsyncPipe, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { filter, map, Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\nimport { NgxDatatableModule, SelectionType } from '@swimlane/ngx-datatable';\nimport { ConfigStateService, ListService, LocalizationPipe, PermissionDirective, PermissionService, TimezoneService, UtcToLocalPipe, } from '@abp/ng.core';\nimport { AbpVisibleDirective, NgxDatatableDefaultDirective, NgxDatatableListDirective, } from '@abp/ng.theme.shared';\nimport { ExtensionsService } from '../../services/extensions.service';\nimport { ENTITY_PROP_TYPE_CLASSES, EXTENSIONS_IDENTIFIER, PROP_DATA_STREAM, ROW_RECORD, } from '../../tokens/extensions.token';\nimport { GridActionsComponent } from '../grid-actions/grid-actions.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@swimlane/ngx-datatable\";\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\nexport class ExtensibleTableComponent {\n #injector;\n set actionsText(value) {\n this._actionsText = value;\n }\n get actionsText() {\n return this._actionsText ?? (this.actionList.length >= 1 ? 'AbpUi::Actions' : '');\n }\n set actionsColumnWidth(width) {\n this._actionsColumnWidth.set(width ? Number(width) : undefined);\n }\n set selectionType(value) {\n this._selectionType = typeof value === 'string' ? SelectionType[value] : value;\n }\n constructor() {\n this.#injector = inject(Injector);\n this.getInjected = this.#injector.get.bind(this.#injector);\n this.cdr = inject(ChangeDetectorRef);\n this.locale = inject(LOCALE_ID);\n this.config = inject(ConfigStateService);\n this.timeZoneService = inject(TimezoneService);\n this.entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES);\n this.permissionService = inject(PermissionService);\n this.platformId = inject(PLATFORM_ID);\n this.isBrowser = isPlatformBrowser(this.platformId);\n this.tableActivate = new EventEmitter();\n this.selectable = false;\n this._selectionType = SelectionType.multiClick;\n this.selected = [];\n this.selectionChange = new EventEmitter();\n // Infinite scroll configuration\n this.infiniteScroll = false;\n this.isLoading = false;\n this.scrollThreshold = 10;\n this.loadMore = new EventEmitter();\n this.trackByFn = (_, item) => item.name;\n // Signal for actions column width\n this._actionsColumnWidth = signal(DEFAULT_ACTIONS_COLUMN_WIDTH);\n // Infinite scroll: debounced load more subject\n this.loadMoreSubject = new Subject();\n this.loadMoreSubscription = this.loadMoreSubject\n .pipe(debounceTime(100), distinctUntilChanged())\n .subscribe(() => this.triggerLoadMore());\n this.columnWidths = computed(() => {\n return this.propList.toArray().map(prop => prop.columnWidth);\n });\n const extensions = this.#injector.get(ExtensionsService);\n const name = this.#injector.get(EXTENSIONS_IDENTIFIER);\n this.propList = extensions.entityProps.get(name).props;\n this.actionList = extensions['entityActions'].get(name)\n .actions;\n this.hasAtLeastOnePermittedAction =\n this.permissionService.filterItemsByPolicy(this.actionList.toArray().map(action => ({ requiredPolicy: action.permission }))).length > 0;\n }\n getIcon(value) {\n return value\n ? '<div class=\"text-success\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></div>'\n : '<div class=\"text-danger\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>';\n }\n getEnum(rowValue, list) {\n if (!list || list.length < 1)\n return rowValue;\n const { key } = list.find(({ value }) => value === rowValue) || {};\n return key;\n }\n getContent(prop, data) {\n return prop.valueResolver(data).pipe(map(value => {\n switch (prop.type) {\n case \"boolean\" /* ePropType.Boolean */:\n return this.getIcon(value);\n case \"enum\" /* ePropType.Enum */:\n return this.getEnum(value, prop.enumList || []);\n default:\n return value;\n // More types can be handled in the future\n }\n }));\n }\n ngOnChanges({ data }) {\n if (!data?.currentValue)\n return;\n if (data.currentValue.length < 1) {\n this.list.totalCount = this.recordsTotal;\n }\n this.data = data.currentValue.map((record, index) => {\n this.propList.forEach(prop => {\n const propData = { getInjected: this.getInjected, record, index };\n const value = this.getContent(prop.value, propData);\n const propKey = `_${prop.value.name}`;\n record[propKey] = {\n visible: prop.value.visible(propData),\n value,\n };\n if (prop.value.component) {\n record[propKey].injector = Injector.create({\n providers: [\n {\n provide: PROP_DATA_STREAM,\n useValue: value,\n },\n {\n provide: ROW_RECORD,\n useValue: record,\n },\n ],\n parent: this.#injector,\n });\n record[propKey].component = prop.value.component;\n }\n });\n return record;\n });\n }\n isVisibleActions(rowData) {\n const actions = this.actionList.toArray();\n const visibleActions = actions.filter(action => {\n const { visible, permission } = action;\n let isVisible = true;\n let hasPermission = true;\n if (visible) {\n isVisible = visible({ record: rowData, getInjected: this.getInjected });\n }\n if (permission) {\n hasPermission = this.permissionService.getGrantedPolicy(permission);\n }\n return isVisible && hasPermission;\n });\n return visibleActions.length > 0;\n }\n onSelect({ selected }) {\n this.selected.splice(0, this.selected.length);\n this.selected.push(...selected);\n this.selectionChange.emit(selected);\n }\n onScroll(scrollEvent) {\n if (!this.shouldHandleScroll()) {\n return;\n }\n const target = scrollEvent.target;\n if (!target) {\n return;\n }\n if (this.isNearScrollBottom(target)) {\n this.loadMoreSubject.next();\n }\n }\n shouldHandleScroll() {\n return this.infiniteScroll && !this.isLoading;\n }\n isNearScrollBottom(element) {\n const { offsetHeight, scrollTop, scrollHeight } = element;\n return offsetHeight + scrollTop >= scrollHeight - this.scrollThreshold;\n }\n triggerLoadMore() {\n this.loadMore.emit();\n }\n getTableHeight() {\n if (!this.infiniteScroll)\n return 'auto';\n return this.tableHeight ? `${this.tableHeight}px` : 'auto';\n }\n ngAfterViewInit() {\n if (!this.infiniteScroll) {\n this.list?.requestStatus$?.pipe(filter(status => status === 'loading')).subscribe(() => {\n this.data = [];\n this.cdr.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n this.loadMoreSubscription.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: ExtensibleTableComponent, isStandalone: true, selector: \"abp-extensible-table\", inputs: { actionsText: \"actionsText\", data: \"data\", list: \"list\", recordsTotal: \"recordsTotal\", actionsColumnWidth: \"actionsColumnWidth\", actionsTemplate: \"actionsTemplate\", selectable: \"selectable\", selectionType: \"selectionType\", selected: \"selected\", infiniteScroll: \"infiniteScroll\", isLoading: \"isLoading\", scrollThreshold: \"scrollThreshold\", tableHeight: \"tableHeight\" }, outputs: { tableActivate: \"tableActivate\", selectionChange: \"selectionChange\", loadMore: \"loadMore\" }, exportAs: [\"abpExtensibleTable\"], usesOnChanges: true, ngImport: i0, template: \"@if (isBrowser) {\\r\\n <ngx-datatable\\r\\n default\\r\\n [rows]=\\\"data\\\"\\r\\n [count]=\\\"recordsTotal\\\"\\r\\n [list]=\\\"list\\\"\\r\\n [selectionType]=\\\"selectable ? _selectionType : undefined\\\"\\r\\n (activate)=\\\"tableActivate.emit($event)\\\"\\r\\n (select)=\\\"onSelect($event)\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n (scroll)=\\\"onScroll($event)\\\"\\r\\n [scrollbarV]=\\\"infiniteScroll\\\"\\r\\n [style.height]=\\\"getTableHeight()\\\"\\r\\n [loadingIndicator]=\\\"infiniteScroll && isLoading\\\"\\r\\n [footerHeight]=\\\"infiniteScroll ? false : 50\\\"\\r\\n>\\r\\n@if(selectable) {\\r\\n <ngx-datatable-column [width]=\\\"50\\\" [sortable]=\\\"false\\\" [canAutoResize]=\\\"false\\\" [draggable]=\\\"false\\\" [resizeable]=\\\"false\\\">\\r\\n\\r\\n <ng-template ngx-datatable-header-template let-value=\\\"value\\\" let-allRowsSelected=\\\"allRowsSelected\\\"\\r\\n let-selectFn=\\\"selectFn\\\">\\r\\n @if (_selectionType !== 'single') {\\r\\n <div class=\\\"form-check\\\">\\r\\n <input class=\\\"form-check-input table-check\\\" type=\\\"checkbox\\\" [checked]=\\\"allRowsSelected\\\"\\r\\n (change)=\\\"selectFn(!allRowsSelected)\\\" />\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n <ng-template ngx-datatable-cell-template let-value=\\\"value\\\" let-row=\\\"row\\\" let-isSelected=\\\"isSelected\\\"\\r\\n let-onCheckboxChangeFn=\\\"onCheckboxChangeFn\\\">\\r\\n @if(_selectionType === 'single') {\\r\\n <div class=\\\"h-100 form-check form-check-sm form-check-custom form-check-solid\\\">\\r\\n <input class=\\\"form-check-input\\\" type=\\\"radio\\\" [checked]=\\\"isSelected\\\" (change)=\\\"onCheckboxChangeFn($event)\\\" />\\r\\n </div>\\r\\n }\\r\\n @if (_selectionType !== 'single') {\\r\\n <div class=\\\"h-100 form-check form-check-sm form-check-custom form-check-solid\\\">\\r\\n <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected\\\" (change)=\\\"onCheckboxChangeFn($event)\\\" />\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n </ngx-datatable-column>\\r\\n }\\r\\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\\r\\n <ngx-datatable-column\\r\\n [name]=\\\"actionsText | abpLocalization\\\"\\r\\n [maxWidth]=\\\"_actionsColumnWidth() ?? undefined\\\"\\r\\n [width]=\\\"_actionsColumnWidth() ?? 200\\\"\\r\\n [canAutoResize]=\\\"!_actionsColumnWidth()\\\"\\r\\n [sortable]=\\\"false\\\"\\r\\n >\\r\\n <ng-template let-row=\\\"row\\\" let-i=\\\"rowIndex\\\" ngx-datatable-cell-template>\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\\\"\\r\\n ></ng-container>\\r\\n <ng-template #gridActions>\\r\\n @if (isVisibleActions(row)) {\\r\\n <abp-grid-actions [index]=\\\"i\\\" [record]=\\\"row\\\" text=\\\"AbpUi::Actions\\\"></abp-grid-actions>\\r\\n }\\r\\n </ng-template>\\r\\n </ng-template>\\r\\n </ngx-datatable-column>\\r\\n }\\r\\n @for (prop of propList; track prop.name; let i = $index) {\\r\\n <ngx-datatable-column\\r\\n *abpVisible=\\\"prop.columnVisible(getInjected)\\\"\\r\\n [width]=\\\"columnWidths[i] ?? 200\\\"\\r\\n [canAutoResize]=\\\"!columnWidths[i]\\\"\\r\\n [name]=\\\"(prop.isExtra ? '::' + prop.displayName : prop.displayName) | abpLocalization\\\"\\r\\n [prop]=\\\"prop.name\\\"\\r\\n [sortable]=\\\"prop.sortable\\\"\\r\\n >\\r\\n <ng-template ngx-datatable-header-template let-column=\\\"column\\\" let-sortFn=\\\"sortFn\\\">\\r\\n @if (prop.tooltip) {\\r\\n <span\\r\\n [ngbTooltip]=\\\"prop.tooltip.text | abpLocalization\\\"\\r\\n [placement]=\\\"prop.tooltip.placement || 'auto'\\\"\\r\\n container=\\\"body\\\"\\r\\n [class.pointer]=\\\"prop.sortable\\\"\\r\\n (click)=\\\"prop.sortable && sortFn(column)\\\"\\r\\n >\\r\\n {{ column.name }} <i class=\\\"fa fa-info-circle\\\" aria-hidden=\\\"true\\\"></i>\\r\\n </span>\\r\\n } @else {\\r\\n <span\\r\\n [class.pointer]=\\\"prop.sortable\\\"\\r\\n (click)=\\\"prop.sortable && sortFn(column)\\\"\\r\\n >\\r\\n {{ column.name }}\\r\\n </span>\\r\\n }\\r\\n </ng-template>\\r\\n <ng-template let-row=\\\"row\\\" let-i=\\\"index\\\" ngx-datatable-cell-template>\\r\\n <ng-container *abpPermission=\\\"prop.permission; runChangeDetection: false\\\">\\r\\n <ng-container *abpVisible=\\\"row['_' + prop.name]?.visible\\\">\\r\\n @if (!row['_' + prop.name].component) {\\r\\n @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {\\r\\n <div\\r\\n [innerHTML]=\\\"\\r\\n !prop.isExtra\\r\\n ? (row['_' + prop.name]?.value | async | abpUtcToLocal:prop.type)\\r\\n : ('::' + (row['_' + prop.name]?.value | async | abpUtcToLocal:prop.type) | abpLocalization)\\r\\n \\\"\\r\\n (click)=\\\"\\r\\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\\r\\n \\\"\\r\\n [ngClass]=\\\"entityPropTypeClasses[prop.type]\\\"\\r\\n [class.pointer]=\\\"prop.action\\\"\\r\\n ></div>\\r\\n } @else {\\r\\n <div\\r\\n [innerHTML]=\\\"\\r\\n !prop.isExtra\\r\\n ? (row['_' + prop.name]?.value | async)\\r\\n : ('::' + (row['_' + prop.name]?.value | async) | abpLocalization)\\r\\n \\\"\\r\\n (click)=\\\"\\r\\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\\r\\n \\\"\\r\\n [ngClass]=\\\"entityPropTypeClasses[prop.type]\\\"\\r\\n [class.pointer]=\\\"prop.action\\\"\\r\\n ></div>\\r\\n }\\r\\n } @else {\\r\\n <ng-container\\r\\n *ngComponentOutlet=\\\"\\r\\n row['_' + prop.name].component;\\r\\n injector: row['_' + prop.name].injector\\r\\n \\\"\\r\\n ></ng-container>\\r\\n }\\r\\n </ng-container>\\r\\n </ng-container>\\r\\n </ng-template>\\r\\n </ngx-datatable-column>\\r\\n }\\r\\n</ngx-datatable>\\r\\n}\\r\\n\", dependencies: [{ kind: \"directive\", type: AbpVisibleDirective, selector: \"[abpVisible]\", inputs: [\"abpVisible\"] }, { kind: \"ngmodule\", type: NgxDatatableModule }, { kind: \"component\", type: i1.DatatableComponent, selector: \"ngx-datatable\", inputs: [\"targetMarkerTemplate\", \"rows\", \"groupRowsBy\", \"groupedRows\", \"columns\", \"selected\", \"scrollbarV\", \"scrollbarVDynamic\", \"scrollbarH\", \"rowHeight\", \"columnMode\", \"headerHeight\", \"footerHeight\", \"externalPaging\", \"externalSorting\", \"limit\", \"count\", \"offset\", \"loadingIndicator\", \"ghostLoadingIndicator\", \"selectionType\", \"reorderable\", \"swapColumns\", \"sortType\", \"sorts\", \"cssClasses\", \"messages\", \"rowClass\", \"selectCheck\", \"displayCheck\", \"groupExpansionDefault\", \"trackByProp\", \"selectAllRowsOnPage\", \"virtualization\", \"treeFromRelation\", \"treeToRelation\", \"summaryRow\", \"summaryHeight\", \"summaryPosition\", \"disableRowCheck\", \"rowDraggable\", \"enableClearingSortState\", \"rowIdentity\"], outputs: [\"scroll\", \"activate\", \"select\", \"sort\", \"page\", \"reorder\", \"resize\", \"tableContextmenu\", \"treeAction\", \"rowDragEvents\"] }, { kind: \"directive\", type: i1.DataTableColumnDirective, selector: \"ngx-datatable-column\", inputs: [\"name\", \"prop\", \"bindAsUnsafeHtml\", \"frozenLeft\", \"frozenRight\", \"flexGrow\", \"resizeable\", \"comparator\", \"pipe\", \"sortable\", \"draggable\", \"canAutoResize\", \"minWidth\", \"width\", \"maxWidth\", \"checkboxable\", \"headerCheckboxable\", \"headerClass\", \"cellClass\", \"isTreeColumn\", \"treeLevelIndent\", \"summaryFunc\", \"summaryTemplate\", \"cellTemplate\", \"headerTemplate\", \"treeToggleTemplate\", \"ghostCellTemplate\"] }, { kind: \"directive\", type: i1.DataTableColumnHeaderDirective, selector: \"[ngx-datatable-header-template]\" }, { kind: \"directive\", type: i1.DataTableColumnCellDirective, selector: \"[ngx-datatable-cell-template]\" }, { kind: \"component\", type: GridActionsComponent, selector: \"abp-grid-actions\", inputs: [\"icon\", \"index\", \"text\"], exportAs: [\"abpGridActions\"] }, { kind: \"directive\", type: NgbTooltip, selector: \"[ngbTooltip]\", inputs: [\"animation\", \"autoClose\", \"placement\", \"popperOptions\", \"triggers\", \"positionTarget\", \"container\", \"disableTooltip\", \"tooltipClass\", \"tooltipContext\", \"openDelay\", \"closeDelay\", \"ngbTooltip\"], outputs: [\"shown\", \"hidden\"], exportAs: [\"ngbTooltip\"] }, { kind: \"directive\", type: NgxDatatableDefaultDirective, selector: \"ngx-datatable[default]\", inputs: [\"class\"], exportAs: [\"ngxDatatableDefault\"] }, { kind: \"directive\", type: NgxDatatableListDirective, selector: \"ngx-datatable[list]\", inputs: [\"list\"], exportAs: [\"ngxDatatableList\"] }, { kind: \"directive\", type: PermissionDirective, selector: \"[abpPermission]\", inputs: [\"abpPermission\", \"abpPermissionRunChangeDetection\"] }, { kind: \"pipe\", type: LocalizationPipe, name: \"abpLocalization\" }, { kind: \"pipe\", type: UtcToLocalPipe, name: \"abpUtcToLocal\" }, { kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleTableComponent, decorators: [{\n type: Component,\n args: [{ exportAs: 'abpExtensibleTable', selector: 'abp-extensible-table', imports: [\n AbpVisibleDirective,\n NgxDatatableModule,\n GridActionsComponent,\n NgbTooltip,\n NgxDatatableDefaultDirective,\n NgxDatatableListDirective,\n PermissionDirective,\n LocalizationPipe,\n UtcToLocalPipe,\n AsyncPipe,\n NgTemplateOutlet,\n NgComponentOutlet,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@if (isBrowser) {\\r\\n <ngx-datatable\\r\\n default\\r\\n [rows]=\\\"data\\\"\\r\\n [count]=\\\"recordsTotal\\\"\\r\\n [list]=\\\"list\\\"\\r\\n [selectionType]=\\\"selectable ? _selectionType : undefined\\\"\\r\\n (activate)=\\\"tableActivate.emit($event)\\\"\\r\\n (select)=\\\"onSelect($event)\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n (scroll)=\\\"onScroll($event)\\\"\\r\\n [scrollbarV]=\\\"infiniteScroll\\\"\\r\\n [style.height]=\\\"getTableHeight()\\\"\\r\\n [loadingIndicator]=\\\"infiniteScroll && isLoading\\\"\\r\\n [footerHeight]=\\\"infiniteScroll ? false : 50\\\"\\r\\n>\\r\\n@if(selectable) {\\r\\n <ngx-datatable-column [width]=\\\"50\\\" [sortable]=\\\"false\\\" [canAutoResize]=\\\"false\\\" [draggable]=\\\"false\\\" [resizeable]=\\\"false\\\">\\r\\n\\r\\n <ng-template ngx-datatable-header-template let-value=\\\"value\\\" let-allRowsSelected=\\\"allRowsSelected\\\"\\r\\n let-selectFn=\\\"selectFn\\\">\\r\\n @if (_selectionType !== 'single') {\\r\\n <div class=\\\"form-check\\\">\\r\\n <input class=\\\"form-check-input table-check\\\" type=\\\"checkbox\\\" [checked]=\\\"allRowsSelected\\\"\\r\\n (change)=\\\"selectFn(!allRowsSelected)\\\" />\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n <ng-template ngx-datatable-cell-template let-value=\\\"value\\\" let-row=\\\"row\\\" let-isSelected=\\\"isSelected\\\"\\r\\n let-onCheckboxChangeFn=\\\"onCheckboxChangeFn\\\">\\r\\n @if(_selectionType === 'single') {\\r\\n <div class=\\\"h-100 form-check form-check-sm form-check-custom form-check-solid\\\">\\r\\n <input class=\\\"form-check-input\\\" type=\\\"radio\\\" [checked]=\\\"isSelected\\\" (change)=\\\"onCheckboxChangeFn($event)\\\" />\\r\\n </div>\\r\\n }\\r\\n @if (_selectionType !== 'single') {\\r\\n <div class=\\\"h-100 form-check form-check-sm form-check-custom form-check-solid\\\">\\r\\n <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" [checked]=\\\"isSelected\\\" (change)=\\\"onCheckboxChangeFn($event)\\\" />\\r\\n </div>\\r\\n }\\r\\n </ng-template>\\r\\n\\r\\n </ngx-datatable-column>\\r\\n }\\r\\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\\r\\n <ngx-datatable-column\\r\\n [name]=\\\"actionsText | abpLocalization\\\"\\r\\n [maxWidth]=\\\"_actionsColumnWidth() ?? undefined\\\"\\r\\n [width]=\\\"_actionsColumnWidth() ?? 200\\\"\\r\\n [canAutoResize]=\\\"!_actionsColumnWidth()\\\"\\r\\n [sortable]=\\\"false\\\"\\r\\n >\\r\\n <ng-template let-row=\\\"row\\\" let-i=\\\"rowIndex\\\" ngx-datatable-cell-template>\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\\\"\\r\\n ></ng-container>\\r\\n <ng-template #gridActions>\\r\\n @if (isVisibleActions(row)) {\\r\\n <abp-grid-actions [index]=\\\"i\\\" [record]=\\\"row\\\" text=\\\"AbpUi::Actions\\\"></abp-grid-actions>\\r\\n }\\r\\n </ng-template>\\r\\n </ng-template>\\r\\n </ngx-datatable-column>\\r\\n }\\r\\n @for (prop of propList; track prop.name; let i = $index) {\\r\\n <ngx-datatable-column\\r\\n *abpVisible=\\\"prop.columnVisible(getInjected)\\\"\\r\\n [width]=\\\"columnWidths[i] ?? 200\\\"\\r\\n [canAutoResize]=\\\"!columnWidths[i]\\\"\\r\\n [name]=\\\"(prop.isExtra ? '::' + prop.displayName : prop.displayName) | abpLocalization\\\"\\r\\n [prop]=\\\"prop.name\\\"\\r\\n [sortable]=\\\"prop.sortable\\\"\\r\\n >\\r\\n <ng-template ngx-datatable-header-template let-column=\\\"column\\\" let-sortFn=\\\"sortFn\\\">\\r\\n @if (prop.tooltip) {\\r\\n <span\\r\\n [ngbTooltip]=\\\"prop.tooltip.text | abpLocalization\\\"\\r\\n [placement]=\\\"prop.tooltip.placement || 'auto'\\\"\\r\\n container=\\\"body\\\"\\r\\n [class.pointer]=\\\"prop.sortable\\\"\\r\\n (click)=\\\"prop.sortable && sortFn(column)\\\"\\r\\n >\\r\\n {{ column.name }} <i class=\\\"fa fa-info-circle\\\" aria-hidden=\\\"true\\\"></i>\\r\\n </span>\\r\\n } @else {\\r\\n <span\\r\\n [class.pointer]=\\\"prop.sortable\\\"\\r\\n (click)=\\\"prop.sortable && sortFn(column)\\\"\\r\\n >\\r\\n {{ column.name }}\\r\\n </span>\\r\\n }\\r\\n </ng-template>\\r\\n <ng-template let-row=\\\"row\\\" let-i=\\\"index\\\" ngx-datatable-cell-template>\\r\\n <ng-container *abpPermission=\\\"prop.permission; runChangeDetection: false\\\">\\r\\n <ng-container *abpVisible=\\\"row['_' + prop.name]?.visible\\\">\\r\\n @if (!row['_' + prop.name].component) {\\r\\n @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {\\r\\n <div\\r\\n [innerHTML]=\\\"\\r\\n !prop.isExtra\\r\\n ? (row['_' + prop.name]?.value | async | abpUtcToLocal:prop.type)\\r\\n : ('::' + (row['_' + prop.name]?.value | async | abpUtcToLocal:prop.type) | abpLocalization)\\r\\n \\\"\\r\\n (click)=\\\"\\r\\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\\r\\n \\\"\\r\\n [ngClass]=\\\"entityPropTypeClasses[prop.type]\\\"\\r\\n [class.pointer]=\\\"prop.action\\\"\\r\\n ></div>\\r\\n } @else {\\r\\n <div\\r\\n [innerHTML]=\\\"\\r\\n !prop.isExtra\\r\\n ? (row['_' + prop.name]?.value | async)\\r\\n : ('::' + (row['_' + prop.name]?.value | async) | abpLocalization)\\r\\n \\\"\\r\\n (click)=\\\"\\r\\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\\r\\n \\\"\\r\\n [ngClass]=\\\"entityPropTypeClasses[prop.type]\\\"\\r\\n [class.pointer]=\\\"prop.action\\\"\\r\\n ></div>\\r\\n }\\r\\n } @else {\\r\\n <ng-container\\r\\n *ngComponentOutlet=\\\"\\r\\n row['_' + prop.name].component;\\r\\n injector: row['_' + prop.name].injector\\r\\n \\\"\\r\\n ></ng-container>\\r\\n }\\r\\n </ng-container>\\r\\n </ng-container>\\r\\n </ng-template>\\r\\n </ngx-datatable-column>\\r\\n }\\r\\n</ngx-datatable>\\r\\n}\\r\\n\" }]\n }], ctorParameters: () => [], propDecorators: { actionsText: [{\n type: Input\n }], data: [{\n type: Input\n }], list: [{\n type: Input\n }], recordsTotal: [{\n type: Input\n }], actionsColumnWidth: [{\n type: Input\n }], actionsTemplate: [{\n type: Input\n }], tableActivate: [{\n type: Output\n }], selectable: [{\n type: Input\n }], selectionType: [{\n type: Input\n }], selected: [{\n type: Input\n }], selectionChange: [{\n type: Output\n }], infiniteScroll: [{\n type: Input\n }], isLoading: [{\n type: Input\n }], scrollThreshold: [{\n type: Input\n }], loadMore: [{\n type: Output\n }], tableHeight: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtdGFibGUvZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL2V4dGVuc2libGUtdGFibGUvZXh0ZW5zaWJsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBRU4sV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRyxPQUFPLEVBQWMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUUsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFP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dGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBpbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTE9DQUxFX0lELFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFBMQVRGT1JNX0lELFxyXG4gIHNpZ25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFRyYWNrQnlGdW5jdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBpc1BsYXRmb3JtQnJvd3NlciwgTmdDb21wb25lbnRPdXRsZXQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBtYXAsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IE5neERhdGF0YWJsZU1vZHVsZSwgU2VsZWN0aW9uVHlwZSB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQUJQLFxyXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcclxuICBMaXN0U2VydmljZSxcclxuICBMb2NhbGl6YXRpb25QaXBlLFxyXG4gIFBlcm1pc3Npb25EaXJlY3RpdmUsXHJcbiAgUGVybWlzc2lvblNlcnZpY2UsXHJcbiAgVGltZXpvbmVTZXJ2aWNlLFxyXG4gIFV0Y1RvTG9jYWxQaXBlLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJwVmlzaWJsZURpcmVjdGl2ZSxcclxuICBOZ3hEYXRhdGFibGVEZWZhdWx0RGlyZWN0aXZlLFxyXG4gIE5neERhdGF0YWJsZUxpc3REaXJlY3RpdmUsXHJcbn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgZVByb3BUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvcHJvcHMuZW51bSc7XHJcbmltcG9ydCB7IEVudGl0eUFjdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW50aXR5LWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBFbnRpdHlQcm9wLCBFbnRpdHlQcm9wTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnRpdHktcHJvcHMnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9wcyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMsXHJcbiAgRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gIFBST1BfREFUQV9TVFJFQU0sXHJcbiAgUk9XX1JFQ09SRCxcclxufSBmcm9tICcuLi8uLi90b2tlbnMvZXh0ZW5zaW9ucy50b2tlbic7XHJcbmltcG9ydCB7IEdyaWRBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1hY3Rpb25zL2dyaWQtYWN0aW9ucy5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgREVGQVVMVF9BQ1RJT05TX0NPTFVNTl9XSURUSCA9IDE1MDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGV4cG9ydEFzOiAnYWJwRXh0ZW5zaWJsZVRhYmxlJyxcclxuICBzZWxlY3RvcjogJ2FicC1leHRlbnNpYmxlLXRhYmxlJyxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBYnBWaXNpYmxlRGlyZWN0aXZlLFxyXG4gICAgTmd4RGF0YXRhYmxlTW9kdWxlLFxyXG4gICAgR3JpZEFjdGlvbnNDb21wb25lbnQsXHJcbiAgICBOZ2JUb29sdGlwLFxyXG4gICAgTmd4RGF0YXRhYmxlRGVmYXVsdERpcmVjdGl2ZSxcclxuICAgIE5neERhdGF0YWJsZUxpc3REaXJlY3RpdmUsXHJcbiAgICBQZXJtaXNzaW9uRGlyZWN0aXZlLFxyXG4gICAgTG9jYWxpemF0aW9uUGlwZSxcclxuICAgIFV0Y1RvTG9jYWxQaXBlLFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVuc2libGUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZVRhYmxlQ29tcG9uZW50PFIgPSBhbnk+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcbiAgcmVhZG9ubHkgZ2V0SW5qZWN0ZWQgPSB0aGlzLiNpbmplY3Rvci5nZXQuYmluZCh0aGlzLiNpbmplY3Rvcik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvY2FsZSA9IGluamVjdChMT0NBTEVfSUQpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZVpvbmVTZXJ2aWNlID0gaW5qZWN0KFRpbWV6b25lU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVudGl0eVByb3BUeXBlQ2xhc3NlcyA9IGluamVjdChFTlRJVFlfUFJPUF9UWVBFX0NMQVNTRVMpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZSA9IGluamVjdChQZXJtaXNzaW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICBwcm90ZWN0ZWQgaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuXHJcbiAgcHJvdGVjdGVkIF9hY3Rpb25zVGV4dCE6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBhY3Rpb25zVGV4dCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hY3Rpb25zVGV4dCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGlvbnNUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uc1RleHQgPz8gKHRoaXMuYWN0aW9uTGlzdC5sZW5ndGggPj0gMSA/ICdBYnBVaTo6QWN0aW9ucycgOiAnJyk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBkYXRhITogUltdO1xyXG4gIEBJbnB1dCgpIGxpc3QhOiBMaXN0U2VydmljZTtcclxuICBASW5wdXQoKSByZWNvcmRzVG90YWwhOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhY3Rpb25zQ29sdW1uV2lkdGgod2lkdGg6IG51bWJlcikge1xyXG4gICAgdGhpcy5fYWN0aW9uc0NvbHVtbldpZHRoLnNldCh3aWR0aCA/IE51bWJlcih3aWR0aCkgOiB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYWN0aW9uc1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQE91dHB1dCgpIHRhYmxlQWN0aXZhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IHNlbGVjdGlvblR5cGUodmFsdWU6IFNlbGVjdGlvblR5cGUgfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NlbGVjdGlvblR5cGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gU2VsZWN0aW9uVHlwZVt2YWx1ZV0gOiB2YWx1ZTtcclxuICB9XHJcbiAgX3NlbGVjdGlvblR5cGU6IFNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25UeXBlLm11bHRpQ2xpY2s7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBhbnlbXSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICAvLyBJbmZpbml0ZSBzY3JvbGwgY29uZmlndXJhdGlvblxyXG4gIEBJbnB1dCgpIGluZmluaXRlU2Nyb2xsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2Nyb2xsVGhyZXNob2xkID0gMTA7XHJcbiAgQE91dHB1dCgpIGxvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBJbnB1dCgpIHRhYmxlSGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gIGhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb246IGJvb2xlYW47XHJcblxyXG4gIHJlYWRvbmx5IHByb3BMaXN0OiBFbnRpdHlQcm9wTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aW9uTGlzdDogRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgcmVhZG9ubHkgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248RW50aXR5UHJvcDxSPj4gPSAoXywgaXRlbSkgPT4gaXRlbS5uYW1lO1xyXG5cclxuICAvLyBTaWduYWwgZm9yIGFjdGlvbnMgY29sdW1uIHdpZHRoXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uc0NvbHVtbldpZHRoID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4oREVGQVVMVF9BQ1RJT05TX0NPTFVNTl9XSURUSCk7XHJcblxyXG4gIC8vIEluZmluaXRlIHNjcm9sbDogZGVib3VuY2VkIGxvYWQgbW9yZSBzdWJqZWN0XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkTW9yZVN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZE1vcmVTdWJzY3JpcHRpb24gPSB0aGlzLmxvYWRNb3JlU3ViamVjdFxyXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMudHJpZ2dlckxvYWRNb3JlKCkpO1xyXG5cclxuICByZWFkb25seSBjb2x1bW5XaWR0aHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wTGlzdC50b0FycmF5KCkubWFwKHByb3AgPT4gcHJvcC5jb2x1bW5XaWR0aCk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IHRoaXMuI2luamVjdG9yLmdldChFeHRlbnNpb25zU2VydmljZSk7XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy4jaW5qZWN0b3IuZ2V0KEVYVEVOU0lPTlNfSURFTlRJRklFUik7XHJcbiAgICB0aGlzLnByb3BMaXN0ID0gZXh0ZW5zaW9ucy5lbnRpdHlQcm9wcy5nZXQobmFtZSkucHJvcHM7XHJcbiAgICB0aGlzLmFjdGlvbkxpc3QgPSBleHRlbnNpb25zWydlbnRpdHlBY3Rpb25zJ10uZ2V0KG5hbWUpXHJcbiAgICAgIC5hY3Rpb25zIGFzIHVua25vd24gYXMgRW50aXR5QWN0aW9uTGlzdDxSPjtcclxuXHJcbiAgICB0aGlzLmhhc0F0TGVhc3RPbmVQZXJtaXR0ZWRBY3Rpb24gPVxyXG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmZpbHRlckl0ZW1zQnlQb2xpY3koXHJcbiAgICAgICAgdGhpcy5hY3Rpb25MaXN0LnRvQXJyYXkoKS5tYXAoYWN0aW9uID0+ICh7IHJlcXVpcmVkUG9saWN5OiBhY3Rpb24ucGVybWlzc2lvbiB9KSksXHJcbiAgICAgICkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SWNvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgICAgID8gJzxkaXYgY2xhc3M9XCJ0ZXh0LXN1Y2Nlc3NcIj48aSBjbGFzcz1cImZhIGZhLWNoZWNrXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvZGl2PidcclxuICAgICAgOiAnPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj4nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbnVtKHJvd1ZhbHVlOiBhbnksIGxpc3Q6IEFycmF5PEFCUC5PcHRpb248YW55Pj4pIHtcclxuICAgIGlmICghbGlzdCB8fCBsaXN0Lmxlbmd0aCA8IDEpIHJldHVybiByb3dWYWx1ZTtcclxuICAgIGNvbnN0IHsga2V5IH0gPSBsaXN0LmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IHJvd1ZhbHVlKSB8fCB7fTtcclxuICAgIHJldHVybiBrZXk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KHByb3A6IEVudGl0eVByb3A8Uj4sIGRhdGE6IFByb3BEYXRhKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBwcm9wLnZhbHVlUmVzb2x2ZXIoZGF0YSkucGlwZShcclxuICAgICAgbWFwKHZhbHVlID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHByb3AudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBlUHJvcFR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SWNvbih2YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIGVQcm9wVHlwZS5FbnVtOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRFbnVtKHZhbHVlLCBwcm9wLmVudW1MaXN0IHx8IFtdKTtcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgIC8vIE1vcmUgdHlwZXMgY2FuIGJlIGhhbmRsZWQgaW4gdGhlIGZ1dHVyZVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoeyBkYXRhIH06IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmICghZGF0YT8uY3VycmVudFZhbHVlKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGRhdGEuY3VycmVudFZhbHVlLmxlbmd0aCA8IDEpIHtcclxuICAgICAgdGhpcy5saXN0LnRvdGFsQ291bnQgPSB0aGlzLnJlY29yZHNUb3RhbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhLmN1cnJlbnRWYWx1ZS5tYXAoKHJlY29yZDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHRoaXMucHJvcExpc3QuZm9yRWFjaChwcm9wID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wRGF0YSA9IHsgZ2V0SW5qZWN0ZWQ6IHRoaXMuZ2V0SW5qZWN0ZWQsIHJlY29yZCwgaW5kZXggfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENvbnRlbnQocHJvcC52YWx1ZSwgcHJvcERhdGEpO1xyXG5cclxuICAgICAgICBjb25zdCBwcm9wS2V5ID0gYF8ke3Byb3AudmFsdWUubmFtZX1gO1xyXG4gICAgICAgIHJlY29yZFtwcm9wS2V5XSA9IHtcclxuICAgICAgICAgIHZpc2libGU6IHByb3AudmFsdWUudmlzaWJsZShwcm9wRGF0YSksXHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChwcm9wLnZhbHVlLmNvbXBvbmVudCkge1xyXG4gICAgICAgICAgcmVjb3JkW3Byb3BLZXldLmluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcHJvdmlkZTogUFJPUF9EQVRBX1NUUkVBTSxcclxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpZGU6IFJPV19SRUNPUkQsXHJcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogcmVjb3JkLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy4jaW5qZWN0b3IsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJlY29yZFtwcm9wS2V5XS5jb21wb25lbnQgPSBwcm9wLnZhbHVlLmNvbXBvbmVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNWaXNpYmxlQWN0aW9ucyhyb3dEYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmFjdGlvbkxpc3QudG9BcnJheSgpO1xyXG4gICAgY29uc3QgdmlzaWJsZUFjdGlvbnMgPSBhY3Rpb25zLmZpbHRlcihhY3Rpb24gPT4ge1xyXG4gICAgICBjb25zdCB7IHZpc2libGUsIHBlcm1pc3Npb24gfSA9IGFjdGlvbjtcclxuXHJcbiAgICAgIGxldCBpc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICBsZXQgaGFzUGVybWlzc2lvbiA9IHRydWU7XHJcblxyXG4gICAgICBpZiAodmlzaWJsZSkge1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IHZpc2libGUoeyByZWNvcmQ6IHJvd0RhdGEsIGdldEluamVjdGVkOiB0aGlzLmdldEluamVjdGVkIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocGVybWlzc2lvbikge1xyXG4gICAgICAgIGhhc1Blcm1pc3Npb24gPSB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLmdldEdyYW50ZWRQb2xpY3kocGVybWlzc2lvbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBpc1Zpc2libGUgJiYgaGFzUGVybWlzc2lvbjtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QoeyBzZWxlY3RlZCB9KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkLnNwbGljZSgwLCB0aGlzLnNlbGVjdGVkLmxlbmd0aCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkLnB1c2goLi4uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChzZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBvblNjcm9sbChzY3JvbGxFdmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zaG91bGRIYW5kbGVTY3JvbGwoKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0ID0gc2Nyb2xsRXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzTmVhclNjcm9sbEJvdHRvbSh0YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMubG9hZE1vcmVTdWJqZWN0Lm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdWxkSGFuZGxlU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5maW5pdGVTY3JvbGwgJiYgIXRoaXMuaXNMb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc05lYXJTY3JvbGxCb3R0b20oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHsgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCB9ID0gZWxlbWVudDtcclxuICAgIHJldHVybiBvZmZzZXRIZWlnaHQgKyBzY3JvbGxUb3AgPj0gc2Nyb2xsSGVpZ2h0IC0gdGhpcy5zY3JvbGxUaHJlc2hvbGQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyaWdnZXJMb2FkTW9yZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE1vcmUuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGVIZWlnaHQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaW5maW5pdGVTY3JvbGwpIHJldHVybiAnYXV0byc7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGFibGVIZWlnaHQgPyBgJHt0aGlzLnRhYmxlSGVpZ2h0fXB4YCA6ICdhdXRvJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICB0aGlzLmxpc3Q/LnJlcXVlc3RTdGF0dXMkPy5waXBlKGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzID09PSAnbG9hZGluZycpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkTW9yZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGlzQnJvd3Nlcikge1xyXG4gIDxuZ3gtZGF0YXRhYmxlXHJcbiAgZGVmYXVsdFxyXG4gIFtyb3dzXT1cImRhdGFcIlxyXG4gIFtjb3VudF09XCJyZWNvcmRzVG90YWxcIlxyXG4gIFtsaXN0XT1cImxpc3RcIlxyXG4gIFtzZWxlY3Rpb25UeXBlXT1cInNlbGVjdGFibGUgPyBfc2VsZWN0aW9uVHlwZSA6IHVuZGVmaW5lZFwiXHJcbiAgKGFjdGl2YXRlKT1cInRhYmxlQWN0aXZhdGUuZW1pdCgkZXZlbnQpXCJcclxuICAoc2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxyXG4gIFtzZWxlY3RlZF09XCJzZWxlY3RlZFwiXHJcbiAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcclxuICBbc2Nyb2xsYmFyVl09XCJpbmZpbml0ZVNjcm9sbFwiXHJcbiAgW3N0eWxlLmhlaWdodF09XCJnZXRUYWJsZUhlaWdodCgpXCJcclxuICBbbG9hZGluZ0luZGljYXRvcl09XCJpbmZpbml0ZVNjcm9sbCAmJiBpc0xvYWRpbmdcIlxyXG4gIFtmb290ZXJIZWlnaHRdPVwiaW5maW5pdGVTY3JvbGwgPyBmYWxzZSA6IDUwXCJcclxuPlxyXG5AaWYoc2VsZWN0YWJsZSkge1xyXG4gIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiNTBcIiBbc29ydGFibGVdPVwiZmFsc2VcIiBbY2FuQXV0b1Jlc2l6ZV09XCJmYWxzZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXplYWJsZV09XCJmYWxzZVwiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZGF0YXRhYmxlLWhlYWRlci10ZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1hbGxSb3dzU2VsZWN0ZWQ9XCJhbGxSb3dzU2VsZWN0ZWRcIlxyXG4gICAgICBsZXQtc2VsZWN0Rm49XCJzZWxlY3RGblwiPlxyXG4gICAgICBAaWYgKF9zZWxlY3Rpb25UeXBlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgdGFibGUtY2hlY2tcIiB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJhbGxSb3dzU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RGbighYWxsUm93c1NlbGVjdGVkKVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtcm93PVwicm93XCIgbGV0LWlzU2VsZWN0ZWQ9XCJpc1NlbGVjdGVkXCJcclxuICAgICAgbGV0LW9uQ2hlY2tib3hDaGFuZ2VGbj1cIm9uQ2hlY2tib3hDaGFuZ2VGblwiPlxyXG4gICAgICBAaWYoX3NlbGVjdGlvblR5cGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBmb3JtLWNoZWNrIGZvcm0tY2hlY2stc20gZm9ybS1jaGVjay1jdXN0b20gZm9ybS1jaGVjay1zb2xpZFwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlRm4oJGV2ZW50KVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoX3NlbGVjdGlvblR5cGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBmb3JtLWNoZWNrIGZvcm0tY2hlY2stc20gZm9ybS1jaGVjay1jdXN0b20gZm9ybS1jaGVjay1zb2xpZFwiPlxyXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCIgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlRm4oJGV2ZW50KVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG4gIH1cclxuICBAaWYgKGFjdGlvbnNUZW1wbGF0ZSB8fCAoYWN0aW9uTGlzdC5sZW5ndGggJiYgaGFzQXRMZWFzdE9uZVBlcm1pdHRlZEFjdGlvbikpIHtcclxuICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG4gICAgICBbbmFtZV09XCJhY3Rpb25zVGV4dCB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgIFttYXhXaWR0aF09XCJfYWN0aW9uc0NvbHVtbldpZHRoKCkgPz8gdW5kZWZpbmVkXCJcclxuICAgICAgW3dpZHRoXT1cIl9hY3Rpb25zQ29sdW1uV2lkdGgoKSA/PyAyMDBcIlxyXG4gICAgICBbY2FuQXV0b1Jlc2l6ZV09XCIhX2FjdGlvbnNDb2x1bW5XaWR0aCgpXCJcclxuICAgICAgW3NvcnRhYmxlXT1cImZhbHNlXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtaT1cInJvd0luZGV4XCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0aW9uc1RlbXBsYXRlIHx8IGdyaWRBY3Rpb25zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNncmlkQWN0aW9ucz5cclxuICAgICAgICAgIEBpZiAoaXNWaXNpYmxlQWN0aW9ucyhyb3cpKSB7XHJcbiAgICAgICAgICAgIDxhYnAtZ3JpZC1hY3Rpb25zIFtpbmRleF09XCJpXCIgW3JlY29yZF09XCJyb3dcIiB0ZXh0PVwiQWJwVWk6OkFjdGlvbnNcIj48L2FicC1ncmlkLWFjdGlvbnM+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgfVxyXG4gIEBmb3IgKHByb3Agb2YgcHJvcExpc3Q7IHRyYWNrIHByb3AubmFtZTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtblxyXG4gICAgICAqYWJwVmlzaWJsZT1cInByb3AuY29sdW1uVmlzaWJsZShnZXRJbmplY3RlZClcIlxyXG4gICAgICBbd2lkdGhdPVwiY29sdW1uV2lkdGhzW2ldID8/IDIwMFwiXHJcbiAgICAgIFtjYW5BdXRvUmVzaXplXT1cIiFjb2x1bW5XaWR0aHNbaV1cIlxyXG4gICAgICBbbmFtZV09XCIocHJvcC5pc0V4dHJhID8gJzo6JyArIHByb3AuZGlzcGxheU5hbWUgOiBwcm9wLmRpc3BsYXlOYW1lKSB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgIFtwcm9wXT1cInByb3AubmFtZVwiXHJcbiAgICAgIFtzb3J0YWJsZV09XCJwcm9wLnNvcnRhYmxlXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5neC1kYXRhdGFibGUtaGVhZGVyLXRlbXBsYXRlIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtc29ydEZuPVwic29ydEZuXCI+XHJcbiAgICAgICAgQGlmIChwcm9wLnRvb2x0aXApIHtcclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cInByb3AudG9vbHRpcC50ZXh0IHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgW3BsYWNlbWVudF09XCJwcm9wLnRvb2x0aXAucGxhY2VtZW50IHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxyXG4gICAgICAgICAgICBbY2xhc3MucG9pbnRlcl09XCJwcm9wLnNvcnRhYmxlXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInByb3Auc29ydGFibGUgJiYgc29ydEZuKGNvbHVtbilcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb2x1bW4ubmFtZSB9fSA8aSBjbGFzcz1cImZhIGZhLWluZm8tY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2NsYXNzLnBvaW50ZXJdPVwicHJvcC5zb3J0YWJsZVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJwcm9wLnNvcnRhYmxlICYmIHNvcnRGbihjb2x1bW4pXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uLm5hbWUgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWk9XCJpbmRleFwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctY29udGFpbmVyICphYnBQZXJtaXNzaW9uPVwicHJvcC5wZXJtaXNzaW9uOyBydW5DaGFuZ2VEZXRlY3Rpb246IGZhbHNlXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICphYnBWaXNpYmxlPVwicm93WydfJyArIHByb3AubmFtZV0/LnZpc2libGVcIj5cclxuICAgICAgICAgICAgQGlmICghcm93WydfJyArIHByb3AubmFtZV0uY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgQGlmIChwcm9wLnR5cGUgPT09ICdkYXRldGltZScgfHwgcHJvcC50eXBlID09PSAnZGF0ZScgfHwgcHJvcC50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcclxuICAgICAgICAgICAgICAgICAgIXByb3AuaXNFeHRyYVxyXG4gICAgICAgICAgICAgICAgICAgID8gKHJvd1snXycgKyBwcm9wLm5hbWVdPy52YWx1ZSB8IGFzeW5jIHwgYWJwVXRjVG9Mb2NhbDpwcm9wLnR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgOiAoJzo6JyArIChyb3dbJ18nICsgcHJvcC5uYW1lXT8udmFsdWUgfCBhc3luYyB8IGFicFV0Y1RvTG9jYWw6cHJvcC50eXBlKSB8IGFicExvY2FsaXphdGlvbilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcHJvcC5hY3Rpb24gJiYgcHJvcC5hY3Rpb24oeyBnZXRJbmplY3RlZDogZ2V0SW5qZWN0ZWQsIHJlY29yZDogcm93LCBpbmRleDogaSB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW50aXR5UHJvcFR5cGVDbGFzc2VzW3Byb3AudHlwZV1cIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucG9pbnRlcl09XCJwcm9wLmFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXHJcbiAgICAgICAgICAgICAgICAgICFwcm9wLmlzRXh0cmFcclxuICAgICAgICAgICAgICAgICAgICA/IChyb3dbJ18nICsgcHJvcC5uYW1lXT8udmFsdWUgfCBhc3luYylcclxuICAgICAgICAgICAgICAgICAgICA6ICgnOjonICsgKHJvd1snXycgKyBwcm9wLm5hbWVdPy52YWx1ZSB8IGFzeW5jKSB8IGFicExvY2FsaXphdGlvbilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgcHJvcC5hY3Rpb24gJiYgcHJvcC5hY3Rpb24oeyBnZXRJbmplY3RlZDogZ2V0SW5qZWN0ZWQsIHJlY29yZDogcm93LCBpbmRleDogaSB9KVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZW50aXR5UHJvcFR5cGVDbGFzc2VzW3Byb3AudHlwZV1cIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucG9pbnRlcl09XCJwcm9wLmFjdGlvblwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgcm93WydfJyArIHByb3AubmFtZV0uY29tcG9uZW50O1xyXG4gICAgICAgICAgICAgICAgICBpbmplY3Rvcjogcm93WydfJyArIHByb3AubmFtZV0uaW5qZWN0b3JcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgfVxyXG48L25neC1kYXRhdGFibGU+XHJcbn1cclxuIl19","import { Pipe } from '@angular/core';\nimport { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token';\nimport * as i0 from \"@angular/core\";\nexport class CreateInjectorPipe {\n transform(_, action, context) {\n const get = (token, notFoundValue, options) => {\n const componentData = context.getData();\n const componentDataCallback = (data) => {\n data = data ?? context.getData();\n return action.action(data);\n };\n let extensionData;\n switch (token) {\n case EXTENSIONS_ACTION_DATA:\n extensionData = componentData;\n break;\n case EXTENSIONS_ACTION_CALLBACK:\n extensionData = componentDataCallback;\n break;\n default:\n extensionData = context.getInjected.call(context.injector, token, notFoundValue, options);\n }\n return extensionData;\n };\n return { get };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: CreateInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: CreateInjectorPipe, isStandalone: true, name: \"createInjector\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: CreateInjectorPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'createInjector',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWluamVjdG9yLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9waXBlcy9jcmVhdGUtaW5qZWN0b3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJDLElBQUksRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS2hHLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsU0FBUyxDQUNkLENBQU0sRUFDTixNQUEyQixFQUMzQixPQUFpQztRQUVqQyxNQUFNLEdBQUcsR0FBRyxDQUNWLEtBQWtDLEVBQ2xDLGFBQWlCLEVBQ2pCLE9BQXVCLEVBQ3ZCLEVBQUU7WUFDRixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQztZQUNGLElBQUksYUFBYSxDQUFDO1lBQ2xCLFFBQVEsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxzQkFBc0I7b0JBQ3pCLGFBQWEsR0FBRyxhQUFhLENBQUM7b0JBQzlCLE1BQU07Z0JBQ1IsS0FBSywwQkFBMEI7b0JBQzdCLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUjtvQkFDRSxhQUFhLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlGLENBQUM7WUFDRCxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDLENBQUM7UUFDRixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0E5QlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0T3B0aW9ucywgSW5qZWN0b3IsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSGFzQ3JlYXRlSW5qZWN0b3JQaXBlLCBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kZWxzL3Rvb2xiYXItYWN0aW9ucyc7XHJcbmltcG9ydCB7IEVYVEVOU0lPTlNfQUNUSU9OX0NBTExCQUNLLCBFWFRFTlNJT05TX0FDVElPTl9EQVRBIH0gZnJvbSAnLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdjcmVhdGVJbmplY3RvcicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVJbmplY3RvclBpcGU8Uj4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwdWJsaWMgdHJhbnNmb3JtKFxyXG4gICAgXzogYW55LFxyXG4gICAgYWN0aW9uOiBUb29sYmFyQ29tcG9uZW50PFI+LFxyXG4gICAgY29udGV4dDogSGFzQ3JlYXRlSW5qZWN0b3JQaXBlPFI+LFxyXG4gICk6IEluamVjdG9yIHtcclxuICAgIGNvbnN0IGdldCA9IDxUPihcclxuICAgICAgdG9rZW46IFR5cGU8VD4gfCBJbmplY3Rpb25Ub2tlbjxUPixcclxuICAgICAgbm90Rm91bmRWYWx1ZT86IFQsXHJcbiAgICAgIG9wdGlvbnM/OiBJbmplY3RPcHRpb25zLFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudERhdGEgPSBjb250ZXh0LmdldERhdGEoKTtcclxuICAgICAgY29uc3QgY29tcG9uZW50RGF0YUNhbGxiYWNrID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGRhdGEgPSBkYXRhID8/IGNvbnRleHQuZ2V0RGF0YSgpO1xyXG4gICAgICAgIHJldHVybiBhY3Rpb24uYWN0aW9uKGRhdGEpO1xyXG4gICAgICB9O1xyXG4gICAgICBsZXQgZXh0ZW5zaW9uRGF0YTtcclxuICAgICAgc3dpdGNoICh0b2tlbikge1xyXG4gICAgICAgIGNhc2UgRVhURU5TSU9OU19BQ1RJT05fREFUQTpcclxuICAgICAgICAgIGV4dGVuc2lvbkRhdGEgPSBjb21wb25lbnREYXRhO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBFWFRFTlNJT05TX0FDVElPTl9DQUxMQkFDSzpcclxuICAgICAgICAgIGV4dGVuc2lvbkRhdGEgPSBjb21wb25lbnREYXRhQ2FsbGJhY2s7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgZXh0ZW5zaW9uRGF0YSA9IGNvbnRleHQuZ2V0SW5qZWN0ZWQuY2FsbChjb250ZXh0LmluamVjdG9yLCB0b2tlbiwgbm90Rm91bmRWYWx1ZSwgb3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGV4dGVuc2lvbkRhdGE7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHsgZ2V0IH07XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { ChangeDetectionStrategy, Component, Injector, inject } from '@angular/core';\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\nimport { LocalizationPipe, PermissionDirective } from '@abp/ng.core';\nimport { NgClass, NgComponentOutlet } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class PageToolbarComponent extends AbstractActionsComponent {\n constructor() {\n const injector = inject(Injector);\n super();\n this.defaultBtnClass = 'btn btn-sm btn-primary';\n this.getData = () => this.data;\n this.trackByFn = (_, item) => item.action || item.component;\n this.injector = injector;\n }\n asToolbarAction(value) {\n return {\n value: value,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PageToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: PageToolbarComponent, isStandalone: true, selector: \"abp-page-toolbar\", providers: [\n {\n provide: EXTENSIONS_ACTION_TYPE,\n useValue: 'toolbarActions',\n },\n ], exportAs: [\"abpPageToolbar\"], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"row justify-content-end mx-0 gap-2\\\" id=\\\"AbpContentToolbar\\\">\\r\\n @for (action of actionList; track action.component || action.action; let last = $last) {\\r\\n <div class=\\\"col-auto px-0 pt-0\\\" [class.pe-0]=\\\"last\\\">\\r\\n @if (action.visible(data)) {\\r\\n <ng-container *abpPermission=\\\"action.permission; runChangeDetection: false\\\">\\r\\n @if (action.component; as component) {\\r\\n <ng-container\\r\\n *ngComponentOutlet=\\\"component; injector: record | createInjector: action:this\\\"\\r\\n ></ng-container>\\r\\n\\r\\n }@else {\\r\\n @if (asToolbarAction(action).value; as toolbarAction ) {\\r\\n <button\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n [ngClass]=\\\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\\\"\\r\\n class=\\\"d-inline-flex align-items-center gap-1\\\"\\r\\n >\\r\\n <i [ngClass]=\\\"toolbarAction?.icon\\\" [class.me-1]=\\\"toolbarAction?.icon\\\"></i>\\r\\n {{ toolbarAction?.text | abpLocalization }}\\r\\n </button>\\r\\n } \\r\\n }\\r\\n </ng-container>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n</div>\\r\\n\\r\\n\", dependencies: [{ kind: \"pipe\", type: CreateInjectorPipe, name: \"createInjector\" }, { kind: \"directive\", type: PermissionDirective, selector: \"[abpPermission]\", inputs: [\"abpPermission\", \"abpPermissionRunChangeDetection\"] }, { kind: \"pipe\", type: LocalizationPipe, name: \"abpLocalization\" }, { kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: PageToolbarComponent, decorators: [{\n type: Component,\n args: [{ exportAs: 'abpPageToolbar', selector: 'abp-page-toolbar', imports: [\n CreateInjectorPipe,\n PermissionDirective,\n LocalizationPipe,\n NgClass,\n NgComponentOutlet,\n ], providers: [\n {\n provide: EXTENSIONS_ACTION_TYPE,\n useValue: 'toolbarActions',\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"row justify-content-end mx-0 gap-2\\\" id=\\\"AbpContentToolbar\\\">\\r\\n @for (action of actionList; track action.component || action.action; let last = $last) {\\r\\n <div class=\\\"col-auto px-0 pt-0\\\" [class.pe-0]=\\\"last\\\">\\r\\n @if (action.visible(data)) {\\r\\n <ng-container *abpPermission=\\\"action.permission; runChangeDetection: false\\\">\\r\\n @if (action.component; as component) {\\r\\n <ng-container\\r\\n *ngComponentOutlet=\\\"component; injector: record | createInjector: action:this\\\"\\r\\n ></ng-container>\\r\\n\\r\\n }@else {\\r\\n @if (asToolbarAction(action).value; as toolbarAction ) {\\r\\n <button\\r\\n (click)=\\\"action.action(data)\\\"\\r\\n type=\\\"button\\\"\\r\\n [ngClass]=\\\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\\\"\\r\\n class=\\\"d-inline-flex align-items-center gap-1\\\"\\r\\n >\\r\\n <i [ngClass]=\\\"toolbarAction?.icon\\\" [class.me-1]=\\\"toolbarAction?.icon\\\"></i>\\r\\n {{ toolbarAction?.text | abpLocalization }}\\r\\n </button>\\r\\n } \\r\\n }\\r\\n </ng-container>\\r\\n }\\r\\n </div>\\r\\n }\\r\\n</div>\\r\\n\\r\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS10b29sYmFyL3BhZ2UtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtdG9vbGJhci9wYWdlLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQXFCN0QsTUFBTSxPQUFPLG9CQUNYLFNBQVEsd0JBQThDO0lBWXREO1FBQ0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxDLEtBQUssRUFBRSxDQUFDO1FBVlYsb0JBQWUsR0FBRyx3QkFBd0IsQ0FBQztRQUUzQyxZQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUVqQixjQUFTLEdBQXlDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ3JFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztRQU85QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQTJCO1FBQ3pDLE9BQU87WUFDTCxLQUFLLEVBQUUsS0FBc0I7U0FDOUIsQ0FBQztJQUNKLENBQUM7OEdBekJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtEQVJwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFFBQVEsRUFBRSxnQkFBZ0I7YUFDM0I7U0FDRiwrRUM5QkgsNHBDQTZCQSx1Q0RYSSxrQkFBa0IsdURBQ2xCLG1CQUFtQixxSEFDbkIsZ0JBQWdCLHdEQUNoQixPQUFPLG9GQUNQLGlCQUFpQjs7MkZBV1Isb0JBQW9CO2tCQW5CaEMsU0FBUzsrQkFDRSxnQkFBZ0IsWUFDaEIsa0JBQWtCLFdBQ25CO3dCQUNQLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsaUJBQWlCO3FCQUNsQixhQUVVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFFBQVEsRUFBRSxnQkFBZ0I7eUJBQzNCO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIFRyYWNrQnlGdW5jdGlvbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSGFzQ3JlYXRlSW5qZWN0b3JQaXBlLFxyXG4gIFRvb2xiYXJBY3Rpb24sXHJcbiAgVG9vbGJhckFjdGlvbkRlZmF1bHQsXHJcbiAgVG9vbGJhckFjdGlvbkxpc3QsXHJcbiAgVG9vbGJhckNvbXBvbmVudCxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdG9vbGJhci1hY3Rpb25zJztcclxuaW1wb3J0IHsgRVhURU5TSU9OU19BQ1RJT05fVFlQRSB9IGZyb20gJy4uLy4uL3Rva2Vucy9leHRlbnNpb25zLnRva2VuJztcclxuaW1wb3J0IHsgQWJzdHJhY3RBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtYWN0aW9ucy9hYnN0cmFjdC1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENyZWF0ZUluamVjdG9yUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2NyZWF0ZS1pbmplY3Rvci5waXBlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uUGlwZSwgUGVybWlzc2lvbkRpcmVjdGl2ZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGV4cG9ydEFzOiAnYWJwUGFnZVRvb2xiYXInLFxyXG4gIHNlbGVjdG9yOiAnYWJwLXBhZ2UtdG9vbGJhcicsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ3JlYXRlSW5qZWN0b3JQaXBlLFxyXG4gICAgUGVybWlzc2lvbkRpcmVjdGl2ZSxcclxuICAgIExvY2FsaXphdGlvblBpcGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19BQ1RJT05fVFlQRSxcclxuICAgICAgdXNlVmFsdWU6ICd0b29sYmFyQWN0aW9ucycsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlVG9vbGJhckNvbXBvbmVudDxSID0gYW55PlxyXG4gIGV4dGVuZHMgQWJzdHJhY3RBY3Rpb25zQ29tcG9uZW50PFRvb2xiYXJBY3Rpb25MaXN0PFI+PlxyXG4gIGltcGxlbWVudHMgSGFzQ3JlYXRlSW5qZWN0b3JQaXBlPFI+XHJcbntcclxuICByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XHJcblxyXG4gIGRlZmF1bHRCdG5DbGFzcyA9ICdidG4gYnRuLXNtIGJ0bi1wcmltYXJ5JztcclxuXHJcbiAgZ2V0RGF0YSA9ICgpID0+IHRoaXMuZGF0YTtcclxuXHJcbiAgcmVhZG9ubHkgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248VG9vbGJhckNvbXBvbmVudDxSPj4gPSAoXywgaXRlbSkgPT5cclxuICAgIGl0ZW0uYWN0aW9uIHx8IGl0ZW0uY29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgICBzdXBlcigpO1xyXG4gIFxyXG4gICAgdGhpcy5pbmplY3RvciA9IGluamVjdG9yO1xyXG4gIH1cclxuXHJcbiAgYXNUb29sYmFyQWN0aW9uKHZhbHVlOiBUb29sYmFyQWN0aW9uRGVmYXVsdCk6IHsgdmFsdWU6IFRvb2xiYXJBY3Rpb24gfSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB2YWx1ZTogdmFsdWUgYXMgVG9vbGJhckFjdGlvbixcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWVuZCBteC0wIGdhcC0yXCIgaWQ9XCJBYnBDb250ZW50VG9vbGJhclwiPlxyXG4gIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25MaXN0OyB0cmFjayBhY3Rpb24uY29tcG9uZW50IHx8IGFjdGlvbi5hY3Rpb247IGxldCBsYXN0ID0gJGxhc3QpIHtcclxuICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMCBwdC0wXCIgW2NsYXNzLnBlLTBdPVwibGFzdFwiPlxyXG4gICAgQGlmIChhY3Rpb24udmlzaWJsZShkYXRhKSkge1xyXG4gICAgPG5nLWNvbnRhaW5lciAqYWJwUGVybWlzc2lvbj1cImFjdGlvbi5wZXJtaXNzaW9uOyBydW5DaGFuZ2VEZXRlY3Rpb246IGZhbHNlXCI+XHJcbiAgICAgIEBpZiAoYWN0aW9uLmNvbXBvbmVudDsgYXMgY29tcG9uZW50KSB7XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wb25lbnQ7IGluamVjdG9yOiByZWNvcmQgfCBjcmVhdGVJbmplY3RvcjogYWN0aW9uOnRoaXNcIlxyXG4gICAgICA+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICB9QGVsc2Uge1xyXG4gICAgICAgICBAaWYgKGFzVG9vbGJhckFjdGlvbihhY3Rpb24pLnZhbHVlOyBhcyB0b29sYmFyQWN0aW9uICkge1xyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmFjdGlvbihkYXRhKVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0b29sYmFyQWN0aW9uPy5idG5DbGFzcyA/IHRvb2xiYXJBY3Rpb24/LmJ0bkNsYXNzIDogZGVmYXVsdEJ0bkNsYXNzXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cInRvb2xiYXJBY3Rpb24/Lmljb25cIiBbY2xhc3MubWUtMV09XCJ0b29sYmFyQWN0aW9uPy5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICB7eyB0b29sYmFyQWN0aW9uPy50ZXh0IHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG5cclxuIl19","import { ControlContainer, FormGroupDirective } from \"@angular/forms\";\nexport const EXTENSIBLE_FORM_VIEW_PROVIDER = { provide: ControlContainer, useExisting: FormGroupDirective };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS1mb3JtLXZpZXctcHJvdmlkZXIudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi90b2tlbnMvZXh0ZW5zaWJsZS1mb3JtLXZpZXctcHJvdmlkZXIudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBFWFRFTlNJQkxFX0ZPUk1fVklFV19QUk9WSURFUiA9IHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9XHJcbiJdfQ==","export function mergeWithDefaultActions(extension, defaultActions, ...contributors) {\n Object.keys(defaultActions).forEach((name) => {\n const actions = extension.get(name);\n actions.clearContributors();\n actions.addContributor((actionList) => actionList.addManyTail(defaultActions[name]));\n contributors.forEach(contributor => (contributor[name] || []).forEach((callback) => actions.addContributor(callback)));\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvdXRpbHMvYWN0aW9ucy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNBLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsU0FBWSxFQUNaLGNBQXlDLEVBQ3pDLEdBQUcsWUFBcUQ7SUFFeEQsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUNuRCxNQUFNLE9BQU8sR0FBdUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1QixPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBZ0QsRUFBRSxFQUFFLENBQzFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzdDLENBQUM7UUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQ2pDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQXdDLEVBQUUsRUFBRSxDQUM3RSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUNqQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrLCBBY3Rpb25MaXN0LCBBY3Rpb25zRmFjdG9yeSwgSW5mZXJyZWRBY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzL2FjdGlvbnNcIjtcclxuaW1wb3J0IHtcclxuICBFbnRpdHlBY3Rpb25Db250cmlidXRvckNhbGxiYWNrcyxcclxuICBFbnRpdHlBY3Rpb25EZWZhdWx0cyxcclxuICBFbnRpdHlBY3Rpb25zLFxyXG4gIEVudGl0eUFjdGlvbnNGYWN0b3J5LFxyXG59IGZyb20gJy4uL21vZGVscy9lbnRpdHktYWN0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgVG9vbGJhckFjdGlvbkNvbnRyaWJ1dG9yQ2FsbGJhY2tzLFxyXG4gIFRvb2xiYXJBY3Rpb25EZWZhdWx0cyxcclxuICBUb29sYmFyQWN0aW9ucyxcclxuICBUb29sYmFyQWN0aW9uc0ZhY3RvcnksXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3Rvb2xiYXItYWN0aW9ucyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VXaXRoRGVmYXVsdEFjdGlvbnM8RiBleHRlbmRzIEFjdGlvbnNGYWN0b3J5PGFueT4+KFxyXG4gIGV4dGVuc2lvbjogRixcclxuICBkZWZhdWx0QWN0aW9uczogSW5mZXJyZWRBY3Rpb25EZWZhdWx0czxGPixcclxuICAuLi5jb250cmlidXRvcnM6IEluZmVycmVkQWN0aW9uQ29udHJpYnV0b3JDYWxsYmFja3M8Rj5bXVxyXG4pIHtcclxuICBPYmplY3Qua2V5cyhkZWZhdWx0QWN0aW9ucykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBhY3Rpb25zOiBJbmZlcnJlZEFjdGlvbnM8Rj4gPSBleHRlbnNpb24uZ2V0KG5hbWUpO1xyXG4gICAgYWN0aW9ucy5jbGVhckNvbnRyaWJ1dG9ycygpO1xyXG4gICAgYWN0aW9ucy5hZGRDb250cmlidXRvcigoYWN0aW9uTGlzdDogQWN0aW9uTGlzdDxhbnksIEluZmVycmVkQWN0aW9uPGFueT4+KSA9PlxyXG4gICAgICBhY3Rpb25MaXN0LmFkZE1hbnlUYWlsKGRlZmF1bHRBY3Rpb25zW25hbWVdKSxcclxuICAgICk7XHJcbiAgICBjb250cmlidXRvcnMuZm9yRWFjaChjb250cmlidXRvciA9PlxyXG4gICAgICAoY29udHJpYnV0b3JbbmFtZV0gfHwgW10pLmZvckVhY2goKGNhbGxiYWNrOiBBY3Rpb25Db250cmlidXRvckNhbGxiYWNrPGFueT4pID0+XHJcbiAgICAgICAgYWN0aW9ucy5hZGRDb250cmlidXRvcihjYWxsYmFjayksXHJcbiAgICAgICksXHJcbiAgICApO1xyXG4gIH0pO1xyXG59XHJcbnR5cGUgSW5mZXJyZWRBY3Rpb25EZWZhdWx0czxGPiA9IEYgZXh0ZW5kcyBFbnRpdHlBY3Rpb25zRmFjdG9yeTxpbmZlciBSRT5cclxuICA/IEVudGl0eUFjdGlvbkRlZmF1bHRzPFJFPlxyXG4gIDogRiBleHRlbmRzIFRvb2xiYXJBY3Rpb25zRmFjdG9yeTxpbmZlciBSVD5cclxuICA/IFRvb2xiYXJBY3Rpb25EZWZhdWx0czxSVD5cclxuICA6IG5ldmVyO1xyXG5cclxudHlwZSBJbmZlcnJlZEFjdGlvbkNvbnRyaWJ1dG9yQ2FsbGJhY2tzPEY+ID0gRiBleHRlbmRzIEVudGl0eUFjdGlvbnNGYWN0b3J5PGluZmVyIFJFPlxyXG4gID8gRW50aXR5QWN0aW9uQ29udHJpYnV0b3JDYWxsYmFja3M8UkU+XHJcbiAgOiBGIGV4dGVuZHMgVG9vbGJhckFjdGlvbnNGYWN0b3J5PGluZmVyIFJUPlxyXG4gID8gVG9vbGJhckFjdGlvbkNvbnRyaWJ1dG9yQ2FsbGJhY2tzPFJUPlxyXG4gIDogbmV2ZXI7XHJcblxyXG50eXBlIEluZmVycmVkQWN0aW9uczxGPiA9IEYgZXh0ZW5kcyBFbnRpdHlBY3Rpb25zRmFjdG9yeTxpbmZlciBSRT5cclxuICA/IEVudGl0eUFjdGlvbnM8UkU+XHJcbiAgOiBGIGV4dGVuZHMgVG9vbGJhckFjdGlvbnNGYWN0b3J5PGluZmVyIFJUPlxyXG4gID8gVG9vbGJhckFjdGlvbnM8UlQ+XHJcbiAgOiBuZXZlcjtcclxuIl19","import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { DateTimeAdapter, DateAdapter, TimeAdapter } from '@abp/ng.theme.shared';\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\nimport { ExtensionsService } from '../services/extensions.service';\nimport { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token';\nexport function generateFormFromProps(data) {\n const extensions = data.getInjected((ExtensionsService));\n const identifier = data.getInjected(EXTENSIONS_IDENTIFIER);\n const form = new UntypedFormGroup({});\n const extraForm = new UntypedFormGroup({});\n form.addControl(EXTRA_PROPERTIES_KEY, extraForm);\n const record = data.record || {};\n const type = JSON.stringify(record) === '{}' ? 'create' : 'edit';\n const props = extensions[`${type}FormProps`].get(identifier).props;\n const extraProperties = record[EXTRA_PROPERTIES_KEY] || {};\n props.forEach(({ value: prop }) => {\n const name = prop.name;\n const isExtraProperty = prop.isExtra || name in extraProperties;\n let value = undefined;\n if (isExtraProperty) {\n value = extraProperties[name];\n }\n else if (name in record) {\n value = record[name];\n }\n if (typeof value === 'undefined')\n value = prop.defaultValue;\n if (value) {\n let adapter;\n switch (prop.type) {\n case \"date\" /* ePropType.Date */:\n adapter = new DateAdapter();\n value = adapter.toModel(adapter.fromModel(value));\n break;\n case \"time\" /* ePropType.Time */:\n adapter = new TimeAdapter();\n value = adapter.toModel(adapter.fromModel(value));\n break;\n case \"datetime\" /* ePropType.DateTime */:\n adapter = new DateTimeAdapter();\n value = adapter.toModel(adapter.fromModel(value));\n break;\n default:\n break;\n }\n }\n const formControl = new UntypedFormControl(value, {\n asyncValidators: prop.asyncValidators(data),\n validators: prop.validators(data),\n });\n (isExtraProperty ? extraForm : form).addControl(name, formControl);\n });\n return form;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wcm9wcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvdXRpbHMvZm9ybS1wcm9wcy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSXJFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE1BQU0sVUFBVSxxQkFBcUIsQ0FBVSxJQUFpQjtJQUM5RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUEsaUJBQW9CLENBQUEsQ0FBQyxDQUFDO0lBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUzRCxNQUFNLElBQUksR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakUsTUFBTSxLQUFLLEdBQW9CLFVBQVUsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksSUFBSSxlQUFlLENBQUM7UUFFaEUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRXRCLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO2FBQU0sSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFNUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksT0FBb0QsQ0FBQztZQUN6RCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEI7b0JBQ0UsT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQzVCLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbEQsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDNUIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxNQUFNO2dCQUNSO29CQUNFLE9BQU8sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNoQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBUSxDQUFDLENBQUM7b0JBQ3pELE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDaEQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQzNDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUNsQyxDQUFDLENBQUM7UUFFSCxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRlVGltZUFkYXB0ZXIsIERhdGVBZGFwdGVyLCBUaW1lQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IEVYVFJBX1BST1BFUlRJRVNfS0VZIH0gZnJvbSAnLi4vY29uc3RhbnRzL2V4dHJhLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgeyBlUHJvcFR5cGUgfSBmcm9tICcuLi9lbnVtcy9wcm9wcy5lbnVtJztcclxuaW1wb3J0IHsgRm9ybVByb3BMaXN0IH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tcHJvcHMnO1xyXG5pbXBvcnQgeyBQcm9wRGF0YSB9IGZyb20gJy4uL21vZGVscy9wcm9wcyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnLi4vdG9rZW5zL2V4dGVuc2lvbnMudG9rZW4nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRm9ybUZyb21Qcm9wczxSID0gYW55PihkYXRhOiBQcm9wRGF0YTxSPikge1xyXG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBkYXRhLmdldEluamVjdGVkKEV4dGVuc2lvbnNTZXJ2aWNlPFI+KTtcclxuICBjb25zdCBpZGVudGlmaWVyID0gZGF0YS5nZXRJbmplY3RlZChFWFRFTlNJT05TX0lERU5USUZJRVIpO1xyXG5cclxuICBjb25zdCBmb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG4gIGNvbnN0IGV4dHJhRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcclxuICBmb3JtLmFkZENvbnRyb2woRVhUUkFfUFJPUEVSVElFU19LRVksIGV4dHJhRm9ybSk7XHJcblxyXG4gIGNvbnN0IHJlY29yZCA9IGRhdGEucmVjb3JkIHx8IHt9O1xyXG4gIGNvbnN0IHR5cGUgPSBKU09OLnN0cmluZ2lmeShyZWNvcmQpID09PSAne30nID8gJ2NyZWF0ZScgOiAnZWRpdCc7XHJcbiAgY29uc3QgcHJvcHM6IEZvcm1Qcm9wTGlzdDxSPiA9IGV4dGVuc2lvbnNbYCR7dHlwZX1Gb3JtUHJvcHNgXS5nZXQoaWRlbnRpZmllcikucHJvcHM7XHJcbiAgY29uc3QgZXh0cmFQcm9wZXJ0aWVzID0gcmVjb3JkW0VYVFJBX1BST1BFUlRJRVNfS0VZXSB8fCB7fTtcclxuXHJcbiAgcHJvcHMuZm9yRWFjaCgoeyB2YWx1ZTogcHJvcCB9KSA9PiB7XHJcbiAgICBjb25zdCBuYW1lID0gcHJvcC5uYW1lO1xyXG4gICAgY29uc3QgaXNFeHRyYVByb3BlcnR5ID0gcHJvcC5pc0V4dHJhIHx8IG5hbWUgaW4gZXh0cmFQcm9wZXJ0aWVzO1xyXG5cclxuICAgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAoaXNFeHRyYVByb3BlcnR5KSB7XHJcbiAgICAgIHZhbHVlID0gZXh0cmFQcm9wZXJ0aWVzW25hbWVdO1xyXG4gICAgfSBlbHNlIGlmIChuYW1lIGluIHJlY29yZCkge1xyXG4gICAgICB2YWx1ZSA9IHJlY29yZFtuYW1lXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykgdmFsdWUgPSBwcm9wLmRlZmF1bHRWYWx1ZTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IGFkYXB0ZXI6IERhdGVBZGFwdGVyIHwgVGltZUFkYXB0ZXIgfCBEYXRlVGltZUFkYXB0ZXI7XHJcbiAgICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XHJcbiAgICAgICAgY2FzZSBlUHJvcFR5cGUuRGF0ZTpcclxuICAgICAgICAgIGFkYXB0ZXIgPSBuZXcgRGF0ZUFkYXB0ZXIoKTtcclxuICAgICAgICAgIHZhbHVlID0gYWRhcHRlci50b01vZGVsKGFkYXB0ZXIuZnJvbU1vZGVsKHZhbHVlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIGVQcm9wVHlwZS5UaW1lOlxyXG4gICAgICAgICAgYWRhcHRlciA9IG5ldyBUaW1lQWRhcHRlcigpO1xyXG4gICAgICAgICAgdmFsdWUgPSBhZGFwdGVyLnRvTW9kZWwoYWRhcHRlci5mcm9tTW9kZWwodmFsdWUpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgZVByb3BUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgYWRhcHRlciA9IG5ldyBEYXRlVGltZUFkYXB0ZXIoKTtcclxuICAgICAgICAgIHZhbHVlID0gYWRhcHRlci50b01vZGVsKGFkYXB0ZXIuZnJvbU1vZGVsKHZhbHVlKSBhcyBhbnkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHZhbHVlLCB7XHJcbiAgICAgIGFzeW5jVmFsaWRhdG9yczogcHJvcC5hc3luY1ZhbGlkYXRvcnMoZGF0YSksXHJcbiAgICAgIHZhbGlkYXRvcnM6IHByb3AudmFsaWRhdG9ycyhkYXRhKSxcclxuICAgIH0pO1xyXG5cclxuICAgIChpc0V4dHJhUHJvcGVydHkgPyBleHRyYUZvcm0gOiBmb3JtKS5hZGRDb250cm9sKG5hbWUsIGZvcm1Db250cm9sKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGZvcm07XHJcbn1cclxuIl19","import { ConfigStateService, PermissionService } from '@abp/ng.core';\nimport { of } from 'rxjs';\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\nexport function createExtraPropertyValueResolver(name) {\n return (data) => of(data.record[EXTRA_PROPERTIES_KEY][name]);\n}\nexport function mergeWithDefaultProps(extension, defaultProps, ...contributors) {\n Object.keys(defaultProps).forEach((name) => {\n const props = extension.get(name);\n props.clearContributors();\n props.addContributor((propList) => propList.addManyTail(defaultProps[name]));\n contributors.forEach(contributor => (contributor[name] || []).forEach((callback) => props.addContributor(callback)));\n });\n}\nexport function checkPolicies(injector, properties) {\n const configState = injector.get(ConfigStateService);\n const permission = injector.get(PermissionService);\n const props = Object.entries(properties);\n const checkPolicy = (policy) => {\n const { permissions, globalFeatures, features } = policy || {};\n const checks = [\n {\n items: permissions?.permissionNames,\n requiresAll: permissions?.requiresAll,\n check: (item) => permission.getGrantedPolicy(item),\n },\n {\n items: globalFeatures?.features,\n requiresAll: globalFeatures?.requiresAll,\n check: (item) => configState.getGlobalFeatureIsEnabled(item),\n },\n {\n items: features?.features,\n requiresAll: features?.requiresAll,\n check: (item) => configState.getFeatureIsEnabled(item),\n },\n ];\n return checks.every(({ items, requiresAll, check }) => {\n if (!items?.length) {\n return true;\n }\n return requiresAll ? items.every(check) : items.some(check);\n });\n };\n props.forEach(([name, property]) => {\n if (property.policy && !checkPolicy(property.policy)) {\n delete properties[name];\n }\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcHMudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL3V0aWxzL3Byb3BzLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUEwQnJFLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDOUMsSUFBWTtJQUVaLE9BQU8sQ0FBQyxJQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBRSxJQUFJLENBQUMsTUFBaUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDNUYsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsU0FBWSxFQUNaLFlBQXFDLEVBQ3JDLEdBQUcsWUFBbUQ7SUFFdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUNqRCxNQUFNLEtBQUssR0FBcUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxQixLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBMEMsRUFBRSxFQUFFLENBQ2xFLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pDLENBQUM7UUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQ2pDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQXNDLEVBQUUsRUFBRSxDQUMzRSxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUMvQixDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixRQUFrQixFQUNsQixVQUFzRDtJQUV0RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQVcsRUFBRTtRQUM5QyxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBRS9ELE1BQU0sTUFBTSxHQUFHO1lBQ2I7Z0JBQ0UsS0FBSyxFQUFFLFdBQVcsRUFBRSxlQUFlO2dCQUNuQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVc7Z0JBQ3JDLEtBQUssRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQzthQUMzRDtZQUNEO2dCQUNFLEtBQUssRUFBRSxjQUFjLEVBQUUsUUFBUTtnQkFDL0IsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXO2dCQUN4QyxLQUFLLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUM7YUFDckU7WUFDRDtnQkFDRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVE7Z0JBQ3pCLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVztnQkFDbEMsS0FBSyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2FBQy9EO1NBQ0YsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDakMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UsIFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7XHJcbiAgRW50aXR5UHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2tzLFxyXG4gIEVudGl0eVByb3BEZWZhdWx0cyxcclxuICBFbnRpdHlQcm9wcyxcclxuICBFbnRpdHlQcm9wc0ZhY3RvcnksXHJcbn0gZnJvbSAnLi4vbW9kZWxzL2VudGl0eS1wcm9wcyc7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlRm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrcyxcclxuICBDcmVhdGVGb3JtUHJvcERlZmF1bHRzLFxyXG4gIENyZWF0ZUZvcm1Qcm9wc0ZhY3RvcnksXHJcbiAgRWRpdEZvcm1Qcm9wQ29udHJpYnV0b3JDYWxsYmFja3MsXHJcbiAgRWRpdEZvcm1Qcm9wRGVmYXVsdHMsXHJcbiAgRWRpdEZvcm1Qcm9wc0ZhY3RvcnksXHJcbiAgRm9ybVByb3BzLFxyXG59IGZyb20gJy4uL21vZGVscy9mb3JtLXByb3BzJztcclxuaW1wb3J0IHtcclxuICBJbmZlcnJlZFByb3AsXHJcbiAgUHJvcENhbGxiYWNrLFxyXG4gIFByb3BDb250cmlidXRvckNhbGxiYWNrLFxyXG4gIFByb3BMaXN0LFxyXG4gIFByb3BzRmFjdG9yeSxcclxufSBmcm9tICcuLi9tb2RlbHMvcHJvcHMnO1xyXG5pbXBvcnQgeyBQb2xpY3kgfSBmcm9tICcuLi9tb2RlbHMvaW50ZXJuYWwvb2JqZWN0LWV4dGVuc2lvbnMnO1xyXG5pbXBvcnQgeyBPYmplY3RFeHRlbnNpb25zIH0gZnJvbSAnLi4vbW9kZWxzL29iamVjdC1leHRlbnNpb25zJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFeHRyYVByb3BlcnR5VmFsdWVSZXNvbHZlcjxUPihcclxuICBuYW1lOiBzdHJpbmcsXHJcbik6IFByb3BDYWxsYmFjazxULCBPYnNlcnZhYmxlPGFueT4+IHtcclxuICByZXR1cm4gKGRhdGE/KSA9PiBvZigoZGF0YS5yZWNvcmQgYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSlbRVhUUkFfUFJPUEVSVElFU19LRVldW25hbWVdKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlV2l0aERlZmF1bHRQcm9wczxGIGV4dGVuZHMgUHJvcHNGYWN0b3J5PGFueT4+KFxyXG4gIGV4dGVuc2lvbjogRixcclxuICBkZWZhdWx0UHJvcHM6IEluZmVycmVkUHJvcERlZmF1bHRzPEY+LFxyXG4gIC4uLmNvbnRyaWJ1dG9yczogSW5mZXJyZWRQcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8Rj5bXVxyXG4pIHtcclxuICBPYmplY3Qua2V5cyhkZWZhdWx0UHJvcHMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgcHJvcHM6IEluZmVycmVkUHJvcHM8Rj4gPSBleHRlbnNpb24uZ2V0KG5hbWUpO1xyXG4gICAgcHJvcHMuY2xlYXJDb250cmlidXRvcnMoKTtcclxuICAgIHByb3BzLmFkZENvbnRyaWJ1dG9yKChwcm9wTGlzdDogUHJvcExpc3Q8YW55LCBJbmZlcnJlZFByb3A8YW55Pj4pID0+XHJcbiAgICAgIHByb3BMaXN0LmFkZE1hbnlUYWlsKGRlZmF1bHRQcm9wc1tuYW1lXSksXHJcbiAgICApO1xyXG4gICAgY29udHJpYnV0b3JzLmZvckVhY2goY29udHJpYnV0b3IgPT5cclxuICAgICAgKGNvbnRyaWJ1dG9yW25hbWVdIHx8IFtdKS5mb3JFYWNoKChjYWxsYmFjazogUHJvcENvbnRyaWJ1dG9yQ2FsbGJhY2s8YW55PikgPT5cclxuICAgICAgICBwcm9wcy5hZGRDb250cmlidXRvcihjYWxsYmFjayksXHJcbiAgICAgICksXHJcbiAgICApO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQb2xpY2llcyhcclxuICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgcHJvcGVydGllczogT2JqZWN0RXh0ZW5zaW9ucy5FbnRpdHlFeHRlbnNpb25Qcm9wZXJ0aWVzLFxyXG4pIHtcclxuICBjb25zdCBjb25maWdTdGF0ZSA9IGluamVjdG9yLmdldChDb25maWdTdGF0ZVNlcnZpY2UpO1xyXG4gIGNvbnN0IHBlcm1pc3Npb24gPSBpbmplY3Rvci5nZXQoUGVybWlzc2lvblNlcnZpY2UpO1xyXG4gIGNvbnN0IHByb3BzID0gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcyk7XHJcblxyXG4gIGNvbnN0IGNoZWNrUG9saWN5ID0gKHBvbGljeTogUG9saWN5KTogYm9vbGVhbiA9PiB7XHJcbiAgICBjb25zdCB7IHBlcm1pc3Npb25zLCBnbG9iYWxGZWF0dXJlcywgZmVhdHVyZXMgfSA9IHBvbGljeSB8fCB7fTtcclxuXHJcbiAgICBjb25zdCBjaGVja3MgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpdGVtczogcGVybWlzc2lvbnM/LnBlcm1pc3Npb25OYW1lcyxcclxuICAgICAgICByZXF1aXJlc0FsbDogcGVybWlzc2lvbnM/LnJlcXVpcmVzQWxsLFxyXG4gICAgICAgIGNoZWNrOiAoaXRlbTogc3RyaW5nKSA9PiBwZXJtaXNzaW9uLmdldEdyYW50ZWRQb2xpY3koaXRlbSksXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpdGVtczogZ2xvYmFsRmVhdHVyZXM/LmZlYXR1cmVzLFxyXG4gICAgICAgIHJlcXVpcmVzQWxsOiBnbG9iYWxGZWF0dXJlcz8ucmVxdWlyZXNBbGwsXHJcbiAgICAgICAgY2hlY2s6IChpdGVtOiBzdHJpbmcpID0+IGNvbmZpZ1N0YXRlLmdldEdsb2JhbEZlYXR1cmVJc0VuYWJsZWQoaXRlbSksXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpdGVtczogZmVhdHVyZXM/LmZlYXR1cmVzLFxyXG4gICAgICAgIHJlcXVpcmVzQWxsOiBmZWF0dXJlcz8ucmVxdWlyZXNBbGwsXHJcbiAgICAgICAgY2hlY2s6IChpdGVtOiBzdHJpbmcpID0+IGNvbmZpZ1N0YXRlLmdldEZlYXR1cmVJc0VuYWJsZWQoaXRlbSksXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBjaGVja3MuZXZlcnkoKHsgaXRlbXMsIHJlcXVpcmVzQWxsLCBjaGVjayB9KSA9PiB7XHJcbiAgICAgIGlmICghaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcmVxdWlyZXNBbGwgPyBpdGVtcy5ldmVyeShjaGVjaykgOiBpdGVtcy5zb21lKGNoZWNrKTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHByb3BzLmZvckVhY2goKFtuYW1lLCBwcm9wZXJ0eV0pID0+IHtcclxuICAgIGlmIChwcm9wZXJ0eS5wb2xpY3kgJiYgIWNoZWNrUG9saWN5KHByb3BlcnR5LnBvbGljeSkpIHtcclxuICAgICAgZGVsZXRlIHByb3BlcnRpZXNbbmFtZV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbnR5cGUgSW5mZXJyZWRQcm9wRGVmYXVsdHM8Rj4gPVxyXG4gIEYgZXh0ZW5kcyBFbnRpdHlQcm9wc0ZhY3Rvcnk8aW5mZXIgUkU+XHJcbiAgICA/IEVudGl0eVByb3BEZWZhdWx0czxSRT5cclxuICAgIDogRiBleHRlbmRzIENyZWF0ZUZvcm1Qcm9wc0ZhY3Rvcnk8aW5mZXIgUkNGPlxyXG4gICAgICA/IENyZWF0ZUZvcm1Qcm9wRGVmYXVsdHM8UkNGPlxyXG4gICAgICA6IEYgZXh0ZW5kcyBFZGl0Rm9ybVByb3BzRmFjdG9yeTxpbmZlciBSRUY+XHJcbiAgICAgICAgPyBFZGl0Rm9ybVByb3BEZWZhdWx0czxSRUY+XHJcbiAgICAgICAgOiBuZXZlcjtcclxuXHJcbnR5cGUgSW5mZXJyZWRQcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8Rj4gPVxyXG4gIEYgZXh0ZW5kcyBFbnRpdHlQcm9wc0ZhY3Rvcnk8aW5mZXIgUkU+XHJcbiAgICA/IEVudGl0eVByb3BDb250cmlidXRvckNhbGxiYWNrczxSRT5cclxuICAgIDogRiBleHRlbmRzIENyZWF0ZUZvcm1Qcm9wc0ZhY3Rvcnk8aW5mZXIgUkNGPlxyXG4gICAgICA/IENyZWF0ZUZvcm1Qcm9wQ29udHJpYnV0b3JDYWxsYmFja3M8UkNGPlxyXG4gICAgICA6IEYgZXh0ZW5kcyBFZGl0Rm9ybVByb3BzRmFjdG9yeTxpbmZlciBSRUY+XHJcbiAgICAgICAgPyBFZGl0Rm9ybVByb3BDb250cmlidXRvckNhbGxiYWNrczxSRUY+XHJcbiAgICAgICAgOiBuZXZlcjtcclxuXHJcbnR5cGUgSW5mZXJyZWRQcm9wczxGPiA9XHJcbiAgRiBleHRlbmRzIEVudGl0eVByb3BzRmFjdG9yeTxpbmZlciBSRT5cclxuICAgID8gRW50aXR5UHJvcHM8UkU+XHJcbiAgICA6IEYgZXh0ZW5kcyBDcmVhdGVGb3JtUHJvcHNGYWN0b3J5PGluZmVyIFJDRj5cclxuICAgICAgPyBGb3JtUHJvcHM8UkNGPlxyXG4gICAgICA6IEYgZXh0ZW5kcyBFZGl0Rm9ybVByb3BzRmFjdG9yeTxpbmZlciBSRUY+XHJcbiAgICAgICAgPyBGb3JtUHJvcHM8UkVGPlxyXG4gICAgICAgIDogbmV2ZXI7XHJcbiJdfQ==","import { LocalizationService } from '@abp/ng.core';\nimport { merge, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\nexport function createEnum(members) {\n const enumObject = {};\n members.forEach(({ name = '', value }) => {\n enumObject[(enumObject[name] = value)] = name;\n });\n return enumObject;\n}\nexport function createEnumValueResolver(enumType, lookupEnum, propName) {\n return data => {\n const value = data.record[EXTRA_PROPERTIES_KEY][propName];\n const key = lookupEnum.transformed[value];\n const l10n = data.getInjected(LocalizationService);\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\n return createLocalizationStream(l10n, localizeEnum(key));\n };\n}\nexport function createEnumOptions(enumType, lookupEnum) {\n return data => {\n const l10n = data.getInjected(LocalizationService);\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\n return createLocalizationStream(l10n, lookupEnum.fields.map(({ name = '', value }) => ({\n key: localizeEnum(name),\n value,\n })));\n };\n}\nfunction createLocalizationStream(l10n, mapTarget) {\n return merge(of(null), l10n.languageChange$).pipe(map(() => mapTarget));\n}\nfunction createEnumLocalizer(l10n, enumType, lookupEnum) {\n const resource = lookupEnum.localizationResource;\n const shortType = getShortEnumType(enumType);\n return key => l10n.localizeWithFallbackSync([resource || ''], ['Enum:' + shortType + '.' + key, shortType + '.' + key, key], key);\n}\nfunction getShortEnumType(enumType) {\n return enumType.split('.').pop();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvdXRpbHMvZW51bS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSXJFLE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBZ0M7SUFDekQsTUFBTSxVQUFVLEdBQVEsRUFBRSxDQUFDO0lBRTNCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtRQUN2QyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBWSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxRQUFnQixFQUNoQixVQUE2QyxFQUM3QyxRQUFnQjtJQUVoQixPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osTUFBTSxLQUFLLEdBQUksSUFBSSxDQUFDLE1BQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckUsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsUUFBZ0IsRUFDaEIsVUFBNkM7SUFFN0MsT0FBTyxJQUFJLENBQUMsRUFBRTtRQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNuRCxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sd0JBQXdCLENBQzdCLElBQUksRUFDSixVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQyxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQztZQUN2QixLQUFLO1NBQ04sQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQXlCLEVBQUUsU0FBYztJQUN6RSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsSUFBeUIsRUFDekIsUUFBZ0IsRUFDaEIsVUFBNkM7SUFFN0MsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDO0lBQ2pELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FDWCxJQUFJLENBQUMsd0JBQXdCLENBQzNCLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUNoQixDQUFDLE9BQU8sR0FBRyxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFDN0QsR0FBRyxDQUNKLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFnQjtJQUN4QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgRXh0ZW5zaW9uRW51bUZpZWxkRHRvLCBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRVhUUkFfUFJPUEVSVElFU19LRVkgfSBmcm9tICcuLi9jb25zdGFudHMvZXh0cmEtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IE9iamVjdEV4dGVuc2lvbnMgfSBmcm9tICcuLi9tb2RlbHMvb2JqZWN0LWV4dGVuc2lvbnMnO1xyXG5pbXBvcnQgeyBQcm9wQ2FsbGJhY2sgfSBmcm9tICcuLi9tb2RlbHMvcHJvcHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudW0obWVtYmVyczogRXh0ZW5zaW9uRW51bUZpZWxkRHRvW10pIHtcclxuICBjb25zdCBlbnVtT2JqZWN0OiBhbnkgPSB7fTtcclxuXHJcbiAgbWVtYmVycy5mb3JFYWNoKCh7IG5hbWUgPSAnJywgdmFsdWUgfSkgPT4ge1xyXG4gICAgZW51bU9iamVjdFsoZW51bU9iamVjdFtuYW1lXSA9IHZhbHVlIGFzIGFueSldID0gbmFtZTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGVudW1PYmplY3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnVtVmFsdWVSZXNvbHZlcjxUID0gYW55PihcclxuICBlbnVtVHlwZTogc3RyaW5nLFxyXG4gIGxvb2t1cEVudW06IE9iamVjdEV4dGVuc2lvbnMuRXh0ZW5zaW9uRW51bUR0byxcclxuICBwcm9wTmFtZTogc3RyaW5nLFxyXG4pOiBQcm9wQ2FsbGJhY2s8VCwgT2JzZXJ2YWJsZTxzdHJpbmc+PiB7XHJcbiAgcmV0dXJuIGRhdGEgPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZGF0YS5yZWNvcmQgYXMgYW55KVtFWFRSQV9QUk9QRVJUSUVTX0tFWV1bcHJvcE5hbWVdO1xyXG4gICAgY29uc3Qga2V5ID0gbG9va3VwRW51bS50cmFuc2Zvcm1lZFt2YWx1ZV07XHJcbiAgICBjb25zdCBsMTBuID0gZGF0YS5nZXRJbmplY3RlZChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICAgIGNvbnN0IGxvY2FsaXplRW51bSA9IGNyZWF0ZUVudW1Mb2NhbGl6ZXIobDEwbiwgZW51bVR5cGUsIGxvb2t1cEVudW0pO1xyXG5cclxuICAgIHJldHVybiBjcmVhdGVMb2NhbGl6YXRpb25TdHJlYW0obDEwbiwgbG9jYWxpemVFbnVtKGtleSkpO1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnVtT3B0aW9uczxUID0gYW55PihcclxuICBlbnVtVHlwZTogc3RyaW5nLFxyXG4gIGxvb2t1cEVudW06IE9iamVjdEV4dGVuc2lvbnMuRXh0ZW5zaW9uRW51bUR0byxcclxuKTogUHJvcENhbGxiYWNrPFQsIE9ic2VydmFibGU8QUJQLk9wdGlvbjxhbnk+W10+PiB7XHJcbiAgcmV0dXJuIGRhdGEgPT4ge1xyXG4gICAgY29uc3QgbDEwbiA9IGRhdGEuZ2V0SW5qZWN0ZWQoTG9jYWxpemF0aW9uU2VydmljZSk7XHJcbiAgICBjb25zdCBsb2NhbGl6ZUVudW0gPSBjcmVhdGVFbnVtTG9jYWxpemVyKGwxMG4sIGVudW1UeXBlLCBsb29rdXBFbnVtKTtcclxuXHJcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxpemF0aW9uU3RyZWFtKFxyXG4gICAgICBsMTBuLFxyXG4gICAgICBsb29rdXBFbnVtLmZpZWxkcy5tYXAoKHsgbmFtZSA9ICcnLCB2YWx1ZSB9KSA9PiAoe1xyXG4gICAgICAgIGtleTogbG9jYWxpemVFbnVtKG5hbWUpLFxyXG4gICAgICAgIHZhbHVlLFxyXG4gICAgICB9KSksXHJcbiAgICApO1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUxvY2FsaXphdGlvblN0cmVhbShsMTBuOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBtYXBUYXJnZXQ6IGFueSkge1xyXG4gIHJldHVybiBtZXJnZShvZihudWxsKSwgbDEwbi5sYW5ndWFnZUNoYW5nZSQpLnBpcGUobWFwKCgpID0+IG1hcFRhcmdldCkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVFbnVtTG9jYWxpemVyKFxyXG4gIGwxMG46IExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgZW51bVR5cGU6IHN0cmluZyxcclxuICBsb29rdXBFbnVtOiBPYmplY3RFeHRlbnNpb25zLkV4dGVuc2lvbkVudW1EdG8sXHJcbik6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHtcclxuICBjb25zdCByZXNvdXJjZSA9IGxvb2t1cEVudW0ubG9jYWxpemF0aW9uUmVzb3VyY2U7XHJcbiAgY29uc3Qgc2hvcnRUeXBlID0gZ2V0U2hvcnRFbnVtVHlwZShlbnVtVHlwZSk7XHJcblxyXG4gIHJldHVybiBrZXkgPT5cclxuICAgIGwxMG4ubG9jYWxpemVXaXRoRmFsbGJhY2tTeW5jKFxyXG4gICAgICBbcmVzb3VyY2UgfHwgJyddLFxyXG4gICAgICBbJ0VudW06JyArIHNob3J0VHlwZSArICcuJyArIGtleSwgc2hvcnRUeXBlICsgJy4nICsga2V5LCBrZXldLFxyXG4gICAgICBrZXksXHJcbiAgICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTaG9ydEVudW1UeXBlKGVudW1UeXBlOiBzdHJpbmcpIHtcclxuICByZXR1cm4gZW51bVR5cGUuc3BsaXQoJy4nKS5wb3AoKTtcclxufVxyXG4iXX0=","import { createLocalizationPipeKeyGenerator, } from '@abp/ng.core';\nexport function createDisplayNameLocalizationPipeKeyGenerator(localization) {\n const generateLocalizationPipeKey = createLocalizationPipeKeyGenerator(localization);\n return (displayName, fallback) => {\n if (displayName && displayName.name)\n return generateLocalizationPipeKey([displayName.resource || ''], [displayName.name], displayName.name);\n const key = generateLocalizationPipeKey([fallback.resource || ''], ['DisplayName:' + fallback.name], undefined);\n if (key)\n return key;\n return generateLocalizationPipeKey([fallback.resource || ''], [fallback.name || ''], fallback.name);\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi91dGlscy9sb2NhbGl6YXRpb24udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsa0NBQWtDLEdBQ25DLE1BQU0sY0FBYyxDQUFDO0FBR3RCLE1BQU0sVUFBVSw2Q0FBNkMsQ0FDM0QsWUFBcUQ7SUFFckQsTUFBTSwyQkFBMkIsR0FBRyxrQ0FBa0MsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVyRixPQUFPLENBQ0wsV0FBa0QsRUFDbEQsUUFBK0MsRUFDL0MsRUFBRTtRQUNGLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJO1lBQ2pDLE9BQU8sMkJBQTJCLENBQ2hDLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFDNUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQ2pCLENBQUM7UUFFSixNQUFNLEdBQUcsR0FBRywyQkFBMkIsQ0FDckMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUN6QixDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQ2hDLFNBQVMsQ0FDVixDQUFDO1FBRUYsSUFBSSxHQUFHO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFcEIsT0FBTywyQkFBMkIsQ0FDaEMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUN6QixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQ3JCLFFBQVEsQ0FBQyxJQUFJLENBQ2QsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbkR0byxcclxuICBjcmVhdGVMb2NhbGl6YXRpb25QaXBlS2V5R2VuZXJhdG9yLFxyXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IE9iamVjdEV4dGVuc2lvbnMgfSBmcm9tICcuLi9tb2RlbHMvb2JqZWN0LWV4dGVuc2lvbnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpc3BsYXlOYW1lTG9jYWxpemF0aW9uUGlwZUtleUdlbmVyYXRvcihcclxuICBsb2NhbGl6YXRpb246IEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbkR0byxcclxuKSB7XHJcbiAgY29uc3QgZ2VuZXJhdGVMb2NhbGl6YXRpb25QaXBlS2V5ID0gY3JlYXRlTG9jYWxpemF0aW9uUGlwZUtleUdlbmVyYXRvcihsb2NhbGl6YXRpb24pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgZGlzcGxheU5hbWU6IE9iamVjdEV4dGVuc2lvbnMuTG9jYWxpemFibGVTdHJpbmdEdG8sXHJcbiAgICBmYWxsYmFjazogT2JqZWN0RXh0ZW5zaW9ucy5Mb2NhbGl6YWJsZVN0cmluZ0R0byxcclxuICApID0+IHtcclxuICAgIGlmIChkaXNwbGF5TmFtZSAmJiBkaXNwbGF5TmFtZS5uYW1lKVxyXG4gICAgICByZXR1cm4gZ2VuZXJhdGVMb2NhbGl6YXRpb25QaXBlS2V5KFxyXG4gICAgICAgIFtkaXNwbGF5TmFtZS5yZXNvdXJjZSB8fCAnJ10sXHJcbiAgICAgICAgW2Rpc3BsYXlOYW1lLm5hbWVdLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lLm5hbWUsXHJcbiAgICAgICk7XHJcblxyXG4gICAgY29uc3Qga2V5ID0gZ2VuZXJhdGVMb2NhbGl6YXRpb25QaXBlS2V5KFxyXG4gICAgICBbZmFsbGJhY2sucmVzb3VyY2UgfHwgJyddLFxyXG4gICAgICBbJ0Rpc3BsYXlOYW1lOicgKyBmYWxsYmFjay5uYW1lXSxcclxuICAgICAgdW5kZWZpbmVkLFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoa2V5KSByZXR1cm4ga2V5O1xyXG5cclxuICAgIHJldHVybiBnZW5lcmF0ZUxvY2FsaXphdGlvblBpcGVLZXkoXHJcbiAgICAgIFtmYWxsYmFjay5yZXNvdXJjZSB8fCAnJ10sXHJcbiAgICAgIFtmYWxsYmFjay5uYW1lIHx8ICcnXSxcclxuICAgICAgZmFsbGJhY2submFtZSxcclxuICAgICk7XHJcbiAgfTtcclxufVxyXG4iXX0=","import { AbpValidators } from '@abp/ng.core';\nexport function getValidatorsFromProperty(property) {\n const validators = [];\n property.attributes.forEach(attr => {\n if (attr.typeSimple && attr.typeSimple in AbpValidators) {\n validators.push(AbpValidators[attr.typeSimple](attr.config));\n }\n });\n return validators;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9leHRlbnNpYmxlL3NyYy9saWIvdXRpbHMvdmFsaWRhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJN0MsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxRQUErQztJQUUvQyxNQUFNLFVBQVUsR0FBa0IsRUFBRSxDQUFDO0lBRXJDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3hELFVBQVUsQ0FBQyxJQUFJLENBQUUsYUFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFicFZhbGlkYXRvcnMgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JqZWN0RXh0ZW5zaW9ucyB9IGZyb20gJy4uL21vZGVscy9vYmplY3QtZXh0ZW5zaW9ucyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yc0Zyb21Qcm9wZXJ0eShcclxuICBwcm9wZXJ0eTogT2JqZWN0RXh0ZW5zaW9ucy5FeHRlbnNpb25Qcm9wZXJ0eUR0byxcclxuKTogVmFsaWRhdG9yRm5bXSB7XHJcbiAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG5cclxuICBwcm9wZXJ0eS5hdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XHJcbiAgICBpZiAoYXR0ci50eXBlU2ltcGxlICYmIGF0dHIudHlwZVNpbXBsZSBpbiBBYnBWYWxpZGF0b3JzKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaCgoQWJwVmFsaWRhdG9ycyBhcyBhbnkpW2F0dHIudHlwZVNpbXBsZV0oYXR0ci5jb25maWcpKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbn1cclxuIl19","import { ConfigStateService, } from '@abp/ng.core';\nimport { pipe, zip } from 'rxjs';\nimport { filter, map, switchMap, take } from 'rxjs/operators';\nimport { EntityProp } from '../models/entity-props';\nimport { FormProp } from '../models/form-props';\nimport { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';\nimport { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';\nimport { checkPolicies, createExtraPropertyValueResolver } from './props.util';\nimport { createTypeaheadDisplayNameGenerator, createTypeaheadOptions, getTypeaheadType, hasTypeaheadTextSuffix, } from './typeahead.util';\nimport { getValidatorsFromProperty } from './validation.util';\nfunction selectObjectExtensions(configState) {\n return configState.getOne$('objectExtensions');\n}\nfunction selectLocalization(configState) {\n return configState.getOne$('localization');\n}\nfunction selectEnums(configState) {\n return selectObjectExtensions(configState).pipe(map((extensions) => Object.keys(extensions.enums).reduce((acc, key) => {\n const { fields, localizationResource } = extensions.enums[key];\n acc[key] = {\n fields,\n localizationResource,\n transformed: createEnum(fields),\n };\n return acc;\n }, {})));\n}\nexport function getObjectExtensionEntitiesFromStore(injector, moduleKey) {\n const configState = injector.get(ConfigStateService);\n return selectObjectExtensions(configState).pipe(map(extensions => {\n if (!extensions)\n return null;\n return (extensions.modules[moduleKey] || {})\n .entities;\n }), map(entities => (isUndefined(entities) ? {} : entities)), filter(Boolean), take(1));\n}\nexport function mapEntitiesToContributors(injector, resource) {\n const configState = injector.get(ConfigStateService);\n return pipe(switchMap((entities) => zip(selectLocalization(configState), selectEnums(configState)).pipe(map(([localization, enums]) => {\n const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);\n return Object.keys(entities).reduce((acc, key) => {\n acc.prop[key] = [];\n acc.createForm[key] = [];\n acc.editForm[key] = [];\n const entity = entities[key];\n if (!entity) {\n return acc;\n }\n const properties = entity.properties;\n if (!properties) {\n return acc;\n }\n checkPolicies(injector, properties);\n const mapPropertiesToContributors = createPropertiesToContributorsMapper(generateDisplayName, resource, enums);\n return mapPropertiesToContributors(properties, acc, key);\n }, {\n prop: {},\n createForm: {},\n editForm: {},\n });\n }))), take(1));\n}\nfunction createPropertiesToContributorsMapper(generateDisplayName, resource, enums) {\n return (properties, contributors, key) => {\n const isExtra = true;\n const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator(generateDisplayName, properties);\n Object.keys(properties).forEach((name) => {\n const property = properties[name];\n const propName = name;\n const lookup = property.ui.lookup || {};\n const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);\n const generateDN = hasTypeaheadTextSuffix(name)\n ? generateTypeaheadDisplayName\n : generateDisplayName;\n const displayName = generateDN(property.displayName, { name, resource });\n if (property.ui.onTable.isVisible) {\n const sortable = Boolean(property.ui.onTable.isSortable);\n const columnWidth = type === \"boolean\" /* ePropType.Boolean */ ? 150 : 250;\n const valueResolver = type === \"enum\" /* ePropType.Enum */ &&\n property.type\n ? createEnumValueResolver(property.type, enums[property.type], propName)\n : createExtraPropertyValueResolver(propName);\n const entityProp = new EntityProp({\n type,\n name: propName,\n displayName,\n sortable,\n columnWidth,\n valueResolver,\n isExtra,\n });\n const contributor = (propList) => propList.addTail(entityProp);\n contributors.prop[key].push(contributor);\n }\n const isOnCreateForm = property.ui.onCreateForm.isVisible;\n const isOnEditForm = property.ui.onEditForm.isVisible;\n if (isOnCreateForm || isOnEditForm) {\n const defaultValue = property.defaultValue;\n const formText = property.formText;\n const validators = () => getValidatorsFromProperty(property);\n let options;\n if (type === \"enum\" /* ePropType.Enum */)\n options = createEnumOptions(propName, enums[property.type || '']);\n else if (type === \"typeahead\" /* ePropType.Typeahead */)\n options = createTypeaheadOptions(lookup);\n const formProp = new FormProp({\n type,\n name: propName,\n displayName,\n options,\n defaultValue,\n validators,\n isExtra,\n formText,\n });\n const formContributor = (propList) => propList.addTail(formProp);\n if (isOnCreateForm)\n contributors.createForm[key].push(formContributor);\n if (isOnEditForm)\n contributors.editForm[key].push(formContributor);\n }\n });\n return contributors;\n };\n}\nfunction getTypeFromProperty(property) {\n return property?.typeSimple?.replace(/\\?$/, '');\n}\nfunction isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvbGliL3V0aWxzL3N0YXRlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGtCQUFrQixHQUluQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQWMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBa0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBRzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckYsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsbUNBQW1DLEVBQ25DLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsc0JBQXNCLEdBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUQsU0FBUyxzQkFBc0IsQ0FBQyxXQUErQjtJQUM3RCxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FDekIsV0FBK0I7SUFFL0IsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFT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RUFBRSxFQUFFLENBQXdCLENBQUM7QUFDekUsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEdBQVE7SUFDM0IsT0FBTyxPQUFPLEdBQUcsS0FBSyxXQUFXLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQUJQLFxyXG4gIEFwcGxpY2F0aW9uTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbkR0byxcclxuICBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbiAgRXh0ZW5zaW9uRW51bUR0byxcclxuICBFeHRlbnNpb25Qcm9wZXJ0eVVpTG9va3VwRHRvLFxyXG4gIE9iamVjdEV4dGVuc2lvbnNEdG8sXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgcGlwZSwgemlwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGVQcm9wVHlwZSB9IGZyb20gJy4uL2VudW1zL3Byb3BzLmVudW0nO1xyXG5pbXBvcnQgeyBFbnRpdHlQcm9wLCBFbnRpdHlQcm9wTGlzdCB9IGZyb20gJy4uL21vZGVscy9lbnRpdHktcHJvcHMnO1xyXG5pbXBvcnQgeyBGb3JtUHJvcCwgRm9ybVByb3BMaXN0IH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tcHJvcHMnO1xyXG5pbXBvcnQgeyBPYmplY3RFeHRlbnNpb25zIH0gZnJvbSAnLi4vbW9kZWxzL29iamVjdC1leHRlbnNpb25zJztcclxuaW1wb3J0IHsgUHJvcENhbGxiYWNrIH0gZnJvbSAnLi4vbW9kZWxzL3Byb3BzJztcclxuaW1wb3J0IHsgY3JlYXRlRW51bSwgY3JlYXRlRW51bU9wdGlvbnMsIGNyZWF0ZUVudW1WYWx1ZVJlc29sdmVyIH0gZnJvbSAnLi9lbnVtLnV0aWwnO1xyXG5pbXBvcnQgeyBjcmVhdGVEaXNwbGF5TmFtZUxvY2FsaXphdGlvblBpcGVLZXlHZW5lcmF0b3IgfSBmcm9tICcuL2xvY2FsaXphdGlvbi51dGlsJztcclxuaW1wb3J0IHsgY2hlY2tQb2xpY2llcywgY3JlYXRlRXh0cmFQcm9wZXJ0eVZhbHVlUmVzb2x2ZXIgfSBmcm9tICcuL3Byb3BzLnV0aWwnO1xyXG5pbXBvcnQge1xyXG4gIGNyZWF0ZVR5cGVhaGVhZERpc3BsYXlOYW1lR2VuZXJhdG9yLFxyXG4gIGNyZWF0ZVR5cGVhaGVhZE9wdGlvbnMsXHJcbiAgZ2V0VHlwZWFoZWFkVHlwZSxcclxuICBoYXNUeXBlYWhlYWRUZXh0U3VmZml4LFxyXG59IGZyb20gJy4vdHlwZWFoZWFkLnV0aWwnO1xyXG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JzRnJvbVByb3BlcnR5IH0gZnJvbSAnLi92YWxpZGF0aW9uLnV0aWwnO1xyXG5cclxuZnVuY3Rpb24gc2VsZWN0T2JqZWN0RXh0ZW5zaW9ucyhjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlKTogT2JzZXJ2YWJsZTxPYmplY3RFeHRlbnNpb25zRHRvPiB7XHJcbiAgcmV0dXJuIGNvbmZpZ1N0YXRlLmdldE9uZSQoJ29iamVjdEV4dGVuc2lvbnMnKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2VsZWN0TG9jYWxpemF0aW9uKFxyXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXHJcbik6IE9ic2VydmFibGU8QXBwbGljYXRpb25Mb2NhbGl6YXRpb25Db25maWd1cmF0aW9uRHRvPiB7XHJcbiAgcmV0dXJuIGNvbmZpZ1N0YXRlLmdldE9uZSQoJ2xvY2FsaXphdGlvbicpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZWxlY3RFbnVtcyhcclxuICBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxyXG4pOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvbkVudW1EdG8+PiB7XHJcbiAgcmV0dXJuIHNlbGVjdE9iamVjdEV4dGVuc2lvbnMoY29uZmlnU3RhdGUpLnBpcGUoXHJcbiAgICBtYXAoKGV4dGVuc2lvbnM6IE9iamVjdEV4dGVuc2lvbnNEdG8pID0+XHJcbiAgICAgIE9iamVjdC5rZXlzKGV4dGVuc2lvbnMuZW51bXMpLnJlZHVjZShcclxuICAgICAgICAoYWNjLCBrZXkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgZmllbGRzLCBsb2NhbGl6YXRpb25SZXNvdXJjZSB9ID0gZXh0ZW5zaW9ucy5lbnVtc1trZXldO1xyXG4gICAgICAgICAgYWNjW2tleV0gPSB7XHJcbiAgICAgICAgICAgIGZpZWxkcyxcclxuICAgICAgICAgICAgbG9jYWxpemF0aW9uUmVzb3VyY2UsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkOiBjcmVhdGVFbnVtKGZpZWxkcyksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIE9iamVjdEV4dGVuc2lvbnMuRXh0ZW5zaW9uRW51bUR0bz4sXHJcbiAgICAgICksXHJcbiAgICApLFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RFeHRlbnNpb25FbnRpdGllc0Zyb21TdG9yZShpbmplY3RvcjogSW5qZWN0b3IsIG1vZHVsZUtleTogc3RyaW5nKSB7XHJcbiAgY29uc3QgY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcclxuICByZXR1cm4gc2VsZWN0T2JqZWN0RXh0ZW5zaW9ucyhjb25maWdTdGF0ZSkucGlwZShcclxuICAgIG1hcChleHRlbnNpb25zID0+IHtcclxuICAgICAgaWYgKCFleHRlbnNpb25zKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHJldHVybiAoZXh0ZW5zaW9ucy5tb2R1bGVzW21vZHVsZUtleV0gfHwgKHt9IGFzIE9iamVjdEV4dGVuc2lvbnMuTW9kdWxlRXh0ZW5zaW9uRHRvKSlcclxuICAgICAgICAuZW50aXRpZXM7XHJcbiAgICB9KSxcclxuICAgIG1hcChlbnRpdGllcyA9PiAoaXNVbmRlZmluZWQoZW50aXRpZXMpID8gKHt9IGFzIGFueSkgOiBlbnRpdGllcykpLFxyXG4gICAgZmlsdGVyPE9iamVjdEV4dGVuc2lvbnMuRW50aXR5RXh0ZW5zaW9ucz4oQm9vbGVhbiksXHJcbiAgICB0YWtlKDEpLFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXBFbnRpdGllc1RvQ29udHJpYnV0b3JzPFQgPSBhbnk+KGluamVjdG9yOiBJbmplY3RvciwgcmVzb3VyY2U6IHN0cmluZykge1xyXG4gIGNvbnN0IGNvbmZpZ1N0YXRlID0gaW5qZWN0b3IuZ2V0KENvbmZpZ1N0YXRlU2VydmljZSk7XHJcbiAgcmV0dXJuIHBpcGUoXHJcbiAgICBzd2l0Y2hNYXAoKGVudGl0aWVzOiBhbnkpID0+XHJcbiAgICAgIHppcChzZWxlY3RMb2NhbGl6YXRpb24oY29uZmlnU3RhdGUpLCBzZWxlY3RFbnVtcyhjb25maWdTdGF0ZSkpLnBpcGUoXHJcbiAgICAgICAgbWFwKChbbG9jYWxpemF0aW9uLCBlbnVtc10pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGdlbmVyYXRlRGlzcGxheU5hbWUgPSBjcmVhdGVEaXNwbGF5TmFtZUxvY2FsaXphdGlvblBpcGVLZXlHZW5lcmF0b3IobG9jYWxpemF0aW9uKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZW50aXRpZXMpLnJlZHVjZShcclxuICAgICAgICAgICAgKGFjYywga2V5OiBrZXlvZiBPYmplY3RFeHRlbnNpb25zLkVudGl0eUV4dGVuc2lvbnMpID0+IHtcclxuICAgICAgICAgICAgICBhY2MucHJvcFtrZXldID0gW107XHJcbiAgICAgICAgICAgICAgYWNjLmNyZWF0ZUZvcm1ba2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgIGFjYy5lZGl0Rm9ybVtrZXldID0gW107XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eTogT2JqZWN0RXh0ZW5zaW9ucy5FbnRpdHlFeHRlbnNpb25EdG8gPSBlbnRpdGllc1trZXldO1xyXG4gICAgICAgICAgICAgIGlmICghZW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGVudGl0eS5wcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgICAgIGlmICghcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNoZWNrUG9saWNpZXMoaW5qZWN0b3IsIHByb3BlcnRpZXMpO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBtYXBQcm9wZXJ0aWVzVG9Db250cmlidXRvcnMgPSBjcmVhdGVQcm9wZXJ0aWVzVG9Db250cmlidXRvcnNNYXBwZXI8VD4oXHJcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZURpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVzb3VyY2UsXHJcbiAgICAgICAgICAgICAgICBlbnVtcyxcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICByZXR1cm4gbWFwUHJvcGVydGllc1RvQ29udHJpYnV0b3JzKHByb3BlcnRpZXMsIGFjYywga2V5KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHByb3A6IHt9LFxyXG4gICAgICAgICAgICAgIGNyZWF0ZUZvcm06IHt9LFxyXG4gICAgICAgICAgICAgIGVkaXRGb3JtOiB7fSxcclxuICAgICAgICAgICAgfSBhcyBPYmplY3RFeHRlbnNpb25zLlByb3BDb250cmlidXRvcnMsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICApLFxyXG4gICAgKSxcclxuICAgIHRha2UoMSksXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlUHJvcGVydGllc1RvQ29udHJpYnV0b3JzTWFwcGVyPFQgPSBhbnk+KFxyXG4gIGdlbmVyYXRlRGlzcGxheU5hbWU6IE9iamVjdEV4dGVuc2lvbnMuRGlzcGxheU5hbWVHZW5lcmF0b3JGbixcclxuICByZXNvdXJjZTogc3RyaW5nLFxyXG4gIGVudW1zOiBSZWNvcmQ8c3RyaW5nLCBPYmplY3RFeHRlbnNpb25zLkV4dGVuc2lvbkVudW1EdG8+LFxyXG4pIHtcclxuICByZXR1cm4gKFxyXG4gICAgcHJvcGVydGllczogT2JqZWN0RXh0ZW5zaW9ucy5FbnRpdHlFeHRlbnNpb25Qcm9wZXJ0aWVzLFxyXG4gICAgY29udHJpYnV0b3JzOiBPYmplY3RFeHRlbnNpb25zLlByb3BDb250cmlidXRvcnM8VD4sXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICApID0+IHtcclxuICAgIGNvbnN0IGlzRXh0cmEgPSB0cnVlO1xyXG4gICAgY29uc3QgZ2VuZXJhdGVUeXBlYWhlYWREaXNwbGF5TmFtZSA9IGNyZWF0ZVR5cGVhaGVhZERpc3BsYXlOYW1lR2VuZXJhdG9yKFxyXG4gICAgICBnZW5lcmF0ZURpc3BsYXlOYW1lLFxyXG4gICAgICBwcm9wZXJ0aWVzLFxyXG4gICAgKTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW25hbWVdO1xyXG4gICAgICBjb25zdCBwcm9wTmFtZSA9IG5hbWU7XHJcbiAgICAgIGNvbnN0IGxvb2t1cCA9IHByb3BlcnR5LnVpLmxvb2t1cCB8fCAoe30gYXMgRXh0ZW5zaW9uUHJvcGVydHlVaUxvb2t1cER0byk7XHJcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlYWhlYWRUeXBlKGxvb2t1cCwgbmFtZSkgfHwgZ2V0VHlwZUZyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XHJcbiAgICAgIGNvbnN0IGdlbmVyYXRlRE4gPSBoYXNUeXBlYWhlYWRUZXh0U3VmZml4KG5hbWUpXHJcbiAgICAgICAgPyBnZW5lcmF0ZVR5cGVhaGVhZERpc3BsYXlOYW1lXHJcbiAgICAgICAgOiBnZW5lcmF0ZURpc3BsYXlOYW1lO1xyXG4gICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGdlbmVyYXRlRE4ocHJvcGVydHkuZGlzcGxheU5hbWUsIHsgbmFtZSwgcmVzb3VyY2UgfSk7XHJcblxyXG4gICAgICBpZiAocHJvcGVydHkudWkub25UYWJsZS5pc1Zpc2libGUpIHtcclxuICAgICAgICBjb25zdCBzb3J0YWJsZSA9IEJvb2xlYW4ocHJvcGVydHkudWkub25UYWJsZS5pc1NvcnRhYmxlKTtcclxuICAgICAgICBjb25zdCBjb2x1bW5XaWR0aCA9IHR5cGUgPT09IGVQcm9wVHlwZS5Cb29sZWFuID8gMTUwIDogMjUwO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlUmVzb2x2ZXI6IFByb3BDYWxsYmFjazxULCBPYnNlcnZhYmxlPGFueT4+ID0gdHlwZSA9PT0gZVByb3BUeXBlLkVudW0gJiZcclxuICAgICAgICBwcm9wZXJ0eS50eXBlXHJcbiAgICAgICAgICA/IGNyZWF0ZUVudW1WYWx1ZVJlc29sdmVyKHByb3BlcnR5LnR5cGUsIGVudW1zW3Byb3BlcnR5LnR5cGVdLCBwcm9wTmFtZSlcclxuICAgICAgICAgIDogY3JlYXRlRXh0cmFQcm9wZXJ0eVZhbHVlUmVzb2x2ZXI8VD4ocHJvcE5hbWUpO1xyXG5cclxuICAgICAgICBjb25zdCBlbnRpdHlQcm9wID0gbmV3IEVudGl0eVByb3A8VD4oe1xyXG4gICAgICAgICAgdHlwZSxcclxuICAgICAgICAgIG5hbWU6IHByb3BOYW1lLFxyXG4gICAgICAgICAgZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBzb3J0YWJsZSxcclxuICAgICAgICAgIGNvbHVtbldpZHRoLFxyXG4gICAgICAgICAgdmFsdWVSZXNvbHZlcixcclxuICAgICAgICAgIGlzRXh0cmEsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbnRyaWJ1dG9yID0gKHByb3BMaXN0OiBFbnRpdHlQcm9wTGlzdDxUPikgPT4gcHJvcExpc3QuYWRkVGFpbChlbnRpdHlQcm9wKTtcclxuICAgICAgICBjb250cmlidXRvcnMucHJvcFtrZXldLnB1c2goY29udHJpYnV0b3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpc09uQ3JlYXRlRm9ybSA9IHByb3BlcnR5LnVpLm9uQ3JlYXRlRm9ybS5pc1Zpc2libGU7XHJcbiAgICAgIGNvbnN0IGlzT25FZGl0Rm9ybSA9IHByb3BlcnR5LnVpLm9uRWRpdEZvcm0uaXNWaXNpYmxlO1xyXG5cclxuICAgICAgaWYgKGlzT25DcmVhdGVGb3JtIHx8IGlzT25FZGl0Rm9ybSkge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHByb3BlcnR5LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICBjb25zdCBmb3JtVGV4dCA9IHByb3BlcnR5LmZvcm1UZXh0O1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSAoKSA9PiBnZXRWYWxpZGF0b3JzRnJvbVByb3BlcnR5KHByb3BlcnR5KTtcclxuICAgICAgICBsZXQgb3B0aW9uczogUHJvcENhbGxiYWNrPGFueSwgT2JzZXJ2YWJsZTxBQlAuT3B0aW9uPGFueT5bXT4+IHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0eXBlID09PSBlUHJvcFR5cGUuRW51bSlcclxuICAgICAgICAgIG9wdGlvbnMgPSBjcmVhdGVFbnVtT3B0aW9ucyhwcm9wTmFtZSwgZW51bXNbcHJvcGVydHkudHlwZSB8fCAnJ10pO1xyXG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09IGVQcm9wVHlwZS5UeXBlYWhlYWQpIG9wdGlvbnMgPSBjcmVhdGVUeXBlYWhlYWRPcHRpb25zKGxvb2t1cCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZvcm1Qcm9wID0gbmV3IEZvcm1Qcm9wKHtcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBuYW1lOiBwcm9wTmFtZSxcclxuICAgICAgICAgIGRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgIGRlZmF1bHRWYWx1ZSxcclxuICAgICAgICAgIHZhbGlkYXRvcnMsXHJcbiAgICAgICAgICBpc0V4dHJhLFxyXG4gICAgICAgICAgZm9ybVRleHQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cmlidXRvciA9IChwcm9wTGlzdDogRm9ybVByb3BMaXN0PFQ+KSA9PiBwcm9wTGlzdC5hZGRUYWlsKGZvcm1Qcm9wKTtcclxuXHJcbiAgICAgICAgaWYgKGlzT25DcmVhdGVGb3JtKSBjb250cmlidXRvcnMuY3JlYXRlRm9ybVtrZXldLnB1c2goZm9ybUNvbnRyaWJ1dG9yKTtcclxuICAgICAgICBpZiAoaXNPbkVkaXRGb3JtKSBjb250cmlidXRvcnMuZWRpdEZvcm1ba2V5XS5wdXNoKGZvcm1Db250cmlidXRvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb250cmlidXRvcnM7XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0VHlwZUZyb21Qcm9wZXJ0eShwcm9wZXJ0eTogT2JqZWN0RXh0ZW5zaW9ucy5FeHRlbnNpb25Qcm9wZXJ0eUR0byk6IGVQcm9wVHlwZSB7XHJcbiAgcmV0dXJuIHByb3BlcnR5Py50eXBlU2ltcGxlPy5yZXBsYWNlKC9cXD8kLywgJycpIGFzIHN0cmluZyBhcyBlUHJvcFR5cGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKG9iajogYW55KTogb2JqIGlzIHVuZGVmaW5lZCB7XHJcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnO1xyXG59XHJcbiJdfQ==","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { NgbDatepickerModule, NgbDropdownModule, NgbTimepickerModule, NgbTooltipModule, NgbTypeaheadModule, } from '@ng-bootstrap/ng-bootstrap';\nimport { ExtensibleFormComponent, ExtensibleFormPropComponent, ExtensibleTableComponent, GridActionsComponent, PageToolbarComponent, ExtensibleDateTimePickerComponent, ExtensibleFormMultiselectComponent, } from './components';\nimport { PropDataDirective } from './directives/prop-data.directive';\nimport { CreateInjectorPipe } from './pipes/create-injector.pipe';\nimport { DisabledDirective } from '@abp/ng.theme.shared';\nimport * as i0 from \"@angular/core\";\nconst importWithExport = [\n DisabledDirective,\n ExtensibleDateTimePickerComponent,\n ExtensibleFormPropComponent,\n GridActionsComponent,\n PropDataDirective,\n PageToolbarComponent,\n CreateInjectorPipe,\n ExtensibleFormComponent,\n ExtensibleTableComponent,\n ExtensibleFormMultiselectComponent,\n];\nexport class ExtensibleModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleModule, imports: [CoreModule,\n ThemeSharedModule,\n NgxValidateCoreModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbTimepickerModule,\n NgbTypeaheadModule,\n NgbTooltipModule, DisabledDirective,\n ExtensibleDateTimePickerComponent,\n ExtensibleFormPropComponent,\n GridActionsComponent,\n PropDataDirective,\n PageToolbarComponent,\n CreateInjectorPipe,\n ExtensibleFormComponent,\n ExtensibleTableComponent,\n ExtensibleFormMultiselectComponent], exports: [DisabledDirective,\n ExtensibleDateTimePickerComponent,\n ExtensibleFormPropComponent,\n GridActionsComponent,\n PropDataDirective,\n PageToolbarComponent,\n CreateInjectorPipe,\n ExtensibleFormComponent,\n ExtensibleTableComponent,\n ExtensibleFormMultiselectComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleModule, imports: [CoreModule,\n ThemeSharedModule,\n NgxValidateCoreModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbTimepickerModule,\n NgbTypeaheadModule,\n NgbTooltipModule, ExtensibleDateTimePickerComponent,\n ExtensibleFormPropComponent,\n GridActionsComponent,\n ExtensibleFormComponent,\n ExtensibleTableComponent,\n ExtensibleFormMultiselectComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: ExtensibleModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [\n CoreModule,\n ThemeSharedModule,\n NgxValidateCoreModule,\n NgbDatepickerModule,\n NgbDropdownModule,\n NgbTimepickerModule,\n NgbTypeaheadModule,\n NgbTooltipModule,\n ...importWithExport,\n ],\n exports: [...importWithExport],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2V4dGVuc2libGUvc3JjL2xpYi9leHRlbnNpYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixpQ0FBaUMsRUFDakMsa0NBQWtDLEdBQ25DLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUV6RCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLGlCQUFpQjtJQUNqQixpQ0FBaUM7SUFDakMsMkJBQTJCO0lBQzNCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLGtCQUFrQjtJQUNsQix1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLGtDQUFrQztDQUNuQyxDQUFDO0FBaUJGLE1BQU0sT0FBTyxnQkFBZ0I7OEdBQWhCLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLFlBWnpCLFVBQVU7WUFDVixpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixnQkFBZ0IsRUF0QmxCLGlCQUFpQjtZQUNqQixpQ0FBaUM7WUFDakMsMkJBQTJCO1lBQzNCLG9CQUFvQjtZQUNwQixpQkFBaUI7WUFDakIsb0JBQW9CO1lBQ3BCLGtCQUFrQjtZQUNsQix1QkFBdUI7WUFDdkIsd0JBQXdCO1lBQ3hCLGtDQUFrQyxhQVRsQyxpQkFBaUI7WUFDakIsaUNBQWlDO1lBQ2pDLDJCQUEyQjtZQUMzQixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNwQixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtZQUN4QixrQ0FBa0M7K0dBa0J2QixnQkFBZ0IsWUFaekIsVUFBVTtZQUNWLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLGdCQUFnQixFQXJCbEIsaUNBQWlDO1lBQ2pDLDJCQUEyQjtZQUMzQixvQkFBb0I7WUFJcEIsdUJBQXVCO1lBQ3ZCLHdCQUF3QjtZQUN4QixrQ0FBa0M7OzJGQWtCdkIsZ0JBQWdCO2tCQWY1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLEdBQUcsZ0JBQWdCO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcclxuaW1wb3J0IHtcclxuICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxyXG4gIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gIE5nYlRpbWVwaWNrZXJNb2R1bGUsXHJcbiAgTmdiVG9vbHRpcE1vZHVsZSxcclxuICBOZ2JUeXBlYWhlYWRNb2R1bGUsXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge1xyXG4gIEV4dGVuc2libGVGb3JtQ29tcG9uZW50LFxyXG4gIEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCxcclxuICBFeHRlbnNpYmxlVGFibGVDb21wb25lbnQsXHJcbiAgR3JpZEFjdGlvbnNDb21wb25lbnQsXHJcbiAgUGFnZVRvb2xiYXJDb21wb25lbnQsXHJcbiAgRXh0ZW5zaWJsZURhdGVUaW1lUGlja2VyQ29tcG9uZW50LFxyXG4gIEV4dGVuc2libGVGb3JtTXVsdGlzZWxlY3RDb21wb25lbnQsXHJcbn0gZnJvbSAnLi9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgUHJvcERhdGFEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcHJvcC1kYXRhLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENyZWF0ZUluamVjdG9yUGlwZSB9IGZyb20gJy4vcGlwZXMvY3JlYXRlLWluamVjdG9yLnBpcGUnO1xyXG5pbXBvcnQgeyBEaXNhYmxlZERpcmVjdGl2ZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuXHJcbmNvbnN0IGltcG9ydFdpdGhFeHBvcnQgPSBbXHJcbiAgRGlzYWJsZWREaXJlY3RpdmUsXHJcbiAgRXh0ZW5zaWJsZURhdGVUaW1lUGlja2VyQ29tcG9uZW50LFxyXG4gIEV4dGVuc2libGVGb3JtUHJvcENvbXBvbmVudCxcclxuICBHcmlkQWN0aW9uc0NvbXBvbmVudCxcclxuICBQcm9wRGF0YURpcmVjdGl2ZSxcclxuICBQYWdlVG9vbGJhckNvbXBvbmVudCxcclxuICBDcmVhdGVJbmplY3RvclBpcGUsXHJcbiAgRXh0ZW5zaWJsZUZvcm1Db21wb25lbnQsXHJcbiAgRXh0ZW5zaWJsZVRhYmxlQ29tcG9uZW50LFxyXG4gIEV4dGVuc2libGVGb3JtTXVsdGlzZWxlY3RDb21wb25lbnQsXHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29yZU1vZHVsZSxcclxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxyXG4gICAgTmd4VmFsaWRhdGVDb3JlTW9kdWxlLFxyXG4gICAgTmdiRGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxyXG4gICAgTmdiVGltZXBpY2tlck1vZHVsZSxcclxuICAgIE5nYlR5cGVhaGVhZE1vZHVsZSxcclxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXHJcbiAgICAuLi5pbXBvcnRXaXRoRXhwb3J0LFxyXG4gIF0sXHJcbiAgZXhwb3J0czogWy4uLmltcG9ydFdpdGhFeHBvcnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXh0ZW5zaWJsZU1vZHVsZSB7fVxyXG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public-api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmNvbXBvbmVudHMtZXh0ZW5zaWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZXh0ZW5zaWJsZS9zcmMvYWJwLW5nLmNvbXBvbmVudHMtZXh0ZW5zaWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19"],"names":["i1","i2","debounceTime","distinctUntilChanged","map","filter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abp-ng.components-extensible.mjs","sources":["../../../../packages/components/extensible/src/lib/utils/factory.util.ts","../../../../packages/components/extensible/src/lib/components/date-time-picker/extensible-date-time-picker.component.ts","../../../../packages/components/extensible/src/lib/tokens/extensions.token.ts","../../../../packages/components/extensible/src/lib/constants/extra-properties.ts","../../../../packages/components/extensible/src/lib/models/props.ts","../../../../packages/components/extensible/src/lib/models/form-props.ts","../../../../packages/components/extensible/src/lib/utils/typeahead.util.ts","../../../../packages/components/extensible/src/lib/services/extensible-form-prop.service.ts","../../../../packages/components/extensible/src/lib/components/multi-select/extensible-form-multiselect.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html","../../../../packages/components/extensible/src/lib/models/actions.ts","../../../../packages/components/extensible/src/lib/models/entity-actions.ts","../../../../packages/components/extensible/src/lib/models/entity-props.ts","../../../../packages/components/extensible/src/lib/models/toolbar-actions.ts","../../../../packages/components/extensible/src/lib/services/extensions.service.ts","../../../../packages/components/extensible/src/lib/directives/prop-data.directive.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-form/extensible-form.component.html","../../../../packages/components/extensible/src/lib/components/abstract-actions/abstract-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.ts","../../../../packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts","../../../../packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html","../../../../packages/components/extensible/src/lib/pipes/create-injector.pipe.ts","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.ts","../../../../packages/components/extensible/src/lib/components/page-toolbar/page-toolbar.component.html","../../../../packages/components/extensible/src/lib/tokens/extensible-form-view-provider.token.ts","../../../../packages/components/extensible/src/lib/utils/actions.util.ts","../../../../packages/components/extensible/src/lib/utils/form-props.util.ts","../../../../packages/components/extensible/src/lib/utils/props.util.ts","../../../../packages/components/extensible/src/lib/utils/enum.util.ts","../../../../packages/components/extensible/src/lib/utils/localization.util.ts","../../../../packages/components/extensible/src/lib/utils/validation.util.ts","../../../../packages/components/extensible/src/lib/utils/state.util.ts","../../../../packages/components/extensible/src/lib/extensible.module.ts","../../../../packages/components/extensible/src/abp-ng.components-extensible.ts"],"sourcesContent":["export function selfFactory(dependency?: any) {\r\n return dependency;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n input,\r\n Optional,\r\n SkipSelf,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbInputDatepicker,\r\n NgbTimeAdapter,\r\n NgbTimepicker,\r\n NgbTimepickerModule,\r\n Placement,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { DateTimeAdapter } from '@abp/ng.theme.shared';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleDateTimePicker',\r\n imports: [\r\n ReactiveFormsModule,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n NgxValidateCoreModule,\r\n ],\r\n selector: 'abp-extensible-date-time-picker',\r\n template: `\r\n <input\r\n [id]=\"prop().id\"\r\n [formControlName]=\"prop().name\"\r\n (ngModelChange)=\"setTime($event)\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [placement]=\"placement()\"\r\n />\r\n <ngb-timepicker\r\n #timepicker\r\n [formControlName]=\"prop().name\"\r\n (ngModelChange)=\"setDate($event)\"\r\n [meridian]=\"meridian()\"\r\n />\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n {\r\n provide: NgbDateAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n {\r\n provide: NgbTimeAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n ],\r\n})\r\nexport class ExtensibleDateTimePickerComponent {\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n prop = input<FormProp>();\r\n meridian = input<boolean>(false);\r\n placement = input<Placement>('bottom-left');\r\n\r\n @ViewChild(NgbInputDatepicker) date!: NgbInputDatepicker;\r\n @ViewChild(NgbTimepicker) time!: NgbTimepicker;\r\n\r\n setDate(dateStr: string) {\r\n this.date.writeValue(dateStr);\r\n }\r\n\r\n setTime(dateStr: string) {\r\n this.time.writeValue(dateStr);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ActionCallback, ReadonlyActionData as ActionData } from '../models/actions';\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormProp } from '../models/form-props';\r\n\r\nexport const EXTENSIONS_IDENTIFIER = new InjectionToken<string>('EXTENSIONS_IDENTIFIER');\r\nexport type ActionKeys = Extract<'entityActions' | 'toolbarActions', keyof ExtensionsService>;\r\n\r\nexport const EXTENSIONS_ACTION_TYPE = new InjectionToken<ActionKeys>('EXTENSIONS_ACTION_TYPE');\r\n\r\nexport const EXTENSIONS_ACTION_DATA = new InjectionToken<ActionData>('EXTENSIONS_ACTION_DATA');\r\nexport const EXTENSIONS_ACTION_CALLBACK = new InjectionToken<ActionCallback<unknown>>(\r\n 'EXTENSIONS_ACTION_DATA',\r\n);\r\nexport const PROP_DATA_STREAM = new InjectionToken<Observable<any>>('PROP_DATA_STREAM');\r\ntype EntityPropTypeClassMap = {\r\n [key in ePropType]: string;\r\n};\r\n\r\nexport const ROW_RECORD = new InjectionToken<any>('ROW_RECORD');\r\n\r\nexport type EntityPropTypeClass = Partial<EntityPropTypeClassMap>;\r\nexport const ENTITY_PROP_TYPE_CLASSES = new InjectionToken<EntityPropTypeClass>(\r\n 'ENTITY_PROP_TYPE_CLASSES',\r\n {\r\n factory: () => ({} as EntityPropTypeClass),\r\n },\r\n);\r\n\r\nexport const EXTENSIONS_FORM_PROP = new InjectionToken<FormProp>('EXTENSIONS_FORM_PROP');\r\nexport const EXTENSIONS_FORM_PROP_DATA = new InjectionToken<unknown>('EXTENSIONS_FORM_PROP_DATA');\r\n","export const EXTRA_PROPERTIES_KEY = 'extraProperties';\r\n","import { InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { LinkedList } from '@abp/utils';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropTooltip } from './form-props';\r\n\r\nexport abstract class PropList<R = any, A = Prop<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class PropData<R = any> {\r\n abstract getInjected: <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyPropData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyPropData<R = any> = Readonly<Omit<PropData<R>, 'data'>>;\r\n\r\nexport abstract class Prop<R = any> {\r\n constructor(\r\n public readonly type: ePropType,\r\n public readonly name: string,\r\n public readonly displayName: string,\r\n public readonly permission: string,\r\n public readonly visible: PropPredicate<R> = _ => true,\r\n public readonly isExtra = false,\r\n public readonly template?: Type<any>,\r\n public readonly className?: string,\r\n public readonly formText?: string,\r\n public readonly tooltip?: FormPropTooltip,\r\n public readonly displayTextResolver?: PropDisplayTextResolver<R>,\r\n ) {\r\n this.displayName = this.displayName || this.name;\r\n }\r\n}\r\n\r\nexport type PropCallback<T, R = any> = (data: Omit<PropData<T>, 'data'>, auxData?: any) => R;\r\nexport type PropPredicate<T> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => boolean;\r\nexport type PropDisplayTextResolver<T> = (data?: Omit<PropData<T>, 'data'>) => string;\r\n\r\nexport abstract class PropsFactory<C extends Props<any>> {\r\n protected abstract _ctor: Type<C>;\r\n private contributorCallbacks: PropContributorCallbacks<InferredPropList<C>> = {};\r\n\r\n get(name: string): C {\r\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n return new this._ctor(this.contributorCallbacks[name]);\r\n }\r\n}\r\n\r\nexport abstract class Props<L extends PropList<any, InferredProp<L>>> {\r\n protected abstract _ctor: Type<L>;\r\n\r\n get props(): L {\r\n const propList = new this._ctor();\r\n\r\n this.callbackList.forEach(callback => callback(propList));\r\n\r\n return propList;\r\n }\r\n\r\n constructor(private readonly callbackList: PropContributorCallback<L>[]) {}\r\n\r\n addContributor(contributeCallback: PropContributorCallback<L>) {\r\n this.callbackList.push(contributeCallback);\r\n }\r\n\r\n clearContributors() {\r\n while (this.callbackList.length) this.callbackList.pop();\r\n }\r\n}\r\n\r\nexport type PropContributorCallbacks<L extends PropList<any, InferredProp<L>>> = Record<\r\n string,\r\n PropContributorCallback<L>[]\r\n>;\r\n\r\nexport type PropContributorCallback<L extends PropList<any, InferredProp<L>>> = (\r\n propList: L,\r\n) => any;\r\n\r\ntype InferredPropList<C> = C extends Props<infer L> ? L : never;\r\nexport type InferredProp<T> = T extends PropList<any, infer U> ? U : T;\r\n","import { ABP } from '@abp/ng.core';\r\nimport { Injector, Type } from '@angular/core';\r\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n Prop,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropContributorCallbacks,\r\n PropData,\r\n PropDisplayTextResolver,\r\n PropList,\r\n PropPredicate,\r\n Props,\r\n PropsFactory,\r\n} from './props';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class FormPropList<R = any> extends PropList<R, FormProp<R>> {}\r\n\r\nexport class FormProps<R = any> extends Props<PropList<R, FormProp<R>>> {\r\n protected _ctor: Type<FormPropList<R>> = FormPropList;\r\n}\r\n\r\nexport interface FormPropGroup {\r\n name: string;\r\n className?: string;\r\n}\r\n\r\nexport interface FormPropTooltip {\r\n text: string;\r\n placement?: 'top' | 'end' | 'bottom' | 'start';\r\n}\r\n\r\nexport class GroupedFormPropList<R = any> {\r\n public readonly items: GroupedFormPropItem[] = [];\r\n count = 1;\r\n addItem(item: FormProp<R>) {\r\n const groupName = item.group?.name;\r\n let group = this.items.find(i => i.group?.name === groupName);\r\n if (group) {\r\n group.formPropList.addTail(item);\r\n } else {\r\n group = {\r\n formPropList: new FormPropList(),\r\n group: item.group || { name: `default${this.count++}`, className: item.group?.className },\r\n };\r\n group.formPropList.addHead(item);\r\n this.items.push(group);\r\n }\r\n }\r\n}\r\n\r\nexport interface GroupedFormPropItem {\r\n group?: FormPropGroup;\r\n formPropList: FormPropList;\r\n}\r\n\r\nexport class CreateFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class EditFormPropsFactory<R = any> extends PropsFactory<FormProps<R>> {\r\n protected _ctor: Type<FormProps<R>> = FormProps;\r\n}\r\n\r\nexport class FormProp<R = any> extends Prop<R> {\r\n readonly validators: PropCallback<R, ValidatorFn[]>;\r\n readonly asyncValidators: PropCallback<R, AsyncValidatorFn[]>;\r\n readonly disabled: PropPredicate<R>;\r\n readonly readonly: PropPredicate<R>;\r\n readonly autocomplete: string;\r\n readonly defaultValue: boolean | number | string | Date | Array<string>;\r\n readonly options: PropCallback<R, Observable<ABP.Option<any>[]>> | undefined;\r\n readonly id: string | undefined;\r\n readonly template?: Type<any>;\r\n readonly className?: string;\r\n readonly group?: FormPropGroup | undefined;\r\n readonly displayTextResolver?: PropDisplayTextResolver<R>;\r\n readonly formText?: string;\r\n readonly tooltip?: FormPropTooltip;\r\n\r\n constructor(options: FormPropOptions<R>) {\r\n super(\r\n options.type,\r\n options.name,\r\n options.displayName || '',\r\n options.permission || '',\r\n options.visible,\r\n options.isExtra,\r\n options.template,\r\n options.className,\r\n options.formText,\r\n options.tooltip,\r\n );\r\n this.group = options.group;\r\n this.className = options.className;\r\n this.formText = options.formText;\r\n this.tooltip = options.tooltip;\r\n this.asyncValidators = options.asyncValidators || (_ => []);\r\n this.validators = options.validators || (_ => []);\r\n this.disabled = options.disabled || (_ => false);\r\n this.readonly = options.readonly || (_ => false);\r\n this.autocomplete = options.autocomplete || 'off';\r\n this.options = options.options;\r\n this.id = options.id || options.name;\r\n const defaultValue = options.defaultValue;\r\n this.defaultValue = isFalsyValue(defaultValue) ? (defaultValue as number) : defaultValue || '';\r\n this.displayTextResolver = options.displayTextResolver;\r\n }\r\n\r\n static create<R = any>(options: FormPropOptions<R>) {\r\n return new FormProp<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: FormPropOptions<R>[]) {\r\n return arrayOfOptions.map(FormProp.create);\r\n }\r\n}\r\n\r\nexport class FormPropData<R = any> extends PropData<R> {\r\n getInjected: PropData<R>['getInjected'];\r\n\r\n constructor(\r\n injector: Injector,\r\n public readonly record: R,\r\n ) {\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n}\r\n\r\ntype OptionalKeys =\r\n | 'permission'\r\n | 'visible'\r\n | 'displayName'\r\n | 'isExtra'\r\n | 'validators'\r\n | 'asyncValidators'\r\n | 'disabled'\r\n | 'readonly'\r\n | 'autocomplete'\r\n | 'defaultValue'\r\n | 'options'\r\n | 'id'\r\n | 'displayTextResolver'\r\n | 'formText'\r\n | 'tooltip';\r\nexport type FormPropOptions<R = any> = PartialWithOptions<FormProp<R>, OptionalKeys> &\r\n FilteredWithOptions<FormProp<R>, OptionalKeys>;\r\n\r\nexport type CreateFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type CreateFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type CreateFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\nexport type EditFormPropDefaults<R = any> = Record<string, FormProp<R>[]>;\r\nexport type EditFormPropContributorCallback<R = any> = PropContributorCallback<FormPropList<R>>;\r\nexport type EditFormPropContributorCallbacks<R = any> = PropContributorCallbacks<FormPropList<R>>;\r\n\r\nfunction isFalsyValue(defaultValue?: FormProp['defaultValue']): boolean {\r\n return [0, '', false].indexOf(defaultValue as any) > -1;\r\n}\r\n","import { ABP, ExtensionPropertyUiLookupDto, RestService } from '@abp/ng.core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nconst TYPEAHEAD_TEXT_SUFFIX = '_Text';\r\nconst TYPEAHEAD_TEXT_SUFFIX_REGEX = /_Text$/;\r\n\r\nexport function createTypeaheadOptions(\r\n lookup: ExtensionPropertyUiLookupDto,\r\n): PropCallback<any, Observable<ABP.Option<any>[]>> {\r\n return (data, searchText) =>\r\n searchText && data\r\n ? data\r\n .getInjected(RestService)\r\n .request(\r\n {\r\n method: 'GET',\r\n url: lookup.url || '',\r\n params: {\r\n [lookup.filterParamName || '']: searchText,\r\n },\r\n },\r\n { apiName: 'Default' },\r\n )\r\n .pipe(\r\n map((response: any) => {\r\n const list = response[lookup.resultListPropertyName || ''];\r\n const mapToOption = (item: any) => ({\r\n key: item[lookup.displayPropertyName || ''],\r\n value: item[lookup.valuePropertyName || ''],\r\n });\r\n return list.map(mapToOption);\r\n }),\r\n )\r\n : of([]);\r\n}\r\n\r\nexport function getTypeaheadType(lookup: ExtensionPropertyUiLookupDto, name: string) {\r\n if (!lookup.url) {\r\n return name.endsWith(TYPEAHEAD_TEXT_SUFFIX) ? ePropType.Hidden : undefined;\r\n } else {\r\n return ePropType.Typeahead;\r\n }\r\n}\r\n\r\nexport function createTypeaheadDisplayNameGenerator(\r\n displayNameGeneratorFn: ObjectExtensions.DisplayNameGeneratorFn,\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n): ObjectExtensions.DisplayNameGeneratorFn {\r\n return (displayName, fallback) => {\r\n const name = removeTypeaheadTextSuffix(fallback.name || '');\r\n return displayNameGeneratorFn(displayName || properties[name].displayName, {\r\n name,\r\n resource: fallback.resource,\r\n });\r\n };\r\n}\r\n\r\nexport function addTypeaheadTextSuffix(name: string) {\r\n return name + TYPEAHEAD_TEXT_SUFFIX;\r\n}\r\n\r\nexport function hasTypeaheadTextSuffix(name: string) {\r\n return TYPEAHEAD_TEXT_SUFFIX_REGEX.test(name);\r\n}\r\n\r\nexport function removeTypeaheadTextSuffix(name: string) {\r\n return name.replace(TYPEAHEAD_TEXT_SUFFIX_REGEX, '');\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n import { ValidatorFn, Validators } from '@angular/forms';\r\nimport { AbpValidators, ConfigStateService } from '@abp/ng.core';\r\nimport { map } from 'rxjs/operators';\r\nimport { FormProp } from '../models/form-props';\r\nimport { ePropType } from '../enums/props.enum';\r\n\r\n@Injectable()\r\nexport class ExtensibleFormPropService {\r\n readonly #configStateService = inject(ConfigStateService);\r\n\r\n meridian$ = this.#configStateService\r\n .getDeep$('localization.currentCulture.dateTimeFormat.shortTimePattern')\r\n .pipe(map((shortTimePattern: string | undefined) => (shortTimePattern || '').includes('tt')));\r\n\r\n isRequired(validator: ValidatorFn) {\r\n return (\r\n validator === Validators.required ||\r\n validator === AbpValidators.required ||\r\n validator.name === 'required'\r\n );\r\n }\r\n\r\n getComponent(prop: FormProp) {\r\n if (prop.template) {\r\n return 'template';\r\n }\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Date:\r\n return 'date';\r\n case ePropType.DateTime:\r\n return 'dateTime';\r\n case ePropType.Hidden:\r\n return 'hidden';\r\n case ePropType.MultiSelect:\r\n return 'multiselect';\r\n case ePropType.Text:\r\n return 'textarea';\r\n case ePropType.Time:\r\n return 'time';\r\n case ePropType.Typeahead:\r\n return 'typeahead';\r\n case ePropType.PasswordInputGroup:\r\n return 'passwordinputgroup';\r\n default:\r\n return prop.options ? 'select' : 'input';\r\n }\r\n }\r\n\r\n getType(prop: FormProp) {\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n case ePropType.String:\r\n return 'text';\r\n case ePropType.Boolean:\r\n return 'checkbox';\r\n case ePropType.Number:\r\n return 'number';\r\n case ePropType.Email:\r\n return 'email';\r\n case ePropType.Password:\r\n return 'password';\r\n case ePropType.PasswordInputGroup:\r\n return 'passwordinputgroup';\r\n default:\r\n return 'hidden';\r\n }\r\n }\r\n\r\n calcAsterisks(validators: ValidatorFn[]) {\r\n if (!validators) return '';\r\n const required = validators.find(v => this.isRequired(v));\r\n return required ? '*' : '';\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, forwardRef, input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { ABP, LocalizationPipe } from '@abp/ng.core';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\n\r\nconst EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ExtensibleFormMultiselectComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'abp-extensible-form-multi-select',\r\n template: `\r\n <div [id]=\"prop().id\">\r\n @for (option of options(); track option.value) {\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n [id]=\"'checkbox_' + option.value\"\r\n [disabled]=\"disabled\"\r\n [checked]=\"isChecked(option.value)\"\r\n (change)=\"onCheckboxChange(option.value, $event.target.checked)\"\r\n />\r\n <label [for]=\"'checkbox_' + option.value\">\r\n @if (prop().isExtra) {\r\n {{ '::' + option.key | abpLocalization }}\r\n } @else {\r\n {{ option.key }}\r\n }\r\n </label>\r\n </div>\r\n }\r\n </div>\r\n `,\r\n providers: [EXTENSIBLE_FORM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR],\r\n imports: [LocalizationPipe, NgxValidateCoreModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleFormMultiselectComponent implements ControlValueAccessor {\r\n prop = input.required<FormProp>();\r\n options = input.required<ABP.Option<any>[]>();\r\n\r\n selectedValues: any[] = [];\r\n disabled = false;\r\n\r\n private onChange: (value: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n isChecked(value: any): boolean {\r\n return this.selectedValues.includes(value);\r\n }\r\n\r\n onCheckboxChange(value: any, checked: boolean): void {\r\n this.selectedValues = checked\r\n ? [...this.selectedValues, value]\r\n : this.selectedValues.filter(item => item !== value);\r\n\r\n this.onChange(this.selectedValues);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: any[]): void {\r\n this.selectedValues = Array.isArray(value) ? [...value] : [];\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}\r\n","import { EXTENSIONS_FORM_PROP, EXTENSIONS_FORM_PROP_DATA } from './../../tokens/extensions.token';\r\nimport {\r\n ABP,\r\n LocalizationPipe,\r\n PermissionDirective,\r\n ShowPasswordDirective,\r\n TrackByService,\r\n} from '@abp/ng.core';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n ViewChild,\r\n signal,\r\n effect,\r\n} from '@angular/core';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport {\r\n NgbDateAdapter,\r\n NgbDatepickerModule,\r\n NgbTimeAdapter,\r\n NgbTimepickerModule,\r\n NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\r\nimport { DateAdapter, DisabledDirective, TimeAdapter } from '@abp/ng.theme.shared';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp } from '../../models/form-props';\r\nimport { PropData } from '../../models/props';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { addTypeaheadTextSuffix } from '../../utils/typeahead.util';\r\nimport { eExtensibleComponents } from '../../enums/components';\r\nimport { ExtensibleDateTimePickerComponent } from '../date-time-picker/extensible-date-time-picker.component';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { ExtensibleFormPropService } from '../../services/extensible-form-prop.service';\r\nimport { AsyncPipe, NgClass, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ExtensibleFormMultiselectComponent } from '../multi-select/extensible-form-multiselect.component';\r\n\r\n@Component({\r\n selector: 'abp-extensible-form-prop',\r\n templateUrl: './extensible-form-prop.component.html',\r\n imports: [\r\n ExtensibleDateTimePickerComponent,\r\n ExtensibleFormMultiselectComponent,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n ReactiveFormsModule,\r\n DisabledDirective,\r\n NgxValidateCoreModule,\r\n NgbTooltip,\r\n NgbTypeaheadModule,\r\n ShowPasswordDirective,\r\n PermissionDirective,\r\n LocalizationPipe,\r\n AsyncPipe,\r\n NgClass,\r\n NgComponentOutlet,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ExtensibleFormPropService],\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n { provide: NgbDateAdapter, useClass: DateAdapter },\r\n { provide: NgbTimeAdapter, useClass: TimeAdapter },\r\n ],\r\n})\r\nexport class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {\r\n protected service = inject(ExtensibleFormPropService);\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly track = inject(TrackByService);\r\n #groupDirective = inject(FormGroupDirective);\r\n private injector = inject(Injector);\r\n private readonly form = this.#groupDirective.form;\r\n\r\n @Input() data!: PropData;\r\n @Input() prop!: FormProp;\r\n @Input() first?: boolean;\r\n @Input() isFirstGroup?: boolean;\r\n @ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;\r\n\r\n injectorForCustomComponent?: Injector;\r\n asterisk = '';\r\n containerClassName = 'mb-2';\r\n showPassword = false;\r\n options$: Observable<ABP.Option<any>[]> = of([]);\r\n validators: ValidatorFn[] = [];\r\n readonly!: boolean;\r\n typeaheadModel: any;\r\n passwordKey = eExtensibleComponents.PasswordComponent;\r\n\r\n disabledFn = (data: PropData) => false;\r\n\r\n get disabled() {\r\n return this.disabledFn(this.data);\r\n }\r\n\r\n setTypeaheadValue(selectedOption: ABP.Option<string>) {\r\n this.typeaheadModel = selectedOption || { key: null, value: null };\r\n const { key, value } = this.typeaheadModel;\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (valueControl?.value && !value) valueControl.markAsDirty();\r\n keyControl?.setValue(key);\r\n valueControl?.setValue(value);\r\n }\r\n\r\n search = (text$: Observable<string>) =>\r\n text$\r\n ? text$.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n switchMap(text => this.prop?.options?.(this.data, text) || of([])),\r\n )\r\n : of([]);\r\n\r\n typeaheadFormatter = (option: ABP.Option<any>) => option.key;\r\n\r\n meridian$ = this.service.meridian$;\r\n\r\n get isInvalid() {\r\n const control = this.form.get(this.prop.name);\r\n return control?.touched && control.invalid;\r\n }\r\n\r\n private getTypeaheadControls() {\r\n const { name } = this.prop;\r\n const extraPropName = `${EXTRA_PROPERTIES_KEY}.${name}`;\r\n const keyControl =\r\n this.form.get(addTypeaheadTextSuffix(extraPropName)) ||\r\n this.form.get(addTypeaheadTextSuffix(name));\r\n const valueControl = this.form.get(extraPropName) || this.form.get(name);\r\n return [keyControl, valueControl];\r\n }\r\n\r\n private setAsterisk() {\r\n this.asterisk = this.service.calcAsterisks(this.validators);\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isFirstGroup && this.first && this.fieldRef) {\r\n requestAnimationFrame(() => {\r\n this.fieldRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n getComponent(prop: FormProp): string {\r\n return this.service.getComponent(prop);\r\n }\r\n\r\n getType(prop: FormProp): string {\r\n return this.service.getType(prop);\r\n }\r\n\r\n ngOnChanges({ prop, data }: SimpleChanges) {\r\n const currentProp = prop?.currentValue as FormProp;\r\n const { options, readonly, disabled, validators, className, template } = currentProp || {};\r\n if (template) {\r\n this.injectorForCustomComponent = Injector.create({\r\n providers: [\r\n {\r\n provide: EXTENSIONS_FORM_PROP,\r\n useValue: currentProp,\r\n },\r\n {\r\n provide: EXTENSIONS_FORM_PROP_DATA,\r\n useValue: (data?.currentValue as PropData)?.record,\r\n },\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n parent: this.injector,\r\n });\r\n }\r\n\r\n if (options) this.options$ = options(this.data);\r\n if (readonly) this.readonly = readonly(this.data);\r\n\r\n if (disabled) {\r\n this.disabledFn = disabled;\r\n }\r\n if (validators) {\r\n this.validators = validators(this.data);\r\n this.setAsterisk();\r\n }\r\n if (className !== undefined) {\r\n this.containerClassName = className;\r\n }\r\n\r\n const [keyControl, valueControl] = this.getTypeaheadControls();\r\n if (keyControl && valueControl)\r\n this.typeaheadModel = { key: keyControl.value, value: valueControl.value };\r\n }\r\n}\r\n","<ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n @switch (getComponent(prop)) {\r\n @case ('template') {\r\n <ng-container *ngComponentOutlet=\"prop.template; injector: injectorForCustomComponent\" />\r\n }\r\n }\r\n\r\n <div [ngClass]=\"containerClassName\" class=\"mb-2\">\r\n @switch (getComponent(prop)) {\r\n @case ('input') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [type]=\"getType(prop)\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n />\r\n }\r\n @case ('hidden') {\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n }\r\n @case ('checkbox') {\r\n <div class=\"form-check\" validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n />\r\n <ng-template\r\n [ngTemplateOutlet]=\"label\"\r\n [ngTemplateOutletContext]=\"{ $implicit: 'form-check-label' }\"\r\n />\r\n </div>\r\n }\r\n @case ('select') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <select\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n class=\"form-select form-control\"\r\n >\r\n @for (option of options$ | async; track option.value) {\r\n <option [ngValue]=\"option.value\">\r\n @if (prop.isExtra) {\r\n {{ '::' + option.key | abpLocalization }}\r\n } @else {\r\n {{ option.key }}\r\n }\r\n </option>\r\n }\r\n </select>\r\n }\r\n @case ('multiselect') {\r\n <ng-template [ngTemplateOutlet]=\"label\"></ng-template>\r\n <abp-extensible-form-multi-select\r\n [prop]=\"prop\"\r\n [options]=\"options$ | async\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n />\r\n }\r\n @case ('typeahead') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <div #typeahead class=\"position-relative\" validationStyle validationTarget>\r\n <input\r\n #field\r\n [id]=\"prop.id\"\r\n [autocomplete]=\"prop.autocomplete\"\r\n [abpDisabled]=\"disabled\"\r\n [ngbTypeahead]=\"search\"\r\n [editable]=\"false\"\r\n [inputFormatter]=\"typeaheadFormatter\"\r\n [resultFormatter]=\"typeaheadFormatter\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [(ngModel)]=\"typeaheadModel\"\r\n (selectItem)=\"setTypeaheadValue($event.item)\"\r\n (blur)=\"setTypeaheadValue(typeaheadModel)\"\r\n [class.is-invalid]=\"typeahead.classList.contains('is-invalid')\"\r\n class=\"form-control\"\r\n />\r\n <input [formControlName]=\"prop.name\" type=\"hidden\" />\r\n </div>\r\n }\r\n @case ('date') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <input\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n (click)=\"datepicker.open()\"\r\n (keyup.space)=\"datepicker.open()\"\r\n ngbDatepicker\r\n #datepicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n }\r\n @case ('time') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <ngb-timepicker [formControlName]=\"prop.name\" />\r\n }\r\n @case ('dateTime') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <abp-extensible-date-time-picker [prop]=\"prop\" [meridian]=\"meridian$ | async\" />\r\n }\r\n @case ('textarea') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <textarea\r\n #field\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpDisabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n class=\"form-control\"\r\n ></textarea>\r\n }\r\n @case ('passwordinputgroup') {\r\n <ng-template [ngTemplateOutlet]=\"label\" />\r\n <div class=\"input-group form-group\" validationTarget>\r\n <input\r\n class=\"form-control\"\r\n [id]=\"prop.id\"\r\n [formControlName]=\"prop.name\"\r\n [abpShowPassword]=\"showPassword\"\r\n />\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"showPassword = !showPassword\">\r\n <i\r\n class=\"fa\"\r\n aria-hidden=\"true\"\r\n [ngClass]=\"{\r\n 'fa-eye-slash': !showPassword,\r\n 'fa-eye': showPassword,\r\n }\"\r\n ></i>\r\n </button>\r\n </div>\r\n }\r\n }\r\n\r\n @if (prop.formText) {\r\n <small class=\"text-muted d-block\">{{ prop.formText | abpLocalization }}</small>\r\n }\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #label let-classes>\r\n <label [htmlFor]=\"prop.id\" [ngClass]=\"classes || 'form-label d-inline-block'\">\r\n <span class=\"d-inline-flex align-items-center gap-1 text-nowrap\">\r\n @if (prop.displayTextResolver) {\r\n {{ prop.displayTextResolver(data) | abpLocalization }}\r\n } @else {\r\n @if (prop.isExtra) {\r\n {{ '::' + prop.displayName | abpLocalization }}\r\n } @else {\r\n {{ prop.displayName | abpLocalization }}\r\n }\r\n }\r\n {{ asterisk }}\r\n @if (prop.tooltip) {\r\n <i\r\n [ngbTooltip]=\"prop.tooltip.text | abpLocalization\"\r\n [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\"\r\n class=\"bi bi-info-circle\"\r\n ></i>\r\n }\r\n </span>\r\n </label>\r\n</ng-template>\r\n","import { InjectionToken, InjectOptions, Type } from '@angular/core';\r\nimport { LinkedList } from '@abp/utils';\r\n\r\nexport abstract class ActionList<R = any, A = Action<R>> extends LinkedList<A> {}\r\n\r\nexport abstract class ActionData<R = any> {\r\n abstract getInjected: <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n flags?: InjectOptions,\r\n ) => T;\r\n index?: number;\r\n abstract record: R;\r\n\r\n get data(): ReadonlyActionData<R> {\r\n return {\r\n getInjected: this.getInjected,\r\n index: this.index,\r\n record: this.record,\r\n };\r\n }\r\n}\r\n\r\nexport type ReadonlyActionData<R = any> = Readonly<Omit<ActionData<R>, 'data'>>;\r\n\r\nexport abstract class Action<R = any> {\r\n constructor(\r\n public readonly permission: string,\r\n public readonly visible: ActionPredicate<R> = () => true,\r\n public readonly action: ActionCallback<R> = () => {},\r\n public readonly btnClass?: string,\r\n public readonly btnStyle?: string,\r\n ) {}\r\n}\r\n\r\nexport type ActionCallback<T, R = any> = (data: Omit<ActionData<T>, 'data'>) => R;\r\nexport type ActionPredicate<T> = (data?: Omit<ActionData<T>, 'data'>) => boolean;\r\n\r\nexport abstract class ActionsFactory<C extends Actions<any>> {\r\n protected abstract _ctor: Type<C>;\r\n private contributorCallbacks: ActionContributorCallbacks<InferredActionList<C>> = {};\r\n\r\n get(name: string): C {\r\n this.contributorCallbacks[name] = this.contributorCallbacks[name] || [];\r\n\r\n return new this._ctor(this.contributorCallbacks[name]);\r\n }\r\n}\r\n\r\nexport abstract class Actions<L extends ActionList<any, InferredAction<L>>> {\r\n protected abstract _ctor: Type<L>;\r\n\r\n get actions(): L {\r\n const actionList = new this._ctor();\r\n\r\n this.callbackList.forEach(callback => callback(actionList));\r\n\r\n return actionList;\r\n }\r\n\r\n constructor(private readonly callbackList: ActionContributorCallback<L>[]) {}\r\n\r\n addContributor(contributeCallback: ActionContributorCallback<L>) {\r\n this.callbackList.push(contributeCallback);\r\n }\r\n\r\n clearContributors() {\r\n while (this.callbackList.length) this.callbackList.pop();\r\n }\r\n}\r\n\r\nexport type ActionContributorCallbacks<L extends ActionList<any, InferredAction<L>>> = Record<\r\n string,\r\n ActionContributorCallback<L>[]\r\n>;\r\n\r\nexport type ActionContributorCallback<L extends ActionList<any, InferredAction<L>>> = (\r\n actionList: L,\r\n) => any;\r\n\r\ntype InferredActionList<C> = C extends Actions<infer L> ? L : never;\r\nexport type InferredAction<T> = T extends ActionList<any, infer U> ? U : T;\r\n","import { Type } from '@angular/core';\r\nimport {\r\n Action,\r\n ActionContributorCallback,\r\n ActionContributorCallbacks,\r\n ActionList,\r\n Actions,\r\n ActionsFactory,\r\n} from './actions';\r\nimport { FormPropTooltip } from './form-props';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class EntityActionList<R = any> extends ActionList<R, EntityAction<R>> {}\r\n\r\nexport class EntityActions<R = any> extends Actions<EntityActionList<R>> {\r\n protected _ctor: Type<EntityActionList<R>> = EntityActionList;\r\n}\r\n\r\nexport class EntityActionsFactory<R = any> extends ActionsFactory<EntityActions<R>> {\r\n protected _ctor: Type<EntityActions<R>> = EntityActions;\r\n}\r\n\r\nexport class EntityAction<R = any> extends Action<R> {\r\n readonly text: string;\r\n readonly icon: string;\r\n readonly btnClass?: string;\r\n readonly btnStyle?: string;\r\n readonly showOnlyIcon?: boolean;\r\n readonly tooltip?: FormPropTooltip;\r\n\r\n constructor(options: EntityActionOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.text = options.text;\r\n this.icon = options.icon || '';\r\n this.btnClass = options.btnClass || 'btn btn-primary text-center';\r\n this.btnStyle = options.btnStyle;\r\n this.showOnlyIcon = options.showOnlyIcon || false;\r\n this.tooltip = options.tooltip;\r\n }\r\n\r\n static create<R = any>(options: EntityActionOptions<R>) {\r\n return new EntityAction<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: EntityActionOptions<R>[]) {\r\n return arrayOfOptions.map(EntityAction.create);\r\n }\r\n}\r\n\r\ntype OptionalKeys = 'permission' | 'visible' | 'icon';\r\nexport type EntityActionOptions<R = any> = PartialWithOptions<EntityAction<R>, OptionalKeys> &\r\n FilteredWithOptions<EntityAction<R>, OptionalKeys>;\r\n\r\nexport type EntityActionDefaults<R = any> = Record<string, EntityAction<R>[]>;\r\nexport type EntityActionContributorCallback<R = any> = ActionContributorCallback<\r\n EntityActionList<R>\r\n>;\r\nexport type EntityActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n EntityActionList<R>\r\n>;\r\n","import { ABP, escapeHtmlChars } from '@abp/ng.core';\r\nimport { InjectOptions, InjectionToken, Type } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ActionCallback } from './actions';\r\nimport {\r\n Prop,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropContributorCallbacks,\r\n PropList,\r\n Props,\r\n PropsFactory,\r\n} from './props';\r\nimport { FormPropTooltip } from './form-props';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class EntityPropList<R = any> extends PropList<R, EntityProp<R>> {}\r\n\r\nexport class EntityProps<R = any> extends Props<EntityPropList<R>> {\r\n protected _ctor: Type<EntityPropList<R>> = EntityPropList;\r\n}\r\n\r\nexport class EntityPropsFactory<R = any> extends PropsFactory<EntityProps<R>> {\r\n protected _ctor: Type<EntityProps<R>> = EntityProps;\r\n}\r\n\r\nexport class EntityProp<R = any> extends Prop<R> {\r\n readonly columnWidth: number | undefined;\r\n readonly sortable: boolean;\r\n readonly valueResolver: PropCallback<R, Observable<any>>;\r\n readonly action?: ActionCallback<R>;\r\n readonly component?: Type<any>;\r\n readonly enumList?: Array<ABP.Option<any>>;\r\n readonly tooltip?: FormPropTooltip;\r\n readonly columnVisible: ColumnPredicate;\r\n\r\n constructor(options: EntityPropOptions<R>) {\r\n super(\r\n options.type,\r\n options.name,\r\n options.displayName || '',\r\n options.permission || '',\r\n options.visible,\r\n options.isExtra,\r\n );\r\n\r\n this.columnVisible = options.columnVisible || (() => true);\r\n this.columnWidth = options.columnWidth;\r\n this.sortable = options.sortable || false;\r\n this.valueResolver =\r\n options.valueResolver ||\r\n (data => of(escapeHtmlChars((data.record as PropDataObject)[this.name])));\r\n if (options.action) {\r\n this.action = options.action;\r\n }\r\n if (options.component) {\r\n this.component = options.component;\r\n }\r\n if (options.enumList) {\r\n this.enumList = options.enumList;\r\n }\r\n this.tooltip = options.tooltip;\r\n }\r\n\r\n static create<R = any>(options: EntityPropOptions<R>) {\r\n return new EntityProp<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: EntityPropOptions<R>[]) {\r\n return arrayOfOptions.map(EntityProp.create);\r\n }\r\n}\r\n\r\ntype OptionalKeys =\r\n | 'permission'\r\n | 'visible'\r\n | 'columnVisible'\r\n | 'displayName'\r\n | 'isExtra'\r\n | 'columnWidth'\r\n | 'sortable'\r\n | 'valueResolver'\r\n | 'action'\r\n | 'component'\r\n | 'enumList';\r\nexport type EntityPropOptions<R = any> = PartialWithOptions<EntityProp<R>, OptionalKeys> &\r\n FilteredWithOptions<EntityProp<R>, OptionalKeys>;\r\n\r\nexport type EntityPropDefaults<R = any> = Record<string, EntityProp<R>[]>;\r\nexport type EntityPropContributorCallback<R = any> = PropContributorCallback<EntityPropList<R>>;\r\nexport type EntityPropContributorCallbacks<R = any> = PropContributorCallbacks<EntityPropList<R>>;\r\nexport type ColumnPredicate = (getInjected: GetInjected, auxData?: any) => boolean;\r\nexport type GetInjected = <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions,\r\n) => T;\r\ntype PropDataObject = { [key: string]: any };\r\n","import { Injector, Type } from '@angular/core';\r\nimport {\r\n Action,\r\n ActionContributorCallback,\r\n ActionContributorCallbacks,\r\n ActionData,\r\n ActionList,\r\n Actions,\r\n ActionsFactory,\r\n ReadonlyActionData,\r\n} from './actions';\r\nimport { FilteredWithOptions, PartialWithOptions } from '../utils/model.utils';\r\n\r\nexport class ToolbarActionList<R = any> extends ActionList<R, ToolbarActionDefault<R>> {}\r\n\r\nexport class ToolbarActions<R = any> extends Actions<ToolbarActionList<R>> {\r\n protected _ctor: Type<ToolbarActionList<R>> = ToolbarActionList;\r\n}\r\n\r\nexport class ToolbarActionsFactory<R = any> extends ActionsFactory<ToolbarActions<R>> {\r\n protected _ctor: Type<ToolbarActions<R>> = ToolbarActions;\r\n}\r\n\r\nexport class ToolbarAction<R = any> extends Action<R> {\r\n readonly text: string;\r\n readonly icon: string;\r\n readonly btnClass?: string;\r\n\r\n constructor(options: ToolbarActionOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.text = options.text;\r\n this.icon = options.icon || '';\r\n if (options.btnClass) {\r\n this.btnClass = options.btnClass;\r\n }\r\n }\r\n\r\n static create<R = any>(options: ToolbarActionOptions<R>) {\r\n return new ToolbarAction<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: ToolbarActionOptions<R>[]) {\r\n return arrayOfOptions.map(ToolbarAction.create);\r\n }\r\n}\r\n\r\nexport class ToolbarComponent<R = any> extends Action<R> {\r\n readonly component: Type<any>;\r\n\r\n constructor(options: ToolbarComponentOptions<R>) {\r\n super(options.permission || '', options.visible, options.action);\r\n this.component = options.component;\r\n }\r\n\r\n static create<R = any>(options: ToolbarComponentOptions<R>) {\r\n return new ToolbarComponent<R>(options);\r\n }\r\n\r\n static createMany<R = any>(arrayOfOptions: ToolbarComponentOptions<R>[]) {\r\n return arrayOfOptions.map(ToolbarComponent.create);\r\n }\r\n}\r\n\r\ntype OptionalActionKeys = 'permission' | 'visible' | 'icon' | 'btnClass';\r\nexport type ToolbarActionOptions<R = any> = PartialWithOptions<\r\n ToolbarAction<R>,\r\n OptionalActionKeys\r\n> &\r\n FilteredWithOptions<ToolbarAction<R>, OptionalActionKeys>;\r\n\r\ntype OptionalComponentKeys = 'permission' | 'visible' | 'action';\r\nexport type ToolbarComponentOptions<R = any> = PartialWithOptions<\r\n ToolbarComponent<R>,\r\n OptionalComponentKeys\r\n> &\r\n FilteredWithOptions<ToolbarComponent<R>, OptionalComponentKeys>;\r\n\r\nexport type ToolbarActionDefault<R = any> = ToolbarAction<R> | ToolbarComponent<R>;\r\n\r\nexport type ToolbarActionDefaults<R = any> = Record<string, Array<ToolbarActionDefault<R>>>;\r\nexport type ToolbarActionContributorCallback<R = any> = ActionContributorCallback<\r\n ToolbarActionList<R>\r\n>;\r\nexport type ToolbarActionContributorCallbacks<R = any> = ActionContributorCallbacks<\r\n ToolbarActionList<R>\r\n>;\r\nexport type InferredData<L> = ActionData<InferredRecord<L>>;\r\nexport type InferredRecord<L> = L extends ActionList<infer R> ? R : any;\r\n\r\nexport interface HasCreateInjectorPipe<R> {\r\n getData: () => ReadonlyActionData<R>;\r\n injector: Injector;\r\n getInjected: InferredData<ToolbarActionList<R>>['getInjected'];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityActionsFactory } from '../models/entity-actions';\r\nimport { EntityPropsFactory } from '../models/entity-props';\r\nimport { CreateFormPropsFactory, EditFormPropsFactory } from '../models/form-props';\r\nimport { ToolbarActionsFactory } from '../models/toolbar-actions';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ExtensionsService<R = any> {\r\n readonly entityActions = new EntityActionsFactory<R>();\r\n readonly toolbarActions = new ToolbarActionsFactory<R[]>();\r\n readonly entityProps = new EntityPropsFactory<R>();\r\n readonly createFormProps = new CreateFormPropsFactory<R>();\r\n readonly editFormProps = new EditFormPropsFactory<R>();\r\n}\r\n","/* eslint-disable @angular-eslint/no-input-rename */\r\nimport { \r\n Directive, \r\n Injector, \r\n Input, \r\n OnChanges, \r\n OnDestroy, \r\n TemplateRef, \r\n ViewContainerRef, \r\n inject \r\n} from '@angular/core';\r\nimport { PropData, PropList } from '../models/props';\r\n\r\n@Directive({\r\n exportAs: 'abpPropData',\r\n selector: '[abpPropData]',\r\n})\r\nexport class PropDataDirective<L extends PropList<any>>\r\n extends PropData<InferredData<L>>\r\n implements OnChanges, OnDestroy\r\n{\r\n private tempRef = inject<TemplateRef<any>>(TemplateRef);\r\n private vcRef = inject(ViewContainerRef);\r\n\r\n @Input('abpPropDataFromList') propList?: L;\r\n\r\n @Input('abpPropDataWithRecord') record!: InferredData<L>['record'];\r\n\r\n @Input('abpPropDataAtIndex') index?: number;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n super();\r\n\r\n this.getInjected = injector.get.bind(injector);\r\n }\r\n\r\n ngOnChanges() {\r\n this.vcRef.clear();\r\n\r\n this.vcRef.createEmbeddedView(this.tempRef, {\r\n $implicit: this.data,\r\n index: 0,\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.vcRef.clear();\r\n }\r\n}\r\n\r\ntype InferredData<L> = PropData<InferredRecord<L>>;\r\ntype InferredRecord<L> = L extends PropList<infer R> ? R : never;\r\n","import { TrackByService } from '@abp/ng.core';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n inject,\r\n Input,\r\n Optional,\r\n QueryList,\r\n SkipSelf,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ControlContainer, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\r\nimport { EXTRA_PROPERTIES_KEY } from '../../constants/extra-properties';\r\nimport { FormProp, FormPropList, GroupedFormPropList } from '../../models/form-props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { selfFactory } from '../../utils/factory.util';\r\nimport { ExtensibleFormPropComponent } from './extensible-form-prop.component';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { PropDataDirective } from '../../directives/prop-data.directive';\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleForm',\r\n selector: 'abp-extensible-form',\r\n templateUrl: './extensible-form.component.html',\r\n imports: [NgClass, NgTemplateOutlet, PropDataDirective, ReactiveFormsModule, ExtensibleFormPropComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n viewProviders: [\r\n {\r\n provide: ControlContainer,\r\n useFactory: selfFactory,\r\n deps: [[new Optional(), new SkipSelf(), ControlContainer]],\r\n },\r\n ],\r\n})\r\nexport class ExtensibleFormComponent<R = any> {\r\n public readonly cdRef = inject(ChangeDetectorRef);\r\n public readonly track = inject(TrackByService);\r\n private readonly container = inject(ControlContainer);\r\n private readonly extensions = inject(ExtensionsService);\r\n private readonly identifier = inject(EXTENSIONS_IDENTIFIER);\r\n\r\n @ViewChildren(ExtensibleFormPropComponent)\r\n formProps!: QueryList<ExtensibleFormPropComponent>;\r\n\r\n @Input()\r\n set selectedRecord(record: R) {\r\n const type = !record || JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const propList = this.extensions[`${type}FormProps`].get(this.identifier).props;\r\n this.groupedPropList = this.createGroupedList(propList);\r\n this.record = record;\r\n }\r\n\r\n extraPropertiesKey = EXTRA_PROPERTIES_KEY;\r\n groupedPropList!: GroupedFormPropList;\r\n groupedPropListOfArray: FormProp<any>[][];\r\n record!: R;\r\n\r\n get form(): UntypedFormGroup {\r\n return (this.container ? this.container.control : { controls: {} }) as UntypedFormGroup;\r\n }\r\n\r\n get extraProperties(): UntypedFormGroup {\r\n return (this.form.controls.extraProperties || { controls: {} }) as UntypedFormGroup;\r\n }\r\n\r\n createGroupedList(propList: FormPropList<R>) {\r\n const groupedFormPropList = new GroupedFormPropList();\r\n propList.forEach(item => {\r\n groupedFormPropList.addItem(item.value);\r\n });\r\n\r\n return groupedFormPropList;\r\n }\r\n\r\n //TODO: Reactor this method\r\n isAnyGroupMemberVisible(index: number, data) {\r\n const { items } = this.groupedPropList;\r\n const formPropList = items[index].formPropList.toArray();\r\n return formPropList.some(prop => prop.visible(data));\r\n }\r\n}\r\n","@if (form) {\r\n @for (groupedProp of groupedPropList.items; track i; let i = $index; let first = $first) {\r\n <ng-container *abpPropData=\"let data; fromList: groupedProp.formPropList; withRecord: record\">\r\n @if (isAnyGroupMemberVisible(i, data) && groupedProp.group?.className) {\r\n <div\r\n [ngClass]=\"groupedProp.group?.className\"\r\n [attr.data-name]=\"groupedProp.group?.name || groupedProp.group?.className\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first}\"\r\n >\r\n </ng-container>\r\n </div>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"propListTemplate\"\r\n [ngTemplateOutletContext]=\"{ groupedProp: groupedProp, data: data, isFirstGroup: first }\"\r\n >\r\n </ng-container>\r\n }\r\n </ng-container>\r\n }\r\n}\r\n\r\n<ng-template let-groupedProp=\"groupedProp\" let-data=\"data\" let-isFirstGroup=\"isFirstGroup\" #propListTemplate>\r\n @for (prop of groupedProp.formPropList; let index = $index; let first = $first; track prop.name) {\r\n @if (prop.visible(data)) {\r\n @if (extraProperties.controls[prop.name]) {\r\n <ng-container [formGroupName]=\"extraPropertiesKey\">\r\n <abp-extensible-form-prop [prop]=\"prop\" [data]=\"data\" [class]=\"prop.className\" />\r\n </ng-container>\r\n } @else {\r\n @if (form.get(prop.name)) {\r\n <abp-extensible-form-prop\r\n [class]=\"prop.className\"\r\n [prop]=\"prop\"\r\n [data]=\"data\"\r\n [first]=\"first\"\r\n [isFirstGroup]=\"isFirstGroup\"\r\n />\r\n }\r\n }\r\n }\r\n }\r\n</ng-template>\r\n","import { Directive, Injector, Input, inject } from '@angular/core';\r\nimport { ActionData, ActionList, InferredAction } from '../../models/actions';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token';\r\nimport { InferredData, InferredRecord } from '../../models/toolbar-actions';\r\n\r\n// Fix for https://github.com/angular/angular/issues/23904\r\n// @dynamic\r\n@Directive()\r\nexport abstract class AbstractActionsComponent<\r\n L extends ActionList<any, InferredAction<L>>,\r\n> extends ActionData<InferredRecord<L>> {\r\n readonly actionList: L;\r\n\r\n readonly getInjected: InferredData<L>['getInjected'];\r\n\r\n @Input() record!: InferredData<L>['record'];\r\n\r\n protected constructor() {\r\n const injector = inject(Injector);\r\n\r\n super();\r\n this.getInjected = injector.get.bind(injector);\r\n const extensions = injector.get(ExtensionsService);\r\n const name = injector.get(EXTENSIONS_IDENTIFIER);\r\n const type = injector.get(EXTENSIONS_ACTION_TYPE);\r\n this.actionList = extensions[type].get(name).actions as unknown as L;\r\n }\r\n}\r\n","import { \r\n ChangeDetectionStrategy, \r\n Component, \r\n Input, \r\n TrackByFunction, \r\n} from '@angular/core';\r\nimport { EntityAction, EntityActionList } from '../../models/entity-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { LocalizationPipe, PermissionDirective } from '@abp/ng.core';\r\nimport { EllipsisDirective } from '@abp/ng.theme.shared';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpGridActions',\r\n imports: [\r\n NgbDropdownModule,\r\n EllipsisDirective,\r\n PermissionDirective,\r\n NgClass,\r\n LocalizationPipe,\r\n NgTemplateOutlet,\r\n NgbTooltipModule,\r\n ],\r\n selector: 'abp-grid-actions',\r\n templateUrl: './grid-actions.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'entityActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class GridActionsComponent<R = any> extends AbstractActionsComponent<EntityActionList<R>> {\r\n @Input() icon = 'fa fa-cog';\r\n\r\n @Input() readonly index?: number;\r\n\r\n @Input() text = '';\r\n\r\n readonly trackByFn: TrackByFunction<EntityAction<R>> = (_, item) => item.text;\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","@if (actionList.length > 1) {\r\n <div ngbDropdown container=\"body\" class=\"d-inline-block\">\r\n <button\r\n class=\"btn btn-primary btn-sm dropdown-toggle\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n ngbDropdownToggle\r\n >\r\n <i [ngClass]=\"icon\" [class.me-1]=\"icon\"></i>{{ text | abpLocalization }}\r\n </button>\r\n <div ngbDropdownMenu>\r\n @for (action of actionList; track action.text) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropDownBtnItemTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: action }\"\r\n >\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (actionList.length === 1) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"btnTmp\"\r\n [ngTemplateOutletContext]=\"{ $implicit: actionList.get(0).value }\"\r\n ></ng-container>\r\n}\r\n\r\n<ng-template #dropDownBtnItemTmp let-action>\r\n @if (action.visible(data)) {\r\n <button\r\n ngbDropdownItem\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #buttonContentTmp let-action>\r\n <i [ngClass]=\"action.icon\" [class.me-1]=\"action.icon && !action.showOnlyIcon\"></i>\r\n @if (!action.showOnlyIcon) {\r\n @if (action.icon) {\r\n <span>{{ action.text | abpLocalization }}</span>\r\n } @else {\r\n <div abpEllipsis>{{ action.text | abpLocalization }}</div>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #btnTmp let-action>\r\n @if (action.visible(data)) {\r\n @if (action.tooltip) {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n [ngbTooltip]=\"action.tooltip.text | abpLocalization\"\r\n [placement]=\"action.tooltip.placement || 'auto'\"\r\n triggers=\"hover\"\r\n container=\"body\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n } @else {\r\n <button\r\n *abpPermission=\"action.permission; runChangeDetection: false\"\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [class]=\"action.btnClass\"\r\n [style]=\"action.btnStyle\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonContentTmp; context: { $implicit: action }\"\r\n ></ng-container>\r\n </button>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n EventEmitter,\r\n inject,\r\n Injector,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n PLATFORM_ID,\r\n signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n TrackByFunction,\r\n} from '@angular/core';\r\nimport { AsyncPipe, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { Observable, filter, map, Subject, debounceTime, distinctUntilChanged } from 'rxjs';\r\n\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxDatatableModule, SelectionType } from '@swimlane/ngx-datatable';\r\n\r\nimport {\r\n ABP,\r\n ConfigStateService,\r\n ListService,\r\n LocalizationPipe,\r\n PermissionDirective,\r\n PermissionService,\r\n TimezoneService,\r\n UtcToLocalPipe,\r\n} from '@abp/ng.core';\r\nimport {\r\n AbpVisibleDirective,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n} from '@abp/ng.theme.shared';\r\n\r\nimport { ePropType } from '../../enums/props.enum';\r\nimport { EntityActionList } from '../../models/entity-actions';\r\nimport { EntityProp, EntityPropList } from '../../models/entity-props';\r\nimport { PropData } from '../../models/props';\r\nimport { ExtensionsService } from '../../services/extensions.service';\r\nimport {\r\n ENTITY_PROP_TYPE_CLASSES,\r\n EXTENSIONS_IDENTIFIER,\r\n PROP_DATA_STREAM,\r\n ROW_RECORD,\r\n} from '../../tokens/extensions.token';\r\nimport { GridActionsComponent } from '../grid-actions/grid-actions.component';\r\n\r\nconst DEFAULT_ACTIONS_COLUMN_WIDTH = 150;\r\n\r\n@Component({\r\n exportAs: 'abpExtensibleTable',\r\n selector: 'abp-extensible-table',\r\n imports: [\r\n AbpVisibleDirective,\r\n NgxDatatableModule,\r\n GridActionsComponent,\r\n NgbTooltip,\r\n NgxDatatableDefaultDirective,\r\n NgxDatatableListDirective,\r\n PermissionDirective,\r\n LocalizationPipe,\r\n UtcToLocalPipe,\r\n AsyncPipe,\r\n NgTemplateOutlet,\r\n NgComponentOutlet,\r\n ],\r\n templateUrl: './extensible-table.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ExtensibleTableComponent<R = any> implements OnChanges, AfterViewInit, OnDestroy {\r\n readonly #injector = inject(Injector);\r\n readonly getInjected = this.#injector.get.bind(this.#injector);\r\n protected readonly cdr = inject(ChangeDetectorRef);\r\n protected readonly locale = inject(LOCALE_ID);\r\n protected readonly config = inject(ConfigStateService);\r\n protected readonly timeZoneService = inject(TimezoneService);\r\n protected readonly entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES);\r\n protected readonly permissionService = inject(PermissionService);\r\n private platformId = inject(PLATFORM_ID);\r\n protected isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n protected _actionsText!: string;\r\n @Input()\r\n set actionsText(value: string) {\r\n this._actionsText = value;\r\n }\r\n\r\n get actionsText(): string {\r\n return this._actionsText ?? (this.actionList.length >= 1 ? 'AbpUi::Actions' : '');\r\n }\r\n\r\n @Input() data!: R[];\r\n @Input() list!: ListService;\r\n @Input() recordsTotal!: number;\r\n\r\n @Input() set actionsColumnWidth(width: number) {\r\n this._actionsColumnWidth.set(width ? Number(width) : undefined);\r\n }\r\n\r\n @Input() actionsTemplate?: TemplateRef<any>;\r\n\r\n @Output() tableActivate = new EventEmitter();\r\n\r\n @Input() selectable = false;\r\n\r\n @Input() set selectionType(value: SelectionType | string) {\r\n this._selectionType = typeof value === 'string' ? SelectionType[value] : value;\r\n }\r\n _selectionType: SelectionType = SelectionType.multiClick;\r\n\r\n @Input() selected: any[] = [];\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n\r\n // Infinite scroll configuration\r\n @Input() infiniteScroll = false;\r\n @Input() isLoading = false;\r\n @Input() scrollThreshold = 10;\r\n @Output() loadMore = new EventEmitter<void>();\r\n @Input() tableHeight: number;\r\n\r\n hasAtLeastOnePermittedAction: boolean;\r\n\r\n readonly propList: EntityPropList<R>;\r\n\r\n readonly actionList: EntityActionList<R>;\r\n\r\n readonly trackByFn: TrackByFunction<EntityProp<R>> = (_, item) => item.name;\r\n\r\n // Signal for actions column width\r\n private readonly _actionsColumnWidth = signal<number | undefined>(DEFAULT_ACTIONS_COLUMN_WIDTH);\r\n\r\n // Infinite scroll: debounced load more subject\r\n private readonly loadMoreSubject = new Subject<void>();\r\n private readonly loadMoreSubscription = this.loadMoreSubject\r\n .pipe(debounceTime(100), distinctUntilChanged())\r\n .subscribe(() => this.triggerLoadMore());\r\n\r\n readonly columnWidths = computed(() => {\r\n return this.propList.toArray().map(prop => prop.columnWidth);\r\n });\r\n\r\n constructor() {\r\n const extensions = this.#injector.get(ExtensionsService);\r\n const name = this.#injector.get(EXTENSIONS_IDENTIFIER);\r\n this.propList = extensions.entityProps.get(name).props;\r\n this.actionList = extensions['entityActions'].get(name)\r\n .actions as unknown as EntityActionList<R>;\r\n\r\n this.hasAtLeastOnePermittedAction =\r\n this.permissionService.filterItemsByPolicy(\r\n this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })),\r\n ).length > 0;\r\n }\r\n\r\n private getIcon(value: boolean) {\r\n return value\r\n ? '<div class=\"text-success\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></div>'\r\n : '<div class=\"text-danger\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>';\r\n }\r\n\r\n private getEnum(rowValue: any, list: Array<ABP.Option<any>>) {\r\n if (!list || list.length < 1) return rowValue;\r\n const { key } = list.find(({ value }) => value === rowValue) || {};\r\n return key;\r\n }\r\n\r\n getContent(prop: EntityProp<R>, data: PropData): Observable<string> {\r\n return prop.valueResolver(data).pipe(\r\n map(value => {\r\n switch (prop.type) {\r\n case ePropType.Boolean:\r\n return this.getIcon(value);\r\n case ePropType.Enum:\r\n return this.getEnum(value, prop.enumList || []);\r\n default:\r\n return value;\r\n // More types can be handled in the future\r\n }\r\n }),\r\n );\r\n }\r\n\r\n ngOnChanges({ data }: SimpleChanges) {\r\n if (!data?.currentValue) return;\r\n\r\n if (data.currentValue.length < 1) {\r\n this.list.totalCount = this.recordsTotal;\r\n }\r\n\r\n this.data = data.currentValue.map((record: any, index: number) => {\r\n this.propList.forEach(prop => {\r\n const propData = { getInjected: this.getInjected, record, index } as any;\r\n const value = this.getContent(prop.value, propData);\r\n\r\n const propKey = `_${prop.value.name}`;\r\n record[propKey] = {\r\n visible: prop.value.visible(propData),\r\n value,\r\n };\r\n if (prop.value.component) {\r\n record[propKey].injector = Injector.create({\r\n providers: [\r\n {\r\n provide: PROP_DATA_STREAM,\r\n useValue: value,\r\n },\r\n {\r\n provide: ROW_RECORD,\r\n useValue: record,\r\n },\r\n ],\r\n parent: this.#injector,\r\n });\r\n record[propKey].component = prop.value.component;\r\n }\r\n });\r\n\r\n return record;\r\n });\r\n }\r\n\r\n isVisibleActions(rowData: any): boolean {\r\n const actions = this.actionList.toArray();\r\n const visibleActions = actions.filter(action => {\r\n const { visible, permission } = action;\r\n\r\n let isVisible = true;\r\n let hasPermission = true;\r\n\r\n if (visible) {\r\n isVisible = visible({ record: rowData, getInjected: this.getInjected });\r\n }\r\n\r\n if (permission) {\r\n hasPermission = this.permissionService.getGrantedPolicy(permission);\r\n }\r\n\r\n return isVisible && hasPermission;\r\n });\r\n\r\n return visibleActions.length > 0;\r\n }\r\n\r\n onSelect({ selected }) {\r\n this.selected.splice(0, this.selected.length);\r\n this.selected.push(...selected);\r\n this.selectionChange.emit(selected);\r\n }\r\n\r\n onScroll(scrollEvent: Event): void {\r\n if (!this.shouldHandleScroll()) {\r\n return;\r\n }\r\n\r\n const target = scrollEvent.target as HTMLElement;\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (this.isNearScrollBottom(target)) {\r\n this.loadMoreSubject.next();\r\n }\r\n }\r\n\r\n private shouldHandleScroll(): boolean {\r\n return this.infiniteScroll && !this.isLoading;\r\n }\r\n\r\n private isNearScrollBottom(element: HTMLElement): boolean {\r\n const { offsetHeight, scrollTop, scrollHeight } = element;\r\n return offsetHeight + scrollTop >= scrollHeight - this.scrollThreshold;\r\n }\r\n\r\n private triggerLoadMore(): void {\r\n this.loadMore.emit();\r\n }\r\n\r\n getTableHeight() {\r\n if (!this.infiniteScroll) return 'auto';\r\n\r\n return this.tableHeight ? `${this.tableHeight}px` : 'auto';\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.infiniteScroll) {\r\n this.list?.requestStatus$?.pipe(filter(status => status === 'loading')).subscribe(() => {\r\n this.data = [];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.loadMoreSubscription.unsubscribe();\r\n }\r\n}\r\n","@if (isBrowser) {\r\n <ngx-datatable\r\n default\r\n [rows]=\"data\"\r\n [count]=\"recordsTotal\"\r\n [list]=\"list\"\r\n [selectionType]=\"selectable ? _selectionType : undefined\"\r\n (activate)=\"tableActivate.emit($event)\"\r\n (select)=\"onSelect($event)\"\r\n [selected]=\"selected\"\r\n (scroll)=\"onScroll($event)\"\r\n [scrollbarV]=\"infiniteScroll\"\r\n [style.height]=\"getTableHeight()\"\r\n [loadingIndicator]=\"infiniteScroll && isLoading\"\r\n [footerHeight]=\"infiniteScroll ? false : 50\"\r\n>\r\n@if(selectable) {\r\n <ngx-datatable-column [width]=\"50\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\" [resizeable]=\"false\">\r\n\r\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\r\n let-selectFn=\"selectFn\">\r\n @if (_selectionType !== 'single') {\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input table-check\" type=\"checkbox\" [checked]=\"allRowsSelected\"\r\n (change)=\"selectFn(!allRowsSelected)\" />\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template ngx-datatable-cell-template let-value=\"value\" let-row=\"row\" let-isSelected=\"isSelected\"\r\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\r\n @if(_selectionType === 'single') {\r\n <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n <input class=\"form-check-input\" type=\"radio\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\" />\r\n </div>\r\n }\r\n @if (_selectionType !== 'single') {\r\n <div class=\"h-100 form-check form-check-sm form-check-custom form-check-solid\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"isSelected\" (change)=\"onCheckboxChangeFn($event)\" />\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n </ngx-datatable-column>\r\n }\r\n @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) {\r\n <ngx-datatable-column\r\n [name]=\"actionsText | abpLocalization\"\r\n [maxWidth]=\"_actionsColumnWidth() ?? undefined\"\r\n [width]=\"_actionsColumnWidth() ?? 200\"\r\n [canAutoResize]=\"!_actionsColumnWidth()\"\r\n [sortable]=\"false\"\r\n >\r\n <ng-template let-row=\"row\" let-i=\"rowIndex\" ngx-datatable-cell-template>\r\n <ng-container\r\n *ngTemplateOutlet=\"actionsTemplate || gridActions; context: { $implicit: row, index: i }\"\r\n ></ng-container>\r\n <ng-template #gridActions>\r\n @if (isVisibleActions(row)) {\r\n <abp-grid-actions [index]=\"i\" [record]=\"row\" text=\"AbpUi::Actions\"></abp-grid-actions>\r\n }\r\n </ng-template>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n @for (prop of propList; track prop.name; let i = $index) {\r\n <ngx-datatable-column\r\n *abpVisible=\"prop.columnVisible(getInjected)\"\r\n [width]=\"columnWidths[i] ?? 200\"\r\n [canAutoResize]=\"!columnWidths[i]\"\r\n [name]=\"(prop.isExtra ? '::' + prop.displayName : prop.displayName) | abpLocalization\"\r\n [prop]=\"prop.name\"\r\n [sortable]=\"prop.sortable\"\r\n >\r\n <ng-template ngx-datatable-header-template let-column=\"column\" let-sortFn=\"sortFn\">\r\n @if (prop.tooltip) {\r\n <span\r\n [ngbTooltip]=\"prop.tooltip.text | abpLocalization\"\r\n [placement]=\"prop.tooltip.placement || 'auto'\"\r\n container=\"body\"\r\n [class.pointer]=\"prop.sortable\"\r\n (click)=\"prop.sortable && sortFn(column)\"\r\n >\r\n {{ column.name }} <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n </span>\r\n } @else {\r\n <span\r\n [class.pointer]=\"prop.sortable\"\r\n (click)=\"prop.sortable && sortFn(column)\"\r\n >\r\n {{ column.name }}\r\n </span>\r\n }\r\n </ng-template>\r\n <ng-template let-row=\"row\" let-i=\"index\" ngx-datatable-cell-template>\r\n <ng-container *abpPermission=\"prop.permission; runChangeDetection: false\">\r\n <ng-container *abpVisible=\"row['_' + prop.name]?.visible\">\r\n @if (!row['_' + prop.name].component) {\r\n @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') {\r\n <div\r\n [innerHTML]=\"\r\n !prop.isExtra\r\n ? (row['_' + prop.name]?.value | async | abpUtcToLocal:prop.type)\r\n : ('::' + (row['_' + prop.name]?.value | async | abpUtcToLocal:prop.type) | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n } @else {\r\n <div\r\n [innerHTML]=\"\r\n !prop.isExtra\r\n ? (row['_' + prop.name]?.value | async)\r\n : ('::' + (row['_' + prop.name]?.value | async) | abpLocalization)\r\n \"\r\n (click)=\"\r\n prop.action && prop.action({ getInjected: getInjected, record: row, index: i })\r\n \"\r\n [ngClass]=\"entityPropTypeClasses[prop.type]\"\r\n [class.pointer]=\"prop.action\"\r\n ></div>\r\n }\r\n } @else {\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n row['_' + prop.name].component;\r\n injector: row['_' + prop.name].injector\r\n \"\r\n ></ng-container>\r\n }\r\n </ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n</ngx-datatable>\r\n}\r\n","import { InjectionToken, InjectOptions, Injector, Pipe, PipeTransform, Type } from '@angular/core';\r\nimport { HasCreateInjectorPipe, ToolbarComponent } from '../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token';\r\n\r\n@Pipe({\r\n name: 'createInjector',\r\n})\r\nexport class CreateInjectorPipe<R> implements PipeTransform {\r\n public transform(\r\n _: any,\r\n action: ToolbarComponent<R>,\r\n context: HasCreateInjectorPipe<R>,\r\n ): Injector {\r\n const get = <T>(\r\n token: Type<T> | InjectionToken<T>,\r\n notFoundValue?: T,\r\n options?: InjectOptions,\r\n ) => {\r\n const componentData = context.getData();\r\n const componentDataCallback = (data: any) => {\r\n data = data ?? context.getData();\r\n return action.action(data);\r\n };\r\n let extensionData;\r\n switch (token) {\r\n case EXTENSIONS_ACTION_DATA:\r\n extensionData = componentData;\r\n break;\r\n case EXTENSIONS_ACTION_CALLBACK:\r\n extensionData = componentDataCallback;\r\n break;\r\n default:\r\n extensionData = context.getInjected.call(context.injector, token, notFoundValue, options);\r\n }\r\n return extensionData;\r\n };\r\n return { get };\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Injector, TrackByFunction, inject } from '@angular/core';\r\nimport {\r\n HasCreateInjectorPipe,\r\n ToolbarAction,\r\n ToolbarActionDefault,\r\n ToolbarActionList,\r\n ToolbarComponent,\r\n} from '../../models/toolbar-actions';\r\nimport { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token';\r\nimport { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component';\r\nimport { CreateInjectorPipe } from '../../pipes/create-injector.pipe';\r\nimport { LocalizationPipe, PermissionDirective } from '@abp/ng.core';\r\nimport { NgClass, NgComponentOutlet } from '@angular/common';\r\n\r\n@Component({\r\n exportAs: 'abpPageToolbar',\r\n selector: 'abp-page-toolbar',\r\n imports: [\r\n CreateInjectorPipe,\r\n PermissionDirective,\r\n LocalizationPipe,\r\n NgClass,\r\n NgComponentOutlet,\r\n ],\r\n templateUrl: './page-toolbar.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_ACTION_TYPE,\r\n useValue: 'toolbarActions',\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PageToolbarComponent<R = any>\r\n extends AbstractActionsComponent<ToolbarActionList<R>>\r\n implements HasCreateInjectorPipe<R>\r\n{\r\n readonly injector: Injector;\r\n\r\n defaultBtnClass = 'btn btn-sm btn-primary';\r\n\r\n getData = () => this.data;\r\n\r\n readonly trackByFn: TrackByFunction<ToolbarComponent<R>> = (_, item) =>\r\n item.action || item.component;\r\n\r\n constructor() {\r\n const injector = inject(Injector);\r\n\r\n super();\r\n \r\n this.injector = injector;\r\n }\r\n\r\n asToolbarAction(value: ToolbarActionDefault): { value: ToolbarAction } {\r\n return {\r\n value: value as ToolbarAction,\r\n };\r\n }\r\n}\r\n","<div class=\"row justify-content-end mx-0 gap-2\" id=\"AbpContentToolbar\">\r\n @for (action of actionList; track action.component || action.action; let last = $last) {\r\n <div class=\"col-auto px-0 pt-0\" [class.pe-0]=\"last\">\r\n @if (action.visible(data)) {\r\n <ng-container *abpPermission=\"action.permission; runChangeDetection: false\">\r\n @if (action.component; as component) {\r\n <ng-container\r\n *ngComponentOutlet=\"component; injector: record | createInjector: action:this\"\r\n ></ng-container>\r\n\r\n }@else {\r\n @if (asToolbarAction(action).value; as toolbarAction ) {\r\n <button\r\n (click)=\"action.action(data)\"\r\n type=\"button\"\r\n [ngClass]=\"toolbarAction?.btnClass ? toolbarAction?.btnClass : defaultBtnClass\"\r\n class=\"d-inline-flex align-items-center gap-1\"\r\n >\r\n <i [ngClass]=\"toolbarAction?.icon\" [class.me-1]=\"toolbarAction?.icon\"></i>\r\n {{ toolbarAction?.text | abpLocalization }}\r\n </button>\r\n } \r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n","import { ControlContainer, FormGroupDirective } from \"@angular/forms\";\r\n\r\nexport const EXTENSIBLE_FORM_VIEW_PROVIDER = { provide: ControlContainer, useExisting: FormGroupDirective }\r\n","import { ActionContributorCallback, ActionList, ActionsFactory, InferredAction } from \"../models/actions\";\r\nimport {\r\n EntityActionContributorCallbacks,\r\n EntityActionDefaults,\r\n EntityActions,\r\n EntityActionsFactory,\r\n} from '../models/entity-actions';\r\nimport {\r\n ToolbarActionContributorCallbacks,\r\n ToolbarActionDefaults,\r\n ToolbarActions,\r\n ToolbarActionsFactory,\r\n} from '../models/toolbar-actions';\r\n\r\nexport function mergeWithDefaultActions<F extends ActionsFactory<any>>(\r\n extension: F,\r\n defaultActions: InferredActionDefaults<F>,\r\n ...contributors: InferredActionContributorCallbacks<F>[]\r\n) {\r\n Object.keys(defaultActions).forEach((name: string) => {\r\n const actions: InferredActions<F> = extension.get(name);\r\n actions.clearContributors();\r\n actions.addContributor((actionList: ActionList<any, InferredAction<any>>) =>\r\n actionList.addManyTail(defaultActions[name]),\r\n );\r\n contributors.forEach(contributor =>\r\n (contributor[name] || []).forEach((callback: ActionContributorCallback<any>) =>\r\n actions.addContributor(callback),\r\n ),\r\n );\r\n });\r\n}\r\ntype InferredActionDefaults<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActionDefaults<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActionDefaults<RT>\r\n : never;\r\n\r\ntype InferredActionContributorCallbacks<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActionContributorCallbacks<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActionContributorCallbacks<RT>\r\n : never;\r\n\r\ntype InferredActions<F> = F extends EntityActionsFactory<infer RE>\r\n ? EntityActions<RE>\r\n : F extends ToolbarActionsFactory<infer RT>\r\n ? ToolbarActions<RT>\r\n : never;\r\n","import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { DateTimeAdapter, DateAdapter, TimeAdapter } from '@abp/ng.theme.shared';\r\n\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { FormPropList } from '../models/form-props';\r\nimport { PropData } from '../models/props';\r\nimport { ExtensionsService } from '../services/extensions.service';\r\nimport { EXTENSIONS_IDENTIFIER } from '../tokens/extensions.token';\r\n\r\nexport function generateFormFromProps<R = any>(data: PropData<R>) {\r\n const extensions = data.getInjected(ExtensionsService<R>);\r\n const identifier = data.getInjected(EXTENSIONS_IDENTIFIER);\r\n\r\n const form = new UntypedFormGroup({});\r\n const extraForm = new UntypedFormGroup({});\r\n form.addControl(EXTRA_PROPERTIES_KEY, extraForm);\r\n\r\n const record = data.record || {};\r\n const type = JSON.stringify(record) === '{}' ? 'create' : 'edit';\r\n const props: FormPropList<R> = extensions[`${type}FormProps`].get(identifier).props;\r\n const extraProperties = record[EXTRA_PROPERTIES_KEY] || {};\r\n\r\n props.forEach(({ value: prop }) => {\r\n const name = prop.name;\r\n const isExtraProperty = prop.isExtra || name in extraProperties;\r\n\r\n let value = undefined;\r\n\r\n if (isExtraProperty) {\r\n value = extraProperties[name];\r\n } else if (name in record) {\r\n value = record[name];\r\n }\r\n\r\n if (typeof value === 'undefined') value = prop.defaultValue;\r\n\r\n if (value) {\r\n let adapter: DateAdapter | TimeAdapter | DateTimeAdapter;\r\n switch (prop.type) {\r\n case ePropType.Date:\r\n adapter = new DateAdapter();\r\n value = adapter.toModel(adapter.fromModel(value));\r\n break;\r\n case ePropType.Time:\r\n adapter = new TimeAdapter();\r\n value = adapter.toModel(adapter.fromModel(value));\r\n break;\r\n case ePropType.DateTime:\r\n adapter = new DateTimeAdapter();\r\n value = adapter.toModel(adapter.fromModel(value) as any);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const formControl = new UntypedFormControl(value, {\r\n asyncValidators: prop.asyncValidators(data),\r\n validators: prop.validators(data),\r\n });\r\n\r\n (isExtraProperty ? extraForm : form).addControl(name, formControl);\r\n });\r\n\r\n return form;\r\n}\r\n","import { ConfigStateService, PermissionService } from '@abp/ng.core';\r\nimport { Injector } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport {\r\n EntityPropContributorCallbacks,\r\n EntityPropDefaults,\r\n EntityProps,\r\n EntityPropsFactory,\r\n} from '../models/entity-props';\r\nimport {\r\n CreateFormPropContributorCallbacks,\r\n CreateFormPropDefaults,\r\n CreateFormPropsFactory,\r\n EditFormPropContributorCallbacks,\r\n EditFormPropDefaults,\r\n EditFormPropsFactory,\r\n FormProps,\r\n} from '../models/form-props';\r\nimport {\r\n InferredProp,\r\n PropCallback,\r\n PropContributorCallback,\r\n PropList,\r\n PropsFactory,\r\n} from '../models/props';\r\nimport { Policy } from '../models/internal/object-extensions';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function createExtraPropertyValueResolver<T>(\r\n name: string,\r\n): PropCallback<T, Observable<any>> {\r\n return (data?) => of((data.record as { [key: string]: any })[EXTRA_PROPERTIES_KEY][name]);\r\n}\r\n\r\nexport function mergeWithDefaultProps<F extends PropsFactory<any>>(\r\n extension: F,\r\n defaultProps: InferredPropDefaults<F>,\r\n ...contributors: InferredPropContributorCallbacks<F>[]\r\n) {\r\n Object.keys(defaultProps).forEach((name: string) => {\r\n const props: InferredProps<F> = extension.get(name);\r\n props.clearContributors();\r\n props.addContributor((propList: PropList<any, InferredProp<any>>) =>\r\n propList.addManyTail(defaultProps[name]),\r\n );\r\n contributors.forEach(contributor =>\r\n (contributor[name] || []).forEach((callback: PropContributorCallback<any>) =>\r\n props.addContributor(callback),\r\n ),\r\n );\r\n });\r\n}\r\n\r\nexport function checkPolicies(\r\n injector: Injector,\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n) {\r\n const configState = injector.get(ConfigStateService);\r\n const permission = injector.get(PermissionService);\r\n const props = Object.entries(properties);\r\n\r\n const checkPolicy = (policy: Policy): boolean => {\r\n const { permissions, globalFeatures, features } = policy || {};\r\n\r\n const checks = [\r\n {\r\n items: permissions?.permissionNames,\r\n requiresAll: permissions?.requiresAll,\r\n check: (item: string) => permission.getGrantedPolicy(item),\r\n },\r\n {\r\n items: globalFeatures?.features,\r\n requiresAll: globalFeatures?.requiresAll,\r\n check: (item: string) => configState.getGlobalFeatureIsEnabled(item),\r\n },\r\n {\r\n items: features?.features,\r\n requiresAll: features?.requiresAll,\r\n check: (item: string) => configState.getFeatureIsEnabled(item),\r\n },\r\n ];\r\n\r\n return checks.every(({ items, requiresAll, check }) => {\r\n if (!items?.length) {\r\n return true;\r\n }\r\n\r\n return requiresAll ? items.every(check) : items.some(check);\r\n });\r\n };\r\n\r\n props.forEach(([name, property]) => {\r\n if (property.policy && !checkPolicy(property.policy)) {\r\n delete properties[name];\r\n }\r\n });\r\n}\r\n\r\ntype InferredPropDefaults<F> =\r\n F extends EntityPropsFactory<infer RE>\r\n ? EntityPropDefaults<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? CreateFormPropDefaults<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? EditFormPropDefaults<REF>\r\n : never;\r\n\r\ntype InferredPropContributorCallbacks<F> =\r\n F extends EntityPropsFactory<infer RE>\r\n ? EntityPropContributorCallbacks<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? CreateFormPropContributorCallbacks<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? EditFormPropContributorCallbacks<REF>\r\n : never;\r\n\r\ntype InferredProps<F> =\r\n F extends EntityPropsFactory<infer RE>\r\n ? EntityProps<RE>\r\n : F extends CreateFormPropsFactory<infer RCF>\r\n ? FormProps<RCF>\r\n : F extends EditFormPropsFactory<infer REF>\r\n ? FormProps<REF>\r\n : never;\r\n","import { ABP, ExtensionEnumFieldDto, LocalizationService } from '@abp/ng.core';\r\nimport { merge, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { EXTRA_PROPERTIES_KEY } from '../constants/extra-properties';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\n\r\nexport function createEnum(members: ExtensionEnumFieldDto[]) {\r\n const enumObject: any = {};\r\n\r\n members.forEach(({ name = '', value }) => {\r\n enumObject[(enumObject[name] = value as any)] = name;\r\n });\r\n\r\n return enumObject;\r\n}\r\n\r\nexport function createEnumValueResolver<T = any>(\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n propName: string,\r\n): PropCallback<T, Observable<string>> {\r\n return data => {\r\n const value = (data.record as any)[EXTRA_PROPERTIES_KEY][propName];\r\n const key = lookupEnum.transformed[value];\r\n const l10n = data.getInjected(LocalizationService);\r\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n return createLocalizationStream(l10n, localizeEnum(key));\r\n };\r\n}\r\n\r\nexport function createEnumOptions<T = any>(\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): PropCallback<T, Observable<ABP.Option<any>[]>> {\r\n return data => {\r\n const l10n = data.getInjected(LocalizationService);\r\n const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);\r\n\r\n return createLocalizationStream(\r\n l10n,\r\n lookupEnum.fields.map(({ name = '', value }) => ({\r\n key: localizeEnum(name),\r\n value,\r\n })),\r\n );\r\n };\r\n}\r\n\r\nfunction createLocalizationStream(l10n: LocalizationService, mapTarget: any) {\r\n return merge(of(null), l10n.languageChange$).pipe(map(() => mapTarget));\r\n}\r\n\r\nfunction createEnumLocalizer(\r\n l10n: LocalizationService,\r\n enumType: string,\r\n lookupEnum: ObjectExtensions.ExtensionEnumDto,\r\n): (key: string) => string {\r\n const resource = lookupEnum.localizationResource;\r\n const shortType = getShortEnumType(enumType);\r\n\r\n return key =>\r\n l10n.localizeWithFallbackSync(\r\n [resource || ''],\r\n ['Enum:' + shortType + '.' + key, shortType + '.' + key, key],\r\n key,\r\n );\r\n}\r\n\r\nfunction getShortEnumType(enumType: string) {\r\n return enumType.split('.').pop();\r\n}\r\n","import {\r\n ApplicationLocalizationConfigurationDto,\r\n createLocalizationPipeKeyGenerator,\r\n} from '@abp/ng.core';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function createDisplayNameLocalizationPipeKeyGenerator(\r\n localization: ApplicationLocalizationConfigurationDto,\r\n) {\r\n const generateLocalizationPipeKey = createLocalizationPipeKeyGenerator(localization);\r\n\r\n return (\r\n displayName: ObjectExtensions.LocalizableStringDto,\r\n fallback: ObjectExtensions.LocalizableStringDto,\r\n ) => {\r\n if (displayName && displayName.name)\r\n return generateLocalizationPipeKey(\r\n [displayName.resource || ''],\r\n [displayName.name],\r\n displayName.name,\r\n );\r\n\r\n const key = generateLocalizationPipeKey(\r\n [fallback.resource || ''],\r\n ['DisplayName:' + fallback.name],\r\n undefined,\r\n );\r\n\r\n if (key) return key;\r\n\r\n return generateLocalizationPipeKey(\r\n [fallback.resource || ''],\r\n [fallback.name || ''],\r\n fallback.name,\r\n );\r\n };\r\n}\r\n","import { AbpValidators } from '@abp/ng.core';\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\n\r\nexport function getValidatorsFromProperty(\r\n property: ObjectExtensions.ExtensionPropertyDto,\r\n): ValidatorFn[] {\r\n const validators: ValidatorFn[] = [];\r\n\r\n property.attributes.forEach(attr => {\r\n if (attr.typeSimple && attr.typeSimple in AbpValidators) {\r\n validators.push((AbpValidators as any)[attr.typeSimple](attr.config));\r\n }\r\n });\r\n\r\n return validators;\r\n}\r\n","import {\r\n ABP,\r\n ApplicationLocalizationConfigurationDto,\r\n ConfigStateService,\r\n ExtensionEnumDto,\r\n ExtensionPropertyUiLookupDto,\r\n ObjectExtensionsDto,\r\n} from '@abp/ng.core';\r\nimport { Injector } from '@angular/core';\r\nimport { Observable, pipe, zip } from 'rxjs';\r\nimport { filter, map, switchMap, take } from 'rxjs/operators';\r\nimport { ePropType } from '../enums/props.enum';\r\nimport { EntityProp, EntityPropList } from '../models/entity-props';\r\nimport { FormProp, FormPropList } from '../models/form-props';\r\nimport { ObjectExtensions } from '../models/object-extensions';\r\nimport { PropCallback } from '../models/props';\r\nimport { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util';\r\nimport { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util';\r\nimport { checkPolicies, createExtraPropertyValueResolver } from './props.util';\r\nimport {\r\n createTypeaheadDisplayNameGenerator,\r\n createTypeaheadOptions,\r\n getTypeaheadType,\r\n hasTypeaheadTextSuffix,\r\n} from './typeahead.util';\r\nimport { getValidatorsFromProperty } from './validation.util';\r\n\r\nfunction selectObjectExtensions(configState: ConfigStateService): Observable<ObjectExtensionsDto> {\r\n return configState.getOne$('objectExtensions');\r\n}\r\n\r\nfunction selectLocalization(\r\n configState: ConfigStateService,\r\n): Observable<ApplicationLocalizationConfigurationDto> {\r\n return configState.getOne$('localization');\r\n}\r\n\r\nfunction selectEnums(\r\n configState: ConfigStateService,\r\n): Observable<Record<string, ExtensionEnumDto>> {\r\n return selectObjectExtensions(configState).pipe(\r\n map((extensions: ObjectExtensionsDto) =>\r\n Object.keys(extensions.enums).reduce(\r\n (acc, key) => {\r\n const { fields, localizationResource } = extensions.enums[key];\r\n acc[key] = {\r\n fields,\r\n localizationResource,\r\n transformed: createEnum(fields),\r\n };\r\n return acc;\r\n },\r\n {} as Record<string, ObjectExtensions.ExtensionEnumDto>,\r\n ),\r\n ),\r\n );\r\n}\r\n\r\nexport function getObjectExtensionEntitiesFromStore(injector: Injector, moduleKey: string) {\r\n const configState = injector.get(ConfigStateService);\r\n return selectObjectExtensions(configState).pipe(\r\n map(extensions => {\r\n if (!extensions) return null;\r\n\r\n return (extensions.modules[moduleKey] || ({} as ObjectExtensions.ModuleExtensionDto))\r\n .entities;\r\n }),\r\n map(entities => (isUndefined(entities) ? ({} as any) : entities)),\r\n filter<ObjectExtensions.EntityExtensions>(Boolean),\r\n take(1),\r\n );\r\n}\r\n\r\nexport function mapEntitiesToContributors<T = any>(injector: Injector, resource: string) {\r\n const configState = injector.get(ConfigStateService);\r\n return pipe(\r\n switchMap((entities: any) =>\r\n zip(selectLocalization(configState), selectEnums(configState)).pipe(\r\n map(([localization, enums]) => {\r\n const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);\r\n\r\n return Object.keys(entities).reduce(\r\n (acc, key: keyof ObjectExtensions.EntityExtensions) => {\r\n acc.prop[key] = [];\r\n acc.createForm[key] = [];\r\n acc.editForm[key] = [];\r\n\r\n const entity: ObjectExtensions.EntityExtensionDto = entities[key];\r\n if (!entity) {\r\n return acc;\r\n }\r\n\r\n const properties = entity.properties;\r\n if (!properties) {\r\n return acc;\r\n }\r\n\r\n checkPolicies(injector, properties);\r\n\r\n const mapPropertiesToContributors = createPropertiesToContributorsMapper<T>(\r\n generateDisplayName,\r\n resource,\r\n enums,\r\n );\r\n\r\n return mapPropertiesToContributors(properties, acc, key);\r\n },\r\n {\r\n prop: {},\r\n createForm: {},\r\n editForm: {},\r\n } as ObjectExtensions.PropContributors,\r\n );\r\n }),\r\n ),\r\n ),\r\n take(1),\r\n );\r\n}\r\n\r\nfunction createPropertiesToContributorsMapper<T = any>(\r\n generateDisplayName: ObjectExtensions.DisplayNameGeneratorFn,\r\n resource: string,\r\n enums: Record<string, ObjectExtensions.ExtensionEnumDto>,\r\n) {\r\n return (\r\n properties: ObjectExtensions.EntityExtensionProperties,\r\n contributors: ObjectExtensions.PropContributors<T>,\r\n key: string,\r\n ) => {\r\n const isExtra = true;\r\n const generateTypeaheadDisplayName = createTypeaheadDisplayNameGenerator(\r\n generateDisplayName,\r\n properties,\r\n );\r\n\r\n Object.keys(properties).forEach((name: string) => {\r\n const property = properties[name];\r\n const propName = name;\r\n const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto);\r\n const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property);\r\n const generateDN = hasTypeaheadTextSuffix(name)\r\n ? generateTypeaheadDisplayName\r\n : generateDisplayName;\r\n const displayName = generateDN(property.displayName, { name, resource });\r\n\r\n if (property.ui.onTable.isVisible) {\r\n const sortable = Boolean(property.ui.onTable.isSortable);\r\n const columnWidth = type === ePropType.Boolean ? 150 : 250;\r\n const valueResolver: PropCallback<T, Observable<any>> = type === ePropType.Enum &&\r\n property.type\r\n ? createEnumValueResolver(property.type, enums[property.type], propName)\r\n : createExtraPropertyValueResolver<T>(propName);\r\n\r\n const entityProp = new EntityProp<T>({\r\n type,\r\n name: propName,\r\n displayName,\r\n sortable,\r\n columnWidth,\r\n valueResolver,\r\n isExtra,\r\n });\r\n\r\n const contributor = (propList: EntityPropList<T>) => propList.addTail(entityProp);\r\n contributors.prop[key].push(contributor);\r\n }\r\n\r\n const isOnCreateForm = property.ui.onCreateForm.isVisible;\r\n const isOnEditForm = property.ui.onEditForm.isVisible;\r\n\r\n if (isOnCreateForm || isOnEditForm) {\r\n const defaultValue = property.defaultValue;\r\n const formText = property.formText;\r\n const validators = () => getValidatorsFromProperty(property);\r\n let options: PropCallback<any, Observable<ABP.Option<any>[]>> | undefined;\r\n if (type === ePropType.Enum)\r\n options = createEnumOptions(propName, enums[property.type || '']);\r\n else if (type === ePropType.Typeahead) options = createTypeaheadOptions(lookup);\r\n\r\n const formProp = new FormProp({\r\n type,\r\n name: propName,\r\n displayName,\r\n options,\r\n defaultValue,\r\n validators,\r\n isExtra,\r\n formText,\r\n });\r\n\r\n const formContributor = (propList: FormPropList<T>) => propList.addTail(formProp);\r\n\r\n if (isOnCreateForm) contributors.createForm[key].push(formContributor);\r\n if (isOnEditForm) contributors.editForm[key].push(formContributor);\r\n }\r\n });\r\n\r\n return contributors;\r\n };\r\n}\r\n\r\nfunction getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): ePropType {\r\n return property?.typeSimple?.replace(/\\?$/, '') as string as ePropType;\r\n}\r\n\r\nfunction isUndefined(obj: any): obj is undefined {\r\n return typeof obj === 'undefined';\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport {\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n NgbTimepickerModule,\r\n NgbTooltipModule,\r\n NgbTypeaheadModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n ExtensibleFormComponent,\r\n ExtensibleFormPropComponent,\r\n ExtensibleTableComponent,\r\n GridActionsComponent,\r\n PageToolbarComponent,\r\n ExtensibleDateTimePickerComponent,\r\n ExtensibleFormMultiselectComponent,\r\n} from './components';\r\nimport { PropDataDirective } from './directives/prop-data.directive';\r\nimport { CreateInjectorPipe } from './pipes/create-injector.pipe';\r\nimport { DisabledDirective } from '@abp/ng.theme.shared';\r\n\r\nconst importWithExport = [\r\n DisabledDirective,\r\n ExtensibleDateTimePickerComponent,\r\n ExtensibleFormPropComponent,\r\n GridActionsComponent,\r\n PropDataDirective,\r\n PageToolbarComponent,\r\n CreateInjectorPipe,\r\n ExtensibleFormComponent,\r\n ExtensibleTableComponent,\r\n ExtensibleFormMultiselectComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CoreModule,\r\n ThemeSharedModule,\r\n NgxValidateCoreModule,\r\n NgbDatepickerModule,\r\n NgbDropdownModule,\r\n NgbTimepickerModule,\r\n NgbTypeaheadModule,\r\n NgbTooltipModule,\r\n ...importWithExport,\r\n ],\r\n exports: [...importWithExport],\r\n})\r\nexport class ExtensibleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","debounceTime","distinctUntilChanged","map","filter"],"mappings":"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"}
|