@abp/ng.feature-management 5.0.0-rc.1 → 5.0.2

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.
Files changed (43) hide show
  1. package/abp-ng.feature-management.d.ts +5 -5
  2. package/bundles/abp-ng.feature-management-proxy.umd.js +28 -28
  3. package/bundles/abp-ng.feature-management.umd.js +534 -534
  4. package/esm2015/abp-ng.feature-management.js +4 -4
  5. package/esm2015/lib/components/feature-management/feature-management.component.js +157 -157
  6. package/esm2015/lib/components/index.js +1 -1
  7. package/esm2015/lib/directives/free-text-input.directive.js +36 -36
  8. package/esm2015/lib/directives/index.js +1 -1
  9. package/esm2015/lib/enums/components.js +1 -1
  10. package/esm2015/lib/feature-management.module.js +21 -21
  11. package/esm2015/lib/models/feature-management.js +1 -1
  12. package/esm2015/lib/models/index.js +1 -1
  13. package/esm2015/proxy/abp-ng.feature-management-proxy.js +4 -4
  14. package/esm2015/proxy/lib/index.js +2 -2
  15. package/esm2015/proxy/lib/proxy/feature-management/features.service.js +29 -29
  16. package/esm2015/proxy/lib/proxy/feature-management/index.js +2 -2
  17. package/esm2015/proxy/lib/proxy/feature-management/models.js +1 -1
  18. package/esm2015/proxy/lib/proxy/validation/index.js +2 -2
  19. package/esm2015/proxy/lib/proxy/validation/string-values/index.js +1 -1
  20. package/esm2015/proxy/lib/proxy/validation/string-values/models.js +1 -1
  21. package/esm2015/proxy/public-api.js +1 -1
  22. package/esm2015/public-api.js +5 -5
  23. package/fesm2015/abp-ng.feature-management-proxy.js +26 -26
  24. package/fesm2015/abp-ng.feature-management.js +192 -192
  25. package/lib/components/feature-management/feature-management.component.d.ts +49 -49
  26. package/lib/components/index.d.ts +1 -1
  27. package/lib/directives/free-text-input.directive.d.ts +21 -21
  28. package/lib/directives/index.d.ts +1 -1
  29. package/lib/enums/components.d.ts +3 -3
  30. package/lib/feature-management.module.d.ts +11 -11
  31. package/lib/models/feature-management.d.ts +11 -11
  32. package/lib/models/index.d.ts +1 -1
  33. package/package.json +3 -3
  34. package/proxy/abp-ng.feature-management-proxy.d.ts +5 -5
  35. package/proxy/lib/index.d.ts +2 -2
  36. package/proxy/lib/proxy/feature-management/features.service.d.ts +12 -12
  37. package/proxy/lib/proxy/feature-management/index.d.ts +2 -2
  38. package/proxy/lib/proxy/feature-management/models.d.ts +30 -30
  39. package/proxy/lib/proxy/validation/index.d.ts +2 -2
  40. package/proxy/lib/proxy/validation/string-values/index.d.ts +1 -1
  41. package/proxy/lib/proxy/validation/string-values/models.d.ts +11 -11
  42. package/proxy/public-api.d.ts +1 -1
  43. package/public-api.d.ts +5 -5
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmZlYXR1cmUtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvYWJwLW5nLmZlYXR1cmUtbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,158 +1,158 @@
1
- import { ConfigStateService, TrackByService } from '@abp/ng.core';
2
- import { FeaturesService, } from '@abp/ng.feature-management/proxy';
3
- import { Component, EventEmitter, Input, Output } from '@angular/core';
4
- import { finalize } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@abp/ng.core";
7
- import * as i2 from "@abp/ng.feature-management/proxy";
8
- import * as i3 from "@abp/ng.theme.shared";
9
- import * as i4 from "@ng-bootstrap/ng-bootstrap";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "@angular/forms";
12
- import * as i7 from "../../directives/free-text-input.directive";
13
- var ValueTypes;
14
- (function (ValueTypes) {
15
- ValueTypes["ToggleStringValueType"] = "ToggleStringValueType";
16
- ValueTypes["FreeTextStringValueType"] = "FreeTextStringValueType";
17
- ValueTypes["SelectionStringValueType"] = "SelectionStringValueType";
18
- })(ValueTypes || (ValueTypes = {}));
19
- export class FeatureManagementComponent {
20
- constructor(track, service, configState) {
21
- this.track = track;
22
- this.service = service;
23
- this.configState = configState;
24
- this.groups = [];
25
- this.valueTypes = ValueTypes;
26
- this.visibleChange = new EventEmitter();
27
- this.modalBusy = false;
28
- }
29
- get visible() {
30
- return this._visible;
31
- }
32
- set visible(value) {
33
- if (this._visible === value)
34
- return;
35
- this._visible = value;
36
- this.visibleChange.emit(value);
37
- if (value)
38
- this.openModal();
39
- }
40
- openModal() {
41
- if (!this.providerName) {
42
- throw new Error('providerName is required.');
43
- }
44
- this.getFeatures();
45
- }
46
- getFeatures() {
47
- this.service.get(this.providerName, this.providerKey).subscribe(res => {
48
- var _a;
49
- if (!((_a = res.groups) === null || _a === void 0 ? void 0 : _a.length))
50
- return;
51
- this.groups = res.groups.map(({ name, displayName }) => ({ name, displayName }));
52
- this.selectedGroupDisplayName = this.groups[0].displayName;
53
- this.features = res.groups.reduce((acc, val) => (Object.assign(Object.assign({}, acc), { [val.name]: mapFeatures(val.features, document.body.dir) })), {});
54
- });
55
- }
56
- save() {
57
- if (this.modalBusy)
58
- return;
59
- const changedFeatures = [];
60
- Object.keys(this.features).forEach(key => {
61
- this.features[key].forEach(feature => {
62
- if (feature.value !== feature.initialValue)
63
- changedFeatures.push({ name: feature.name, value: `${feature.value}` });
64
- });
65
- });
66
- if (!changedFeatures.length) {
67
- this.visible = false;
68
- return;
69
- }
70
- this.modalBusy = true;
71
- this.service
72
- .update(this.providerName, this.providerKey, { features: changedFeatures })
73
- .pipe(finalize(() => (this.modalBusy = false)))
74
- .subscribe(() => {
75
- this.visible = false;
76
- if (!this.providerKey) {
77
- // to refresh host's features
78
- this.configState.refreshAppState().subscribe();
79
- }
80
- });
81
- }
82
- onCheckboxClick(val, feature) {
83
- if (val) {
84
- this.checkToggleAncestors(feature);
85
- }
86
- else {
87
- this.uncheckToggleDescendants(feature);
88
- }
89
- }
90
- uncheckToggleDescendants(feature) {
91
- this.findAllDescendantsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, false));
92
- }
93
- checkToggleAncestors(feature) {
94
- this.findAllAncestorsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, true));
95
- }
96
- findAllAncestorsOfByType(feature, type) {
97
- let parent = this.findParentByType(feature, type);
98
- const ancestors = [];
99
- while (parent) {
100
- ancestors.push(parent);
101
- parent = this.findParentByType(parent, type);
102
- }
103
- return ancestors;
104
- }
105
- findAllDescendantsOfByType(feature, type) {
106
- const descendants = [];
107
- const queue = [feature];
108
- while (queue.length) {
109
- const node = queue.pop();
110
- const newDescendants = this.findChildrenByType(node, type);
111
- descendants.push(...newDescendants);
112
- queue.push(...newDescendants);
113
- }
114
- return descendants;
115
- }
116
- findParentByType(feature, type) {
117
- return this.getCurrentGroup().find(f => f.valueType.name === type && f.name === feature.parentName);
118
- }
119
- findChildrenByType(feature, type) {
120
- return this.getCurrentGroup().filter(f => f.valueType.name === type && f.parentName === feature.name);
121
- }
122
- getCurrentGroup() {
123
- var _a;
124
- return (_a = this.features[this.selectedGroupDisplayName]) !== null && _a !== void 0 ? _a : [];
125
- }
126
- setFeatureValue(feature, val) {
127
- feature.value = val;
128
- }
129
- }
130
- FeatureManagementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementComponent, deps: [{ token: i1.TrackByService }, { token: i2.FeaturesService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
131
- FeatureManagementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: FeatureManagementComponent, selector: "abp-feature-management", inputs: { providerKey: "providerKey", providerName: "providerName", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, exportAs: ["abpFeatureManagement"], ngImport: i0, template: "<abp-modal *ngIf=\"visible\" [(visible)]=\"visible\" [busy]=\"modalBusy\" [options]=\"{ size: 'lg' }\">\n <ng-template #abpHeader>\n <h3>{{ 'AbpFeatureManagement::Features' | abpLocalization }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <ul\n ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"selectedGroupDisplayName\"\n class=\"nav-pills\"\n orientation=\"vertical\"\n >\n <li\n *ngFor=\"let group of groups; trackBy: track.by('name')\"\n [ngbNavItem]=\"group.displayName\"\n >\n <a ngbNavLink>{{ group.displayName }}</a>\n <ng-template ngbNavContent>\n <h4>{{ selectedGroupDisplayName }}</h4>\n <hr class=\"mt-2 mb-3\" />\n\n <div\n class=\"mt-2\"\n *ngFor=\"let feature of features[group.name]; let i = index; trackBy: track.by('id')\"\n [ngStyle]=\"feature.style\"\n [ngSwitch]=\"feature.valueType?.name\"\n (keyup.enter)=\"save()\"\n >\n <ng-container *ngSwitchCase=\"valueTypes.ToggleStringValueType\">\n <div class=\"form-check\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"feature.name\"\n [(ngModel)]=\"feature.value\"\n (ngModelChange)=\"onCheckboxClick($event, feature)\"\n />\n\n <label class=\"form-check-label\" [htmlFor]=\"feature.name\">{{\n feature.displayName\n }}</label>\n <ng-container\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\n ></ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"valueTypes.FreeTextStringValueType\">\n <div class=\"mb-3 form-group\">\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\n feature.displayName\n }}</label>\n <input\n class=\"form-control\"\n type=\"text\"\n [id]=\"feature.name\"\n [(ngModel)]=\"feature.value\"\n [abpFeatureManagementFreeText]=\"feature\"\n />\n\n <ng-container\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\n ></ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"valueTypes.SelectionStringValueType\">\n <ng-container *ngIf=\"feature.valueType.itemSource?.items?.length\">\n <div class=\"mb-3 form-group\">\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\n feature.displayName\n }}</label>\n <select class=\"form-select\" [id]=\"feature.name\" [(ngModel)]=\"feature.value\">\n <option\n *ngFor=\"\n let item of feature.valueType.itemSource?.items;\n trackBy: track.by('value')\n \"\n [ngValue]=\"item.value\"\n >\n {{\n item.displayText?.resourceName + '::' + item.displayText?.name\n | abpLocalization\n }}\n </option>\n </select>\n <ng-container\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>{{ feature.displayName }}</ng-container>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n\n <ng-template #descTmp let-description>\n <small *ngIf=\"description\" class=\"d-block form-text text-muted\">{{ description }}</small>\n </ng-template>\n\n <div class=\"col-md-8\"><div [ngbNavOutlet]=\"nav\"></div></div>\n\n <div class=\"mx-3\" *ngIf=\"!groups.length\">\n {{ 'AbpFeatureManagement::NoFeatureFoundMessage' | abpLocalization }}\n </div>\n </div>\n </ng-template>\n\n <ng-template #abpFooter>\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\n {{ 'AbpFeatureManagement::Cancel' | abpLocalization }}\n </button>\n <abp-button\n *ngIf=\"groups.length\"\n iconClass=\"fa fa-check\"\n [disabled]=\"modalBusy\"\n (click)=\"save()\"\n >\n {{ 'AbpFeatureManagement::Save' | abpLocalization }}\n </abp-button>\n </ng-template>\n</abp-modal>\n", components: [{ type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i4.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i4.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.FreeTextInputDirective, selector: "input[abpFeatureManagementFreeText]", inputs: ["abpFeatureManagementFreeText"], exportAs: ["inputAbpFeatureManagementFreeText"] }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "abpLocalization": i1.LocalizationPipe } });
132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementComponent, decorators: [{
133
- type: Component,
134
- args: [{
135
- selector: 'abp-feature-management',
136
- templateUrl: './feature-management.component.html',
137
- exportAs: 'abpFeatureManagement',
138
- }]
139
- }], ctorParameters: function () { return [{ type: i1.TrackByService }, { type: i2.FeaturesService }, { type: i1.ConfigStateService }]; }, propDecorators: { providerKey: [{
140
- type: Input
141
- }], providerName: [{
142
- type: Input
143
- }], visible: [{
144
- type: Input
145
- }], visibleChange: [{
146
- type: Output
147
- }] } });
148
- function mapFeatures(features, dir) {
149
- const margin = `margin-${dir === 'rtl' ? 'right' : 'left'}.px`;
150
- return features.map(feature => {
151
- var _a;
152
- const value = ((_a = feature.valueType) === null || _a === void 0 ? void 0 : _a.name) === ValueTypes.ToggleStringValueType
153
- ? (feature.value || '').toLowerCase() === 'true'
154
- : feature.value;
155
- return Object.assign(Object.assign({}, feature), { value, initialValue: value, style: { [margin]: feature.depth * 20 } });
156
- });
157
- }
1
+ import { ConfigStateService, TrackByService } from '@abp/ng.core';
2
+ import { FeaturesService, } from '@abp/ng.feature-management/proxy';
3
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
4
+ import { finalize } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@abp/ng.core";
7
+ import * as i2 from "@abp/ng.feature-management/proxy";
8
+ import * as i3 from "@abp/ng.theme.shared";
9
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "@angular/forms";
12
+ import * as i7 from "../../directives/free-text-input.directive";
13
+ var ValueTypes;
14
+ (function (ValueTypes) {
15
+ ValueTypes["ToggleStringValueType"] = "ToggleStringValueType";
16
+ ValueTypes["FreeTextStringValueType"] = "FreeTextStringValueType";
17
+ ValueTypes["SelectionStringValueType"] = "SelectionStringValueType";
18
+ })(ValueTypes || (ValueTypes = {}));
19
+ export class FeatureManagementComponent {
20
+ constructor(track, service, configState) {
21
+ this.track = track;
22
+ this.service = service;
23
+ this.configState = configState;
24
+ this.groups = [];
25
+ this.valueTypes = ValueTypes;
26
+ this.visibleChange = new EventEmitter();
27
+ this.modalBusy = false;
28
+ }
29
+ get visible() {
30
+ return this._visible;
31
+ }
32
+ set visible(value) {
33
+ if (this._visible === value)
34
+ return;
35
+ this._visible = value;
36
+ this.visibleChange.emit(value);
37
+ if (value)
38
+ this.openModal();
39
+ }
40
+ openModal() {
41
+ if (!this.providerName) {
42
+ throw new Error('providerName is required.');
43
+ }
44
+ this.getFeatures();
45
+ }
46
+ getFeatures() {
47
+ this.service.get(this.providerName, this.providerKey).subscribe(res => {
48
+ var _a;
49
+ if (!((_a = res.groups) === null || _a === void 0 ? void 0 : _a.length))
50
+ return;
51
+ this.groups = res.groups.map(({ name, displayName }) => ({ name, displayName }));
52
+ this.selectedGroupDisplayName = this.groups[0].displayName;
53
+ this.features = res.groups.reduce((acc, val) => (Object.assign(Object.assign({}, acc), { [val.name]: mapFeatures(val.features, document.body.dir) })), {});
54
+ });
55
+ }
56
+ save() {
57
+ if (this.modalBusy)
58
+ return;
59
+ const changedFeatures = [];
60
+ Object.keys(this.features).forEach(key => {
61
+ this.features[key].forEach(feature => {
62
+ if (feature.value !== feature.initialValue)
63
+ changedFeatures.push({ name: feature.name, value: `${feature.value}` });
64
+ });
65
+ });
66
+ if (!changedFeatures.length) {
67
+ this.visible = false;
68
+ return;
69
+ }
70
+ this.modalBusy = true;
71
+ this.service
72
+ .update(this.providerName, this.providerKey, { features: changedFeatures })
73
+ .pipe(finalize(() => (this.modalBusy = false)))
74
+ .subscribe(() => {
75
+ this.visible = false;
76
+ if (!this.providerKey) {
77
+ // to refresh host's features
78
+ this.configState.refreshAppState().subscribe();
79
+ }
80
+ });
81
+ }
82
+ onCheckboxClick(val, feature) {
83
+ if (val) {
84
+ this.checkToggleAncestors(feature);
85
+ }
86
+ else {
87
+ this.uncheckToggleDescendants(feature);
88
+ }
89
+ }
90
+ uncheckToggleDescendants(feature) {
91
+ this.findAllDescendantsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, false));
92
+ }
93
+ checkToggleAncestors(feature) {
94
+ this.findAllAncestorsOfByType(feature, ValueTypes.ToggleStringValueType).forEach(node => this.setFeatureValue(node, true));
95
+ }
96
+ findAllAncestorsOfByType(feature, type) {
97
+ let parent = this.findParentByType(feature, type);
98
+ const ancestors = [];
99
+ while (parent) {
100
+ ancestors.push(parent);
101
+ parent = this.findParentByType(parent, type);
102
+ }
103
+ return ancestors;
104
+ }
105
+ findAllDescendantsOfByType(feature, type) {
106
+ const descendants = [];
107
+ const queue = [feature];
108
+ while (queue.length) {
109
+ const node = queue.pop();
110
+ const newDescendants = this.findChildrenByType(node, type);
111
+ descendants.push(...newDescendants);
112
+ queue.push(...newDescendants);
113
+ }
114
+ return descendants;
115
+ }
116
+ findParentByType(feature, type) {
117
+ return this.getCurrentGroup().find(f => f.valueType.name === type && f.name === feature.parentName);
118
+ }
119
+ findChildrenByType(feature, type) {
120
+ return this.getCurrentGroup().filter(f => f.valueType.name === type && f.parentName === feature.name);
121
+ }
122
+ getCurrentGroup() {
123
+ var _a;
124
+ return (_a = this.features[this.selectedGroupDisplayName]) !== null && _a !== void 0 ? _a : [];
125
+ }
126
+ setFeatureValue(feature, val) {
127
+ feature.value = val;
128
+ }
129
+ }
130
+ FeatureManagementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementComponent, deps: [{ token: i1.TrackByService }, { token: i2.FeaturesService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
131
+ FeatureManagementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: FeatureManagementComponent, selector: "abp-feature-management", inputs: { providerKey: "providerKey", providerName: "providerName", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, exportAs: ["abpFeatureManagement"], ngImport: i0, template: "<abp-modal *ngIf=\"visible\" [(visible)]=\"visible\" [busy]=\"modalBusy\" [options]=\"{ size: 'lg' }\">\n <ng-template #abpHeader>\n <h3>{{ 'AbpFeatureManagement::Features' | abpLocalization }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"row\">\n <div class=\"col-md-4\">\n <ul\n ngbNav\n #nav=\"ngbNav\"\n [(activeId)]=\"selectedGroupDisplayName\"\n class=\"nav-pills\"\n orientation=\"vertical\"\n >\n <li\n *ngFor=\"let group of groups; trackBy: track.by('name')\"\n [ngbNavItem]=\"group.displayName\"\n >\n <a ngbNavLink>{{ group.displayName }}</a>\n <ng-template ngbNavContent>\n <h4>{{ selectedGroupDisplayName }}</h4>\n <hr class=\"mt-2 mb-3\" />\n\n <div\n class=\"mt-2\"\n *ngFor=\"let feature of features[group.name]; let i = index; trackBy: track.by('id')\"\n [ngStyle]=\"feature.style\"\n [ngSwitch]=\"feature.valueType?.name\"\n (keyup.enter)=\"save()\"\n >\n <ng-container *ngSwitchCase=\"valueTypes.ToggleStringValueType\">\n <div class=\"form-check\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"feature.name\"\n [(ngModel)]=\"feature.value\"\n (ngModelChange)=\"onCheckboxClick($event, feature)\"\n />\n\n <label class=\"form-check-label\" [htmlFor]=\"feature.name\">{{\n feature.displayName\n }}</label>\n <ng-container\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\n ></ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"valueTypes.FreeTextStringValueType\">\n <div class=\"mb-3 form-group\">\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\n feature.displayName\n }}</label>\n <input\n class=\"form-control\"\n type=\"text\"\n [id]=\"feature.name\"\n [(ngModel)]=\"feature.value\"\n [abpFeatureManagementFreeText]=\"feature\"\n />\n\n <ng-container\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\n ></ng-container>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"valueTypes.SelectionStringValueType\">\n <ng-container *ngIf=\"feature.valueType.itemSource?.items?.length\">\n <div class=\"mb-3 form-group\">\n <label [htmlFor]=\"feature.name\" class=\"form-label\">{{\n feature.displayName\n }}</label>\n <select class=\"form-select\" [id]=\"feature.name\" [(ngModel)]=\"feature.value\">\n <option\n *ngFor=\"\n let item of feature.valueType.itemSource?.items;\n trackBy: track.by('value')\n \"\n [ngValue]=\"item.value\"\n >\n {{\n item.displayText?.resourceName + '::' + item.displayText?.name\n | abpLocalization\n }}\n </option>\n </select>\n <ng-container\n *ngTemplateOutlet=\"descTmp; context: { $implicit: feature.description }\"\n ></ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>{{ feature.displayName }}</ng-container>\n </div>\n </ng-template>\n </li>\n </ul>\n </div>\n\n <ng-template #descTmp let-description>\n <small *ngIf=\"description\" class=\"d-block form-text text-muted\">{{ description }}</small>\n </ng-template>\n\n <div class=\"col-md-8\"><div [ngbNavOutlet]=\"nav\"></div></div>\n\n <div class=\"mx-3\" *ngIf=\"!groups.length\">\n {{ 'AbpFeatureManagement::NoFeatureFoundMessage' | abpLocalization }}\n </div>\n </div>\n </ng-template>\n\n <ng-template #abpFooter>\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\n {{ 'AbpFeatureManagement::Cancel' | abpLocalization }}\n </button>\n <abp-button\n *ngIf=\"groups.length\"\n iconClass=\"fa fa-check\"\n [disabled]=\"modalBusy\"\n (click)=\"save()\"\n >\n {{ 'AbpFeatureManagement::Save' | abpLocalization }}\n </abp-button>\n </ng-template>\n</abp-modal>\n", components: [{ type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i4.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgbNav, selector: "[ngbNav]", inputs: ["animation", "destroyOnHide", "orientation", "roles", "keyboard", "activeId"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgbNavItem, selector: "[ngbNavItem]", inputs: ["disabled", "domId", "destroyOnHide", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { type: i4.NgbNavLink, selector: "a[ngbNavLink]" }, { type: i4.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.FreeTextInputDirective, selector: "input[abpFeatureManagementFreeText]", inputs: ["abpFeatureManagementFreeText"], exportAs: ["inputAbpFeatureManagementFreeText"] }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "abpLocalization": i1.LocalizationPipe } });
132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementComponent, decorators: [{
133
+ type: Component,
134
+ args: [{
135
+ selector: 'abp-feature-management',
136
+ templateUrl: './feature-management.component.html',
137
+ exportAs: 'abpFeatureManagement',
138
+ }]
139
+ }], ctorParameters: function () { return [{ type: i1.TrackByService }, { type: i2.FeaturesService }, { type: i1.ConfigStateService }]; }, propDecorators: { providerKey: [{
140
+ type: Input
141
+ }], providerName: [{
142
+ type: Input
143
+ }], visible: [{
144
+ type: Input
145
+ }], visibleChange: [{
146
+ type: Output
147
+ }] } });
148
+ function mapFeatures(features, dir) {
149
+ const margin = `margin-${dir === 'rtl' ? 'right' : 'left'}.px`;
150
+ return features.map(feature => {
151
+ var _a;
152
+ const value = ((_a = feature.valueType) === null || _a === void 0 ? void 0 : _a.name) === ValueTypes.ToggleStringValueType
153
+ ? (feature.value || '').toLowerCase() === 'true'
154
+ : feature.value;
155
+ return Object.assign(Object.assign({}, feature), { value, initialValue: value, style: { [margin]: feature.depth * 20 } });
156
+ });
157
+ }
158
158
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZmVhdHVyZS1tYW5hZ2VtZW50L2ZlYXR1cmUtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mZWF0dXJlLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRSxPQUFPLEVBR0wsZUFBZSxHQUVoQixNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFHMUMsSUFBSyxVQUlKO0FBSkQsV0FBSyxVQUFVO0lBQ2IsNkRBQStDLENBQUE7SUFDL0MsaUVBQW1ELENBQUE7SUFDbkQsbUVBQXFELENBQUE7QUFDdkQsQ0FBQyxFQUpJLFVBQVUsS0FBVixVQUFVLFFBSWQ7QUFPRCxNQUFNLE9BQU8sMEJBQTBCO0lBd0NyQyxZQUNrQixLQUFxQixFQUMzQixPQUF3QixFQUN4QixXQUErQjtRQUZ6QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUE5QjNDLFdBQU0sR0FBb0QsRUFBRSxDQUFDO1FBTTdELGVBQVUsR0FBRyxVQUFVLENBQUM7UUFpQkwsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRS9ELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFNZixDQUFDO0lBckJKLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBYztRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSztZQUFFLE9BQU87UUFFcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFZRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFOztZQUNwRSxJQUFJLENBQUMsQ0FBQSxNQUFBLEdBQUcsQ0FBQyxNQUFNLDBDQUFFLE1BQU0sQ0FBQTtnQkFBRSxPQUFPO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQy9CLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsaUNBQ1QsR0FBRyxLQUNOLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBc0IsQ0FBQyxJQUMzRSxFQUNGLEVBQUUsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBRTNCLE1BQU0sZUFBZSxHQUFHLEVBQXdCLENBQUM7UUFFakQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLFlBQVk7b0JBQ3hDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTzthQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUM7YUFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM5QyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFckIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLDZCQUE2QjtnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNoRDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFZLEVBQUUsT0FBbUI7UUFDL0MsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxPQUFtQjtRQUNsRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN4RixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FDbEMsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxPQUFtQjtRQUM5QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN0RixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FDakMsQ0FBQztJQUNKLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxPQUFtQixFQUFFLElBQWdCO1FBQ3BFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sTUFBTSxFQUFFO1lBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxPQUFtQixFQUFFLElBQWdCO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNuQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7WUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQW1CLEVBQUUsSUFBZ0I7UUFDNUQsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBbUIsRUFBRSxJQUFnQjtRQUM5RCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssT0FBTyxDQUFDLElBQUksQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlOztRQUNyQixPQUFPLE1BQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFTyxlQUFlLENBQUMsT0FBbUIsRUFBRSxHQUFZO1FBQ3ZELE9BQU8sQ0FBQyxLQUFLLEdBQUcsR0FBVSxDQUFDO0lBQzdCLENBQUM7O3dIQWxLVSwwQkFBMEI7NEdBQTFCLDBCQUEwQix5T0N2QnZDLG9sS0E4SEE7NEZEdkdhLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUscUNBQXFDO29CQUNsRCxRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQztvS0FPQyxXQUFXO3NCQURWLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQWdCRixPQUFPO3NCQURWLEtBQUs7Z0JBYWEsYUFBYTtzQkFBL0IsTUFBTTs7QUFpSVQsU0FBUyxXQUFXLENBQUMsUUFBc0IsRUFBRSxHQUFvQjtJQUMvRCxNQUFNLE1BQU0sR0FBRyxVQUFVLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7SUFFL0QsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFOztRQUM1QixNQUFNLEtBQUssR0FDVCxDQUFBLE1BQUEsT0FBTyxDQUFDLFNBQVMsMENBQUUsSUFBSSxNQUFLLFVBQVUsQ0FBQyxxQkFBcUI7WUFDMUQsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNO1lBQ2hELENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRXBCLHVDQUNLLE9BQU8sS0FDVixLQUFLLEVBQ0wsWUFBWSxFQUFFLEtBQUssRUFDbkIsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxJQUN2QztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSwgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHtcbiAgRmVhdHVyZUR0byxcbiAgRmVhdHVyZUdyb3VwRHRvLFxuICBGZWF0dXJlc1NlcnZpY2UsXG4gIFVwZGF0ZUZlYXR1cmVEdG8sXG59IGZyb20gJ0BhYnAvbmcuZmVhdHVyZS1tYW5hZ2VtZW50L3Byb3h5JztcbmltcG9ydCB7IExvY2FsZURpcmVjdGlvbiB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZlYXR1cmVNYW5hZ2VtZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZlYXR1cmUtbWFuYWdlbWVudCc7XG5cbmVudW0gVmFsdWVUeXBlcyB7XG4gIFRvZ2dsZVN0cmluZ1ZhbHVlVHlwZSA9ICdUb2dnbGVTdHJpbmdWYWx1ZVR5cGUnLFxuICBGcmVlVGV4dFN0cmluZ1ZhbHVlVHlwZSA9ICdGcmVlVGV4dFN0cmluZ1ZhbHVlVHlwZScsXG4gIFNlbGVjdGlvblN0cmluZ1ZhbHVlVHlwZSA9ICdTZWxlY3Rpb25TdHJpbmdWYWx1ZVR5cGUnLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtZmVhdHVyZS1tYW5hZ2VtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlYXR1cmUtbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXG4gIGV4cG9ydEFzOiAnYWJwRmVhdHVyZU1hbmFnZW1lbnQnLFxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlTWFuYWdlbWVudENvbXBvbmVudFxuICBpbXBsZW1lbnRzXG4gICAgRmVhdHVyZU1hbmFnZW1lbnQuRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnRJbnB1dHMsXG4gICAgRmVhdHVyZU1hbmFnZW1lbnQuRmVhdHVyZU1hbmFnZW1lbnRDb21wb25lbnRPdXRwdXRzXG57XG4gIEBJbnB1dCgpXG4gIHByb3ZpZGVyS2V5OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmc7XG5cbiAgc2VsZWN0ZWRHcm91cERpc3BsYXlOYW1lOiBzdHJpbmc7XG5cbiAgZ3JvdXBzOiBQaWNrPEZlYXR1cmVHcm91cER0bywgJ25hbWUnIHwgJ2Rpc3BsYXlOYW1lJz5bXSA9IFtdO1xuXG4gIGZlYXR1cmVzOiB7XG4gICAgW2dyb3VwOiBzdHJpbmddOiBBcnJheTxGZWF0dXJlRHRvICYgeyBzdHlsZT86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07IGluaXRpYWxWYWx1ZTogYW55IH0+O1xuICB9O1xuXG4gIHZhbHVlVHlwZXMgPSBWYWx1ZVR5cGVzO1xuXG4gIHByb3RlY3RlZCBfdmlzaWJsZTtcblxuICBASW5wdXQoKVxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3Zpc2libGUgPT09IHZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIGlmICh2YWx1ZSkgdGhpcy5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSByZWFkb25seSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIG1vZGFsQnVzeSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0cmFjazogVHJhY2tCeVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNlcnZpY2U6IEZlYXR1cmVzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICBpZiAoIXRoaXMucHJvdmlkZXJOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb3ZpZGVyTmFtZSBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmdldEZlYXR1cmVzKCk7XG4gIH1cblxuICBnZXRGZWF0dXJlcygpIHtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0KHRoaXMucHJvdmlkZXJOYW1lLCB0aGlzLnByb3ZpZGVyS2V5KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmICghcmVzLmdyb3Vwcz8ubGVuZ3RoKSByZXR1cm47XG4gICAgICB0aGlzLmdyb3VwcyA9IHJlcy5ncm91cHMubWFwKCh7IG5hbWUsIGRpc3BsYXlOYW1lIH0pID0+ICh7IG5hbWUsIGRpc3BsYXlOYW1lIH0pKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cERpc3BsYXlOYW1lID0gdGhpcy5ncm91cHNbMF0uZGlzcGxheU5hbWU7XG4gICAgICB0aGlzLmZlYXR1cmVzID0gcmVzLmdyb3Vwcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHZhbCkgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW3ZhbC5uYW1lXTogbWFwRmVhdHVyZXModmFsLmZlYXR1cmVzLCBkb2N1bWVudC5ib2R5LmRpciBhcyBMb2NhbGVEaXJlY3Rpb24pLFxuICAgICAgICB9KSxcbiAgICAgICAge30sXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy5tb2RhbEJ1c3kpIHJldHVybjtcblxuICAgIGNvbnN0IGNoYW5nZWRGZWF0dXJlcyA9IFtdIGFzIFVwZGF0ZUZlYXR1cmVEdG9bXTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZmVhdHVyZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRoaXMuZmVhdHVyZXNba2V5XS5mb3JFYWNoKGZlYXR1cmUgPT4ge1xuICAgICAgICBpZiAoZmVhdHVyZS52YWx1ZSAhPT0gZmVhdHVyZS5pbml0aWFsVmFsdWUpXG4gICAgICAgICAgY2hhbmdlZEZlYXR1cmVzLnB1c2goeyBuYW1lOiBmZWF0dXJlLm5hbWUsIHZhbHVlOiBgJHtmZWF0dXJlLnZhbHVlfWAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICghY2hhbmdlZEZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb2RhbEJ1c3kgPSB0cnVlO1xuICAgIHRoaXMuc2VydmljZVxuICAgICAgLnVwZGF0ZSh0aGlzLnByb3ZpZGVyTmFtZSwgdGhpcy5wcm92aWRlcktleSwgeyBmZWF0dXJlczogY2hhbmdlZEZlYXR1cmVzIH0pXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5tb2RhbEJ1c3kgPSBmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGhpcy5wcm92aWRlcktleSkge1xuICAgICAgICAgIC8vIHRvIHJlZnJlc2ggaG9zdCdzIGZlYXR1cmVzXG4gICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBvbkNoZWNrYm94Q2xpY2sodmFsOiBib29sZWFuLCBmZWF0dXJlOiBGZWF0dXJlRHRvKSB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy5jaGVja1RvZ2dsZUFuY2VzdG9ycyhmZWF0dXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bmNoZWNrVG9nZ2xlRGVzY2VuZGFudHMoZmVhdHVyZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bmNoZWNrVG9nZ2xlRGVzY2VuZGFudHMoZmVhdHVyZTogRmVhdHVyZUR0bykge1xuICAgIHRoaXMuZmluZEFsbERlc2NlbmRhbnRzT2ZCeVR5cGUoZmVhdHVyZSwgVmFsdWVUeXBlcy5Ub2dnbGVTdHJpbmdWYWx1ZVR5cGUpLmZvckVhY2gobm9kZSA9PlxuICAgICAgdGhpcy5zZXRGZWF0dXJlVmFsdWUobm9kZSwgZmFsc2UpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrVG9nZ2xlQW5jZXN0b3JzKGZlYXR1cmU6IEZlYXR1cmVEdG8pIHtcbiAgICB0aGlzLmZpbmRBbGxBbmNlc3RvcnNPZkJ5VHlwZShmZWF0dXJlLCBWYWx1ZVR5cGVzLlRvZ2dsZVN0cmluZ1ZhbHVlVHlwZSkuZm9yRWFjaChub2RlID0+XG4gICAgICB0aGlzLnNldEZlYXR1cmVWYWx1ZShub2RlLCB0cnVlKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQWxsQW5jZXN0b3JzT2ZCeVR5cGUoZmVhdHVyZTogRmVhdHVyZUR0bywgdHlwZTogVmFsdWVUeXBlcykge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnRCeVR5cGUoZmVhdHVyZSwgdHlwZSk7XG4gICAgY29uc3QgYW5jZXN0b3JzID0gW107XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgYW5jZXN0b3JzLnB1c2gocGFyZW50KTtcbiAgICAgIHBhcmVudCA9IHRoaXMuZmluZFBhcmVudEJ5VHlwZShwYXJlbnQsIHR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gYW5jZXN0b3JzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQWxsRGVzY2VuZGFudHNPZkJ5VHlwZShmZWF0dXJlOiBGZWF0dXJlRHRvLCB0eXBlOiBWYWx1ZVR5cGVzKSB7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSBbXTtcbiAgICBjb25zdCBxdWV1ZSA9IFtmZWF0dXJlXTtcblxuICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBxdWV1ZS5wb3AoKTtcbiAgICAgIGNvbnN0IG5ld0Rlc2NlbmRhbnRzID0gdGhpcy5maW5kQ2hpbGRyZW5CeVR5cGUobm9kZSwgdHlwZSk7XG4gICAgICBkZXNjZW5kYW50cy5wdXNoKC4uLm5ld0Rlc2NlbmRhbnRzKTtcbiAgICAgIHF1ZXVlLnB1c2goLi4ubmV3RGVzY2VuZGFudHMpO1xuICAgIH1cblxuICAgIHJldHVybiBkZXNjZW5kYW50cztcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudEJ5VHlwZShmZWF0dXJlOiBGZWF0dXJlRHRvLCB0eXBlOiBWYWx1ZVR5cGVzKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudEdyb3VwKCkuZmluZChcbiAgICAgIGYgPT4gZi52YWx1ZVR5cGUubmFtZSA9PT0gdHlwZSAmJiBmLm5hbWUgPT09IGZlYXR1cmUucGFyZW50TmFtZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ2hpbGRyZW5CeVR5cGUoZmVhdHVyZTogRmVhdHVyZUR0bywgdHlwZTogVmFsdWVUeXBlcykge1xuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRHcm91cCgpLmZpbHRlcihcbiAgICAgIGYgPT4gZi52YWx1ZVR5cGUubmFtZSA9PT0gdHlwZSAmJiBmLnBhcmVudE5hbWUgPT09IGZlYXR1cmUubmFtZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50R3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNbdGhpcy5zZWxlY3RlZEdyb3VwRGlzcGxheU5hbWVdID8/IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGZWF0dXJlVmFsdWUoZmVhdHVyZTogRmVhdHVyZUR0bywgdmFsOiBib29sZWFuKSB7XG4gICAgZmVhdHVyZS52YWx1ZSA9IHZhbCBhcyBhbnk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwRmVhdHVyZXMoZmVhdHVyZXM6IEZlYXR1cmVEdG9bXSwgZGlyOiBMb2NhbGVEaXJlY3Rpb24pIHtcbiAgY29uc3QgbWFyZ2luID0gYG1hcmdpbi0ke2RpciA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnfS5weGA7XG5cbiAgcmV0dXJuIGZlYXR1cmVzLm1hcChmZWF0dXJlID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9XG4gICAgICBmZWF0dXJlLnZhbHVlVHlwZT8ubmFtZSA9PT0gVmFsdWVUeXBlcy5Ub2dnbGVTdHJpbmdWYWx1ZVR5cGVcbiAgICAgICAgPyAoZmVhdHVyZS52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnXG4gICAgICAgIDogZmVhdHVyZS52YWx1ZTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5mZWF0dXJlLFxuICAgICAgdmFsdWUsXG4gICAgICBpbml0aWFsVmFsdWU6IHZhbHVlLFxuICAgICAgc3R5bGU6IHsgW21hcmdpbl06IGZlYXR1cmUuZGVwdGggKiAyMCB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwiPGFicC1tb2RhbCAqbmdJZj1cInZpc2libGVcIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbYnVzeV09XCJtb2RhbEJ1c3lcIiBbb3B0aW9uc109XCJ7IHNpemU6ICdsZycgfVwiPlxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICA8aDM+e3sgJ0FicEZlYXR1cmVNYW5hZ2VtZW50OjpGZWF0dXJlcycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gzPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgbmdiTmF2XG4gICAgICAgICAgI25hdj1cIm5nYk5hdlwiXG4gICAgICAgICAgWyhhY3RpdmVJZCldPVwic2VsZWN0ZWRHcm91cERpc3BsYXlOYW1lXCJcbiAgICAgICAgICBjbGFzcz1cIm5hdi1waWxsc1wiXG4gICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGlcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHM7IHRyYWNrQnk6IHRyYWNrLmJ5KCduYW1lJylcIlxuICAgICAgICAgICAgW25nYk5hdkl0ZW1dPVwiZ3JvdXAuZGlzcGxheU5hbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhIG5nYk5hdkxpbms+e3sgZ3JvdXAuZGlzcGxheU5hbWUgfX08L2E+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cbiAgICAgICAgICAgICAgPGg0Pnt7IHNlbGVjdGVkR3JvdXBEaXNwbGF5TmFtZSB9fTwvaDQ+XG4gICAgICAgICAgICAgIDxociBjbGFzcz1cIm10LTIgbWItM1wiIC8+XG5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZlYXR1cmUgb2YgZmVhdHVyZXNbZ3JvdXAubmFtZV07IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrLmJ5KCdpZCcpXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmZWF0dXJlLnN0eWxlXCJcbiAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiZmVhdHVyZS52YWx1ZVR5cGU/Lm5hbWVcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmFsdWVUeXBlcy5Ub2dnbGVTdHJpbmdWYWx1ZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmVhdHVyZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZlYXR1cmUudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tib3hDbGljaygkZXZlbnQsIGZlYXR1cmUpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2h0bWxGb3JdPVwiZmVhdHVyZS5uYW1lXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRpc3BsYXlOYW1lXG4gICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1RtcDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGZlYXR1cmUuZGVzY3JpcHRpb24gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInZhbHVlVHlwZXMuRnJlZVRleHRTdHJpbmdWYWx1ZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtodG1sRm9yXT1cImZlYXR1cmUubmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5kaXNwbGF5TmFtZVxuICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImZlYXR1cmUubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmZWF0dXJlLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYWJwRmVhdHVyZU1hbmFnZW1lbnRGcmVlVGV4dF09XCJmZWF0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNjVG1wOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmVhdHVyZS5kZXNjcmlwdGlvbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmFsdWVUeXBlcy5TZWxlY3Rpb25TdHJpbmdWYWx1ZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmZWF0dXJlLnZhbHVlVHlwZS5pdGVtU291cmNlPy5pdGVtcz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2h0bWxGb3JdPVwiZmVhdHVyZS5uYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZGlzcGxheU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgW2lkXT1cImZlYXR1cmUubmFtZVwiIFsobmdNb2RlbCldPVwiZmVhdHVyZS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBmZWF0dXJlLnZhbHVlVHlwZS5pdGVtU291cmNlPy5pdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFjay5ieSgndmFsdWUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc3BsYXlUZXh0Py5yZXNvdXJjZU5hbWUgKyAnOjonICsgaXRlbS5kaXNwbGF5VGV4dD8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYnBMb2NhbGl6YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1RtcDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGZlYXR1cmUuZGVzY3JpcHRpb24gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD57eyBmZWF0dXJlLmRpc3BsYXlOYW1lIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVzY1RtcCBsZXQtZGVzY3JpcHRpb24+XG4gICAgICAgIDxzbWFsbCAqbmdJZj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJkLWJsb2NrIGZvcm0tdGV4dCB0ZXh0LW11dGVkXCI+e3sgZGVzY3JpcHRpb24gfX08L3NtYWxsPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+PGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PjwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibXgtM1wiICpuZ0lmPVwiIWdyb3Vwcy5sZW5ndGhcIj5cbiAgICAgICAge3sgJ0FicEZlYXR1cmVNYW5hZ2VtZW50OjpOb0ZlYXR1cmVGb3VuZE1lc3NhZ2UnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICA8YnV0dG9uIGFicENsb3NlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCI+XG4gICAgICB7eyAnQWJwRmVhdHVyZU1hbmFnZW1lbnQ6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YWJwLWJ1dHRvblxuICAgICAgKm5nSWY9XCJncm91cHMubGVuZ3RoXCJcbiAgICAgIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICAgIFtkaXNhYmxlZF09XCJtb2RhbEJ1c3lcIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgPlxuICAgICAge3sgJ0FicEZlYXR1cmVNYW5hZ2VtZW50OjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxuICAgIDwvYWJwLWJ1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYWJwLW1vZGFsPlxuIl19
@@ -1,2 +1,2 @@
1
- export * from './feature-management/feature-management.component';
1
+ export * from './feature-management/feature-management.component';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mZWF0dXJlLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlLW1hbmFnZW1lbnQuY29tcG9uZW50JztcbiJdfQ==
@@ -1,37 +1,37 @@
1
- import { Directive, HostBinding, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export const INPUT_TYPES = {
4
- numeric: 'number',
5
- default: 'text',
6
- };
7
- export class FreeTextInputDirective {
8
- // eslint-disable-next-line @angular-eslint/no-input-rename
9
- set feature(val) {
10
- this._feature = val;
11
- this.setInputType();
12
- }
13
- get feature() {
14
- return this._feature;
15
- }
16
- setInputType() {
17
- var _a, _b, _c, _d;
18
- const validatorType = (_c = (_b = (_a = this.feature) === null || _a === void 0 ? void 0 : _a.valueType) === null || _b === void 0 ? void 0 : _b.validator) === null || _c === void 0 ? void 0 : _c.name.toLowerCase();
19
- this.type = (_d = INPUT_TYPES[validatorType]) !== null && _d !== void 0 ? _d : INPUT_TYPES.default;
20
- }
21
- }
22
- FreeTextInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FreeTextInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
- FreeTextInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: FreeTextInputDirective, selector: "input[abpFeatureManagementFreeText]", inputs: { feature: ["abpFeatureManagementFreeText", "feature"] }, host: { properties: { "type": "this.type" } }, exportAs: ["inputAbpFeatureManagementFreeText"], ngImport: i0 });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FreeTextInputDirective, decorators: [{
25
- type: Directive,
26
- args: [{
27
- selector: 'input[abpFeatureManagementFreeText]',
28
- exportAs: 'inputAbpFeatureManagementFreeText',
29
- }]
30
- }], propDecorators: { feature: [{
31
- type: Input,
32
- args: ['abpFeatureManagementFreeText']
33
- }], type: [{
34
- type: HostBinding,
35
- args: ['type']
36
- }] } });
1
+ import { Directive, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const INPUT_TYPES = {
4
+ numeric: 'number',
5
+ default: 'text',
6
+ };
7
+ export class FreeTextInputDirective {
8
+ // eslint-disable-next-line @angular-eslint/no-input-rename
9
+ set feature(val) {
10
+ this._feature = val;
11
+ this.setInputType();
12
+ }
13
+ get feature() {
14
+ return this._feature;
15
+ }
16
+ setInputType() {
17
+ var _a, _b, _c, _d;
18
+ const validatorType = (_c = (_b = (_a = this.feature) === null || _a === void 0 ? void 0 : _a.valueType) === null || _b === void 0 ? void 0 : _b.validator) === null || _c === void 0 ? void 0 : _c.name.toLowerCase();
19
+ this.type = (_d = INPUT_TYPES[validatorType]) !== null && _d !== void 0 ? _d : INPUT_TYPES.default;
20
+ }
21
+ }
22
+ FreeTextInputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FreeTextInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23
+ FreeTextInputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: FreeTextInputDirective, selector: "input[abpFeatureManagementFreeText]", inputs: { feature: ["abpFeatureManagementFreeText", "feature"] }, host: { properties: { "type": "this.type" } }, exportAs: ["inputAbpFeatureManagementFreeText"], ngImport: i0 });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FreeTextInputDirective, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ selector: 'input[abpFeatureManagementFreeText]',
28
+ exportAs: 'inputAbpFeatureManagementFreeText',
29
+ }]
30
+ }], propDecorators: { feature: [{
31
+ type: Input,
32
+ args: ['abpFeatureManagementFreeText']
33
+ }], type: [{
34
+ type: HostBinding,
35
+ args: ['type']
36
+ }] } });
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZS10ZXh0LWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2RpcmVjdGl2ZXMvZnJlZS10ZXh0LWlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVzlELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsTUFBTTtDQUNoQixDQUFDO0FBTUYsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQywyREFBMkQ7SUFDM0QsSUFBMkMsT0FBTyxDQUFDLEdBQWlCO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFJTyxZQUFZOztRQUNsQixNQUFNLGFBQWEsR0FBRyxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxTQUFTLDBDQUFFLFNBQVMsMENBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdFLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBQSxXQUFXLENBQUMsYUFBYSxDQUFDLG1DQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDaEUsQ0FBQzs7b0hBakJVLHNCQUFzQjt3R0FBdEIsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFDQUFxQztvQkFDL0MsUUFBUSxFQUFFLG1DQUFtQztpQkFDOUM7OEJBSTRDLE9BQU87c0JBQWpELEtBQUs7dUJBQUMsOEJBQThCO2dCQVNoQixJQUFJO3NCQUF4QixXQUFXO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBUT0RPOiBpbXByb3ZlIHRoaXMgdHlwZVxuZXhwb3J0IGludGVyZmFjZSBGcmVlVGV4dFR5cGUge1xuICB2YWx1ZVR5cGU6IHtcbiAgICB2YWxpZGF0b3I6IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgSU5QVVRfVFlQRVMgPSB7XG4gIG51bWVyaWM6ICdudW1iZXInLFxuICBkZWZhdWx0OiAndGV4dCcsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFthYnBGZWF0dXJlTWFuYWdlbWVudEZyZWVUZXh0XScsXG4gIGV4cG9ydEFzOiAnaW5wdXRBYnBGZWF0dXJlTWFuYWdlbWVudEZyZWVUZXh0Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJlZVRleHRJbnB1dERpcmVjdGl2ZSB7XG4gIF9mZWF0dXJlOiBGcmVlVGV4dFR5cGU7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnYWJwRmVhdHVyZU1hbmFnZW1lbnRGcmVlVGV4dCcpIHNldCBmZWF0dXJlKHZhbDogRnJlZVRleHRUeXBlKSB7XG4gICAgdGhpcy5fZmVhdHVyZSA9IHZhbDtcbiAgICB0aGlzLnNldElucHV0VHlwZSgpO1xuICB9XG5cbiAgZ2V0IGZlYXR1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZlYXR1cmU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3R5cGUnKSB0eXBlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXRJbnB1dFR5cGUoKSB7XG4gICAgY29uc3QgdmFsaWRhdG9yVHlwZSA9IHRoaXMuZmVhdHVyZT8udmFsdWVUeXBlPy52YWxpZGF0b3I/Lm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnR5cGUgPSBJTlBVVF9UWVBFU1t2YWxpZGF0b3JUeXBlXSA/PyBJTlBVVF9UWVBFUy5kZWZhdWx0O1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './free-text-input.directive';
1
+ export * from './free-text-input.directive';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mZWF0dXJlLW1hbmFnZW1lbnQvc3JjL2xpYi9kaXJlY3RpdmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZyZWUtdGV4dC1pbnB1dC5kaXJlY3RpdmUnO1xuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2VudW1zL2NvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtIGVGZWF0dXJlTWFuYWdlbWVudENvbXBvbmVudHMge1xuICBGZWF0dXJlTWFuYWdlbWVudCA9ICdGZWF0dXJlTWFuYWdlbWVudC5GZWF0dXJlTWFuYWdlbWVudENvbXBvbmVudCcsXG59XG4iXX0=
@@ -1,22 +1,22 @@
1
- import { CoreModule } from '@abp/ng.core';
2
- import { ThemeSharedModule } from '@abp/ng.theme.shared';
3
- import { NgModule } from '@angular/core';
4
- import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
5
- import { FeatureManagementComponent } from './components/feature-management/feature-management.component';
6
- import { FreeTextInputDirective } from './directives/free-text-input.directive';
7
- import * as i0 from "@angular/core";
8
- const exported = [FeatureManagementComponent, FreeTextInputDirective];
9
- export class FeatureManagementModule {
10
- }
11
- FeatureManagementModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- FeatureManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, declarations: [FeatureManagementComponent, FreeTextInputDirective], imports: [CoreModule, ThemeSharedModule, NgbNavModule], exports: [FeatureManagementComponent, FreeTextInputDirective] });
13
- FeatureManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, imports: [[CoreModule, ThemeSharedModule, NgbNavModule]] });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, decorators: [{
15
- type: NgModule,
16
- args: [{
17
- declarations: [...exported],
18
- imports: [CoreModule, ThemeSharedModule, NgbNavModule],
19
- exports: [...exported],
20
- }]
21
- }] });
1
+ import { CoreModule } from '@abp/ng.core';
2
+ import { ThemeSharedModule } from '@abp/ng.theme.shared';
3
+ import { NgModule } from '@angular/core';
4
+ import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
5
+ import { FeatureManagementComponent } from './components/feature-management/feature-management.component';
6
+ import { FreeTextInputDirective } from './directives/free-text-input.directive';
7
+ import * as i0 from "@angular/core";
8
+ const exported = [FeatureManagementComponent, FreeTextInputDirective];
9
+ export class FeatureManagementModule {
10
+ }
11
+ FeatureManagementModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ FeatureManagementModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, declarations: [FeatureManagementComponent, FreeTextInputDirective], imports: [CoreModule, ThemeSharedModule, NgbNavModule], exports: [FeatureManagementComponent, FreeTextInputDirective] });
13
+ FeatureManagementModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, imports: [[CoreModule, ThemeSharedModule, NgbNavModule]] });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: FeatureManagementModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ declarations: [...exported],
18
+ imports: [CoreModule, ThemeSharedModule, NgbNavModule],
19
+ exports: [...exported],
20
+ }]
21
+ }] });
22
22
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmUtbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFFaEYsTUFBTSxRQUFRLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBT3RFLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixpQkFQbEIsMEJBQTBCLEVBQUUsc0JBQXNCLGFBSXhELFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLGFBSnJDLDBCQUEwQixFQUFFLHNCQUFzQjtzSEFPdkQsdUJBQXVCLFlBSHpCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQzs0RkFHM0MsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO29CQUN0RCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk5hdk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZlYXR1cmVNYW5hZ2VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZlYXR1cmUtbWFuYWdlbWVudC9mZWF0dXJlLW1hbmFnZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEZyZWVUZXh0SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZnJlZS10ZXh0LWlucHV0LmRpcmVjdGl2ZSc7XG5cbmNvbnN0IGV4cG9ydGVkID0gW0ZlYXR1cmVNYW5hZ2VtZW50Q29tcG9uZW50LCBGcmVlVGV4dElucHV0RGlyZWN0aXZlXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbLi4uZXhwb3J0ZWRdLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgVGhlbWVTaGFyZWRNb2R1bGUsIE5nYk5hdk1vZHVsZV0sXG4gIGV4cG9ydHM6IFsuLi5leHBvcnRlZF0sXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVNYW5hZ2VtZW50TW9kdWxlIHt9XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZmVhdHVyZS1tYW5hZ2VtZW50L3NyYy9saWIvbW9kZWxzL2ZlYXR1cmUtbWFuYWdlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgRmVhdHVyZU1hbmFnZW1lbnQge1xuICBleHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVNYW5hZ2VtZW50Q29tcG9uZW50SW5wdXRzIHtcbiAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHByb3ZpZGVyTmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHByb3ZpZGVyS2V5OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVNYW5hZ2VtZW50Q29tcG9uZW50T3V0cHV0cyB7XG4gICAgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './feature-management';
1
+ export * from './feature-management';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mZWF0dXJlLW1hbmFnZW1lbnQvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZS1tYW5hZ2VtZW50JztcbiJdfQ==
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmZlYXR1cmUtbWFuYWdlbWVudC1wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ZlYXR1cmUtbWFuYWdlbWVudC9wcm94eS9zcmMvYWJwLW5nLmZlYXR1cmUtbWFuYWdlbWVudC1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,3 +1,3 @@
1
- export * from './proxy/feature-management';
2
- export * from './proxy/validation';
1
+ export * from './proxy/feature-management';
2
+ export * from './proxy/validation';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mZWF0dXJlLW1hbmFnZW1lbnQvcHJveHkvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3h5L2ZlYXR1cmUtbWFuYWdlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb3h5L3ZhbGlkYXRpb24nO1xuIl19