@energinet/watt 4.0.6 → 4.0.7

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.
@@ -16,8 +16,8 @@
16
16
  * limitations under the License.
17
17
  */
18
18
  //#endregion
19
- import { Component, Input, ViewEncapsulation, HostBinding, ElementRef, ViewChild, forwardRef, inject, EventEmitter, Output, } from '@angular/core';
20
- import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
19
+ import { Component, ViewEncapsulation, ElementRef, forwardRef, inject, input, output, viewChild, signal, linkedSignal, } from '@angular/core';
20
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
21
21
  import { MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
22
22
  import { WattFieldComponent } from '@energinet/watt/field';
23
23
  import { WattIconComponent } from '@energinet/watt/icon';
@@ -25,37 +25,37 @@ import * as i0 from "@angular/core";
25
25
  import * as i1 from "@angular/material/autocomplete";
26
26
  import * as i2 from "@angular/forms";
27
27
  export class WattTextFieldComponent {
28
- value;
29
- type = 'text';
30
- placeholder;
31
- label = '';
32
- tooltip;
33
- prefix;
34
- maxLength = null;
35
- formControl;
36
- autocompleteOptions;
37
- autocompleteMatcherFn;
28
+ value = input('', ...(ngDevMode ? [{ debugName: "value" }] : []));
29
+ type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
30
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
31
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
32
+ tooltip = input('', ...(ngDevMode ? [{ debugName: "tooltip" }] : []));
33
+ prefix = input(...(ngDevMode ? [undefined, { debugName: "prefix" }] : []));
34
+ maxLength = input(null, ...(ngDevMode ? [{ debugName: "maxLength" }] : []));
35
+ formControl = input.required(...(ngDevMode ? [{ debugName: "formControl" }] : []));
36
+ autocompleteOptions = input([], ...(ngDevMode ? [{ debugName: "autocompleteOptions" }] : []));
37
+ autocompleteMatcherFn = input(...(ngDevMode ? [undefined, { debugName: "autocompleteMatcherFn" }] : []));
38
38
  /** @ignore */
39
- autocompleteRef;
39
+ autocompleteRef = viewChild.required(MatAutocomplete);
40
40
  /**
41
41
  * Emits the value of the input field when it changes.
42
42
  */
43
- searchChanged = new EventEmitter();
43
+ searchChanged = output();
44
44
  /**
45
45
  * Emits the value of the input field when an autocomplete option is selected.
46
46
  */
47
- autocompleteOptionSelected = new EventEmitter();
47
+ autocompleteOptionSelected = output();
48
48
  /**
49
49
  * Emits the value of the input field when an autocomplete option is selected.
50
50
  */
51
- autocompleteOptionDeselected = new EventEmitter();
51
+ autocompleteOptionDeselected = output();
52
52
  /** @ignore */
53
53
  element = inject(ElementRef);
54
54
  /** @ignore */
55
- inputField;
56
- model;
55
+ inputField = viewChild.required('inputField');
56
+ model = linkedSignal(this.value);
57
57
  /** @ignore */
58
- isDisabled = false;
58
+ isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
59
59
  /** @ignore */
60
60
  onTouchedCallbacks = [];
61
61
  /** @ignore */
@@ -63,32 +63,29 @@ export class WattTextFieldComponent {
63
63
  const attrName = 'data-testid';
64
64
  const testIdAttribute = this.element.nativeElement.getAttribute(attrName);
65
65
  this.element.nativeElement.removeAttribute(attrName);
66
- this.inputField.nativeElement.setAttribute(attrName, testIdAttribute);
66
+ this.inputField().nativeElement.setAttribute(attrName, testIdAttribute);
67
67
  this.registerOnTouched(() => {
68
- const trimmedValue = this.inputField.nativeElement.value.trim();
69
- this.inputField.nativeElement.value = trimmedValue;
70
- this.formControl.setValue(trimmedValue);
68
+ const trimmedValue = this.inputField().nativeElement.value.trim();
69
+ this.inputField().nativeElement.value = trimmedValue;
70
+ this.formControl().setValue(trimmedValue);
71
71
  });
72
72
  }
73
73
  /** @ignore */
74
74
  onChanged(event) {
75
75
  const value = event.target.value;
76
- if (this.autocompleteRef) {
77
- // Reset the autocomplete selection if the value is not matching anymore, and auto-select if the value has a match
78
- this.autocompleteRef.options.forEach((option) => {
79
- const isMatchingOption = this.autocompleteMatcherFn
80
- ? this.autocompleteMatcherFn(value, option.value)
81
- : option.value === value;
82
- if (isMatchingOption) {
83
- option.select(false);
84
- this.autocompleteOptionSelected.emit(option.value);
85
- }
86
- else {
87
- option.deselect(false);
88
- this.autocompleteOptionDeselected.emit();
89
- }
90
- });
91
- }
76
+ // Reset the autocomplete selection if the value is not matching anymore, and auto-select if the value has a match
77
+ this.autocompleteRef().options.forEach((option) => {
78
+ const matcherFn = this.autocompleteMatcherFn();
79
+ const isMatchingOption = matcherFn ? matcherFn(value, option.value) : option.value === value;
80
+ if (isMatchingOption) {
81
+ option.select(false);
82
+ this.autocompleteOptionSelected.emit(option.value);
83
+ }
84
+ else {
85
+ option.deselect(false);
86
+ this.autocompleteOptionDeselected.emit();
87
+ }
88
+ });
92
89
  this.searchChanged.emit(value);
93
90
  this.onChange(value);
94
91
  }
@@ -104,7 +101,7 @@ export class WattTextFieldComponent {
104
101
  };
105
102
  /** @ignore */
106
103
  writeValue(value) {
107
- this.model = value;
104
+ this.model.set(value);
108
105
  }
109
106
  /** @ignore */
110
107
  registerOnChange(fn) {
@@ -116,53 +113,45 @@ export class WattTextFieldComponent {
116
113
  }
117
114
  /** @ignore */
118
115
  setDisabledState(isDisabled) {
119
- this.isDisabled = isDisabled;
116
+ this.isDisabled.set(isDisabled);
120
117
  }
121
118
  /** @ignore */
122
119
  setFocus() {
123
- this.inputField.nativeElement.focus();
120
+ const inputField = this.inputField();
121
+ if (inputField) {
122
+ inputField.nativeElement.focus();
123
+ }
124
124
  }
125
125
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
126
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTextFieldComponent, isStandalone: true, selector: "watt-text-field", inputs: { value: "value", type: "type", placeholder: "placeholder", label: "label", tooltip: "tooltip", prefix: "prefix", maxLength: "maxLength", formControl: "formControl", autocompleteOptions: "autocompleteOptions", autocompleteMatcherFn: "autocompleteMatcherFn" }, outputs: { searchChanged: "searchChanged", autocompleteOptionSelected: "autocompleteOptionSelected", autocompleteOptionDeselected: "autocompleteOptionDeselected" }, host: { properties: { "attr.watt-field-disabled": "this.isDisabled" } }, providers: [
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTextFieldComponent, isStandalone: true, selector: "watt-text-field", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null }, autocompleteOptions: { classPropertyName: "autocompleteOptions", publicName: "autocompleteOptions", isSignal: true, isRequired: false, transformFunction: null }, autocompleteMatcherFn: { classPropertyName: "autocompleteMatcherFn", publicName: "autocompleteMatcherFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchChanged: "searchChanged", autocompleteOptionSelected: "autocompleteOptionSelected", autocompleteOptionDeselected: "autocompleteOptionDeselected" }, host: { properties: { "attr.watt-field-disabled": "isDisabled()" } }, providers: [
127
127
  {
128
128
  provide: NG_VALUE_ACCESSOR,
129
129
  useExisting: forwardRef(() => WattTextFieldComponent),
130
130
  multi: true,
131
131
  },
132
- ], viewQueries: [{ propertyName: "autocompleteRef", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true }], ngImport: i0, template: `<watt-field
133
- #wattField
134
- [control]="formControl"
135
- [label]="label"
136
- [tooltip]="tooltip"
137
- matAutocompleteOrigin
138
- >
139
- @if (prefix) {
140
- <watt-icon [name]="prefix" />
141
- }
132
+ ], viewQueries: [{ propertyName: "autocompleteRef", first: true, predicate: MatAutocomplete, descendants: true, isSignal: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true, isSignal: true }], ngImport: i0, template: `
133
+ <watt-field
134
+ #wattField
135
+ [control]="formControl()"
136
+ [label]="label()"
137
+ [tooltip]="tooltip()"
138
+ matAutocompleteOrigin
139
+ >
140
+ @if (prefix()) {
141
+ <watt-icon [name]="prefix()" />
142
+ }
142
143
 
143
- @if (!autocompleteOptions) {
144
- <input
145
- [attr.aria-label]="label"
146
- [attr.type]="type"
147
- [attr.placeholder]="placeholder"
148
- [value]="value"
149
- [formControl]="formControl"
150
- (blur)="onTouched()"
151
- (input)="onChanged($event)"
152
- [maxlength]="maxLength"
153
- #inputField
154
- />
155
- } @else {
156
144
  <input
157
- [attr.aria-label]="label"
158
- [attr.type]="type"
159
- [attr.placeholder]="placeholder"
160
- [value]="value"
161
- [formControl]="formControl"
145
+ [attr.aria-label]="label()"
146
+ [attr.type]="type()"
147
+ [attr.placeholder]="placeholder()"
148
+ [value]="model()"
149
+ [formControl]="formControl()"
162
150
  (blur)="onTouched()"
163
151
  (input)="onChanged($event)"
164
- [maxlength]="maxLength"
152
+ [maxlength]="maxLength()"
165
153
  [matAutocomplete]="auto"
154
+ [matAutocompleteDisabled]="!autocompleteOptions()"
166
155
  [matAutocompleteConnectedTo]="{ elementRef: wattField.wrapper() ?? wattField.elementRef }"
167
156
  #inputField
168
157
  />
@@ -172,62 +161,53 @@ export class WattTextFieldComponent {
172
161
  class="watt-autocomplete-panel"
173
162
  (optionSelected)="autocompleteOptionSelected.emit($event.option.value)"
174
163
  >
175
- @for (option of autocompleteOptions; track option) {
164
+ @for (option of autocompleteOptions(); track option) {
176
165
  <mat-option [value]="option">
177
166
  {{ option }}
178
167
  </mat-option>
179
168
  }
180
169
  </mat-autocomplete>
181
- }
182
170
 
183
- <ng-content />
184
- <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
185
- <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
186
- <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
187
- </watt-field>`, isInline: true, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"], dependencies: [{ kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i1.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], encapsulation: i0.ViewEncapsulation.None });
171
+ <ng-content />
172
+ <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
173
+ <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
174
+ <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
175
+ </watt-field>
176
+ `, isInline: true, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"], dependencies: [{ kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i1.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], encapsulation: i0.ViewEncapsulation.None });
188
177
  }
189
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTextFieldComponent, decorators: [{
190
179
  type: Component,
191
- args: [{ imports: [MatAutocompleteModule, ReactiveFormsModule, WattFieldComponent, WattIconComponent], selector: 'watt-text-field', encapsulation: ViewEncapsulation.None, providers: [
180
+ args: [{ imports: [MatAutocompleteModule, ReactiveFormsModule, WattFieldComponent, WattIconComponent], selector: 'watt-text-field', encapsulation: ViewEncapsulation.None, host: {
181
+ '[attr.watt-field-disabled]': 'isDisabled()',
182
+ }, providers: [
192
183
  {
193
184
  provide: NG_VALUE_ACCESSOR,
194
185
  useExisting: forwardRef(() => WattTextFieldComponent),
195
186
  multi: true,
196
187
  },
197
- ], template: `<watt-field
198
- #wattField
199
- [control]="formControl"
200
- [label]="label"
201
- [tooltip]="tooltip"
202
- matAutocompleteOrigin
203
- >
204
- @if (prefix) {
205
- <watt-icon [name]="prefix" />
206
- }
188
+ ], template: `
189
+ <watt-field
190
+ #wattField
191
+ [control]="formControl()"
192
+ [label]="label()"
193
+ [tooltip]="tooltip()"
194
+ matAutocompleteOrigin
195
+ >
196
+ @if (prefix()) {
197
+ <watt-icon [name]="prefix()" />
198
+ }
207
199
 
208
- @if (!autocompleteOptions) {
209
- <input
210
- [attr.aria-label]="label"
211
- [attr.type]="type"
212
- [attr.placeholder]="placeholder"
213
- [value]="value"
214
- [formControl]="formControl"
215
- (blur)="onTouched()"
216
- (input)="onChanged($event)"
217
- [maxlength]="maxLength"
218
- #inputField
219
- />
220
- } @else {
221
200
  <input
222
- [attr.aria-label]="label"
223
- [attr.type]="type"
224
- [attr.placeholder]="placeholder"
225
- [value]="value"
226
- [formControl]="formControl"
201
+ [attr.aria-label]="label()"
202
+ [attr.type]="type()"
203
+ [attr.placeholder]="placeholder()"
204
+ [value]="model()"
205
+ [formControl]="formControl()"
227
206
  (blur)="onTouched()"
228
207
  (input)="onChanged($event)"
229
- [maxlength]="maxLength"
208
+ [maxlength]="maxLength()"
230
209
  [matAutocomplete]="auto"
210
+ [matAutocompleteDisabled]="!autocompleteOptions()"
231
211
  [matAutocompleteConnectedTo]="{ elementRef: wattField.wrapper() ?? wattField.elementRef }"
232
212
  #inputField
233
213
  />
@@ -237,53 +217,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
237
217
  class="watt-autocomplete-panel"
238
218
  (optionSelected)="autocompleteOptionSelected.emit($event.option.value)"
239
219
  >
240
- @for (option of autocompleteOptions; track option) {
220
+ @for (option of autocompleteOptions(); track option) {
241
221
  <mat-option [value]="option">
242
222
  {{ option }}
243
223
  </mat-option>
244
224
  }
245
225
  </mat-autocomplete>
246
- }
247
226
 
248
- <ng-content />
249
- <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
250
- <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
251
- <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
252
- </watt-field>`, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"] }]
253
- }], propDecorators: { value: [{
254
- type: Input
255
- }], type: [{
256
- type: Input
257
- }], placeholder: [{
258
- type: Input
259
- }], label: [{
260
- type: Input
261
- }], tooltip: [{
262
- type: Input
263
- }], prefix: [{
264
- type: Input
265
- }], maxLength: [{
266
- type: Input
267
- }], formControl: [{
268
- type: Input
269
- }], autocompleteOptions: [{
270
- type: Input
271
- }], autocompleteMatcherFn: [{
272
- type: Input
273
- }], autocompleteRef: [{
274
- type: ViewChild,
275
- args: [MatAutocomplete]
276
- }], searchChanged: [{
277
- type: Output
278
- }], autocompleteOptionSelected: [{
279
- type: Output
280
- }], autocompleteOptionDeselected: [{
281
- type: Output
282
- }], inputField: [{
283
- type: ViewChild,
284
- args: ['inputField']
285
- }], isDisabled: [{
286
- type: HostBinding,
287
- args: ['attr.watt-field-disabled']
288
- }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RleHQtZmllbGQvd2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBRVYsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBeUVuRSxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLEtBQUssQ0FBVTtJQUNmLElBQUksR0FBbUIsTUFBTSxDQUFDO0lBQzlCLFdBQVcsQ0FBVTtJQUNyQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxDQUFVO0lBQ2pCLE1BQU0sQ0FBWTtJQUNsQixTQUFTLEdBQTJCLElBQUksQ0FBQztJQUN6QyxXQUFXLENBQWU7SUFDMUIsbUJBQW1CLENBQVk7SUFDL0IscUJBQXFCLENBQThDO0lBRTVFLGNBQWM7SUFDYyxlQUFlLENBQW1CO0lBRTlEOztPQUVHO0lBQ08sYUFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFckQ7O09BRUc7SUFDTywwQkFBMEIsR0FBRyxJQUFJLFlB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O3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR3NCLGVBQWU7c0JBQTFDLFNBQVM7dUJBQUMsZUFBZTtnQkFLaEIsYUFBYTtzQkFBdEIsTUFBTTtnQkFLRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBS0csNEJBQTRCO3NCQUFyQyxNQUFNO2dCQU1rQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBS3ZCLFVBQVU7c0JBRFQsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSG9zdEJpbmRpbmcsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgaW5qZWN0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5cbmltcG9ydCB7IFdhdHRGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9maWVsZCc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCwgV2F0dEljb24gfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvaWNvbic7XG5cbmV4cG9ydCB0eXBlIFdhdHRJbnB1dFR5cGVzID0gJ3RleHQnIHwgJ3Bhc3N3b3JkJyB8ICdlbWFpbCcgfCAnbnVtYmVyJyB8ICd0ZWwnIHwgJ3VybCc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBXYXR0RmllbGRDb21wb25lbnQsIFdhdHRJY29uQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRleHQtZmllbGQnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LXRleHQtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXYXR0VGV4dEZpZWxkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlOiBgPHdhdHQtZmllbGRcbiAgICAjd2F0dEZpZWxkXG4gICAgW2NvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW3Rvb2x0aXBdPVwidG9vbHRpcFwiXG4gICAgbWF0QXV0b2NvbXBsZXRlT3JpZ2luXG4gID5cbiAgICBAaWYgKHByZWZpeCkge1xuICAgICAgPHdhdHQtaWNvbiBbbmFtZV09XCJwcmVmaXhcIiAvPlxuICAgIH1cblxuICAgIEBpZiAoIWF1dG9jb21wbGV0ZU9wdGlvbnMpIHtcbiAgICAgIDxpbnB1dFxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgW2F0dHIudHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXG4gICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgI2lucHV0RmllbGRcbiAgICAgIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUb109XCJ7IGVsZW1lbnRSZWY6IHdhdHRGaWVsZC53cmFwcGVyKCkgPz8gd2F0dEZpZWxkLmVsZW1lbnRSZWYgfVwiXG4gICAgICAgICNpbnB1dEZpZWxkXG4gICAgICAvPlxuXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC1hdXRvY29tcGxldGUtcGFuZWxcIlxuICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQuZW1pdCgkZXZlbnQub3B0aW9uLnZhbHVlKVwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBhdXRvY29tcGxldGVPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICB9XG5cbiAgICA8bmctY29udGVudCAvPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1kZXNjcmlwdG9yXCIgc2VsZWN0PVwiLmRlc2NyaXB0b3JcIiAvPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1oaW50XCIgc2VsZWN0PVwid2F0dC1maWVsZC1oaW50XCIgLz5cbiAgICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZXJyb3JcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWVycm9yXCIgLz5cbiAgPC93YXR0LWZpZWxkPmAsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUZXh0RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlITogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBXYXR0SW5wdXRUeXBlcyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXA/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZWZpeD86IFdhdHRJY29uO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGVPcHRpb25zITogc3RyaW5nW107XG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZU1hdGNoZXJGbiE6ICh2YWx1ZTogc3RyaW5nLCBvcHRpb246IHN0cmluZykgPT4gYm9vbGVhbjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgYXV0b2NvbXBsZXRlUmVmITogTWF0QXV0b2NvbXBsZXRlO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIHdoZW4gaXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWFyY2hDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGF1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGF1dG9jb21wbGV0ZU9wdGlvbkRlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RmllbGQnKSBpbnB1dEZpZWxkITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgbW9kZWwhOiBzdHJpbmc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLndhdHQtZmllbGQtZGlzYWJsZWQnKVxuICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25Ub3VjaGVkQ2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRyTmFtZSA9ICdkYXRhLXRlc3RpZCc7XG4gICAgY29uc3QgdGVzdElkQXR0cmlidXRlID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgIHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgdGVzdElkQXR0cmlidXRlKTtcbiAgICB0aGlzLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnZhbHVlLnRyaW0oKTtcbiAgICAgIHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdHJpbW1lZFZhbHVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0cmltbWVkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25DaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZVJlZikge1xuICAgICAgLy8gUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBzZWxlY3Rpb24gaWYgdGhlIHZhbHVlIGlzIG5vdCBtYXRjaGluZyBhbnltb3JlLCBhbmQgYXV0by1zZWxlY3QgaWYgdGhlIHZhbHVlIGhhcyBhIG1hdGNoXG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlZi5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBpc01hdGNoaW5nT3B0aW9uID0gdGhpcy5hdXRvY29tcGxldGVNYXRjaGVyRm5cbiAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlTWF0Y2hlckZuKHZhbHVlLCBvcHRpb24udmFsdWUpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUgPT09IHZhbHVlO1xuXG4gICAgICAgIGlmIChpc01hdGNoaW5nT3B0aW9uKSB7XG4gICAgICAgICAgb3B0aW9uLnNlbGVjdChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZC5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9uLmRlc2VsZWN0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbkRlc2VsZWN0ZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaENoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLyogbm9vcCBmdW5jdGlvbiAqL1xuICB9O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2tzKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfTtcblxuICAvKiogQGlnbm9yZSAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFja3MucHVzaChmbik7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgc2V0Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEZpZWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
227
+ <ng-content />
228
+ <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
229
+ <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
230
+ <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
231
+ </watt-field>
232
+ `, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"] }]
233
+ }] });
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RleHQtZmllbGQvd2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFZLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFpRW5FLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLGlEQUFDLENBQUM7SUFDbEIsSUFBSSxHQUFHLEtBQUssQ0FBaUIsTUFBTSxnREFBQyxDQUFDO0lBQ3JDLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSx1REFBQyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxpREFBQyxDQUFDO0lBQ2xCLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRSxtREFBQyxDQUFDO0lBQ3BCLE1BQU0sR0FBRyxLQUFLLDREQUFZLENBQUM7SUFDM0IsU0FBUyxHQUFHLEtBQUssQ0FBeUIsSUFBSSxxREFBQyxDQUFDO0lBQ2hELFdBQVcsR0FBRyxLQUFLLENBQUMsUUFB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Ozs7Ozs7Ozs7Ozs7OztHQTRDVCxzUkExRFMscUJBQXFCLHk5QkFBRSxtQkFBbUIsNnVCQUFFLGtCQUFrQiwrSUFBRSxpQkFBaUI7OzJGQTREaEYsc0JBQXNCO2tCQTdEbEMsU0FBUzs4QkFDQyxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLFlBQ2xGLGlCQUFpQixpQkFFWixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLDRCQUE0QixFQUFFLGNBQWM7cUJBQzdDLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICB2aWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgbGlua2VkU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcblxuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB7IFdhdHRJY29uQ29tcG9uZW50LCBXYXR0SWNvbiB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcblxuZXhwb3J0IHR5cGUgV2F0dElucHV0VHlwZXMgPSAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ2VtYWlsJyB8ICdudW1iZXInIHwgJ3RlbCcgfCAndXJsJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtNYXRBdXRvY29tcGxldGVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFdhdHRGaWVsZENvbXBvbmVudCwgV2F0dEljb25Db21wb25lbnRdLFxuICBzZWxlY3RvcjogJ3dhdHQtdGV4dC1maWVsZCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtdGV4dC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLndhdHQtZmllbGQtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2F0dFRleHRGaWVsZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx3YXR0LWZpZWxkXG4gICAgICAjd2F0dEZpZWxkXG4gICAgICBbY29udHJvbF09XCJmb3JtQ29udHJvbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgIFt0b29sdGlwXT1cInRvb2x0aXAoKVwiXG4gICAgICBtYXRBdXRvY29tcGxldGVPcmlnaW5cbiAgICA+XG4gICAgICBAaWYgKHByZWZpeCgpKSB7XG4gICAgICAgIDx3YXR0LWljb24gW25hbWVdPVwicHJlZml4KClcIiAvPlxuICAgICAgfVxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgW2F0dHIudHlwZV09XCJ0eXBlKClcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW3ZhbHVlXT1cIm1vZGVsKClcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2woKVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGgoKVwiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVEaXNhYmxlZF09XCIhYXV0b2NvbXBsZXRlT3B0aW9ucygpXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvXT1cInsgZWxlbWVudFJlZjogd2F0dEZpZWxkLndyYXBwZXIoKSA/PyB3YXR0RmllbGQuZWxlbWVudFJlZiB9XCJcbiAgICAgICAgI2lucHV0RmllbGRcbiAgICAgIC8+XG5cbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LWF1dG9jb21wbGV0ZS1wYW5lbFwiXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJhdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZC5lbWl0KCRldmVudC5vcHRpb24udmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIGF1dG9jb21wbGV0ZU9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG5cbiAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZGVzY3JpcHRvclwiIHNlbGVjdD1cIi5kZXNjcmlwdG9yXCIgLz5cbiAgICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1oaW50XCIgc2VsZWN0PVwid2F0dC1maWVsZC1oaW50XCIgLz5cbiAgICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1lcnJvclwiIHNlbGVjdD1cIndhdHQtZmllbGQtZXJyb3JcIiAvPlxuICAgIDwvd2F0dC1maWVsZD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dFRleHRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcbiAgdmFsdWUgPSBpbnB1dCgnJyk7XG4gIHR5cGUgPSBpbnB1dDxXYXR0SW5wdXRUeXBlcz4oJ3RleHQnKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dCgnJyk7XG4gIGxhYmVsID0gaW5wdXQoJycpO1xuICB0b29sdGlwID0gaW5wdXQoJycpO1xuICBwcmVmaXggPSBpbnB1dDxXYXR0SWNvbj4oKTtcbiAgbWF4TGVuZ3RoID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGZvcm1Db250cm9sID0gaW5wdXQucmVxdWlyZWQ8Rm9ybUNvbnRyb2w+KCk7XG4gIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBhdXRvY29tcGxldGVNYXRjaGVyRm4gPSBpbnB1dDwodmFsdWU6IHN0cmluZywgb3B0aW9uOiBzdHJpbmcpID0+IGJvb2xlYW4+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgYXV0b2NvbXBsZXRlUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkKE1hdEF1dG9jb21wbGV0ZSk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBpdCBjaGFuZ2VzLlxuICAgKi9cbiAgc2VhcmNoQ2hhbmdlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIHdoZW4gYW4gYXV0b2NvbXBsZXRlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIGF1dG9jb21wbGV0ZU9wdGlvbkRlc2VsZWN0ZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgaW5wdXRGaWVsZCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignaW5wdXRGaWVsZCcpO1xuICBtb2RlbCA9IGxpbmtlZFNpZ25hbCh0aGlzLnZhbHVlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBpc0Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBvblRvdWNoZWRDYWxsYmFja3M6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dHJOYW1lID0gJ2RhdGEtdGVzdGlkJztcbiAgICBjb25zdCB0ZXN0SWRBdHRyaWJ1dGUgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG5cbiAgICB0aGlzLmlucHV0RmllbGQoKS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgdGVzdElkQXR0cmlidXRlKTtcbiAgICB0aGlzLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHRoaXMuaW5wdXRGaWVsZCgpLm5hdGl2ZUVsZW1lbnQudmFsdWUudHJpbSgpO1xuICAgICAgdGhpcy5pbnB1dEZpZWxkKCkubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRyaW1tZWRWYWx1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2woKS5zZXRWYWx1ZSh0cmltbWVkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25DaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIC8vIFJlc2V0IHRoZSBhdXRvY29tcGxldGUgc2VsZWN0aW9uIGlmIHRoZSB2YWx1ZSBpcyBub3QgbWF0Y2hpbmcgYW55bW9yZSwgYW5kIGF1dG8tc2VsZWN0IGlmIHRoZSB2YWx1ZSBoYXMgYSBtYXRjaFxuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVmKCkub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoZXJGbiA9IHRoaXMuYXV0b2NvbXBsZXRlTWF0Y2hlckZuKCk7XG4gICAgICBjb25zdCBpc01hdGNoaW5nT3B0aW9uID0gbWF0Y2hlckZuID8gbWF0Y2hlckZuKHZhbHVlLCBvcHRpb24udmFsdWUpIDogb3B0aW9uLnZhbHVlID09PSB2YWx1ZTtcblxuICAgICAgaWYgKGlzTWF0Y2hpbmdPcHRpb24pIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdChmYWxzZSk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQuZW1pdChvcHRpb24udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uLmRlc2VsZWN0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25EZXNlbGVjdGVkLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VhcmNoQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvKiBub29wIGZ1bmN0aW9uICovXG4gIH07XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgdGhpcy5vblRvdWNoZWRDYWxsYmFja3MpIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrcy5wdXNoKGZuKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBzZXRGb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEZpZWxkID0gdGhpcy5pbnB1dEZpZWxkKCk7XG4gICAgaWYgKGlucHV0RmllbGQpIHtcbiAgICAgIGlucHV0RmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@energinet/watt",
4
- "version": "4.0.6",
4
+ "version": "4.0.7",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": {
@@ -14,44 +14,43 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { ElementRef, AfterViewInit, EventEmitter } from '@angular/core';
17
+ import { ElementRef, AfterViewInit } from '@angular/core';
18
18
  import { ControlValueAccessor, FormControl } from '@angular/forms';
19
19
  import { MatAutocomplete } from '@angular/material/autocomplete';
20
- import { WattIcon } from '@energinet/watt/icon';
21
20
  import * as i0 from "@angular/core";
22
21
  export type WattInputTypes = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';
23
22
  export declare class WattTextFieldComponent implements ControlValueAccessor, AfterViewInit {
24
- value: string;
25
- type: WattInputTypes;
26
- placeholder?: string;
27
- label: string;
28
- tooltip?: string;
29
- prefix?: WattIcon;
30
- maxLength: string | number | null;
31
- formControl: FormControl;
32
- autocompleteOptions: string[];
33
- autocompleteMatcherFn: (value: string, option: string) => boolean;
23
+ value: import("@angular/core").InputSignal<string>;
24
+ type: import("@angular/core").InputSignal<WattInputTypes>;
25
+ placeholder: import("@angular/core").InputSignal<string>;
26
+ label: import("@angular/core").InputSignal<string>;
27
+ tooltip: import("@angular/core").InputSignal<string>;
28
+ prefix: import("@angular/core").InputSignal<"email" | "filter" | "search" | "plus" | "minus" | "edit" | "redo" | "undo" | "remove" | "removeForever" | "close" | "cancel" | "checkmark" | "user" | "settings" | "contentCopy" | "date" | "time" | "markEmailUnread" | "link" | "openInNew" | "monetization" | "payments" | "forwardMessage" | "menu" | "moreVertical" | "logout" | "login" | "help" | "alternateEmail" | "refresh" | "language" | "pendingActions" | "toggleOn" | "toggleOff" | "personCheck" | "left" | "right" | "up" | "down" | "arrowDropDown" | "arrowRightAlt" | "arrowLeftAlt" | "danger" | "warning" | "success" | "info" | "feedback" | "save" | "upload" | "download" | "fileDownload" | "fileUpload" | "print" | "preview" | "power" | "location" | "smartDisplay" | "windmill" | "solarPower" | "priorityHigh" | "notifications" | "notificationsUnread" | "horizontalRule" | "wrongLocation" | "heatPump" | "inventory" | "globe" | "calculate" | "bar_chart_4_bars" | "view_list" | "view_stream" | "construction" | "factory" | "nest_eco_leaf" | "flash_on" | undefined>;
29
+ maxLength: import("@angular/core").InputSignal<string | number | null>;
30
+ formControl: import("@angular/core").InputSignal<FormControl<any>>;
31
+ autocompleteOptions: import("@angular/core").InputSignal<string[]>;
32
+ autocompleteMatcherFn: import("@angular/core").InputSignal<((value: string, option: string) => boolean) | undefined>;
34
33
  /** @ignore */
35
- autocompleteRef: MatAutocomplete;
34
+ autocompleteRef: import("@angular/core").Signal<MatAutocomplete>;
36
35
  /**
37
36
  * Emits the value of the input field when it changes.
38
37
  */
39
- searchChanged: EventEmitter<string>;
38
+ searchChanged: import("@angular/core").OutputEmitterRef<string>;
40
39
  /**
41
40
  * Emits the value of the input field when an autocomplete option is selected.
42
41
  */
43
- autocompleteOptionSelected: EventEmitter<string>;
42
+ autocompleteOptionSelected: import("@angular/core").OutputEmitterRef<string>;
44
43
  /**
45
44
  * Emits the value of the input field when an autocomplete option is selected.
46
45
  */
47
- autocompleteOptionDeselected: EventEmitter<void>;
46
+ autocompleteOptionDeselected: import("@angular/core").OutputEmitterRef<void>;
48
47
  /** @ignore */
49
48
  private element;
50
49
  /** @ignore */
51
- inputField: ElementRef<HTMLInputElement>;
52
- model: string;
50
+ inputField: import("@angular/core").Signal<ElementRef<HTMLInputElement>>;
51
+ model: import("@angular/core").WritableSignal<string>;
53
52
  /** @ignore */
54
- isDisabled: boolean;
53
+ isDisabled: import("@angular/core").WritableSignal<boolean>;
55
54
  /** @ignore */
56
55
  onTouchedCallbacks: (() => void)[];
57
56
  /** @ignore */
@@ -73,5 +72,5 @@ export declare class WattTextFieldComponent implements ControlValueAccessor, Aft
73
72
  /** @ignore */
74
73
  setFocus(): void;
75
74
  static ɵfac: i0.ɵɵFactoryDeclaration<WattTextFieldComponent, never>;
76
- static ɵcmp: i0.ɵɵComponentDeclaration<WattTextFieldComponent, "watt-text-field", never, { "value": { "alias": "value"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "autocompleteOptions": { "alias": "autocompleteOptions"; "required": false; }; "autocompleteMatcherFn": { "alias": "autocompleteMatcherFn"; "required": false; }; }, { "searchChanged": "searchChanged"; "autocompleteOptionSelected": "autocompleteOptionSelected"; "autocompleteOptionDeselected": "autocompleteOptionDeselected"; }, never, ["*", ".descriptor", "watt-field-hint", "watt-field-error"], true, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<WattTextFieldComponent, "watt-text-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": true; "isSignal": true; }; "autocompleteOptions": { "alias": "autocompleteOptions"; "required": false; "isSignal": true; }; "autocompleteMatcherFn": { "alias": "autocompleteMatcherFn"; "required": false; "isSignal": true; }; }, { "searchChanged": "searchChanged"; "autocompleteOptionSelected": "autocompleteOptionSelected"; "autocompleteOptionDeselected": "autocompleteOptionDeselected"; }, never, ["*", ".descriptor", "watt-field-hint", "watt-field-error"], true, never>;
77
76
  }