ngx-material-entity 0.1.2 → 0.1.3

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 (97) hide show
  1. package/classes/base-builder.class.d.ts +35 -0
  2. package/classes/entity-service.class.d.ts +1 -1
  3. package/classes/entity-utilities.class.d.ts +36 -3
  4. package/components/confirm-dialog/confirm-dialog-data.builder.d.ts +10 -11
  5. package/components/confirm-dialog/confirm-dialog-data.d.ts +4 -0
  6. package/components/confirm-dialog/confirm-dialog.component.d.ts +11 -0
  7. package/components/input/{array-table/add-array-item-dialog/add-array-item-dialog-data.builder.d.ts → add-array-item-dialog-data.builder.d.ts} +11 -7
  8. package/components/input/{array-table/add-array-item-dialog/add-array-item-dialog-data.d.ts → add-array-item-dialog-data.d.ts} +5 -2
  9. package/components/input/input.component.d.ts +100 -7
  10. package/components/input/input.module.d.ts +6 -4
  11. package/components/table/create-dialog/create-dialog-data.builder.d.ts +9 -8
  12. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +9 -3
  13. package/components/table/create-dialog/create-entity-dialog.component.d.ts +15 -3
  14. package/components/table/edit-dialog/edit-dialog-data.builder.d.ts +9 -11
  15. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +9 -3
  16. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +19 -3
  17. package/components/table/table-data.builder.d.ts +20 -9
  18. package/components/table/table-data.d.ts +14 -2
  19. package/components/table/table.component.d.ts +46 -0
  20. package/components/table/table.module.d.ts +3 -1
  21. package/decorators/array/array-decorator-internal.data.d.ts +13 -2
  22. package/decorators/array/array-decorator.data.d.ts +21 -12
  23. package/decorators/array/array.decorator.d.ts +1 -1
  24. package/decorators/base/property-decorator-internal.data.d.ts +16 -3
  25. package/decorators/base/property-decorator.data.d.ts +26 -5
  26. package/decorators/boolean/boolean-decorator-internal.data.d.ts +9 -0
  27. package/decorators/boolean/boolean-decorator.data.d.ts +9 -0
  28. package/decorators/boolean/boolean.decorator.d.ts +1 -1
  29. package/decorators/number/number-decorator-internal.data.d.ts +6 -0
  30. package/decorators/number/number-decorator.data.d.ts +6 -0
  31. package/decorators/number/number.decorator.d.ts +1 -1
  32. package/decorators/object/object-decorator-internal.data.d.ts +3 -0
  33. package/decorators/object/object-decorator.data.d.ts +3 -0
  34. package/decorators/object/object.decorator.d.ts +1 -1
  35. package/decorators/string/string-decorator-internal.data.d.ts +12 -0
  36. package/decorators/string/string-decorator.data.d.ts +12 -0
  37. package/decorators/string/string.decorator.d.ts +1 -1
  38. package/esm2020/classes/base-builder.class.mjs +43 -0
  39. package/esm2020/classes/entity-service.class.mjs +2 -2
  40. package/esm2020/classes/entity-utilities.class.mjs +81 -33
  41. package/esm2020/components/confirm-dialog/confirm-dialog-data.builder.mjs +15 -48
  42. package/esm2020/components/confirm-dialog/confirm-dialog-data.mjs +1 -1
  43. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +13 -2
  44. package/esm2020/components/get-validation-error-message.function.mjs +5 -1
  45. package/esm2020/components/input/add-array-item-dialog-data.builder.mjs +30 -0
  46. package/esm2020/components/input/add-array-item-dialog-data.mjs +2 -0
  47. package/esm2020/components/input/input.component.mjs +170 -31
  48. package/esm2020/components/input/input.module.mjs +19 -9
  49. package/esm2020/components/table/create-dialog/create-dialog-data.builder.mjs +18 -40
  50. package/esm2020/components/table/create-dialog/create-entity-dialog-data.builder.mjs +15 -7
  51. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +24 -17
  52. package/esm2020/components/table/create-dialog/create-entity-dialog.module.mjs +20 -4
  53. package/esm2020/components/table/edit-dialog/edit-dialog-data.builder.mjs +23 -63
  54. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +15 -7
  55. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +35 -24
  56. package/esm2020/components/table/table-data.builder.mjs +30 -14
  57. package/esm2020/components/table/table-data.mjs +1 -1
  58. package/esm2020/components/table/table.component.mjs +57 -10
  59. package/esm2020/components/table/table.module.mjs +12 -4
  60. package/esm2020/decorators/array/array-decorator-internal.data.mjs +15 -4
  61. package/esm2020/decorators/array/array-decorator.data.mjs +1 -1
  62. package/esm2020/decorators/array/array.decorator.mjs +2 -2
  63. package/esm2020/decorators/base/property-decorator-internal.data.mjs +28 -5
  64. package/esm2020/decorators/base/property-decorator.data.mjs +1 -1
  65. package/esm2020/decorators/boolean/boolean-decorator-internal.data.mjs +12 -1
  66. package/esm2020/decorators/boolean/boolean-decorator.data.mjs +1 -1
  67. package/esm2020/decorators/boolean/boolean.decorator.mjs +2 -2
  68. package/esm2020/decorators/number/number-decorator-internal.data.mjs +7 -1
  69. package/esm2020/decorators/number/number-decorator.data.mjs +1 -1
  70. package/esm2020/decorators/number/number.decorator.mjs +2 -2
  71. package/esm2020/decorators/object/object-decorator-internal.data.mjs +4 -1
  72. package/esm2020/decorators/object/object-decorator.data.mjs +1 -1
  73. package/esm2020/decorators/object/object.decorator.mjs +2 -2
  74. package/esm2020/decorators/string/string-decorator-internal.data.mjs +13 -1
  75. package/esm2020/decorators/string/string-decorator.data.mjs +1 -1
  76. package/esm2020/decorators/string/string.decorator.mjs +2 -2
  77. package/esm2020/public-api.mjs +1 -1
  78. package/fesm2015/ngx-material-entity.mjs +708 -703
  79. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  80. package/fesm2020/ngx-material-entity.mjs +750 -723
  81. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  82. package/package.json +1 -1
  83. package/public-api.d.ts +0 -1
  84. package/components/input/array-table/add-array-item-dialog/add-array-item-dialog.component.d.ts +0 -22
  85. package/components/input/array-table/add-array-item-dialog/add-array-item-dialog.module.d.ts +0 -12
  86. package/components/input/array-table/array-table.component.d.ts +0 -34
  87. package/components/input/array-table/array-table.module.d.ts +0 -19
  88. package/components/input/internal-input/internal-input.component.d.ts +0 -54
  89. package/components/input/internal-input/internal-input.module.d.ts +0 -16
  90. package/esm2020/components/input/array-table/add-array-item-dialog/add-array-item-dialog-data.builder.mjs +0 -33
  91. package/esm2020/components/input/array-table/add-array-item-dialog/add-array-item-dialog-data.mjs +0 -2
  92. package/esm2020/components/input/array-table/add-array-item-dialog/add-array-item-dialog.component.mjs +0 -45
  93. package/esm2020/components/input/array-table/add-array-item-dialog/add-array-item-dialog.module.mjs +0 -22
  94. package/esm2020/components/input/array-table/array-table.component.mjs +0 -119
  95. package/esm2020/components/input/array-table/array-table.module.mjs +0 -66
  96. package/esm2020/components/input/internal-input/internal-input.component.mjs +0 -70
  97. package/esm2020/components/input/internal-input/internal-input.module.mjs +0 -54
@@ -1,70 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { DecoratorTypes } from '../../../decorators/base/decorator-types.enum';
3
- import { EntityUtilities } from '../../../classes/entity-utilities.class';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/material/form-field";
6
- import * as i2 from "@angular/material/autocomplete";
7
- import * as i3 from "@angular/material/core";
8
- import * as i4 from "@angular/material/select";
9
- import * as i5 from "@angular/material/checkbox";
10
- import * as i6 from "@angular/material/slide-toggle";
11
- import * as i7 from "@angular/common";
12
- import * as i8 from "@angular/material/input";
13
- import * as i9 from "@angular/forms";
14
- import * as i10 from "@angular/cdk/text-field";
15
- export class NgxMatEntityInternalInputComponent {
16
- constructor() {
17
- this.DecoratorTypes = DecoratorTypes;
18
- this.getWidth = EntityUtilities.getWidth;
19
- }
20
- trackByFn(index) {
21
- return index;
22
- }
23
- ngOnInit() {
24
- if (!this.entity) {
25
- throw new Error('Missing required Input data "entity"');
26
- }
27
- if (!this.propertyKey) {
28
- throw new Error('Missing required Input data "propertyKey"');
29
- }
30
- this.type = EntityUtilities.getPropertyType(this.entity, this.propertyKey);
31
- this.metadata = EntityUtilities.getPropertyMetadata(this.entity, this.propertyKey, this.type);
32
- this.metadataDefaultString = this.metadata;
33
- this.metadataTextboxString = this.metadata;
34
- this.metadataAutocompleteString = this.metadata;
35
- this.metadataDropdownString = this.metadata;
36
- this.metadataDropdownBoolean = this.metadata;
37
- this.metadataDefaultNumber = this.metadata;
38
- this.metadataDropdownNumber = this.metadata;
39
- this.metadataDefaultObject = this.metadata;
40
- this.objectProperty = this.entity[this.propertyKey];
41
- }
42
- getObjectProperties() {
43
- const res = [];
44
- for (const property in this.objectProperty) {
45
- const metadata = EntityUtilities.getPropertyMetadata(this.objectProperty, property, EntityUtilities.getPropertyType(this.objectProperty, property));
46
- if (!(this.hideOmitForCreate && metadata.omitForCreate)
47
- && !(this.hideOmitForEdit && metadata.omitForUpdate)) {
48
- res.push(property);
49
- }
50
- }
51
- return res.sort((a, b) => EntityUtilities.compareOrder(a, b, this.objectProperty));
52
- }
53
- }
54
- NgxMatEntityInternalInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityInternalInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- NgxMatEntityInternalInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityInternalInputComponent, selector: "ngx-mat-entity-internal-input", inputs: { entity: "entity", propertyKey: "propertyKey", hideOmitForCreate: "hideOmitForCreate", hideOmitForEdit: "hideOmitForEdit", getValidationErrorMessage: "getValidationErrorMessage" }, ngImport: i0, template: "<div [ngSwitch]=\"type\" *ngIf=\"!(hideOmitForCreate && metadata.omitForCreate) && !(hideOmitForEdit && metadata.omitForUpdate)\">\n <!-------------------------------------------->\n <!-----------------Strings-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.STRING\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n [pattern]=\"metadataDefaultString.regex ? metadataDefaultString.regex : '[\\\\s\\\\S]*'\"\n [minlength]=\"metadataDefaultString.minLength ? metadataDefaultString.minLength : null\"\n [maxlength]=\"metadataDefaultString.maxLength ? metadataDefaultString.maxLength : null\"\n />\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.STRING_TEXTBOX\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <textarea\n matInput\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"10\"\n [minlength]=\"metadataTextboxString.minLength ? metadataTextboxString.minLength : null\"\n [maxlength]=\"metadataTextboxString.maxLength ? metadataTextboxString.maxLength : null\"\n >\n </textarea>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.STRING_AUTOCOMPLETE\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n [matAutocomplete]=\"auto\"\n [minlength]=\"metadataAutocompleteString.minLength ? metadataAutocompleteString.minLength : null\"\n [maxlength]=\"metadataAutocompleteString.maxLength ? metadataAutocompleteString.maxLength : null\"\n [pattern]=\"metadataAutocompleteString.regex ? metadataAutocompleteString.regex : '[\\\\s\\\\S]*'\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let value of metadataAutocompleteString.autocompleteValues\" [value]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.STRING_DROPDOWN\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n <mat-option *ngFor=\"let value of metadataDropdownString.dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <!-------------------------------------------->\n <!-----------------Booleans------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.BOOLEAN_CHECKBOX\">\n <mat-form-field>\n <mat-checkbox [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n {{metadata.displayName}}\n </mat-checkbox>\n <!-- hidden input is needed so that the checkbox can be used inside a mat-form-field -->\n <textarea matInput hidden></textarea>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.BOOLEAN_TOGGLE\">\n <mat-form-field>\n <mat-slide-toggle [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n {{metadata.displayName}}\n </mat-slide-toggle>\n <!-- hidden input is needed so that the toggle can be used inside a mat-form-field -->\n <textarea matInput hidden></textarea>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.BOOLEAN_DROPDOWN\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n <mat-option [value]=\"undefined\">-</mat-option>\n <mat-option [value]=\"true\">{{metadataDropdownBoolean.dropdownTrue}}</mat-option>\n <mat-option [value]=\"false\">{{metadataDropdownBoolean.dropdownFalse}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <!-------------------------------------------->\n <!------------------Numbers------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.NUMBER\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n [min]=\"metadataDefaultNumber.min ? metadataDefaultNumber.min : null\"\n [max]=\"metadataDefaultNumber.max ? metadataDefaultNumber.max : null\"\n />\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.NUMBER_DROPDOWN\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n <mat-option *ngFor=\"let value of metadataDropdownNumber.dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <!-------------------------------------------->\n <!-------------------Object------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.OBJECT\">\n <b>{{metadataDefaultObject.displayName}}</b>\n <!-- iterates over the object properties -->\n <div class=\"row\">\n <!--\n displays another ngx-material-entity with the:\n object as the entity,\n the current key in the loop received by the keyvalue direction as the propertyKey\n and the getValidationErrorMessage of the current component\n -->\n <ngx-mat-entity-internal-input\n *ngFor=\"let key of getObjectProperties(); let i = index; trackBy: trackByFn\"\n [entity]=\"objectProperty\"\n [propertyKey]=\"key\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [hideOmitForCreate]=\"hideOmitForCreate\"\n [hideOmitForEdit]=\"hideOmitForEdit\"\n class=\"col-lg-{{getWidth(objectProperty, key, 'lg')}} col-md-{{getWidth(objectProperty, key, 'md')}} col-sm-{{getWidth(objectProperty, key, 'sm')}}\"\n >\n </ngx-mat-entity-internal-input>\n </div>\n </div>\n\n <div *ngSwitchDefault>ERROR: The type {{type}}is not known.</div>\n</div>", styles: ["mat-form-field{width:100%}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i6.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { type: NgxMatEntityInternalInputComponent, selector: "ngx-mat-entity-internal-input", inputs: ["entity", "propertyKey", "hideOmitForCreate", "hideOmitForEdit", "getValidationErrorMessage"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i7.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i9.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i9.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i9.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { type: i7.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityInternalInputComponent, decorators: [{
57
- type: Component,
58
- args: [{ selector: 'ngx-mat-entity-internal-input', template: "<div [ngSwitch]=\"type\" *ngIf=\"!(hideOmitForCreate && metadata.omitForCreate) && !(hideOmitForEdit && metadata.omitForUpdate)\">\n <!-------------------------------------------->\n <!-----------------Strings-------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.STRING\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n [pattern]=\"metadataDefaultString.regex ? metadataDefaultString.regex : '[\\\\s\\\\S]*'\"\n [minlength]=\"metadataDefaultString.minLength ? metadataDefaultString.minLength : null\"\n [maxlength]=\"metadataDefaultString.maxLength ? metadataDefaultString.maxLength : null\"\n />\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.STRING_TEXTBOX\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <textarea\n matInput\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"10\"\n [minlength]=\"metadataTextboxString.minLength ? metadataTextboxString.minLength : null\"\n [maxlength]=\"metadataTextboxString.maxLength ? metadataTextboxString.maxLength : null\"\n >\n </textarea>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.STRING_AUTOCOMPLETE\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n [matAutocomplete]=\"auto\"\n [minlength]=\"metadataAutocompleteString.minLength ? metadataAutocompleteString.minLength : null\"\n [maxlength]=\"metadataAutocompleteString.maxLength ? metadataAutocompleteString.maxLength : null\"\n [pattern]=\"metadataAutocompleteString.regex ? metadataAutocompleteString.regex : '[\\\\s\\\\S]*'\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let value of metadataAutocompleteString.autocompleteValues\" [value]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.STRING_DROPDOWN\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n <mat-option *ngFor=\"let value of metadataDropdownString.dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <!-------------------------------------------->\n <!-----------------Booleans------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.BOOLEAN_CHECKBOX\">\n <mat-form-field>\n <mat-checkbox [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n {{metadata.displayName}}\n </mat-checkbox>\n <!-- hidden input is needed so that the checkbox can be used inside a mat-form-field -->\n <textarea matInput hidden></textarea>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.BOOLEAN_TOGGLE\">\n <mat-form-field>\n <mat-slide-toggle [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n {{metadata.displayName}}\n </mat-slide-toggle>\n <!-- hidden input is needed so that the toggle can be used inside a mat-form-field -->\n <textarea matInput hidden></textarea>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.BOOLEAN_DROPDOWN\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n <mat-option [value]=\"undefined\">-</mat-option>\n <mat-option [value]=\"true\">{{metadataDropdownBoolean.dropdownTrue}}</mat-option>\n <mat-option [value]=\"false\">{{metadataDropdownBoolean.dropdownFalse}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <!-------------------------------------------->\n <!------------------Numbers------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.NUMBER\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n matInput\n type=\"number\"\n [(ngModel)]=\"entity[propertyKey]\"\n [name]=\"propertyKey.toString()\"\n #model=\"ngModel\"\n [min]=\"metadataDefaultNumber.min ? metadataDefaultNumber.min : null\"\n [max]=\"metadataDefaultNumber.max ? metadataDefaultNumber.max : null\"\n />\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <div *ngSwitchCase=\"DecoratorTypes.NUMBER_DROPDOWN\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-select [(ngModel)]=\"entity[propertyKey]\" [name]=\"propertyKey.toString()\" #model=\"ngModel\">\n <mat-option *ngFor=\"let value of metadataDropdownNumber.dropdownValues\" [value]=\"value.value\">{{value.displayName}}</mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n </div>\n\n <!-------------------------------------------->\n <!-------------------Object------------------->\n <!-------------------------------------------->\n <div *ngSwitchCase=\"DecoratorTypes.OBJECT\">\n <b>{{metadataDefaultObject.displayName}}</b>\n <!-- iterates over the object properties -->\n <div class=\"row\">\n <!--\n displays another ngx-material-entity with the:\n object as the entity,\n the current key in the loop received by the keyvalue direction as the propertyKey\n and the getValidationErrorMessage of the current component\n -->\n <ngx-mat-entity-internal-input\n *ngFor=\"let key of getObjectProperties(); let i = index; trackBy: trackByFn\"\n [entity]=\"objectProperty\"\n [propertyKey]=\"key\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [hideOmitForCreate]=\"hideOmitForCreate\"\n [hideOmitForEdit]=\"hideOmitForEdit\"\n class=\"col-lg-{{getWidth(objectProperty, key, 'lg')}} col-md-{{getWidth(objectProperty, key, 'md')}} col-sm-{{getWidth(objectProperty, key, 'sm')}}\"\n >\n </ngx-mat-entity-internal-input>\n </div>\n </div>\n\n <div *ngSwitchDefault>ERROR: The type {{type}}is not known.</div>\n</div>", styles: ["mat-form-field{width:100%}\n"] }]
59
- }], propDecorators: { entity: [{
60
- type: Input
61
- }], propertyKey: [{
62
- type: Input
63
- }], hideOmitForCreate: [{
64
- type: Input
65
- }], hideOmitForEdit: [{
66
- type: Input
67
- }], getValidationErrorMessage: [{
68
- type: Input
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9pbnRlcm5hbC1pbnB1dC9pbnRlcm5hbC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ludGVybmFsLWlucHV0L2ludGVybmFsLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7OztBQWExRSxNQUFNLE9BQU8sa0NBQWtDO0lBTC9DO1FBd0RhLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRXpDLGFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO0tBK0N2QztJQTdDRyxTQUFTLENBQUMsS0FBYztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxRQUFnRCxDQUFDO1FBQ25GLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBZ0QsQ0FBQztRQUNuRixJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFFBQXFELENBQUM7UUFDN0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxRQUFpRCxDQUFDO1FBRXJGLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsUUFBa0QsQ0FBQztRQUV2RixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFFBQWdELENBQUM7UUFDbkYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxRQUFpRCxDQUFDO1FBRXJGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBNEQsQ0FBQztRQUMvRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBc0IsQ0FBQztJQUM3RSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsTUFBTSxHQUFHLEdBQXFCLEVBQUUsQ0FBQztRQUNqQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEMsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLG1CQUFtQixDQUNoRCxJQUFJLENBQUMsY0FBYyxFQUNsQixRQUF3QixFQUN4QixlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBd0IsQ0FBQyxDQUNsRixDQUFDO1lBQ0YsSUFDSSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUM7bUJBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFDdkQ7Z0JBQ0UsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUF3QixDQUFDLENBQUM7YUFDdEM7U0FDSjtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDOztnSUFuR1Esa0NBQWtDO29IQUFsQyxrQ0FBa0MsbVFDaEIvQywwaVFBbUtNLGtvQ0RuSk8sa0NBQWtDOzRGQUFsQyxrQ0FBa0M7a0JBTDlDLFNBQVM7K0JBQ0ksK0JBQStCOzhCQVV6QyxNQUFNO3NCQURMLEtBQUs7Z0JBT04sV0FBVztzQkFEVixLQUFLO2dCQVFOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFRTixlQUFlO3NCQURkLEtBQUs7Z0JBT04seUJBQXlCO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS1tb2RlbC5jbGFzcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS11dGlsaXRpZXMuY2xhc3MnO1xuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERyb3Bkb3duQm9vbGVhbkRlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycy9ib29sZWFuL2Jvb2xlYW4tZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgRGVmYXVsdE51bWJlckRlY29yYXRvckNvbmZpZ0ludGVybmFsLCBEcm9wZG93bk51bWJlckRlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycy9udW1iZXIvbnVtYmVyLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IERlZmF1bHRPYmplY3REZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMvb2JqZWN0L29iamVjdC1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgRGVmYXVsdFN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsLCBEcm9wZG93blN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsLCBUZXh0Ym94U3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL3N0cmluZy9zdHJpbmctZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9wcm9wZXJ0eS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktaW50ZXJuYWwtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnRlcm5hbC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW50ZXJuYWwtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlJbnRlcm5hbElucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBFbnRpdHk+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5IG9uIHdoaWNoIHRoZSBwcm9wZXJ0eSBleGlzdHMuIFVzZWQgaW4gY29uanVjdGlvbiB3aXRoIHRoZSBcInByb3BlcnR5S2V5XCJcbiAgICAgKiB0byBkZXRlcm1pbmUgdGhlIHByb3BlcnR5IGZvciB3aGljaCB0aGUgaW5wdXQgc2hvdWxkIGJlIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVudGl0eSE6IEVudGl0eVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZ2VuZXJhdGUgdGhlIGlucHV0IGZvci4gVXNlZCBpbiBjb25qdWN0aW9uIHdpdGggdGhlIFwiZW50aXR5XCIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9wZXJ0eUtleSE6IGtleW9mIEVudGl0eVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGhpZGUgYSB2YWx1ZSBpZiBpdCBpcyBvbWl0dGVkIGZvciBjcmVhdGlvbi5cbiAgICAgKiBJcyB1c2VkIGludGVybmFsbHkgZm9yIHRoZSBvYmplY3QgcHJvcGVydHkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBoaWRlT21pdEZvckNyZWF0ZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGhpZGUgYSB2YWx1ZSBpZiBpdCBpcyBvbWl0dGVkIGZvciBlZGl0aW5nLlxuICAgICAqIElzIHVzZWQgaW50ZXJuYWxseSBmb3IgdGhlIG9iamVjdCBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVPbWl0Rm9yRWRpdD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiAob3B0aW9uYWwpIEEgY3VzdG9tIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHRoZSBlcnJvci1tZXNzYWdlIGZvciBpbnZhbGlkIGlucHV0cy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UhOiAobW9kZWw6IE5nTW9kZWwpID0+IHN0cmluZztcblxuICAgIHR5cGUhOiBEZWNvcmF0b3JUeXBlcztcblxuICAgIG1ldGFkYXRhITogUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcblxuICAgIG1ldGFkYXRhRGVmYXVsdFN0cmluZyE6IERlZmF1bHRTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcbiAgICBtZXRhZGF0YVRleHRib3hTdHJpbmchOiBUZXh0Ym94U3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG4gICAgbWV0YWRhdGFBdXRvY29tcGxldGVTdHJpbmchOiBBdXRvY29tcGxldGVTdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcbiAgICBtZXRhZGF0YURyb3Bkb3duU3RyaW5nITogRHJvcGRvd25TdHJpbmdEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcblxuICAgIG1ldGFkYXRhRHJvcGRvd25Cb29sZWFuITogRHJvcGRvd25Cb29sZWFuRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG5cbiAgICBtZXRhZGF0YURlZmF1bHROdW1iZXIhOiBEZWZhdWx0TnVtYmVyRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG4gICAgbWV0YWRhdGFEcm9wZG93bk51bWJlciE6IERyb3Bkb3duTnVtYmVyRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG5cbiAgICBtZXRhZGF0YURlZmF1bHRPYmplY3QhOiBEZWZhdWx0T2JqZWN0RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8RW50aXR5VHlwZT47XG4gICAgb2JqZWN0UHJvcGVydHkhOiBFbnRpdHk7XG5cbiAgICByZWFkb25seSBEZWNvcmF0b3JUeXBlcyA9IERlY29yYXRvclR5cGVzO1xuXG4gICAgZ2V0V2lkdGggPSBFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGg7XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IHVua25vd24pOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZW50aXR5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcImVudGl0eVwiJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5S2V5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcInByb3BlcnR5S2V5XCInKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnR5cGUgPSBFbnRpdHlVdGlsaXRpZXMuZ2V0UHJvcGVydHlUeXBlKHRoaXMuZW50aXR5LCB0aGlzLnByb3BlcnR5S2V5KTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YSA9IEVudGl0eVV0aWxpdGllcy5nZXRQcm9wZXJ0eU1ldGFkYXRhKHRoaXMuZW50aXR5LCB0aGlzLnByb3BlcnR5S2V5LCB0aGlzLnR5cGUpO1xuXG4gICAgICAgIHRoaXMubWV0YWRhdGFEZWZhdWx0U3RyaW5nID0gdGhpcy5tZXRhZGF0YSBhcyBEZWZhdWx0U3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG4gICAgICAgIHRoaXMubWV0YWRhdGFUZXh0Ym94U3RyaW5nID0gdGhpcy5tZXRhZGF0YSBhcyBUZXh0Ym94U3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG4gICAgICAgIHRoaXMubWV0YWRhdGFBdXRvY29tcGxldGVTdHJpbmcgPSB0aGlzLm1ldGFkYXRhIGFzIEF1dG9jb21wbGV0ZVN0cmluZ0RlY29yYXRvckNvbmZpZ0ludGVybmFsO1xuICAgICAgICB0aGlzLm1ldGFkYXRhRHJvcGRvd25TdHJpbmcgPSB0aGlzLm1ldGFkYXRhIGFzIERyb3Bkb3duU3RyaW5nRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG5cbiAgICAgICAgdGhpcy5tZXRhZGF0YURyb3Bkb3duQm9vbGVhbiA9IHRoaXMubWV0YWRhdGEgYXMgRHJvcGRvd25Cb29sZWFuRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG5cbiAgICAgICAgdGhpcy5tZXRhZGF0YURlZmF1bHROdW1iZXIgPSB0aGlzLm1ldGFkYXRhIGFzIERlZmF1bHROdW1iZXJEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcbiAgICAgICAgdGhpcy5tZXRhZGF0YURyb3Bkb3duTnVtYmVyID0gdGhpcy5tZXRhZGF0YSBhcyBEcm9wZG93bk51bWJlckRlY29yYXRvckNvbmZpZ0ludGVybmFsO1xuXG4gICAgICAgIHRoaXMubWV0YWRhdGFEZWZhdWx0T2JqZWN0ID0gdGhpcy5tZXRhZGF0YSBhcyBEZWZhdWx0T2JqZWN0RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8RW50aXR5VHlwZT47XG4gICAgICAgIHRoaXMub2JqZWN0UHJvcGVydHkgPSB0aGlzLmVudGl0eVt0aGlzLnByb3BlcnR5S2V5XSBhcyB1bmtub3duIGFzIEVudGl0eTtcbiAgICB9XG5cbiAgICBnZXRPYmplY3RQcm9wZXJ0aWVzKCk6IChrZXlvZiBFbnRpdHkpW10ge1xuICAgICAgICBjb25zdCByZXM6IChrZXlvZiBFbnRpdHkpW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiB0aGlzLm9iamVjdFByb3BlcnR5KSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IEVudGl0eVV0aWxpdGllcy5nZXRQcm9wZXJ0eU1ldGFkYXRhKFxuICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0UHJvcGVydHksXG4gICAgICAgICAgICAgICAgIHByb3BlcnR5IGFzIGtleW9mIEVudGl0eSxcbiAgICAgICAgICAgICAgICAgRW50aXR5VXRpbGl0aWVzLmdldFByb3BlcnR5VHlwZSh0aGlzLm9iamVjdFByb3BlcnR5LCBwcm9wZXJ0eSBhcyBrZXlvZiBFbnRpdHkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICEodGhpcy5oaWRlT21pdEZvckNyZWF0ZSAmJiBtZXRhZGF0YS5vbWl0Rm9yQ3JlYXRlKVxuICAgICAgICAgICAgICAgICAmJiAhKHRoaXMuaGlkZU9taXRGb3JFZGl0ICYmIG1ldGFkYXRhLm9taXRGb3JVcGRhdGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChwcm9wZXJ0eSBhcyBrZXlvZiBFbnRpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMuc29ydCgoYSwgYikgPT4gRW50aXR5VXRpbGl0aWVzLmNvbXBhcmVPcmRlcihhLCBiLCB0aGlzLm9iamVjdFByb3BlcnR5KSk7XG4gICAgfVxufSIsIjxkaXYgW25nU3dpdGNoXT1cInR5cGVcIiAqbmdJZj1cIiEoaGlkZU9taXRGb3JDcmVhdGUgJiYgbWV0YWRhdGEub21pdEZvckNyZWF0ZSkgJiYgIShoaWRlT21pdEZvckVkaXQgJiYgbWV0YWRhdGEub21pdEZvclVwZGF0ZSlcIj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS1TdHJpbmdzLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5TVFJJTkdcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnRpdHlbcHJvcGVydHlLZXldXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJwcm9wZXJ0eUtleS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJtZXRhZGF0YURlZmF1bHRTdHJpbmcucmVnZXggPyBtZXRhZGF0YURlZmF1bHRTdHJpbmcucmVnZXggOiAnW1xcXFxzXFxcXFNdKidcIlxuICAgICAgICAgICAgICAgIFttaW5sZW5ndGhdPVwibWV0YWRhdGFEZWZhdWx0U3RyaW5nLm1pbkxlbmd0aCA/IG1ldGFkYXRhRGVmYXVsdFN0cmluZy5taW5MZW5ndGggOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIm1ldGFkYXRhRGVmYXVsdFN0cmluZy5tYXhMZW5ndGggPyBtZXRhZGF0YURlZmF1bHRTdHJpbmcubWF4TGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1lcnJvcj57e2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UobW9kZWwpfX08L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkRlY29yYXRvclR5cGVzLlNUUklOR19URVhUQk9YXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW50aXR5W3Byb3BlcnR5S2V5XVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHlLZXkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgICAgI21vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgY2RrVGV4dGFyZWFBdXRvc2l6ZVxuICAgICAgICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjEwXCJcbiAgICAgICAgICAgICAgICBbbWlubGVuZ3RoXT1cIm1ldGFkYXRhVGV4dGJveFN0cmluZy5taW5MZW5ndGggPyBtZXRhZGF0YVRleHRib3hTdHJpbmcubWluTGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJtZXRhZGF0YVRleHRib3hTdHJpbmcubWF4TGVuZ3RoID8gbWV0YWRhdGFUZXh0Ym94U3RyaW5nLm1heExlbmd0aCA6IG51bGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5TVFJJTkdfQVVUT0NPTVBMRVRFXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW50aXR5W3Byb3BlcnR5S2V5XVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHlLZXkudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICAgICAgI21vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgICAgICBbbWlubGVuZ3RoXT1cIm1ldGFkYXRhQXV0b2NvbXBsZXRlU3RyaW5nLm1pbkxlbmd0aCA/IG1ldGFkYXRhQXV0b2NvbXBsZXRlU3RyaW5nLm1pbkxlbmd0aCA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWV0YWRhdGFBdXRvY29tcGxldGVTdHJpbmcubWF4TGVuZ3RoID8gbWV0YWRhdGFBdXRvY29tcGxldGVTdHJpbmcubWF4TGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwibWV0YWRhdGFBdXRvY29tcGxldGVTdHJpbmcucmVnZXggPyBtZXRhZGF0YUF1dG9jb21wbGV0ZVN0cmluZy5yZWdleCA6ICdbXFxcXHNcXFxcU10qJ1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgbWV0YWRhdGFBdXRvY29tcGxldGVTdHJpbmcuYXV0b2NvbXBsZXRlVmFsdWVzXCIgW3ZhbHVlXT1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7dmFsdWV9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5TVFJJTkdfRFJPUERPV05cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiZW50aXR5W3Byb3BlcnR5S2V5XVwiIFtuYW1lXT1cInByb3BlcnR5S2V5LnRvU3RyaW5nKClcIiAjbW9kZWw9XCJuZ01vZGVsXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIG1ldGFkYXRhRHJvcGRvd25TdHJpbmcuZHJvcGRvd25WYWx1ZXNcIiBbdmFsdWVdPVwidmFsdWUudmFsdWVcIj57e3ZhbHVlLmRpc3BsYXlOYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tQm9vbGVhbnMtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiRGVjb3JhdG9yVHlwZXMuQk9PTEVBTl9DSEVDS0JPWFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiZW50aXR5W3Byb3BlcnR5S2V5XVwiIFtuYW1lXT1cInByb3BlcnR5S2V5LnRvU3RyaW5nKClcIiAjbW9kZWw9XCJuZ01vZGVsXCI+XG4gICAgICAgICAgICAgICAge3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwhLS0gaGlkZGVuIGlucHV0IGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBjaGVja2JveCBjYW4gYmUgdXNlZCBpbnNpZGUgYSBtYXQtZm9ybS1maWVsZCAtLT5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBoaWRkZW4+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5CT09MRUFOX1RPR0dMRVwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImVudGl0eVtwcm9wZXJ0eUtleV1cIiBbbmFtZV09XCJwcm9wZXJ0eUtleS50b1N0cmluZygpXCIgI21vZGVsPVwibmdNb2RlbFwiPlxuICAgICAgICAgICAgICAgIHt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fVxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgICAgICAgPCEtLSBoaWRkZW4gaW5wdXQgaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHRvZ2dsZSBjYW4gYmUgdXNlZCBpbnNpZGUgYSBtYXQtZm9ybS1maWVsZCAtLT5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBoaWRkZW4+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5CT09MRUFOX0RST1BET1dOXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cImVudGl0eVtwcm9wZXJ0eUtleV1cIiBbbmFtZV09XCJwcm9wZXJ0eUtleS50b1N0cmluZygpXCIgI21vZGVsPVwibmdNb2RlbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ1bmRlZmluZWRcIj4tPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ0cnVlXCI+e3ttZXRhZGF0YURyb3Bkb3duQm9vbGVhbi5kcm9wZG93blRydWV9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFsc2VcIj57e21ldGFkYXRhRHJvcGRvd25Cb29sZWFuLmRyb3Bkb3duRmFsc2V9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tTnVtYmVycy0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5OVU1CRVJcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnRpdHlbcHJvcGVydHlLZXldXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJwcm9wZXJ0eUtleS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cIm1ldGFkYXRhRGVmYXVsdE51bWJlci5taW4gPyBtZXRhZGF0YURlZmF1bHROdW1iZXIubWluIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW21heF09XCJtZXRhZGF0YURlZmF1bHROdW1iZXIubWF4ID8gbWV0YWRhdGFEZWZhdWx0TnVtYmVyLm1heCA6IG51bGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJEZWNvcmF0b3JUeXBlcy5OVU1CRVJfRFJPUERPV05cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiZW50aXR5W3Byb3BlcnR5S2V5XVwiIFtuYW1lXT1cInByb3BlcnR5S2V5LnRvU3RyaW5nKClcIiAjbW9kZWw9XCJuZ01vZGVsXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIG1ldGFkYXRhRHJvcGRvd25OdW1iZXIuZHJvcGRvd25WYWx1ZXNcIiBbdmFsdWVdPVwidmFsdWUudmFsdWVcIj57e3ZhbHVlLmRpc3BsYXlOYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS1PYmplY3QtLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiRGVjb3JhdG9yVHlwZXMuT0JKRUNUXCI+XG4gICAgICAgIDxiPnt7bWV0YWRhdGFEZWZhdWx0T2JqZWN0LmRpc3BsYXlOYW1lfX08L2I+XG4gICAgICAgIDwhLS0gaXRlcmF0ZXMgb3ZlciB0aGUgb2JqZWN0IHByb3BlcnRpZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgICAgICBkaXNwbGF5cyBhbm90aGVyIG5neC1tYXRlcmlhbC1lbnRpdHkgd2l0aCB0aGU6XG4gICAgICAgICAgICAgICAgb2JqZWN0IGFzIHRoZSBlbnRpdHksXG4gICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQga2V5IGluIHRoZSBsb29wIHJlY2VpdmVkIGJ5IHRoZSBrZXl2YWx1ZSBkaXJlY3Rpb24gYXMgdGhlIHByb3BlcnR5S2V5XG4gICAgICAgICAgICAgICAgYW5kIHRoZSBnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlIG9mIHRoZSBjdXJyZW50IGNvbXBvbmVudFxuICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktaW50ZXJuYWwtaW5wdXRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIGdldE9iamVjdFByb3BlcnRpZXMoKTsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICBbZW50aXR5XT1cIm9iamVjdFByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICBbZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZV09XCJnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JDcmVhdGVdPVwiaGlkZU9taXRGb3JDcmVhdGVcIlxuICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwiaGlkZU9taXRGb3JFZGl0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e2dldFdpZHRoKG9iamVjdFByb3BlcnR5LCBrZXksICdsZycpfX0gY29sLW1kLXt7Z2V0V2lkdGgob2JqZWN0UHJvcGVydHksIGtleSwgJ21kJyl9fSBjb2wtc20te3tnZXRXaWR0aChvYmplY3RQcm9wZXJ0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW50ZXJuYWwtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PkVSUk9SOiBUaGUgdHlwZSB7e3R5cGV9fWlzIG5vdCBrbm93bi48L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -1,54 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { MatInputModule } from '@angular/material/input';
4
- import { FormsModule } from '@angular/forms';
5
- import { MatFormFieldModule } from '@angular/material/form-field';
6
- import { MatSelectModule } from '@angular/material/select';
7
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
8
- import { MatCheckboxModule } from '@angular/material/checkbox';
9
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
10
- import { MatTableModule } from '@angular/material/table';
11
- import { NgxMatEntityInternalInputComponent } from './internal-input.component';
12
- import * as i0 from "@angular/core";
13
- export class NgxMatEntityInternalInputModule {
14
- }
15
- NgxMatEntityInternalInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityInternalInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- NgxMatEntityInternalInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityInternalInputModule, declarations: [NgxMatEntityInternalInputComponent], imports: [CommonModule,
17
- MatInputModule,
18
- FormsModule,
19
- MatFormFieldModule,
20
- MatSelectModule,
21
- MatAutocompleteModule,
22
- MatCheckboxModule,
23
- MatSlideToggleModule,
24
- MatTableModule], exports: [NgxMatEntityInternalInputComponent] });
25
- NgxMatEntityInternalInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityInternalInputModule, imports: [[
26
- CommonModule,
27
- MatInputModule,
28
- FormsModule,
29
- MatFormFieldModule,
30
- MatSelectModule,
31
- MatAutocompleteModule,
32
- MatCheckboxModule,
33
- MatSlideToggleModule,
34
- MatTableModule
35
- ]] });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityInternalInputModule, decorators: [{
37
- type: NgModule,
38
- args: [{
39
- declarations: [NgxMatEntityInternalInputComponent],
40
- imports: [
41
- CommonModule,
42
- MatInputModule,
43
- FormsModule,
44
- MatFormFieldModule,
45
- MatSelectModule,
46
- MatAutocompleteModule,
47
- MatCheckboxModule,
48
- MatSlideToggleModule,
49
- MatTableModule
50
- ],
51
- exports: [NgxMatEntityInternalInputComponent]
52
- }]
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9pbnB1dC9pbnRlcm5hbC1pbnB1dC9pbnRlcm5hbC1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWlCaEYsTUFBTSxPQUFPLCtCQUErQjs7NkhBQS9CLCtCQUErQjs4SEFBL0IsK0JBQStCLGlCQWR6QixrQ0FBa0MsYUFFN0MsWUFBWTtRQUNaLGNBQWM7UUFDZCxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLG9CQUFvQjtRQUNwQixjQUFjLGFBRVIsa0NBQWtDOzhIQUVuQywrQkFBK0IsWUFiL0I7WUFDTCxZQUFZO1lBQ1osY0FBYztZQUNkLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixpQkFBaUI7WUFDakIsb0JBQW9CO1lBQ3BCLGNBQWM7U0FDakI7NEZBR1EsK0JBQStCO2tCQWYzQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGtDQUFrQyxDQUFDO29CQUNsRCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGNBQWM7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5SW50ZXJuYWxJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJuYWwtaW5wdXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtOZ3hNYXRFbnRpdHlJbnRlcm5hbElucHV0Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICAgICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgICAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICAgICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgICAgIE1hdFRhYmxlTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbTmd4TWF0RW50aXR5SW50ZXJuYWxJbnB1dENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5SW50ZXJuYWxJbnB1dE1vZHVsZSB7fSJdfQ==