@kms-ngx-ui/presentational 16.3.1 → 16.3.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.
- package/jest.config.js +27 -0
- package/ng-package.json +13 -0
- package/package.json +3 -17
- package/src/lib/directives/directives.module.ts +28 -0
- package/src/lib/directives/mousewheel.directive.ts +43 -0
- package/src/lib/directives/sum-of-height.directive.ts +73 -0
- package/src/lib/directives/swipe.directive.ts +193 -0
- package/{lib/directives/swipe.model.d.ts → src/lib/directives/swipe.model.ts} +6 -0
- package/src/lib/directives/tooltip.directive.spec.ts.BAK +8 -0
- package/src/lib/directives/tooltip.directive.ts +121 -0
- package/src/lib/kms-ngx-ui-presentational.component.spec.ts +25 -0
- package/src/lib/kms-ngx-ui-presentational.component.ts +20 -0
- package/src/lib/kms-ngx-ui-presentational.module.ts +124 -0
- package/src/lib/kms-ngx-ui-presentational.service.spec.ts +16 -0
- package/src/lib/kms-ngx-ui-presentational.service.ts +9 -0
- package/src/lib/models/address.model.ts +16 -0
- package/src/lib/models/iconSize.enum.ts +17 -0
- package/src/lib/models/image-snippet.model.ts +17 -0
- package/src/lib/models/is-value.function.ts +20 -0
- package/src/lib/models/salutation.enum.ts +6 -0
- package/{lib/models/types/attached-file-dto.model.d.ts → src/lib/models/types/attached-file-dto.model.ts} +1 -1
- package/{lib/models/types/nullable.type.d.ts → src/lib/models/types/nullable.type.ts} +1 -0
- package/src/lib/parent-components/actions.component.ts +43 -0
- package/src/lib/parent-components/form-control.component.ts +77 -0
- package/src/lib/parent-components/form.component.ts +79 -0
- package/src/lib/pipes/custom-pipes.module.ts +48 -0
- package/src/lib/pipes/decode-uri.pipe.ts +15 -0
- package/src/lib/pipes/encode-uri.pipe.ts +14 -0
- package/src/lib/pipes/integer-currency.pipe.ts +22 -0
- package/src/lib/pipes/prettyjson.pipe.ts +104 -0
- package/src/lib/pipes/safe-html.pipe.ts +17 -0
- package/src/lib/pipes/safe-resource-url.pipe.ts +17 -0
- package/src/lib/pipes/safe-style.pipe.ts +17 -0
- package/src/lib/pipes/safe-url.pipe.ts +17 -0
- package/src/lib/pipes/to-number.pipe.ts +19 -0
- package/src/lib/pipes/trim.pipe.ts +16 -0
- package/src/lib/pipes/typeof.pipe.ts +10 -0
- package/src/lib/services/viewport.service.ts +241 -0
- package/src/lib/ui/back-to-top/back-to-top.component.html +7 -0
- package/src/lib/ui/back-to-top/back-to-top.component.ts +43 -0
- package/src/lib/ui/back-to-top/back-to-top.stories.ts +19 -0
- package/src/lib/ui/button-with-confirm-dialog/button-response-types.enum.ts +4 -0
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.html +8 -0
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.spec.ts.BAK +25 -0
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.ts +55 -0
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.stories.ts +21 -0
- package/{lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts → src/lib/ui/button-with-confirm-dialog/dialog-data.model.ts} +4 -3
- package/src/lib/ui/checkbox/checkbox.component.html +15 -0
- package/src/lib/ui/checkbox/checkbox.component.stories.ts +19 -0
- package/src/lib/ui/checkbox/checkbox.component.ts +75 -0
- package/src/lib/ui/color-input/color-input.component.html +11 -0
- package/src/lib/ui/color-input/color-input.component.spec.ts +44 -0
- package/src/lib/ui/color-input/color-input.component.ts +67 -0
- package/src/lib/ui/dropdown-from-data/dropdown-from-data.component.html +23 -0
- package/src/lib/ui/dropdown-from-data/dropdown-from-data.component.ts +174 -0
- package/src/lib/ui/enum-radiogroup/enum-radiogroup.component.html +6 -0
- package/src/lib/ui/enum-radiogroup/enum-radiogroup.component.spec.ts.BAK +25 -0
- package/src/lib/ui/enum-radiogroup/enum-radiogroup.component.ts +43 -0
- package/src/lib/ui/file-input/file-input.component.html +45 -0
- package/src/lib/ui/file-input/file-input.component.spec.ts.BAK +25 -0
- package/src/lib/ui/file-input/file-input.component.ts +236 -0
- package/src/lib/ui/flyout/flyout.component.html +35 -0
- package/src/lib/ui/flyout/flyout.component.spec.ts.BAK +30 -0
- package/src/lib/ui/flyout/flyout.component.ts +95 -0
- package/src/lib/ui/generic-dialog/generic-dialog.component.html +24 -0
- package/src/lib/ui/generic-dialog/generic-dialog.component.spec.ts.BAK +43 -0
- package/src/lib/ui/generic-dialog/generic-dialog.component.ts +54 -0
- package/src/lib/ui/icon/icon.component.html +22 -0
- package/src/lib/ui/icon/icon.component.spec.ts.BAK +31 -0
- package/src/lib/ui/icon/icon.component.ts +67 -0
- package/src/lib/ui/icon/iconSize.enum.ts +17 -0
- package/src/lib/ui/image-slider/image-slider.component.html +54 -0
- package/src/lib/ui/image-slider/image-slider.component.ts +205 -0
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.html +22 -0
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.spec.ts +61 -0
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.ts +32 -0
- package/src/lib/ui/loader/loader.component.html +3 -0
- package/src/lib/ui/loader/loader.component.spec.ts.BAK +26 -0
- package/src/lib/ui/loader/loader.component.ts +16 -0
- package/src/lib/ui/map/map.component.html +18 -0
- package/src/lib/ui/map/map.component.spec.ts.BAK +31 -0
- package/src/lib/ui/map/map.component.ts +138 -0
- package/src/lib/ui/radiobutton/radiobutton.component.html +42 -0
- package/src/lib/ui/radiobutton/radiobutton.component.ts +71 -0
- package/src/lib/ui/salutation-dropdown/salutation-dropdown.component.html +9 -0
- package/src/lib/ui/salutation-dropdown/salutation-dropdown.component.spec.ts.BAK +26 -0
- package/src/lib/ui/salutation-dropdown/salutation-dropdown.component.ts +48 -0
- package/src/lib/ui/salutation-radiogroup/salutation-radiogroup.component.html +13 -0
- package/src/lib/ui/salutation-radiogroup/salutation-radiogroup.component.spec.ts.BAK +25 -0
- package/src/lib/ui/salutation-radiogroup/salutation-radiogroup.component.ts +41 -0
- package/src/lib/ui/time-input/time-input.component.html +5 -0
- package/src/lib/ui/time-input/time-input.component.spec.ts +28 -0
- package/src/lib/ui/time-input/time-input.component.ts +88 -0
- package/src/lib/ui/tooltip/tooltip.component.html +1 -0
- package/src/lib/ui/tooltip/tooltip.component.spec.ts.BAK +26 -0
- package/src/lib/ui/tooltip/tooltip.component.ts +10 -0
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.html +11 -0
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.spec.ts.BAK +28 -0
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.ts +19 -0
- package/src/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.html +7 -0
- package/src/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.spec.ts.BAK +25 -0
- package/src/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.ts +79 -0
- package/{public-api.d.ts → src/public-api.ts} +8 -0
- package/src/test-setup.ts +2 -0
- package/tsconfig.lib.json +26 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/tslint.json +17 -0
- package/esm2022/kms-ngx-ui-presentational.mjs +0 -5
- package/esm2022/lib/directives/directives.module.mjs +0 -40
- package/esm2022/lib/directives/mousewheel.directive.mjs +0 -56
- package/esm2022/lib/directives/sum-of-height.directive.mjs +0 -74
- package/esm2022/lib/directives/swipe.directive.mjs +0 -183
- package/esm2022/lib/directives/swipe.model.mjs +0 -5
- package/esm2022/lib/directives/tooltip.directive.mjs +0 -144
- package/esm2022/lib/kms-ngx-ui-presentational.component.mjs +0 -22
- package/esm2022/lib/kms-ngx-ui-presentational.module.mjs +0 -211
- package/esm2022/lib/kms-ngx-ui-presentational.service.mjs +0 -14
- package/esm2022/lib/models/address.model.mjs +0 -6
- package/esm2022/lib/models/iconSize.enum.mjs +0 -17
- package/esm2022/lib/models/image-snippet.model.mjs +0 -18
- package/esm2022/lib/models/index.mjs +0 -5
- package/esm2022/lib/models/is-value.function.mjs +0 -17
- package/esm2022/lib/models/salutation.enum.mjs +0 -8
- package/esm2022/lib/models/types/attached-file-dto.model.mjs +0 -6
- package/esm2022/lib/models/types/nullable.type.mjs +0 -5
- package/esm2022/lib/parent-components/actions.component.mjs +0 -56
- package/esm2022/lib/parent-components/form-control.component.mjs +0 -75
- package/esm2022/lib/parent-components/form.component.mjs +0 -78
- package/esm2022/lib/pipes/custom-pipes.module.mjs +0 -71
- package/esm2022/lib/pipes/decode-uri.pipe.mjs +0 -19
- package/esm2022/lib/pipes/encode-uri.pipe.mjs +0 -19
- package/esm2022/lib/pipes/integer-currency.pipe.mjs +0 -27
- package/esm2022/lib/pipes/safe-html.pipe.mjs +0 -23
- package/esm2022/lib/pipes/safe-resource-url.pipe.mjs +0 -23
- package/esm2022/lib/pipes/safe-style.pipe.mjs +0 -23
- package/esm2022/lib/pipes/safe-url.pipe.mjs +0 -23
- package/esm2022/lib/pipes/to-number.pipe.mjs +0 -23
- package/esm2022/lib/pipes/trim.pipe.mjs +0 -20
- package/esm2022/lib/pipes/typeof.pipe.mjs +0 -16
- package/esm2022/lib/services/viewport.service.mjs +0 -216
- package/esm2022/lib/ui/back-to-top/back-to-top.component.mjs +0 -49
- package/esm2022/lib/ui/button-with-confirm-dialog/button-response-types.enum.mjs +0 -6
- package/esm2022/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.mjs +0 -58
- package/esm2022/lib/ui/button-with-confirm-dialog/dialog-data.model.mjs +0 -2
- package/esm2022/lib/ui/checkbox/checkbox.component.mjs +0 -71
- package/esm2022/lib/ui/color-input/color-input.component.mjs +0 -76
- package/esm2022/lib/ui/dropdown-from-data/dropdown-from-data.component.mjs +0 -157
- package/esm2022/lib/ui/enum-radiogroup/enum-radiogroup.component.mjs +0 -53
- package/esm2022/lib/ui/file-input/file-input.component.mjs +0 -232
- package/esm2022/lib/ui/flyout/flyout.component.mjs +0 -119
- package/esm2022/lib/ui/generic-dialog/generic-dialog.component.mjs +0 -55
- package/esm2022/lib/ui/icon/icon.component.mjs +0 -48
- package/esm2022/lib/ui/icon/iconSize.enum.mjs +0 -17
- package/esm2022/lib/ui/image-slider/image-slider.component.mjs +0 -189
- package/esm2022/lib/ui/kms-accordion-item/kms-accordion-item.component.mjs +0 -40
- package/esm2022/lib/ui/loader/loader.component.mjs +0 -21
- package/esm2022/lib/ui/map/map.component.mjs +0 -116
- package/esm2022/lib/ui/radiobutton/radiobutton.component.mjs +0 -73
- package/esm2022/lib/ui/salutation-dropdown/salutation-dropdown.component.mjs +0 -55
- package/esm2022/lib/ui/salutation-radiogroup/salutation-radiogroup.component.mjs +0 -49
- package/esm2022/lib/ui/time-input/time-input.component.mjs +0 -83
- package/esm2022/lib/ui/tooltip/tooltip.component.mjs +0 -16
- package/esm2022/lib/ui/tooltip-icon/tooltip-icon.component.mjs +0 -35
- package/esm2022/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.mjs +0 -82
- package/esm2022/public-api.mjs +0 -49
- package/fesm2022/kms-ngx-ui-presentational.mjs +0 -3003
- package/fesm2022/kms-ngx-ui-presentational.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/directives/directives.module.d.ts +0 -11
- package/lib/directives/mousewheel.directive.d.ts +0 -15
- package/lib/directives/sum-of-height.directive.d.ts +0 -31
- package/lib/directives/swipe.directive.d.ts +0 -45
- package/lib/directives/tooltip.directive.d.ts +0 -29
- package/lib/kms-ngx-ui-presentational.component.d.ts +0 -8
- package/lib/kms-ngx-ui-presentational.module.d.ts +0 -47
- package/lib/kms-ngx-ui-presentational.service.d.ts +0 -6
- package/lib/models/address.model.d.ts +0 -14
- package/lib/models/iconSize.enum.d.ts +0 -15
- package/lib/models/image-snippet.model.d.ts +0 -15
- package/lib/models/is-value.function.d.ts +0 -9
- package/lib/models/salutation.enum.d.ts +0 -5
- package/lib/parent-components/actions.component.d.ts +0 -31
- package/lib/parent-components/form-control.component.d.ts +0 -27
- package/lib/parent-components/form.component.d.ts +0 -34
- package/lib/pipes/custom-pipes.module.d.ts +0 -17
- package/lib/pipes/decode-uri.pipe.d.ts +0 -10
- package/lib/pipes/encode-uri.pipe.d.ts +0 -10
- package/lib/pipes/integer-currency.pipe.d.ts +0 -13
- package/lib/pipes/safe-html.pipe.d.ts +0 -13
- package/lib/pipes/safe-resource-url.pipe.d.ts +0 -13
- package/lib/pipes/safe-style.pipe.d.ts +0 -13
- package/lib/pipes/safe-url.pipe.d.ts +0 -13
- package/lib/pipes/to-number.pipe.d.ts +0 -10
- package/lib/pipes/trim.pipe.d.ts +0 -10
- package/lib/pipes/typeof.pipe.d.ts +0 -7
- package/lib/services/viewport.service.d.ts +0 -74
- package/lib/ui/back-to-top/back-to-top.component.d.ts +0 -10
- package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +0 -4
- package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +0 -19
- package/lib/ui/checkbox/checkbox.component.d.ts +0 -31
- package/lib/ui/color-input/color-input.component.d.ts +0 -19
- package/lib/ui/dropdown-from-data/dropdown-from-data.component.d.ts +0 -55
- package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +0 -17
- package/lib/ui/file-input/file-input.component.d.ts +0 -89
- package/lib/ui/flyout/flyout.component.d.ts +0 -32
- package/lib/ui/generic-dialog/generic-dialog.component.d.ts +0 -26
- package/lib/ui/icon/icon.component.d.ts +0 -42
- package/lib/ui/icon/iconSize.enum.d.ts +0 -15
- package/lib/ui/image-slider/image-slider.component.d.ts +0 -62
- package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +0 -22
- package/lib/ui/loader/loader.component.d.ts +0 -9
- package/lib/ui/map/map.component.d.ts +0 -71
- package/lib/ui/radiobutton/radiobutton.component.d.ts +0 -26
- package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +0 -17
- package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +0 -15
- package/lib/ui/time-input/time-input.component.d.ts +0 -22
- package/lib/ui/tooltip/tooltip.component.d.ts +0 -6
- package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +0 -13
- package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +0 -27
- /package/{lib/models/index.d.ts → src/lib/models/index.ts} +0 -0
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, Input, } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
|
-
import { EnumValues } from 'enum-values/src/enumValues';
|
|
4
|
-
import { FormControlParentComponent } from '../../parent-components/form-control.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/forms";
|
|
7
|
-
import * as i2 from "@angular/common";
|
|
8
|
-
import * as i3 from "@angular/material/form-field";
|
|
9
|
-
import * as i4 from "@angular/material/select";
|
|
10
|
-
import * as i5 from "@angular/material/core";
|
|
11
|
-
/**
|
|
12
|
-
* Dropdown from data component {@link https://leaseplan-dev.rentoffice.de/styleguide#ui-elements}
|
|
13
|
-
*/
|
|
14
|
-
export class DropdownFromDataComponent extends FormControlParentComponent {
|
|
15
|
-
constructor(formBuilder, renderer) {
|
|
16
|
-
super(formBuilder, renderer);
|
|
17
|
-
this.formBuilder = formBuilder;
|
|
18
|
-
this.renderer = renderer;
|
|
19
|
-
// options for the dropdown have a null value at the beginning of the array
|
|
20
|
-
this.hasNullOption = false;
|
|
21
|
-
this.placeholder = '';
|
|
22
|
-
this.label = '';
|
|
23
|
-
this.required = false;
|
|
24
|
-
this.useEnumIndexAsValue = false;
|
|
25
|
-
// multiple selection
|
|
26
|
-
this.multiple = false;
|
|
27
|
-
this.keys = [];
|
|
28
|
-
this.values = [];
|
|
29
|
-
this.Object = Object;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Hook used to sync changes on set Label and Type
|
|
33
|
-
* @param changes
|
|
34
|
-
*/
|
|
35
|
-
ngOnChanges(changes) {
|
|
36
|
-
if (changes.optionsPlainArray) {
|
|
37
|
-
this.values = this.optionsPlainArray;
|
|
38
|
-
this.keys = this.optionsPlainArray;
|
|
39
|
-
}
|
|
40
|
-
this.setKeyValues();
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
this.form = this.formBuilder.group({
|
|
44
|
-
dropdownData: [],
|
|
45
|
-
});
|
|
46
|
-
this.formInitialized = true;
|
|
47
|
-
this.form.valueChanges.subscribe((value) => {
|
|
48
|
-
this.internalValue = value.dropdownData;
|
|
49
|
-
this.onChange(value.dropdownData);
|
|
50
|
-
});
|
|
51
|
-
super.ngOnInit();
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* transofrms the data values to the correct format for be used by the template
|
|
55
|
-
* @param value
|
|
56
|
-
*/
|
|
57
|
-
setKeyValues() {
|
|
58
|
-
if (this.optionsObjArray && this.mapKey && this.mapValue) {
|
|
59
|
-
this.keys = this.optionsObjArray.map((obj) => obj[`${this.mapKey}`]);
|
|
60
|
-
this.values = this.optionsObjArray.map((obj) => obj[`${this.mapValue}`]);
|
|
61
|
-
}
|
|
62
|
-
else if (this.optionsObjArray && this.mapKey) {
|
|
63
|
-
this.keys = this.optionsObjArray.map((obj) => obj[`${this.mapKey}`]);
|
|
64
|
-
this.values = this.optionsObjArray.map((obj) => obj[`${this.mapKey}`]);
|
|
65
|
-
}
|
|
66
|
-
if (this.optionsEnum) {
|
|
67
|
-
this.keys = EnumValues.getNames(this.optionsEnum);
|
|
68
|
-
if (this.optionsPlainArray) {
|
|
69
|
-
this.values = this.optionsPlainArray;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const values = EnumValues.getValues(this.optionsEnum);
|
|
73
|
-
// var who defines if enum is componed just with keys or keyValues. E.g enum KeyEnum { VALUE1, VALUE2 } or enum KeyValueEnum { VALUE4 = 'V4', VALUE5 = 'V5' }
|
|
74
|
-
let keyValueEnum = false;
|
|
75
|
-
for (let i = 0; i < this.keys.length; i++) {
|
|
76
|
-
if (i !== values[i]) {
|
|
77
|
-
keyValueEnum = true;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (keyValueEnum || this.useEnumIndexAsValue) {
|
|
81
|
-
this.values = values;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this.values = EnumValues.getNames(this.optionsEnum);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (this.hasNullOption === true)
|
|
89
|
-
this.keys.unshift(null);
|
|
90
|
-
if (this.hasNullOption === true)
|
|
91
|
-
this.values.unshift(null);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* set the value of the dropdown based if translation is set
|
|
95
|
-
* @param key
|
|
96
|
-
*/
|
|
97
|
-
setDisplayKey(key) {
|
|
98
|
-
if (this.translation) {
|
|
99
|
-
if (this.translation.isPrefix) {
|
|
100
|
-
return this.translation.service?.instant?.(this.translation.path + '.' + key);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
return this.translation.service?.instant?.(this.translation.path);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return key;
|
|
107
|
-
}
|
|
108
|
-
valueChanged(value) {
|
|
109
|
-
this.form.patchValue({
|
|
110
|
-
dropdownData: value,
|
|
111
|
-
});
|
|
112
|
-
this.onSelectItemEmitter.emit(value);
|
|
113
|
-
}
|
|
114
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownFromDataComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
115
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DropdownFromDataComponent, selector: "kms-dropdown-from-data", inputs: { optionsEnum: "optionsEnum", optionsPlainArray: "optionsPlainArray", optionsObjArray: "optionsObjArray", mapKey: "mapKey", mapValue: "mapValue", hasNullOption: "hasNullOption", translation: "translation", placeholder: "placeholder", label: "label", required: "required", useEnumIndexAsValue: "useEnumIndexAsValue", multiple: "multiple" }, providers: [
|
|
116
|
-
{
|
|
117
|
-
provide: NG_VALUE_ACCESSOR,
|
|
118
|
-
useExisting: forwardRef(() => DropdownFromDataComponent),
|
|
119
|
-
multi: true,
|
|
120
|
-
},
|
|
121
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field\n [attr.required]=\"required\"\n [floatLabel]=\"placeholder ? 'always' : 'auto'\"\n >\n <mat-label>{{ label }}</mat-label>\n <mat-select\n placeholder=\"{{ placeholder }}\"\n disableOptionCentering\n [(value)]=\"value\"\n (selectionChange)=\"valueChanged($event?.value)\"\n #child\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let key of keys; let i = index\" [value]=\"values[i]\">\n <span>{{ setDisplayKey(key) }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }] }); }
|
|
122
|
-
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownFromDataComponent, decorators: [{
|
|
124
|
-
type: Component,
|
|
125
|
-
args: [{ selector: 'kms-dropdown-from-data', providers: [
|
|
126
|
-
{
|
|
127
|
-
provide: NG_VALUE_ACCESSOR,
|
|
128
|
-
useExisting: forwardRef(() => DropdownFromDataComponent),
|
|
129
|
-
multi: true,
|
|
130
|
-
},
|
|
131
|
-
], template: "<form [formGroup]=\"form\">\n <mat-form-field\n [attr.required]=\"required\"\n [floatLabel]=\"placeholder ? 'always' : 'auto'\"\n >\n <mat-label>{{ label }}</mat-label>\n <mat-select\n placeholder=\"{{ placeholder }}\"\n disableOptionCentering\n [(value)]=\"value\"\n (selectionChange)=\"valueChanged($event?.value)\"\n #child\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let key of keys; let i = index\" [value]=\"values[i]\">\n <span>{{ setDisplayKey(key) }}</span>\n </mat-option>\n </mat-select>\n </mat-form-field>\n</form>\n" }]
|
|
132
|
-
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.Renderer2 }]; }, propDecorators: { optionsEnum: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], optionsPlainArray: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], optionsObjArray: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], mapKey: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], mapValue: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], hasNullOption: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], translation: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], placeholder: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], label: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], required: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}], useEnumIndexAsValue: [{
|
|
153
|
-
type: Input
|
|
154
|
-
}], multiple: [{
|
|
155
|
-
type: Input
|
|
156
|
-
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9kcm9wZG93bi1mcm9tLWRhdGEvZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7O0FBRTVGOztHQUVHO0FBWUgsTUFBTSxPQUFPLHlCQUNYLFNBQVEsMEJBQTBCO0lBa0NsQyxZQUNTLFdBQStCLEVBQy9CLFFBQW1CO1FBRTFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQjVCLDJFQUEyRTtRQUNsRSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFckMscUJBQXFCO1FBQ1osYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVuQixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFFMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQztJQU9oQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNqQyxZQUFZLEVBQUUsRUFBRTtTQUNqQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQ3BDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDdEMsQ0FBQztTQUNIO2FBQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNwQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3BDLENBQUM7U0FDSDtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFFdEQsNkpBQTZKO2dCQUM3SixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDekMsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuQixZQUFZLEdBQUcsSUFBSSxDQUFDO3FCQUNyQjtpQkFDRjtnQkFDRCxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2lCQUN0QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUNyRDthQUNGO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxHQUFRO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO2dCQUM3QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUNsQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25FO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBcElVLHlCQUF5QjttR0FBekIseUJBQXlCLDZZQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixzRUM3QkgsK25CQXFCQTs7NEZEVWEseUJBQXlCO2tCQVhyQyxTQUFTOytCQUNFLHdCQUF3QixhQUV2Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUlBT1EsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudW1WYWx1ZXMgfSBmcm9tICdlbnVtLXZhbHVlcy9zcmMvZW51bVZhbHVlcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIERyb3Bkb3duIGZyb20gZGF0YSBjb21wb25lbnQge0BsaW5rIGh0dHBzOi8vbGVhc2VwbGFuLWRldi5yZW50b2ZmaWNlLmRlL3N0eWxlZ3VpZGUjdWktZWxlbWVudHN9XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ttcy1kcm9wZG93bi1mcm9tLWRhdGEnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tZnJvbS1kYXRhLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93bkZyb21EYXRhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRnJvbURhdGFDb21wb25lbnRcbiAgZXh0ZW5kcyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlc1xue1xuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYSBlbnVtIHNldC4gQ2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAnb3B0aW9uc1BsYWluQXJyYXknIHRvIHNldCBkaWZlcmVudCB2YWx1ZXMgYnkgaW5kZXhcbiAgQElucHV0KCkgb3B0aW9uc0VudW06IGFueTtcblxuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYSBzaW1wbGUgYXJyYXkgb2YgZWxlbWVudHNcbiAgQElucHV0KCkgb3B0aW9uc1BsYWluQXJyYXk6IGFueTtcblxuICAvLyBzdHJ1Y3R1cmVkIGRhdGEgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGlucHV0ICdtYXBLZXknIGFuZCAnbWFwVmFsdWUnXG4gIEBJbnB1dCgpIG9wdGlvbnNPYmpBcnJheTogYW55O1xuICAvLyBrZXkgaWRlbnRpZmllciBvZiB0aGUgb2JqLiBJZiBtYXBWYWx1ZSBkb2VzbnQgZXhpc3QsIG1hcEtleSBpcyBhbHNvIHRoZSB2YWx1ZVxuICBASW5wdXQoKSBtYXBLZXk/OiBhbnk7XG4gIC8vIHZhbHVlIGlkZW50aWZpZXIgb2YgdGhlIG9ialxuICBASW5wdXQoKSBtYXBWYWx1ZT86IGFueTtcblxuICAvLyBvcHRpb25zIGZvciB0aGUgZHJvcGRvd24gaGF2ZSBhIG51bGwgdmFsdWUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXlcbiAgQElucHV0KCkgaGFzTnVsbE9wdGlvbiA9IGZhbHNlO1xuXG4gIC8vIHRyYW5zbGF0aW9uIG9iamVjdCBmb3IgdGhlIGxhYmVsIGFuZCBwbGFjZWhvbGRlclxuICBASW5wdXQoKSB0cmFuc2xhdGlvbj86IElUcmFuc2xhdGlvbjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgdXNlRW51bUluZGV4QXNWYWx1ZSA9IGZhbHNlO1xuXG4gIC8vIG11bHRpcGxlIHNlbGVjdGlvblxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBrZXlzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdmFsdWVzOiBhbnlbXSA9IFtdO1xuXG4gIE9iamVjdCA9IE9iamVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlciwgcmVuZGVyZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2sgdXNlZCB0byBzeW5jIGNoYW5nZXMgb24gc2V0IExhYmVsIGFuZCBUeXBlXG4gICAqIEBwYXJhbSBjaGFuZ2VzXG4gICAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zUGxhaW5BcnJheTtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc1BsYWluQXJyYXk7XG4gICAgfVxuICAgIHRoaXMuc2V0S2V5VmFsdWVzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGRyb3Bkb3duRGF0YTogW10sXG4gICAgfSk7XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZS5kcm9wZG93bkRhdGE7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmRyb3Bkb3duRGF0YSk7XG4gICAgfSk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyYW5zb2ZybXMgdGhlIGRhdGEgdmFsdWVzIHRvIHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgYmUgdXNlZCBieSB0aGUgdGVtcGxhdGVcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHNldEtleVZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkgJiYgdGhpcy5tYXBWYWx1ZSkge1xuICAgICAgdGhpcy5rZXlzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKChvYmo6IGFueSkgPT4gb2JqW2Ake3RoaXMubWFwS2V5fWBdKTtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zT2JqQXJyYXkubWFwKFxuICAgICAgICAob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcFZhbHVlfWBdXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zT2JqQXJyYXkgJiYgdGhpcy5tYXBLZXkpIHtcbiAgICAgIHRoaXMua2V5cyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcCgob2JqOiBhbnkpID0+IG9ialtgJHt0aGlzLm1hcEtleX1gXSk7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMub3B0aW9uc09iakFycmF5Lm1hcChcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmpbYCR7dGhpcy5tYXBLZXl9YF1cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnNFbnVtKSB7XG4gICAgICB0aGlzLmtleXMgPSBFbnVtVmFsdWVzLmdldE5hbWVzKHRoaXMub3B0aW9uc0VudW0pO1xuICAgICAgaWYgKHRoaXMub3B0aW9uc1BsYWluQXJyYXkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLm9wdGlvbnNQbGFpbkFycmF5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gRW51bVZhbHVlcy5nZXRWYWx1ZXModGhpcy5vcHRpb25zRW51bSk7XG5cbiAgICAgICAgLy8gdmFyIHdobyBkZWZpbmVzIGlmIGVudW0gaXMgY29tcG9uZWQganVzdCB3aXRoIGtleXMgb3Iga2V5VmFsdWVzLiBFLmcgZW51bSBLZXlFbnVtIHsgVkFMVUUxLCBWQUxVRTIgfSBvciBlbnVtIEtleVZhbHVlRW51bSB7IFZBTFVFNCA9ICdWNCcsIFZBTFVFNSA9ICdWNScgfVxuICAgICAgICBsZXQga2V5VmFsdWVFbnVtID0gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSAhPT0gdmFsdWVzW2ldKSB7XG4gICAgICAgICAgICBrZXlWYWx1ZUVudW0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5VmFsdWVFbnVtIHx8IHRoaXMudXNlRW51bUluZGV4QXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gRW51bVZhbHVlcy5nZXROYW1lcyh0aGlzLm9wdGlvbnNFbnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLmtleXMudW5zaGlmdChudWxsKTtcbiAgICBpZiAodGhpcy5oYXNOdWxsT3B0aW9uID09PSB0cnVlKSB0aGlzLnZhbHVlcy51bnNoaWZ0KG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCB0aGUgdmFsdWUgb2YgdGhlIGRyb3Bkb3duIGJhc2VkIGlmIHRyYW5zbGF0aW9uIGlzIHNldFxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBwdWJsaWMgc2V0RGlzcGxheUtleShrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2xhdGlvbi5pc1ByZWZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4oXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5wYXRoICsgJy4nICsga2V5XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZXJ2aWNlPy5pbnN0YW50Py4odGhpcy50cmFuc2xhdGlvbi5wYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgZHJvcGRvd25EYXRhOiB2YWx1ZSxcbiAgICB9KTtcbiAgICB0aGlzLm9uU2VsZWN0SXRlbUVtaXR0ZXIuZW1pdCh2YWx1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdGhhdCBkZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBvYmplY3QgaW4gdGVtcGxhdGVcbiAqL1xuaW50ZXJmYWNlIElUcmFuc2xhdGlvbiB7XG4gIHBhdGg6IHN0cmluZztcbiAgaXNQcmVmaXg/OiBib29sZWFuO1xuICBzZXJ2aWNlOiBhbnk7XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtmbG9hdExhYmVsXT1cInBsYWNlaG9sZGVyID8gJ2Fsd2F5cycgOiAnYXV0bydcIlxuICA+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIDxtYXQtc2VsZWN0XG4gICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgIGRpc2FibGVPcHRpb25DZW50ZXJpbmdcbiAgICAgIFsodmFsdWUpXT1cInZhbHVlXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidmFsdWVDaGFuZ2VkKCRldmVudD8udmFsdWUpXCJcbiAgICAgICNjaGlsZFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cInZhbHVlc1tpXVwiPlxuICAgICAgICA8c3Bhbj57eyBzZXREaXNwbGF5S2V5KGtleSkgfX08L3NwYW4+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtc2VsZWN0PlxuICA8L21hdC1mb3JtLWZpZWxkPlxuPC9mb3JtPlxuIl19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { FormControlParentComponent } from './../../parent-components/form-control.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/forms";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/material/radio";
|
|
8
|
-
import * as i4 from "@ngx-translate/core";
|
|
9
|
-
export class EnumRadiogroupComponent extends FormControlParentComponent {
|
|
10
|
-
constructor(formBuilder, renderer) {
|
|
11
|
-
super(formBuilder, renderer);
|
|
12
|
-
this.formBuilder = formBuilder;
|
|
13
|
-
this.renderer = renderer;
|
|
14
|
-
this.translationPrefix = '';
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.optionValues = Object.keys(this.optionsEnum).filter(x => !(parseInt(x) >= 0));
|
|
18
|
-
this.form = this.formBuilder.group({
|
|
19
|
-
enumData: [],
|
|
20
|
-
});
|
|
21
|
-
this.formInitialized = true;
|
|
22
|
-
this.form.valueChanges.subscribe((value) => {
|
|
23
|
-
this.internalValue = value.enumData;
|
|
24
|
-
this.onChange(value.enumData);
|
|
25
|
-
});
|
|
26
|
-
super.ngOnInit();
|
|
27
|
-
}
|
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EnumRadiogroupComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EnumRadiogroupComponent, selector: "kms-enum-radiogroup", inputs: { header: "header", optionsEnum: "optionsEnum", translationPrefix: "translationPrefix" }, providers: [
|
|
30
|
-
{
|
|
31
|
-
provide: NG_VALUE_ACCESSOR,
|
|
32
|
-
useExisting: forwardRef(() => EnumRadiogroupComponent),
|
|
33
|
-
multi: true,
|
|
34
|
-
},
|
|
35
|
-
], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <div>{{ header }}</div>\n <mat-radio-group [formControl]=\"form.controls['enumData']\" [disabled]=\"disabled\" #child>\n <mat-radio-button [value]=\"choice\" [checked]=\"value === choice\" *ngFor=\"let choice of optionValues\">{{ translationPrefix + '.' + choice | translate }}</mat-radio-button>\n </mat-radio-group>\n</form>", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EnumRadiogroupComponent, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{ selector: 'kms-enum-radiogroup', providers: [
|
|
40
|
-
{
|
|
41
|
-
provide: NG_VALUE_ACCESSOR,
|
|
42
|
-
useExisting: forwardRef(() => EnumRadiogroupComponent),
|
|
43
|
-
multi: true,
|
|
44
|
-
},
|
|
45
|
-
], template: "<form [formGroup]=\"form\">\n <div>{{ header }}</div>\n <mat-radio-group [formControl]=\"form.controls['enumData']\" [disabled]=\"disabled\" #child>\n <mat-radio-button [value]=\"choice\" [checked]=\"value === choice\" *ngFor=\"let choice of optionValues\">{{ translationPrefix + '.' + choice | translate }}</mat-radio-button>\n </mat-radio-group>\n</form>" }]
|
|
46
|
-
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.Renderer2 }]; }, propDecorators: { header: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], optionsEnum: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}], translationPrefix: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9lbnVtLXJhZGlvZ3JvdXAvZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9lbnVtLXJhZGlvZ3JvdXAvZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUE0QyxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7QUFhOUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDBCQUEwQjtJQU9uRSxZQUFtQixXQUErQixFQUFTLFFBQW1CO1FBQzFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEZCxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBSnJFLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztJQU1oQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDL0IsUUFBUSxFQUFFLEVBQUU7U0FDZixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQzsrR0F4QlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsZ0pBUnJCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDdEQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLGlEQ2ZMLHNYQUtPOzs0RkRZTSx1QkFBdUI7a0JBWG5DLFNBQVM7K0JBQ0kscUJBQXFCLGFBRXBCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtpSUFHUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQnVpbGRlciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmltcG9ydCB7IEZvcm1Db250cm9sUGFyZW50Q29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi9wYXJlbnQtY29tcG9uZW50cy9mb3JtLWNvbnRyb2wuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbXMtZW51bS1yYWRpb2dyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFbnVtUmFkaW9ncm91cENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbnVtUmFkaW9ncm91cENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgaGVhZGVyOiBOdWxsQWJsZTxTdHJpbmc+O1xuICAgIEBJbnB1dCgpIG9wdGlvbnNFbnVtOiBhbnk7XG4gICAgQElucHV0KCkgdHJhbnNsYXRpb25QcmVmaXggPSAnJztcblxuICAgIHB1YmxpYyBvcHRpb25WYWx1ZXM6IGFueTtcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIoZm9ybUJ1aWxkZXIsIHJlbmRlcmVyKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpe1xuICAgICAgICB0aGlzLm9wdGlvblZhbHVlcyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9uc0VudW0pLmZpbHRlcih4ID0+ICEocGFyc2VJbnQoeCkgPj0gMCkpO1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGVudW1EYXRhOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlLmVudW1EYXRhO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS5lbnVtRGF0YSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGRpdj57eyBoZWFkZXIgfX08L2Rpdj5cbiAgICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydlbnVtRGF0YSddXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgI2NoaWxkPlxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiY2hvaWNlXCIgW2NoZWNrZWRdPVwidmFsdWUgPT09IGNob2ljZVwiICpuZ0Zvcj1cImxldCBjaG9pY2Ugb2Ygb3B0aW9uVmFsdWVzXCI+e3sgdHJhbnNsYXRpb25QcmVmaXggKyAnLicgKyBjaG9pY2UgfCB0cmFuc2xhdGUgfX08L21hdC1yYWRpby1idXR0b24+XG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG48L2Zvcm0+Il19
|
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { Component, Input, forwardRef, ViewChild, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
|
-
//import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { IconSize } from '../../models/iconSize.enum';
|
|
5
|
-
import { isValue } from '../../models/is-value.function';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/forms";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
import * as i3 from "@angular/material/button";
|
|
10
|
-
import * as i4 from "../icon/icon.component";
|
|
11
|
-
import * as i5 from "@ngx-translate/core";
|
|
12
|
-
// Max size in bytes of uploaded image
|
|
13
|
-
const MAX_SIZE_BYTES = 2097152;
|
|
14
|
-
export class FileInputComponent {
|
|
15
|
-
/**
|
|
16
|
-
* Constructor
|
|
17
|
-
* @param formBuilder
|
|
18
|
-
* @param appRef
|
|
19
|
-
* @param cd
|
|
20
|
-
* @param translateService
|
|
21
|
-
* @param renderer
|
|
22
|
-
*/
|
|
23
|
-
constructor(formBuilder, appRef, cd,
|
|
24
|
-
//private translateService: TranslateService,
|
|
25
|
-
renderer) {
|
|
26
|
-
this.formBuilder = formBuilder;
|
|
27
|
-
this.appRef = appRef;
|
|
28
|
-
this.cd = cd;
|
|
29
|
-
this.renderer = renderer;
|
|
30
|
-
this.label = '';
|
|
31
|
-
this.previewImage = true;
|
|
32
|
-
this.allowRemove = true;
|
|
33
|
-
this.previewImageText = '';
|
|
34
|
-
this.maxSizeBytes = MAX_SIZE_BYTES;
|
|
35
|
-
this.resizePixels = 0;
|
|
36
|
-
this.acceptedFileMimetypes = 'image/jpeg, image/jpg, image/png';
|
|
37
|
-
this.form = this.formBuilder.group({
|
|
38
|
-
ImageIdent: new UntypedFormControl(''),
|
|
39
|
-
ImageLink: new UntypedFormControl(''),
|
|
40
|
-
Filename: new UntypedFormControl(''),
|
|
41
|
-
ImageAsDataURL: new UntypedFormControl(''),
|
|
42
|
-
Text: new UntypedFormControl(''),
|
|
43
|
-
});
|
|
44
|
-
this.subscriptions = [];
|
|
45
|
-
this.newImageLoading = false;
|
|
46
|
-
this.IconSize = IconSize;
|
|
47
|
-
this.formDataChanged = new EventEmitter();
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
49
|
-
this.onChange = () => { };
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
51
|
-
this.onTouch = () => { };
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Click on button triggers file-input to open OS file dialog
|
|
55
|
-
*/
|
|
56
|
-
selectImageOverlay() {
|
|
57
|
-
this.fileInput.nativeElement.click();
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Function to manage the input image
|
|
61
|
-
* Returns an error if the file exceeds maximum wanted filesize (Mb).
|
|
62
|
-
* @param ev
|
|
63
|
-
* @returns
|
|
64
|
-
*/
|
|
65
|
-
selectImage(ev) {
|
|
66
|
-
if (ev.target.files && ev.target.files[0]) {
|
|
67
|
-
const file = ev.target.files[0];
|
|
68
|
-
if (file.size > this.maxSizeBytes) {
|
|
69
|
-
this.clearInputValue(ev);
|
|
70
|
-
//alert(this.translateService.instant('errors.fileTooBig'));
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.newImageLoading = true;
|
|
75
|
-
if (this.resizePixels > 0) {
|
|
76
|
-
const logoUrl = URL.createObjectURL(file);
|
|
77
|
-
const imgEl = document.createElement('img');
|
|
78
|
-
imgEl.addEventListener('load', () => {
|
|
79
|
-
const resizedLogo = this.resizeImage(imgEl, this.resizePixels);
|
|
80
|
-
const newFile = this.generateModel(file.name, resizedLogo, this.value.ImageIdent, this.value.ImageLink, this.value.Text);
|
|
81
|
-
this.value = newFile;
|
|
82
|
-
this.newImageLoading = false;
|
|
83
|
-
this.cd.markForCheck();
|
|
84
|
-
});
|
|
85
|
-
imgEl.src = logoUrl;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const reader = new FileReader();
|
|
89
|
-
reader.readAsDataURL(file);
|
|
90
|
-
reader.onload = (e) => {
|
|
91
|
-
const newFile = this.generateModel(file.name, e.target.result, this.value.ImageIdent, this.value.ImageLink, this.value.Text);
|
|
92
|
-
this.value = newFile;
|
|
93
|
-
this.newImageLoading = false;
|
|
94
|
-
this.cd.markForCheck();
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
console.warn("No file selected");
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Resize an image
|
|
105
|
-
* @param imgEl
|
|
106
|
-
* @param wantedWidth as number
|
|
107
|
-
* @returns string
|
|
108
|
-
*/
|
|
109
|
-
resizeImage(imgEl, wantedWidth) {
|
|
110
|
-
const canvas = document.createElement('canvas');
|
|
111
|
-
const ctx = canvas.getContext('2d');
|
|
112
|
-
const aspect = imgEl.width / imgEl.height;
|
|
113
|
-
canvas.width = wantedWidth;
|
|
114
|
-
canvas.height = wantedWidth / aspect;
|
|
115
|
-
if (isValue(ctx))
|
|
116
|
-
ctx.drawImage(imgEl, 0, 0, canvas.width, canvas.height);
|
|
117
|
-
return canvas.toDataURL();
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Generate default object
|
|
121
|
-
* @param name as string
|
|
122
|
-
* @param content as string
|
|
123
|
-
* @returns AttachedFileDTO
|
|
124
|
-
*/
|
|
125
|
-
generateModel(name, content, ident, imageLink, text) {
|
|
126
|
-
return {
|
|
127
|
-
ImageIdent: ident ? ident : '',
|
|
128
|
-
Filename: name ? name : '',
|
|
129
|
-
ImageAsDataURL: content ? content : '',
|
|
130
|
-
ImageLink: imageLink ? imageLink : '',
|
|
131
|
-
Text: text ? text : ''
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Remove image
|
|
136
|
-
*/
|
|
137
|
-
removeFromList() {
|
|
138
|
-
this.value = this.generateModel('', '', '', '');
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* get value
|
|
142
|
-
*/
|
|
143
|
-
get value() {
|
|
144
|
-
return this.form.value;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* set value
|
|
148
|
-
*/
|
|
149
|
-
set value(value) {
|
|
150
|
-
this.form.setValue(value);
|
|
151
|
-
this.onChange(value);
|
|
152
|
-
this.formDataChanged.emit(this.form);
|
|
153
|
-
}
|
|
154
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
155
|
-
ngOnInit() { }
|
|
156
|
-
ngOnDestroy() {
|
|
157
|
-
this.subscriptions.forEach(s => s.unsubscribe());
|
|
158
|
-
}
|
|
159
|
-
registerOnChange(fn) {
|
|
160
|
-
this.onChange = fn;
|
|
161
|
-
}
|
|
162
|
-
registerOnTouched(fn) {
|
|
163
|
-
this.onTouch = fn;
|
|
164
|
-
}
|
|
165
|
-
writeValue(value) {
|
|
166
|
-
if (value) {
|
|
167
|
-
this.value = value;
|
|
168
|
-
}
|
|
169
|
-
if (value === null) {
|
|
170
|
-
this.form.reset();
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
// eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures
|
|
174
|
-
validate(_) {
|
|
175
|
-
return this.form.valid ? null : { styles: { valid: false } };
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* OnClick event listener of input#fileInput to clear his input value
|
|
179
|
-
*/
|
|
180
|
-
clearInputValue(ev) {
|
|
181
|
-
const element = ev.target;
|
|
182
|
-
element.value = '';
|
|
183
|
-
}
|
|
184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileInputComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
185
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileInputComponent, selector: "kms-file-input", inputs: { label: "label", previewImage: "previewImage", allowRemove: "allowRemove", previewImageText: "previewImageText", maxSizeBytes: "maxSizeBytes", resizePixels: "resizePixels", acceptedFileMimetypes: "acceptedFileMimetypes" }, outputs: { formDataChanged: "formDataChanged" }, providers: [
|
|
186
|
-
{
|
|
187
|
-
provide: NG_VALUE_ACCESSOR,
|
|
188
|
-
useExisting: forwardRef(() => FileInputComponent),
|
|
189
|
-
multi: true,
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
provide: NG_VALIDATORS,
|
|
193
|
-
useExisting: forwardRef(() => FileInputComponent),
|
|
194
|
-
multi: true,
|
|
195
|
-
},
|
|
196
|
-
], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" (change)=\"newImageLoading=true\" class=\"fileInput\"> \n\n <div *ngIf=\"form.value.Filename && previewImage\">\n <div *ngIf=\"newImageLoading\">\n {{ 'file-input.loading' | translate }}\n </div>\n <div *ngIf=\"!newImageLoading\">\n <div class=\"\">\n <div class=\"\">\n <img *ngIf=\"form.value.ImageLink && form.value.ImageLink !== '' && !(form.value.ImageAsDataURL && form.value.ImageAsDataURL !== '')\" [src]=\"form.value.ImageAsDataURL\" [src]=\"form.value.ImageLink\" style=\"height: 40px; width: fit-content;\" />\n <img *ngIf=\"form.value.ImageAsDataURL && form.value.ImageAsDataURL !== ''\" [src]=\"form.value.ImageAsDataURL\" style=\"height: 40px; width: fit-content;\" />\n </div>\n <div class=\"\">{{form.value.Filename}}</div>\n <div class=\"\">\n <div (click)=\"removeFromList()\" *ngIf=\"allowRemove\">\n <kms-icon icon=\"trash\" [iconSize]=\"IconSize.TINY\" iconClass=\"color-black\"></kms-icon> \n {{ 'file-input.remove' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!previewImage\">\n <div class=\"\">{{form.value.Filename}}</div>\n </div>\n\n <button (click)=\"selectImageOverlay()\" class=\"button-primary-font-color\" mat-stroked-button>\n <span>{{ label }}</span>\n </button>\n <input\n type=\"file\"\n [accept]=\"acceptedFileMimetypes\"\n style=\"display: none\"\n #fileInput\n (click)=\"clearInputValue($event)\"\n (change)=\"selectImage($event)\"\n />\n\n <input type=\"hidden\" [formControl]=\"form.controls['ImageIdent']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageLink']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Filename']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageAsDataURL']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Text']\" />\n\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "iconStyle", "iconSize", "dontUseSprite"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
197
|
-
}
|
|
198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
199
|
-
type: Component,
|
|
200
|
-
args: [{ selector: 'kms-file-input', providers: [
|
|
201
|
-
{
|
|
202
|
-
provide: NG_VALUE_ACCESSOR,
|
|
203
|
-
useExisting: forwardRef(() => FileInputComponent),
|
|
204
|
-
multi: true,
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
provide: NG_VALIDATORS,
|
|
208
|
-
useExisting: forwardRef(() => FileInputComponent),
|
|
209
|
-
multi: true,
|
|
210
|
-
},
|
|
211
|
-
], template: "<form [formGroup]=\"form\" (change)=\"newImageLoading=true\" class=\"fileInput\"> \n\n <div *ngIf=\"form.value.Filename && previewImage\">\n <div *ngIf=\"newImageLoading\">\n {{ 'file-input.loading' | translate }}\n </div>\n <div *ngIf=\"!newImageLoading\">\n <div class=\"\">\n <div class=\"\">\n <img *ngIf=\"form.value.ImageLink && form.value.ImageLink !== '' && !(form.value.ImageAsDataURL && form.value.ImageAsDataURL !== '')\" [src]=\"form.value.ImageAsDataURL\" [src]=\"form.value.ImageLink\" style=\"height: 40px; width: fit-content;\" />\n <img *ngIf=\"form.value.ImageAsDataURL && form.value.ImageAsDataURL !== ''\" [src]=\"form.value.ImageAsDataURL\" style=\"height: 40px; width: fit-content;\" />\n </div>\n <div class=\"\">{{form.value.Filename}}</div>\n <div class=\"\">\n <div (click)=\"removeFromList()\" *ngIf=\"allowRemove\">\n <kms-icon icon=\"trash\" [iconSize]=\"IconSize.TINY\" iconClass=\"color-black\"></kms-icon> \n {{ 'file-input.remove' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!previewImage\">\n <div class=\"\">{{form.value.Filename}}</div>\n </div>\n\n <button (click)=\"selectImageOverlay()\" class=\"button-primary-font-color\" mat-stroked-button>\n <span>{{ label }}</span>\n </button>\n <input\n type=\"file\"\n [accept]=\"acceptedFileMimetypes\"\n style=\"display: none\"\n #fileInput\n (click)=\"clearInputValue($event)\"\n (change)=\"selectImage($event)\"\n />\n\n <input type=\"hidden\" [formControl]=\"form.controls['ImageIdent']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageLink']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Filename']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageAsDataURL']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Text']\" />\n\n</form>" }]
|
|
212
|
-
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.ApplicationRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { fileInput: [{
|
|
213
|
-
type: ViewChild,
|
|
214
|
-
args: ['fileInput']
|
|
215
|
-
}], label: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], previewImage: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], allowRemove: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], previewImageText: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], maxSizeBytes: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], resizePixels: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], acceptedFileMimetypes: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], formDataChanged: [{
|
|
230
|
-
type: Output
|
|
231
|
-
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFVLFNBQVMsRUFBYSxZQUFZLEVBQUUsTUFBTSxFQUFxQyxNQUFNLGVBQWUsQ0FBQztBQUVwSixPQUFPLEVBR0gsa0JBQWtCLEVBRWxCLGFBQWEsRUFDYixpQkFBaUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4Qix5REFBeUQ7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7OztBQUV6RCxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBb0IvQixNQUFNLE9BQU8sa0JBQWtCO0lBNEIzQjs7Ozs7OztPQU9HO0lBQ0gsWUFDVyxXQUErQixFQUMvQixNQUFzQixFQUN0QixFQUFxQjtJQUM1Qiw2Q0FBNkM7SUFDdEMsUUFBbUI7UUFKbkIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRXJCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFyQ3JCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixnQkFBVyxHQUFH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RSxJQUFJO2FBQ2Q7U0FDSixrSUNuQ0wsd21FQTRDTzs7NEZETk0sa0JBQWtCO2tCQWxCOUIsU0FBUzsrQkFDSSxnQkFBZ0IsYUFHZjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs4TEFLOEIsU0FBUztzQkFBdkMsU0FBUzt1QkFBQyxXQUFXO2dCQUViLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBZUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIE9uSW5pdCwgVmlld0NoaWxkLCBSZW5kZXJlcjIsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgVW50eXBlZEZvcm1Db250cm9sLFxuICAgIFVudHlwZWRGb3JtR3JvdXAsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbi8vaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSWNvblNpemUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaWNvblNpemUuZW51bSc7XG5pbXBvcnQgeyBBdHRhY2hlZEZpbGVEVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdHlwZXMvYXR0YWNoZWQtZmlsZS1kdG8ubW9kZWwnO1xuaW1wb3J0IHsgaXNWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9pcy12YWx1ZS5mdW5jdGlvbic7XG5cbi8vIE1heCBzaXplIGluIGJ5dGVzIG9mIHVwbG9hZGVkIGltYWdlXG5jb25zdCBNQVhfU0laRV9CWVRFUyA9IDIwOTcxNTI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna21zLWZpbGUtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZUlucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZUlucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgRmlsZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gICAgXG4gICAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgcHVibGljIGZpbGVJbnB1dDogYW55O1xuXG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBcbiAgICBASW5wdXQoKSBwcmV2aWV3SW1hZ2UgPSB0cnVlOyBcbiAgICBASW5wdXQoKSBhbGxvd1JlbW92ZSA9IHRydWU7IFxuICAgIEBJbnB1dCgpIHByZXZpZXdJbWFnZVRleHQgPSAnJzsgXG4gICAgQElucHV0KCkgbWF4U2l6ZUJ5dGVzID0gTUFYX1NJWkVfQllURVM7IFxuICAgIEBJbnB1dCgpIHJlc2l6ZVBpeGVscyA9IDA7IFxuICAgIEBJbnB1dCgpIGFjY2VwdGVkRmlsZU1pbWV0eXBlcyA9ICdpbWFnZS9qcGVnLCBpbWFnZS9qcGcsIGltYWdlL3BuZyc7IFxuXG4gICAgZm9ybT0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIEltYWdlSWRlbnQ6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBJbWFnZUxpbms6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBGaWxlbmFtZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIEltYWdlQXNEYXRhVVJMOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgVGV4dDogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyksXG4gICAgfSk7XG5cbiAgICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIG5ld0ltYWdlTG9hZGluZyA9IGZhbHNlXG5cbiAgICBJY29uU2l6ZSA9IEljb25TaXplO1xuXG4gICAgQE91dHB1dCgpIGZvcm1EYXRhQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFVudHlwZWRGb3JtR3JvdXA+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybUJ1aWxkZXIgXG4gICAgICogQHBhcmFtIGFwcFJlZiBcbiAgICAgKiBAcGFyYW0gY2QgXG4gICAgICogQHBhcmFtIHRyYW5zbGF0ZVNlcnZpY2UgXG4gICAgICogQHBhcmFtIHJlbmRlcmVyIFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgXG4gICAgICAgIHB1YmxpYyBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAvL3ByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENsaWNrIG9uIGJ1dHRvbiB0cmlnZ2VycyBmaWxlLWlucHV0IHRvIG9wZW4gT1MgZmlsZSBkaWFsb2dcbiAgICAgKi9cbiAgICBzZWxlY3RJbWFnZU92ZXJsYXkoKSB7XG4gICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBtYW5hZ2UgdGhlIGlucHV0IGltYWdlXG4gICAgICogUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgZmlsZSBleGNlZWRzIG1heGltdW0gd2FudGVkIGZpbGVzaXplIChNYikuIFxuICAgICAqIEBwYXJhbSBldlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgc2VsZWN0SW1hZ2UoZXY6IGFueSkge1xuICAgICAgICBpZiAoZXYudGFyZ2V0LmZpbGVzICYmIGV2LnRhcmdldC5maWxlc1swXSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZTpGaWxlID0gZXYudGFyZ2V0LmZpbGVzWzBdO1xuXG4gICAgICAgICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhTaXplQnl0ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySW5wdXRWYWx1ZShldik7XG4gICAgICAgICAgICAgICAgLy9hbGVydCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZXJyb3JzLmZpbGVUb29CaWcnKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ltYWdlTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZih0aGlzLnJlc2l6ZVBpeGVscyA+IDApe1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dvVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgICAgICAgICAgICAgaW1nRWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZWRMb2dvID0gdGhpcy5yZXNpemVJbWFnZShpbWdFbCwgdGhpcy5yZXNpemVQaXhlbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RmlsZSA9IHRoaXMuZ2VuZXJhdGVNb2RlbChmaWxlLm5hbWUsIHJlc2l6ZWRMb2dvLCB0aGlzLnZhbHVlLkltYWdlSWRlbnQsIHRoaXMudmFsdWUuSW1hZ2VMaW5rLCB0aGlzLnZhbHVlLlRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZT1uZXdGaWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpbWdFbC5zcmMgPSBsb2dvVXJsO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB0aGlzLmdlbmVyYXRlTW9kZWwoZmlsZS5uYW1lLCBlLnRhcmdldC5yZXN1bHQsIHRoaXMudmFsdWUuSW1hZ2VJZGVudCwgdGhpcy52YWx1ZS5JbWFnZUxpbmssIHRoaXMudmFsdWUuVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlPW5ld0ZpbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gZmlsZSBzZWxlY3RlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2l6ZSBhbiBpbWFnZVxuICAgICAqIEBwYXJhbSBpbWdFbFxuICAgICAqIEBwYXJhbSB3YW50ZWRXaWR0aCBhcyBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgXG4gICAgICovXG4gICAgIHByaXZhdGUgcmVzaXplSW1hZ2UoaW1nRWw6IGFueSwgd2FudGVkV2lkdGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGNvbnN0IGFzcGVjdCA9IGltZ0VsLndpZHRoIC8gaW1nRWwuaGVpZ2h0O1xuICAgICAgICBjYW52YXMud2lkdGggPSB3YW50ZWRXaWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHdhbnRlZFdpZHRoIC8gYXNwZWN0O1xuICAgICAgICBpZiAoaXNWYWx1ZShjdHgpKSBjdHguZHJhd0ltYWdlKGltZ0VsLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIGRlZmF1bHQgb2JqZWN0XG4gICAgICogQHBhcmFtIG5hbWUgYXMgc3RyaW5nXG4gICAgICogQHBhcmFtIGNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgQXR0YWNoZWRGaWxlRFRPXG4gICAgICovXG4gICAgZ2VuZXJhdGVNb2RlbChuYW1lPzogc3RyaW5nLCBjb250ZW50Pzogc3RyaW5nLCBpZGVudD86IHN0cmluZywgaW1hZ2VMaW5rPzogc3RyaW5nLCB0ZXh0Pzogc3RyaW5nKXtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEltYWdlSWRlbnQ6IGlkZW50ID8gaWRlbnQgOiAnJyxcbiAgICAgICAgICAgIEZpbGVuYW1lOiBuYW1lID8gbmFtZSA6ICcnLFxuICAgICAgICAgICAgSW1hZ2VBc0RhdGFVUkw6IGNvbnRlbnQgPyBjb250ZW50IDogJycsXG4gICAgICAgICAgICBJbWFnZUxpbms6IGltYWdlTGluayA/IGltYWdlTGluayA6ICcnLFxuICAgICAgICAgICAgVGV4dDogdGV4dCA/IHRleHQgOiAnJ1xuICAgICAgICB9IGFzIEF0dGFjaGVkRmlsZURUTztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgaW1hZ2UgXG4gICAgICovXG4gICAgIHJlbW92ZUZyb21MaXN0KCl7XG4gICAgICAgIHRoaXMudmFsdWU9IHRoaXMuZ2VuZXJhdGVNb2RlbCgnJywnJywgJycsICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgdmFsdWVcbiAgICAgKi9cbiAgICAgICAgZ2V0IHZhbHVlKCk6IEF0dGFjaGVkRmlsZURUTyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0IHZhbHVlXG4gICAgICovXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBBdHRhY2hlZEZpbGVEVE8pIHtcbiAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkLmVtaXQodGhpcy5mb3JtKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG5nT25Jbml0KCkge31cblxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9ICAgXG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogQXR0YWNoZWRGaWxlRFRPIHwgbnVsbCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2FkamFjZW50LW92ZXJsb2FkLXNpZ25hdHVyZXNcbiAgICB2YWxpZGF0ZShfOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZCA/IG51bGwgOiB7IHN0eWxlczogeyB2YWxpZDogZmFsc2UgfSB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uQ2xpY2sgZXZlbnQgbGlzdGVuZXIgb2YgaW5wdXQjZmlsZUlucHV0IHRvIGNsZWFyIGhpcyBpbnB1dCB2YWx1ZVxuICAgICAqL1xuICAgIGNsZWFySW5wdXRWYWx1ZShldjogYW55KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBldi50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChjaGFuZ2UpPVwibmV3SW1hZ2VMb2FkaW5nPXRydWVcIiBjbGFzcz1cImZpbGVJbnB1dFwiPiBcblxuICAgIDxkaXYgKm5nSWY9XCJmb3JtLnZhbHVlLkZpbGVuYW1lICYmIHByZXZpZXdJbWFnZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibmV3SW1hZ2VMb2FkaW5nXCI+XG4gICAgICAgICAgICB7eyAnZmlsZS1pbnB1dC5sb2FkaW5nJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFuZXdJbWFnZUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmb3JtLnZhbHVlLkltYWdlTGluayAmJiBmb3JtLnZhbHVlLkltYWdlTGluayAhPT0gJycgJiYgIShmb3JtLnZhbHVlLkltYWdlQXNEYXRhVVJMICYmIGZvcm0udmFsdWUuSW1hZ2VBc0RhdGFVUkwgIT09ICcnKVwiIFtzcmNdPVwiZm9ybS52YWx1ZS5JbWFnZUFzRGF0YVVSTFwiIFtzcmNdPVwiZm9ybS52YWx1ZS5JbWFnZUxpbmtcIiBzdHlsZT1cImhlaWdodDogNDBweDsgd2lkdGg6IGZpdC1jb250ZW50O1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmb3JtLnZhbHVlLkltYWdlQXNEYXRhVVJMICYmIGZvcm0udmFsdWUuSW1hZ2VBc0RhdGFVUkwgIT09ICcnXCIgW3NyY109XCJmb3JtLnZhbHVlLkltYWdlQXNEYXRhVVJMXCIgc3R5bGU9XCJoZWlnaHQ6IDQwcHg7IHdpZHRoOiBmaXQtY29udGVudDtcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj57e2Zvcm0udmFsdWUuRmlsZW5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwicmVtb3ZlRnJvbUxpc3QoKVwiICpuZ0lmPVwiYWxsb3dSZW1vdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxrbXMtaWNvbiBpY29uPVwidHJhc2hcIiBbaWNvblNpemVdPVwiSWNvblNpemUuVElOWVwiIGljb25DbGFzcz1cImNvbG9yLWJsYWNrXCI+PC9rbXMtaWNvbj4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnZmlsZS1pbnB1dC5yZW1vdmUnIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhcHJldmlld0ltYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj57e2Zvcm0udmFsdWUuRmlsZW5hbWV9fTwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwic2VsZWN0SW1hZ2VPdmVybGF5KClcIiBjbGFzcz1cImJ1dHRvbi1wcmltYXJ5LWZvbnQtY29sb3JcIiBtYXQtc3Ryb2tlZC1idXR0b24+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlTWltZXR5cGVzXCJcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEltYWdlKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydJbWFnZUlkZW50J11cIiAvPlxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbJ0ltYWdlTGluayddXCIgLz5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydGaWxlbmFtZSddXCIgLz5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydJbWFnZUFzRGF0YVVSTCddXCIgLz5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzWydUZXh0J11cIiAvPlxuXG48L2Zvcm0+Il19
|