@taiga-ui/kit 4.37.0 → 4.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/components/calendar-range/day-caps-mapper.d.ts +2 -2
  2. package/components/input-month/input-month.directive.d.ts +3 -2
  3. package/components/input-month-range/input-month-range.directive.d.ts +3 -2
  4. package/components/input-number/input-number.directive.d.ts +3 -2
  5. package/components/input-number/step/input-number-step.component.d.ts +4 -3
  6. package/components/select/native-select/native-select.component.d.ts +2 -0
  7. package/components/select/select.directive.d.ts +2 -1
  8. package/esm2022/components/calendar-range/calendar-range.component.mjs +4 -4
  9. package/esm2022/components/calendar-range/day-caps-mapper.mjs +10 -4
  10. package/esm2022/components/input-month/input-month.directive.mjs +8 -7
  11. package/esm2022/components/input-month-range/input-month-range.directive.mjs +13 -8
  12. package/esm2022/components/input-number/input-number.directive.mjs +15 -19
  13. package/esm2022/components/input-number/step/input-number-step.component.mjs +14 -13
  14. package/esm2022/components/select/native-select/native-select.component.mjs +9 -5
  15. package/esm2022/components/select/select.directive.mjs +10 -5
  16. package/esm2022/components/slider/helpers/slider-key-steps.directive.mjs +3 -3
  17. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +12 -6
  18. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +12 -7
  20. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-kit-components-input-month.mjs +7 -6
  22. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-kit-components-input-number.mjs +26 -29
  24. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-kit-components-select.mjs +14 -6
  26. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-kit-components-slider.mjs +2 -2
  28. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  29. package/package.json +10 -10
@@ -6,9 +6,9 @@ import { maskitoCaretGuard, maskitoNumberOptionsGenerator, maskitoParseNumber, }
6
6
  import { tuiAsControl, TuiControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes';
7
7
  import { CHAR_HYPHEN, CHAR_MINUS, TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
8
8
  import { TUI_IS_IOS, tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
9
- import { tuiInjectElement, tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
9
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
10
10
  import { tuiIsSafeToRound } from '@taiga-ui/cdk/utils/math';
11
- import { TuiWithTextfield } from '@taiga-ui/core/components/textfield';
11
+ import { TuiTextfieldDirective, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
12
12
  import { TUI_DEFAULT_NUMBER_FORMAT, TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
13
13
  import { tuiFormatNumber } from '@taiga-ui/core/utils/format';
14
14
  import { tuiMaskito } from '@taiga-ui/kit/utils';
@@ -20,22 +20,21 @@ const DEFAULT_MAX_LENGTH = 18;
20
20
  class TuiInputNumberDirective extends TuiControl {
21
21
  constructor() {
22
22
  super(...arguments);
23
+ this.textfield = inject(TuiTextfieldDirective);
23
24
  this.isIOS = inject(TUI_IS_IOS);
24
25
  this.numberFormat = toSignal(inject(TUI_NUMBER_FORMAT), {
25
26
  initialValue: TUI_DEFAULT_NUMBER_FORMAT,
26
27
  });
28
+ this.formatted = computed(() => maskitoParseNumber(this.textfield.value(), this.numberFormat().decimalSeparator));
27
29
  this.precision = computed(() => Number.isNaN(this.numberFormat().precision) ? 2 : this.numberFormat().precision);
28
- this.isIntermediateState = computed(() => {
29
- const value = maskitoParseNumber(this.textfieldValue(), this.numberFormat().decimalSeparator);
30
- return value < 0 ? value > this.max() : value < this.min();
31
- });
30
+ this.unfinished = computed((value = this.formatted()) => value < 0 ? value > this.max() : value < this.min());
32
31
  this.onChangeEffect = effect(() => {
33
- const value = maskitoParseNumber(this.textfieldValue(), this.numberFormat().decimalSeparator);
32
+ const value = this.formatted();
34
33
  if (Number.isNaN(value)) {
35
34
  this.onChange(null);
36
35
  return;
37
36
  }
38
- if (this.isIntermediateState() ||
37
+ if (this.unfinished() ||
39
38
  value < this.min() ||
40
39
  value > this.max() ||
41
40
  this.value() === value) {
@@ -45,7 +44,6 @@ class TuiInputNumberDirective extends TuiControl {
45
44
  }, TUI_ALLOW_SIGNAL_WRITES);
46
45
  this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
47
46
  this.element = tuiInjectElement();
48
- this.textfieldValue = tuiValueBinding();
49
47
  this.inputMode = computed(() => {
50
48
  if (this.isIOS && this.min() < 0) {
51
49
  // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'
@@ -55,7 +53,7 @@ class TuiInputNumberDirective extends TuiControl {
55
53
  });
56
54
  this.defaultMaxLength = computed(() => {
57
55
  const { decimalSeparator, thousandSeparator } = this.numberFormat();
58
- const decimalPart = !!this.precision() && this.textfieldValue().includes(decimalSeparator);
56
+ const decimalPart = !!this.precision() && this.textfield.value().includes(decimalSeparator);
59
57
  const precision = decimalPart ? Math.min(this.precision() + 1, 20) : 0;
60
58
  const takeThousand = thousandSeparator.repeat(5).length;
61
59
  return DEFAULT_MAX_LENGTH + precision + takeThousand;
@@ -89,22 +87,21 @@ class TuiInputNumberDirective extends TuiControl {
89
87
  this.postfix.set(x);
90
88
  }
91
89
  writeValue(value) {
92
- super.writeValue(Number.isNaN(value) ? null : value);
90
+ super.writeValue(value);
93
91
  this.setValue(this.value());
94
92
  }
95
93
  setValue(value) {
96
- this.textfieldValue.set(this.formatNumber(value));
94
+ this.textfield.value.set(this.formatNumber(value));
97
95
  }
98
96
  onBlur() {
99
97
  this.onTouched();
100
- if (!this.isIntermediateState()) {
98
+ if (!this.unfinished()) {
101
99
  this.setValue(this.value());
102
100
  }
103
101
  }
104
102
  onFocus() {
105
- const value = maskitoParseNumber(this.textfieldValue(), this.numberFormat().decimalSeparator);
106
- if (Number.isNaN(value) && !this.readOnly()) {
107
- this.textfieldValue.set(this.prefix() + this.postfix());
103
+ if (Number.isNaN(this.formatted()) && !this.readOnly()) {
104
+ this.textfield.value.set(this.prefix() + this.postfix());
108
105
  }
109
106
  }
110
107
  formatNumber(value) {
@@ -157,7 +154,7 @@ class TuiInputNumberDirective extends TuiControl {
157
154
  };
158
155
  }
159
156
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
160
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberDirective, isStandalone: true, selector: "input[tuiInputNumber]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"], prefixSetter: ["prefix", "prefixSetter"], postfixSetter: ["postfix", "postfixSetter"] }, host: { listeners: { "input": "textfieldValue.set(element.value)", "blur": "onBlur()", "focus": "onFocus()" }, properties: { "disabled": "disabled()", "attr.inputMode": "inputMode()", "attr.maxLength": "element.maxLength > 0 ? element.maxLength : defaultMaxLength()" } }, providers: [
157
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberDirective, isStandalone: true, selector: "input[tuiInputNumber]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"], prefixSetter: ["prefix", "prefixSetter"], postfixSetter: ["postfix", "postfixSetter"] }, host: { listeners: { "blur": "onBlur()", "focus": "onFocus()" }, properties: { "disabled": "disabled()", "attr.inputMode": "inputMode()", "attr.maxLength": "element.maxLength > 0 ? element.maxLength : defaultMaxLength()" } }, providers: [
161
158
  tuiAsControl(TuiInputNumberDirective),
162
159
  tuiFallbackValueProvider(null),
163
160
  tuiValueTransformerFrom(TUI_INPUT_NUMBER_OPTIONS),
@@ -179,7 +176,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
179
176
  '[disabled]': 'disabled()',
180
177
  '[attr.inputMode]': 'inputMode()',
181
178
  '[attr.maxLength]': 'element.maxLength > 0 ? element.maxLength : defaultMaxLength()',
182
- '(input)': 'textfieldValue.set(element.value)',
183
179
  '(blur)': 'onBlur()',
184
180
  '(focus)': 'onFocus()',
185
181
  },
@@ -197,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
197
193
  type: Input,
198
194
  args: ['postfix']
199
195
  }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMseUJBQXlCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7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QUF1QjttR0FBdkIsdUJBQXVCLHlmQWhCckI7WUFDUCxZQUFZLENBQUMsdUJBQXVCLENBQUM7WUFDckMsd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBQzlCLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO1NBQ3BEOztTQVlRLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQW5CbkMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsU0FBUyxFQUFFO3dCQUNQLFlBQVkseUJBQXlCO3dCQUNyQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7d0JBQzlCLHVCQUF1QixDQUFDLHdCQUF3QixDQUFDO3FCQUNwRDtvQkFDRCxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDcEQsSUFBSSxFQUFFO3dCQUNGLFlBQVksRUFBRSxZQUFZO3dCQUMxQixrQkFBa0IsRUFBRSxhQUFhO3dCQUNqQyxrQkFBa0IsRUFDZCxnRUFBZ0U7d0JBQ3BFLFNBQVMsRUFBRSxtQ0FBbUM7d0JBQzlDLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixTQUFTLEVBQUUsV0FBVztxQkFDekI7aUJBQ0o7OEJBNEZjLFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFNRCxTQUFTO3NCQURuQixLQUFLO3VCQUFDLEtBQUs7Z0JBT0QsWUFBWTtzQkFEdEIsS0FBSzt1QkFBQyxRQUFRO2dCQU9KLGFBQWE7c0JBRHZCLEtBQUs7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtNYXNraXRvRGlyZWN0aXZlfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB0eXBlIHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9Jbml0aWFsQ2FsaWJyYXRpb25QbHVnaW59IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHR5cGUge01hc2tpdG9OdW1iZXJQYXJhbXN9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge1xuICAgIG1hc2tpdG9DYXJldEd1YXJkLFxuICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yLFxuICAgIG1hc2tpdG9QYXJzZU51bWJlcixcbn0gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sLCB0dWlWYWx1ZVRyYW5zZm9ybWVyRnJvbX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7Q0hBUl9IWVBIRU4sIENIQVJfTUlOVVMsIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1RVSV9JU19JT1MsIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50LCB0dWlWYWx1ZUJpbmRpbmd9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpSXNTYWZlVG9Sb3VuZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7VHVpV2l0aFRleHRmaWVsZH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtUVUlfREVGQVVMVF9OVU1CRVJfRk9STUFULCBUVUlfTlVNQkVSX0ZPUk1BVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpRm9ybWF0TnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHt0dWlNYXNraXRvfSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcblxuaW1wb3J0IHtUVUlfSU5QVVRfTlVNQkVSX09QVElPTlN9IGZyb20gJy4vaW5wdXQtbnVtYmVyLm9wdGlvbnMnO1xuXG5jb25zdCBERUZBVUxUX01BWF9MRU5HVEggPSAxODtcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aUlucHV0TnVtYmVyXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSksXG4gICAgICAgIHR1aUZhbGxiYWNrVmFsdWVQcm92aWRlcihudWxsKSxcbiAgICAgICAgdHVpVmFsdWVUcmFuc2Zvcm1lckZyb20oVFVJX0lOUFVUX05VTUJFUl9PUFRJT05TKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgTWFza2l0b0RpcmVjdGl2ZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJ1thdHRyLmlucHV0TW9kZV0nOiAnaW5wdXRNb2RlKCknLFxuICAgICAgICAnW2F0dHIubWF4TGVuZ3RoXSc6XG4gICAgICAgICAgICAnZWxlbWVudC5tYXhMZW5ndGggPiAwID8gZWxlbWVudC5tYXhMZW5ndGggOiBkZWZhdWx0TWF4TGVuZ3RoKCknLFxuICAgICAgICAnKGlucHV0KSc6ICd0ZXh0ZmllbGRWYWx1ZS5zZXQoZWxlbWVudC52YWx1ZSknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSBleHRlbmRzIFR1aUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQgPSB0b1NpZ25hbChpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCxcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlY2lzaW9uID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uKSA/IDIgOiB0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbixcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpc0ludGVybWVkaWF0ZVN0YXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG1hc2tpdG9QYXJzZU51bWJlcihcbiAgICAgICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gdmFsdWUgPiB0aGlzLm1heCgpIDogdmFsdWUgPCB0aGlzLm1pbigpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uQ2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlKCksXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCgpLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNJbnRlcm1lZGlhdGVTdGF0ZSgpIHx8XG4gICAgICAgICAgICB2YWx1ZSA8IHRoaXMubWluKCkgfHxcbiAgICAgICAgICAgIHZhbHVlID4gdGhpcy5tYXgoKSB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSgpID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZFZhbHVlID0gdHVpVmFsdWVCaW5kaW5nKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLm1pbigpIDwgMCkge1xuICAgICAgICAgICAgLy8gaVBob25lIGRvZXMgbm90IGhhdmUgbWludXMgc2lnbiBpZiBpbnB1dE1vZGUgaXMgZXF1YWwgdG8gJ251bWVyaWMnIC8gJ2RlY2ltYWwnXG4gICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uKCkgPyAnZGVjaW1hbCcgOiAnbnVtZXJpYyc7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdE1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxTZXBhcmF0b3IsIHRob3VzYW5kU2VwYXJhdG9yfSA9IHRoaXMubnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24oKSAmJiB0aGlzLnRleHRmaWVsZFZhbHVlKCkuaW5jbHVkZXMoZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHByZWNpc2lvbiA9IGRlY2ltYWxQYXJ0ID8gTWF0aC5taW4odGhpcy5wcmVjaXNpb24oKSArIDEsIDIwKSA6IDA7XG4gICAgICAgIGNvbnN0IHRha2VUaG91c2FuZCA9IHRob3VzYW5kU2VwYXJhdG9yLnJlcGVhdCg1KS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIERFRkFVTFRfTUFYX0xFTkdUSCArIHByZWNpc2lvbiArIHRha2VUaG91c2FuZDtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXNrID0gdHVpTWFza2l0byhcbiAgICAgICAgY29tcHV0ZWQoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAge2RlY2ltYWxNb2RlLCAuLi5udW1iZXJGb3JtYXR9ID0gdGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSB0aGlzLnByZWNpc2lvbigpLFxuICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZU1hc2soe1xuICAgICAgICAgICAgICAgICAgICAuLi5udW1iZXJGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyxcbiAgICAgICAgICAgICAgICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgICAgICAgICAgICAgICAgICBtYXg6IHRoaXMubWF4KCksXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXgoKSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeDogdGhpcy5wb3N0Zml4KCksXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxNb2RlID09PSAnYWx3YXlzJyA/IG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IDAsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBtaW4gPSBzaWduYWwodGhpcy5vcHRpb25zLm1pbik7XG4gICAgcHVibGljIHJlYWRvbmx5IG1heCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMubWF4KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wcmVmaXgpO1xuICAgIHB1YmxpYyByZWFkb25seSBwb3N0Zml4ID0gc2lnbmFsKHRoaXMub3B0aW9ucy5wb3N0Zml4KTtcblxuICAgIEBJbnB1dCgnbWluJylcbiAgICBwdWJsaWMgc2V0IG1pblNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHgsIHRoaXMubWF4KCkpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWF4JylcbiAgICBwdWJsaWMgc2V0IG1heFNldHRlcih4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWluTWF4TGltaXRzKHRoaXMubWluKCksIHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdwcmVmaXgnKVxuICAgIHB1YmxpYyBzZXQgcHJlZml4U2V0dGVyKHg6IHN0cmluZykge1xuICAgICAgICB0aGlzLnByZWZpeC5zZXQoeCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyh2NSk6IHJlcGxhY2Ugd2l0aCBzaWduYWwgaW5wdXRcbiAgICBASW5wdXQoJ3Bvc3RmaXgnKVxuICAgIHB1YmxpYyBzZXQgcG9zdGZpeFNldHRlcih4OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wb3N0Zml4LnNldCh4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKE51bWJlci5pc05hTih2YWx1ZSkgPyBudWxsIDogdmFsdWUpO1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dGZpZWxkVmFsdWUuc2V0KHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcm1lZGlhdGVTdGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBtYXNraXRvUGFyc2VOdW1iZXIoXG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZFZhbHVlKCksXG4gICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCgpLmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkgJiYgIXRoaXMucmVhZE9ubHkoKSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0ZmllbGRWYWx1ZS5zZXQodGhpcy5wcmVmaXgoKSArIHRoaXMucG9zdGZpeCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5wcmVmaXgoKSAhPT0gQ0hBUl9NSU5VUyA/IHRoaXMucHJlZml4KCkgOiAnJykgK1xuICAgICAgICAgICAgdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOdW1iZXIgY2FuIHNhdGlzZnkgaW50ZXJ2YWwgW051bWJlci5NSU5fU0FGRV9JTlRFR0VSOyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl1cbiAgICAgICAgICAgICAgICAgKiBidXQgaXRzIHJvdW5kaW5nIGNhbiB2aW9sYXRlIGl0LlxuICAgICAgICAgICAgICAgICAqIEJlZm9yZSBCaWdJbnQgc3VwcG9ydCB0aGVyZSBpcyBubyBwZXJmZWN0IHNvbHV0aW9uIOKAkyBvbmx5IHRyYWRlIG9mZi5cbiAgICAgICAgICAgICAgICAgKiBObyByb3VuZGluZyBpcyBiZXR0ZXIgdGhhbiBsb3NlIHByZWNpc2lvbiBhbmQgaW5jb3JyZWN0IG11dGF0aW9uIG9mIGFscmVhZHkgdmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0dWlJc1NhZmVUb1JvdW5kKHZhbHVlLCB0aGlzLnByZWNpc2lvbigpKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJlY2lzaW9uKClcbiAgICAgICAgICAgICAgICAgICAgOiBJbmZpbml0eSxcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoQ0hBUl9IWVBIRU4sIENIQVJfTUlOVVMpICtcbiAgICAgICAgICAgIHRoaXMucG9zdGZpeCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVNaW5NYXhMaW1pdHMoXG4gICAgICAgIG51bGxhYmxlTWluOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBudWxsYWJsZU1heDogbnVtYmVyIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNaW4pID8/XG4gICAgICAgICAgICBudWxsYWJsZU1pbiA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1pbjtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNYXgpID8/XG4gICAgICAgICAgICBudWxsYWJsZU1heCA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1heDtcblxuICAgICAgICB0aGlzLm1pbi5zZXQoTWF0aC5taW4obWluLCBtYXgpKTtcbiAgICAgICAgdGhpcy5tYXguc2V0KE1hdGgubWF4KG1pbiwgbWF4KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhwYXJhbXM6IE1hc2tpdG9OdW1iZXJQYXJhbXMpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHtwcmVmaXggPSAnJywgcG9zdGZpeCA9ICcnfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLm9wdGlvbnN9ID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IocGFyYW1zKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbENhbGlicmF0aW9uUGx1Z2luID0gbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbihcbiAgICAgICAgICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgbWluOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICAgICAgICBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4sXG4gICAgICAgICAgICAgICAgbWFza2l0b0NhcmV0R3VhcmQoKHZhbHVlKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCAtIHBvc3RmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNyQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekYsT0FBTyxFQUFDLFVBQVUsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDZCQUE2QixD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V1EsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBbEJuQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1AsWUFBWSx5QkFBeUI7d0JBQ3JDLHdCQUF3QixDQUFDLElBQUksQ0FBQzt3QkFDOUIsdUJBQXVCLENBQUMsd0JBQXdCLENBQUM7cUJBQ3BEO29CQUNELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO29CQUNwRCxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLGtCQUFrQixFQUFFLGFBQWE7d0JBQ2pDLGtCQUFrQixFQUNkLGdFQUFnRTt3QkFDcEUsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtpQkFDSjs4QkF3RmMsU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxLQUFLO2dCQU1ELFNBQVM7c0JBRG5CLEtBQUs7dUJBQUMsS0FBSztnQkFPRCxZQUFZO3NCQUR0QixLQUFLO3VCQUFDLFFBQVE7Z0JBT0osYUFBYTtzQkFEdkIsS0FBSzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgSW5wdXQsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge01hc2tpdG9EaXJlY3RpdmV9IGZyb20gJ0BtYXNraXRvL2FuZ3VsYXInO1xuaW1wb3J0IHR5cGUge01hc2tpdG9PcHRpb25zfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7bWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbn0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQgdHlwZSB7TWFza2l0b051bWJlclBhcmFtc30gZnJvbSAnQG1hc2tpdG8va2l0JztcbmltcG9ydCB7XG4gICAgbWFza2l0b0NhcmV0R3VhcmQsXG4gICAgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IsXG4gICAgbWFza2l0b1BhcnNlTnVtYmVyLFxufSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIFR1aUNvbnRyb2wsIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtDSEFSX0hZUEhFTiwgQ0hBUl9NSU5VUywgVFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VFVJX0lTX0lPUywgdHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpSXNTYWZlVG9Sb3VuZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7XG4gICAgVHVpVGV4dGZpZWxkRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhUZXh0ZmllbGQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7VFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCwgVFVJX05VTUJFUl9GT1JNQVR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R1aUZvcm1hdE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7dHVpTWFza2l0b30gZnJvbSAnQHRhaWdhLXVpL2tpdC91dGlscyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX05VTUJFUl9PUFRJT05TfSBmcm9tICcuL2lucHV0LW51bWJlci5vcHRpb25zJztcblxuY29uc3QgREVGQVVMVF9NQVhfTEVOR1RIID0gMTg7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dE51bWJlcl0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXROdW1iZXJEaXJlY3RpdmUpLFxuICAgICAgICB0dWlGYWxsYmFja1ZhbHVlUHJvdmlkZXIobnVsbCksXG4gICAgICAgIHR1aVZhbHVlVHJhbnNmb3JtZXJGcm9tKFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyksXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aVdpdGhUZXh0ZmllbGQsIE1hc2tpdG9EaXJlY3RpdmVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICdbYXR0ci5pbnB1dE1vZGVdJzogJ2lucHV0TW9kZSgpJyxcbiAgICAgICAgJ1thdHRyLm1heExlbmd0aF0nOlxuICAgICAgICAgICAgJ2VsZW1lbnQubWF4TGVuZ3RoID4gMCA/IGVsZW1lbnQubWF4TGVuZ3RoIDogZGVmYXVsdE1heExlbmd0aCgpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoKScsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXROdW1iZXJEaXJlY3RpdmUgZXh0ZW5kcyBUdWlDb250cm9sPG51bWJlciB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGREaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQgPSB0b1NpZ25hbChpbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogVFVJX0RFRkFVTFRfTlVNQkVSX0ZPUk1BVCxcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0dGVkID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgbWFza2l0b1BhcnNlTnVtYmVyKHRoaXMudGV4dGZpZWxkLnZhbHVlKCksIHRoaXMubnVtYmVyRm9ybWF0KCkuZGVjaW1hbFNlcGFyYXRvciksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlY2lzaW9uID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgTnVtYmVyLmlzTmFOKHRoaXMubnVtYmVyRm9ybWF0KCkucHJlY2lzaW9uKSA/IDIgOiB0aGlzLm51bWJlckZvcm1hdCgpLnByZWNpc2lvbixcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bmZpbmlzaGVkID0gY29tcHV0ZWQoKHZhbHVlID0gdGhpcy5mb3JtYXR0ZWQoKSkgPT5cbiAgICAgICAgdmFsdWUgPCAwID8gdmFsdWUgPiB0aGlzLm1heCgpIDogdmFsdWUgPCB0aGlzLm1pbigpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25DaGFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybWF0dGVkKCk7XG5cbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMudW5maW5pc2hlZCgpIHx8XG4gICAgICAgICAgICB2YWx1ZSA8IHRoaXMubWluKCkgfHxcbiAgICAgICAgICAgIHZhbHVlID4gdGhpcy5tYXgoKSB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSgpID09PSB2YWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gaW5qZWN0KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRNb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0lPUyAmJiB0aGlzLm1pbigpIDwgMCkge1xuICAgICAgICAgICAgLy8gaVBob25lIGRvZXMgbm90IGhhdmUgbWludXMgc2lnbiBpZiBpbnB1dE1vZGUgaXMgZXF1YWwgdG8gJ251bWVyaWMnIC8gJ2RlY2ltYWwnXG4gICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlY2lzaW9uKCkgPyAnZGVjaW1hbCcgOiAnbnVtZXJpYyc7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdE1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qge2RlY2ltYWxTZXBhcmF0b3IsIHRob3VzYW5kU2VwYXJhdG9yfSA9IHRoaXMubnVtYmVyRm9ybWF0KCk7XG4gICAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID1cbiAgICAgICAgICAgICEhdGhpcy5wcmVjaXNpb24oKSAmJiB0aGlzLnRleHRmaWVsZC52YWx1ZSgpLmluY2x1ZGVzKGRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCBwcmVjaXNpb24gPSBkZWNpbWFsUGFydCA/IE1hdGgubWluKHRoaXMucHJlY2lzaW9uKCkgKyAxLCAyMCkgOiAwO1xuICAgICAgICBjb25zdCB0YWtlVGhvdXNhbmQgPSB0aG91c2FuZFNlcGFyYXRvci5yZXBlYXQoNSkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBERUZBVUxUX01BWF9MRU5HVEggKyBwcmVjaXNpb24gKyB0YWtlVGhvdXNhbmQ7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFzayA9IHR1aU1hc2tpdG8oXG4gICAgICAgIGNvbXB1dGVkKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHtkZWNpbWFsTW9kZSwgLi4ubnVtYmVyRm9ybWF0fSA9IHRoaXMubnVtYmVyRm9ybWF0KCksXG4gICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gdGhpcy5wcmVjaXNpb24oKSxcbiAgICAgICAgICAgICkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVNYXNrKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ubnVtYmVyRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMsXG4gICAgICAgICAgICAgICAgICAgIG1pbjogdGhpcy5taW4oKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLm1heCgpLFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IHRoaXMucHJlZml4KCksXG4gICAgICAgICAgICAgICAgICAgIHBvc3RmaXg6IHRoaXMucG9zdGZpeCgpLFxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsTW9kZSA9PT0gJ2Fsd2F5cycgPyBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgOiAwLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWluID0gc2lnbmFsKHRoaXMub3B0aW9ucy5taW4pO1xuICAgIHB1YmxpYyByZWFkb25seSBtYXggPSBzaWduYWwodGhpcy5vcHRpb25zLm1heCk7XG4gICAgcHVibGljIHJlYWRvbmx5IHByZWZpeCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMucHJlZml4KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcG9zdGZpeCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMucG9zdGZpeCk7XG5cbiAgICBASW5wdXQoJ21pbicpXG4gICAgcHVibGljIHNldCBtaW5TZXR0ZXIoeDogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1pbk1heExpbWl0cyh4LCB0aGlzLm1heCgpKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ21heCcpXG4gICAgcHVibGljIHNldCBtYXhTZXR0ZXIoeDogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1pbk1heExpbWl0cyh0aGlzLm1pbigpLCB4KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgncHJlZml4JylcbiAgICBwdWJsaWMgc2V0IHByZWZpeFNldHRlcih4OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wcmVmaXguc2V0KHgpO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdwb3N0Zml4JylcbiAgICBwdWJsaWMgc2V0IHBvc3RmaXhTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucG9zdGZpeC5zZXQoeCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICBpZiAoIXRoaXMudW5maW5pc2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTih0aGlzLmZvcm1hdHRlZCgpKSAmJiAhdGhpcy5yZWFkT25seSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRmaWVsZC52YWx1ZS5zZXQodGhpcy5wcmVmaXgoKSArIHRoaXMucG9zdGZpeCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5wcmVmaXgoKSAhPT0gQ0hBUl9NSU5VUyA/IHRoaXMucHJlZml4KCkgOiAnJykgK1xuICAgICAgICAgICAgdHVpRm9ybWF0TnVtYmVyKHZhbHVlLCB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5udW1iZXJGb3JtYXQoKSxcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOdW1iZXIgY2FuIHNhdGlzZnkgaW50ZXJ2YWwgW051bWJlci5NSU5fU0FGRV9JTlRFR0VSOyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl1cbiAgICAgICAgICAgICAgICAgKiBidXQgaXRzIHJvdW5kaW5nIGNhbiB2aW9sYXRlIGl0LlxuICAgICAgICAgICAgICAgICAqIEJlZm9yZSBCaWdJbnQgc3VwcG9ydCB0aGVyZSBpcyBubyBwZXJmZWN0IHNvbHV0aW9uIOKAkyBvbmx5IHRyYWRlIG9mZi5cbiAgICAgICAgICAgICAgICAgKiBObyByb3VuZGluZyBpcyBiZXR0ZXIgdGhhbiBsb3NlIHByZWNpc2lvbiBhbmQgaW5jb3JyZWN0IG11dGF0aW9uIG9mIGFscmVhZHkgdmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB0dWlJc1NhZmVUb1JvdW5kKHZhbHVlLCB0aGlzLnByZWNpc2lvbigpKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJlY2lzaW9uKClcbiAgICAgICAgICAgICAgICAgICAgOiBJbmZpbml0eSxcbiAgICAgICAgICAgIH0pLnJlcGxhY2UoQ0hBUl9IWVBIRU4sIENIQVJfTUlOVVMpICtcbiAgICAgICAgICAgIHRoaXMucG9zdGZpeCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVNaW5NYXhMaW1pdHMoXG4gICAgICAgIG51bGxhYmxlTWluOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBudWxsYWJsZU1heDogbnVtYmVyIHwgbnVsbCxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNaW4pID8/XG4gICAgICAgICAgICBudWxsYWJsZU1pbiA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1pbjtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXI/LmZyb21Db250cm9sVmFsdWUobnVsbGFibGVNYXgpID8/XG4gICAgICAgICAgICBudWxsYWJsZU1heCA/P1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1heDtcblxuICAgICAgICB0aGlzLm1pbi5zZXQoTWF0aC5taW4obWluLCBtYXgpKTtcbiAgICAgICAgdGhpcy5tYXguc2V0KE1hdGgubWF4KG1pbiwgbWF4KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlTWFzayhwYXJhbXM6IE1hc2tpdG9OdW1iZXJQYXJhbXMpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IHtwcmVmaXggPSAnJywgcG9zdGZpeCA9ICcnfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3Qge3BsdWdpbnMsIC4uLm9wdGlvbnN9ID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IocGFyYW1zKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbENhbGlicmF0aW9uUGx1Z2luID0gbWFza2l0b0luaXRpYWxDYWxpYnJhdGlvblBsdWdpbihcbiAgICAgICAgICAgIG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgbWluOiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixcbiAgICAgICAgICAgICAgICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgLi4ucGx1Z2lucyxcbiAgICAgICAgICAgICAgICBpbml0aWFsQ2FsaWJyYXRpb25QbHVnaW4sXG4gICAgICAgICAgICAgICAgbWFza2l0b0NhcmV0R3VhcmQoKHZhbHVlKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCAtIHBvc3RmaXgubGVuZ3RoLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { NgIf } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, DestroyRef, inject, Input, NgZone, signal, ViewEncapsulation, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, Input, NgZone, signal, ViewEncapsulation, } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { tuiZonefree } from '@taiga-ui/cdk/observables';
5
5
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
@@ -14,31 +14,32 @@ class TuiInputNumberStep {
14
14
  constructor() {
15
15
  this.destroyRef = inject(DestroyRef);
16
16
  this.zone = inject(NgZone);
17
- this.element = tuiInjectElement();
18
- this.textfieldOptions = inject(TUI_TEXTFIELD_OPTIONS);
17
+ this.el = tuiInjectElement();
18
+ this.appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;
19
19
  this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
20
- this.inputNumber = inject(TuiInputNumberDirective, { self: true });
20
+ this.input = inject(TuiInputNumberDirective, { self: true });
21
21
  this.step = signal(this.options.step);
22
+ this.value = computed(() => this.input.value() ?? NaN);
22
23
  }
23
24
  // TODO(v5): replace with signal input
24
25
  set stepSetter(x) {
25
26
  this.step.set(x);
26
27
  }
27
28
  onStep(step) {
28
- const { inputNumber } = this;
29
- const newValue = tuiClamp((inputNumber.value() ?? 0) + step, inputNumber.min(), inputNumber.max());
30
- if (this.inputNumber.value() === null) {
29
+ const current = Number.isNaN(this.value()) ? 0 : this.value();
30
+ const value = tuiClamp(current + step, this.input.min(), this.input.max());
31
+ if (Number.isNaN(this.value())) {
31
32
  timer(0)
32
33
  .pipe(tuiZonefree(this.zone), takeUntilDestroyed(this.destroyRef))
33
34
  .subscribe(() => {
34
- const caretIndex = this.element.value.length - inputNumber.postfix().length;
35
- this.element.setSelectionRange(caretIndex, caretIndex);
35
+ const caretIndex = this.el.value.length - this.input.postfix().length;
36
+ this.el.setSelectionRange(caretIndex, caretIndex);
36
37
  });
37
38
  }
38
- this.inputNumber.setValue(newValue);
39
+ this.input.setValue(value);
39
40
  }
40
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberStep, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { stepSetter: ["step", "stepSetter"] }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { stepSetter: ["step", "stepSetter"] }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() >= input.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"el.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() <= input.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"el.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
43
  }
43
44
  export { TuiInputNumberStep };
44
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberStep, decorators: [{
@@ -48,9 +49,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
48
49
  '(keydown.arrowDown.prevent)': 'onStep(-step())',
49
50
  '(keydown.arrowUp.prevent)': 'onStep(step())',
50
51
  '[class._with-buttons]': 'step()',
51
- }, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"] }]
52
+ }, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() >= input.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"el.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance()\"\n [disabled]=\"!input.interactive() || value() <= input.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"el.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"] }]
52
53
  }], propDecorators: { stepSetter: [{
53
54
  type: Input,
54
55
  args: ['step']
55
56
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0ZXAvaW5wdXQtbnVtYmVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0ZXAvaW5wdXQtbnVtYmVyLXN0ZXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDM0QsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsR0FDdEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTNCLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUVqRSxNQWVhLGtCQUFrQjtJQWYvQjtRQWdCcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLFlBQU8sR0FBRyxnQkFBZ0IsRUFBb0IsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqRCxZQUFPLEdBQUcsTUFBTSxDQUF3Qix3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xFLGdCQUFXLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDNUQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBNkJ2RDtJQTNCRyxzQ0FBc0M7SUFDdEMsSUFDVyxVQUFVLENBQUMsQ0FBUztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsTUFBTSxDQUFDLElBQVk7UUFDekIsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQ3JCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFDakMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUNqQixXQUFXLENBQUMsR0FBRyxFQUFFLENBQ3BCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25DLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNqRSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLE1BQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUU3RCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0FwQ1Esa0JBQWtCO21HQUFsQixrQkFBa0IseVZDekMvQiw0cUNBb0NBLDhnRERQYyxJQUFJLDZGQUFFLFNBQVMsb0lBQUUsbUJBQW1COztTQVlyQyxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFmOUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sNkJBQTZCLFdBQzlCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxpQkFHaEMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixlQUFlLEVBQUUsTUFBTTt3QkFDdkIsNkJBQTZCLEVBQUUsaUJBQWlCO3dCQUNoRCwyQkFBMkIsRUFBRSxnQkFBZ0I7d0JBQzdDLHVCQUF1QixFQUFFLFFBQVE7cUJBQ3BDOzhCQWNVLFVBQVU7c0JBRHBCLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBzaWduYWwsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpWm9uZWZyZWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHtUdWlCdXR0b259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgVFVJX1RFWFRGSUVMRF9PUFRJT05TLFxuICAgIFR1aVRleHRmaWVsZENvbnRlbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7dGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aUlucHV0TnVtYmVyRGlyZWN0aXZlfSBmcm9tICcuLi9pbnB1dC1udW1iZXIuZGlyZWN0aXZlJztcbmltcG9ydCB0eXBlIHtUdWlJbnB1dE51bWJlck9wdGlvbnN9IGZyb20gJy4uL2lucHV0LW51bWJlci5vcHRpb25zJztcbmltcG9ydCB7VFVJX0lOUFVUX05VTUJFUl9PUFRJT05TfSBmcm9tICcuLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dE51bWJlcl1bc3RlcF0nLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBUdWlCdXR0b24sIFR1aVRleHRmaWVsZENvbnRlbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1udW1iZXItc3RlcC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXItc3RlcC5zdHlsZS5sZXNzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dEb3duLnByZXZlbnQpJzogJ29uU3RlcCgtc3RlcCgpKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd1VwLnByZXZlbnQpJzogJ29uU3RlcChzdGVwKCkpJyxcbiAgICAgICAgJ1tjbGFzcy5fd2l0aC1idXR0b25zXSc6ICdzdGVwKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0TnVtYmVyU3RlcCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnQgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRleHRmaWVsZE9wdGlvbnMgPSBpbmplY3QoVFVJX1RFWFRGSUVMRF9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdDxUdWlJbnB1dE51bWJlck9wdGlvbnM+KFRVSV9JTlBVVF9OVU1CRVJfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TnVtYmVyID0gaW5qZWN0KFR1aUlucHV0TnVtYmVyRGlyZWN0aXZlLCB7c2VsZjogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdGVwID0gc2lnbmFsKHRoaXMub3B0aW9ucy5zdGVwKTtcblxuICAgIC8vIFRPRE8odjUpOiByZXBsYWNlIHdpdGggc2lnbmFsIGlucHV0XG4gICAgQElucHV0KCdzdGVwJylcbiAgICBwdWJsaWMgc2V0IHN0ZXBTZXR0ZXIoeDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc3RlcC5zZXQoeCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3RlcChzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2lucHV0TnVtYmVyfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdHVpQ2xhbXAoXG4gICAgICAgICAgICAoaW5wdXROdW1iZXIudmFsdWUoKSA/PyAwKSArIHN0ZXAsXG4gICAgICAgICAgICBpbnB1dE51bWJlci5taW4oKSxcbiAgICAgICAgICAgIGlucHV0TnVtYmVyLm1heCgpLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0TnVtYmVyLnZhbHVlKCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWVyKDApXG4gICAgICAgICAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUodGhpcy56b25lKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhcmV0SW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlLmxlbmd0aCAtIGlucHV0TnVtYmVyLnBvc3RmaXgoKS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGNhcmV0SW5kZXgsIGNhcmV0SW5kZXgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dE51bWJlci5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHVpVGV4dGZpZWxkQ29udGVudD5cbiAgICA8c2VjdGlvblxuICAgICAgICAqbmdJZj1cInN0ZXAoKVwiXG4gICAgICAgIGNsYXNzPVwidC1pbnB1dC1udW1iZXItYnV0dG9uc1wiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvblwiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJ0ZXh0ZmllbGRPcHRpb25zLmFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlucHV0TnVtYmVyLmludGVyYWN0aXZlKCkgfHwgaW5wdXROdW1iZXIudmFsdWUoKSEgPj0gaW5wdXROdW1iZXIubWF4KClcIlxuICAgICAgICAgICAgW2ljb25TdGFydF09XCJvcHRpb25zLmljb25zLmluY3JlYXNlXCJcbiAgICAgICAgICAgIChjbGljay5wcmV2ZW50KT1cIm9uU3RlcChzdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbGVtZW50LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICArXG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cInRleHRmaWVsZE9wdGlvbnMuYXBwZWFyYW5jZSgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaW5wdXROdW1iZXIuaW50ZXJhY3RpdmUoKSB8fCBpbnB1dE51bWJlci52YWx1ZSgpISA8PSBpbnB1dE51bWJlci5taW4oKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cIm9wdGlvbnMuaWNvbnMuZGVjcmVhc2VcIlxuICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25TdGVwKC1zdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbGVtZW50LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICAtXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvc2VjdGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0ZXAvaW5wdXQtbnVtYmVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyL3N0ZXAvaW5wdXQtbnVtYmVyLXN0ZXAudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzNELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsbUJBQW1CLEdBQ3RCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUzQixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFakUsTUFlYSxrQkFBa0I7SUFmL0I7UUFnQnFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQixPQUFFLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7UUFDMUMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUN0RCxZQUFPLEdBQUcsTUFBTSxDQUF3Qix3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xFLFVBQUssR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN0RCxTQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0tBd0J4RTtJQXRCRyxzQ0FBc0M7SUFDdEMsSUFDVyxVQUFVLENBQUMsQ0FBUztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsTUFBTSxDQUFDLElBQVk7UUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFM0UsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQzVCLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNqRSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFFdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7K0dBaENRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlWQzFDL0IsOGtDQW9DQSw4Z0RETmMsSUFBSSw2RkFBRSxTQUFTLG9JQUFFLG1CQUFtQjs7U0FZckMsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBZjlCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDZCQUE2QixXQUM5QixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsbUJBQW1CLENBQUMsaUJBR2hDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLDZCQUE2QixFQUFFLGlCQUFpQjt3QkFDaEQsMkJBQTJCLEVBQUUsZ0JBQWdCO3dCQUM3Qyx1QkFBdUIsRUFBRSxRQUFRO3FCQUNwQzs4QkFlVSxVQUFVO3NCQURwQixLQUFLO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBEZXN0cm95UmVmLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgc2lnbmFsLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aVpvbmVmcmVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlDbGFtcH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7VHVpQnV0dG9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlUZXh0ZmllbGRDb250ZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge3RpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlJbnB1dE51bWJlckRpcmVjdGl2ZX0gZnJvbSAnLi4vaW5wdXQtbnVtYmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgdHlwZSB7VHVpSW5wdXROdW1iZXJPcHRpb25zfSBmcm9tICcuLi9pbnB1dC1udW1iZXIub3B0aW9ucyc7XG5pbXBvcnQge1RVSV9JTlBVVF9OVU1CRVJfT1BUSU9OU30gZnJvbSAnLi4vaW5wdXQtbnVtYmVyLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXROdW1iZXJdW3N0ZXBdJyxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVHVpQnV0dG9uLCBUdWlUZXh0ZmllbGRDb250ZW50XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLXN0ZXAudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtbnVtYmVyLXN0ZXAuc3R5bGUubGVzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyxcbiAgICAgICAgJyhrZXlkb3duLmFycm93RG93bi5wcmV2ZW50KSc6ICdvblN0ZXAoLXN0ZXAoKSknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dVcC5wcmV2ZW50KSc6ICdvblN0ZXAoc3RlcCgpKScsXG4gICAgICAgICdbY2xhc3MuX3dpdGgtYnV0dG9uc10nOiAnc3RlcCgpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE51bWJlclN0ZXAge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IGluamVjdChUVUlfVEVYVEZJRUxEX09QVElPTlMpLmFwcGVhcmFuY2U7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3Q8VHVpSW5wdXROdW1iZXJPcHRpb25zPihUVUlfSU5QVVRfTlVNQkVSX09QVElPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpbnB1dCA9IGluamVjdChUdWlJbnB1dE51bWJlckRpcmVjdGl2ZSwge3NlbGY6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RlcCA9IHNpZ25hbCh0aGlzLm9wdGlvbnMuc3RlcCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dC52YWx1ZSgpID8/IE5hTik7XG5cbiAgICAvLyBUT0RPKHY1KTogcmVwbGFjZSB3aXRoIHNpZ25hbCBpbnB1dFxuICAgIEBJbnB1dCgnc3RlcCcpXG4gICAgcHVibGljIHNldCBzdGVwU2V0dGVyKHg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnN0ZXAuc2V0KHgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0ZXAoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBOdW1iZXIuaXNOYU4odGhpcy52YWx1ZSgpKSA/IDAgOiB0aGlzLnZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdHVpQ2xhbXAoY3VycmVudCArIHN0ZXAsIHRoaXMuaW5wdXQubWluKCksIHRoaXMuaW5wdXQubWF4KCkpO1xuXG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4odGhpcy52YWx1ZSgpKSkge1xuICAgICAgICAgICAgdGltZXIoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0dWlab25lZnJlZSh0aGlzLnpvbmUpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FyZXRJbmRleCA9IHRoaXMuZWwudmFsdWUubGVuZ3RoIC0gdGhpcy5pbnB1dC5wb3N0Zml4KCkubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuc2V0U2VsZWN0aW9uUmFuZ2UoY2FyZXRJbmRleCwgY2FyZXRJbmRleCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0dWlUZXh0ZmllbGRDb250ZW50PlxuICAgIDxzZWN0aW9uXG4gICAgICAgICpuZ0lmPVwic3RlcCgpXCJcbiAgICAgICAgY2xhc3M9XCJ0LWlucHV0LW51bWJlci1idXR0b25zXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlucHV0LmludGVyYWN0aXZlKCkgfHwgdmFsdWUoKSA+PSBpbnB1dC5tYXgoKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cIm9wdGlvbnMuaWNvbnMuaW5jcmVhc2VcIlxuICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25TdGVwKHN0ZXAoKSlcIlxuICAgICAgICAgICAgKG1vdXNlZG93bi5wcmV2ZW50KT1cImVsLmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICArXG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uXCJcbiAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlucHV0LmludGVyYWN0aXZlKCkgfHwgdmFsdWUoKSA8PSBpbnB1dC5taW4oKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cIm9wdGlvbnMuaWNvbnMuZGVjcmVhc2VcIlxuICAgICAgICAgICAgKGNsaWNrLnByZXZlbnQpPVwib25TdGVwKC1zdGVwKCkpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24ucHJldmVudCk9XCJlbC5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgLVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, computed, inject, Input, signal, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, Input, signal, } from '@angular/core';
3
3
  import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
4
+ import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
4
5
  import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
5
- import { tuiAsTextfieldAccessor, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
6
+ import { tuiAsTextfieldAccessor, TuiTextfieldDirective, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
6
7
  import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
7
8
  import { tuiIsFlat } from '@taiga-ui/kit/utils';
8
9
  import * as i0 from "@angular/core";
@@ -10,12 +11,16 @@ import * as i1 from "@taiga-ui/core/components/textfield";
10
11
  class TuiNativeSelect extends TuiControl {
11
12
  constructor() {
12
13
  super(...arguments);
14
+ this.textfield = inject(TuiTextfieldDirective);
13
15
  this.isFlat = tuiIsFlat;
14
16
  this.placeholder = signal('');
15
17
  this.itemsHandlers = inject(TUI_ITEMS_HANDLERS);
16
18
  this.stringified = computed((value = this.value()) => tuiIsPresent(value) ? this.itemsHandlers.stringify()(value) : '');
17
19
  this.showPlaceholder = computed(() => this.placeholder() && !this.stringified());
18
20
  this.isSelected = computed((value = this.value()) => (x) => tuiIsPresent(value) && this.itemsHandlers.identityMatcher()(x, value));
21
+ this.valueEffect = effect(() => {
22
+ this.textfield.value.set(this.stringified());
23
+ }, TUI_ALLOW_SIGNAL_WRITES);
19
24
  this.items = [];
20
25
  this.labels = [];
21
26
  }
@@ -31,7 +36,7 @@ class TuiNativeSelect extends TuiControl {
31
36
  this.onChange(items[index - (this.showPlaceholder() ? 1 : 0)] ?? null);
32
37
  }
33
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeSelect, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeSelect, isStandalone: true, selector: "select[tuiSelect]", inputs: { items: "items", labels: "labels", placeholderSetter: ["placeholder", "placeholderSetter"] }, host: { listeners: { "change": "selectOption($event.target.options.selectedIndex)" }, properties: { "attr.aria-invalid": "invalid()", "disabled": "!interactive()", "value": "stringified()" } }, providers: [tuiAsTextfieldAccessor(TuiNativeSelect), tuiAsControl(TuiNativeSelect)], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }], ngImport: i0, template: "<option\n *ngIf=\"showPlaceholder()\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder() }}\n</option>\n\n<ng-container *ngIf=\"items && !isFlat(items); else flatItems\">\n <optgroup\n *ngFor=\"let group of labels; let index = index\"\n [label]=\"labels[index]\"\n >\n <ng-container *ngTemplateOutlet=\"options; context: {$implicit: items[index]}\" />\n </optgroup>\n</ng-container>\n\n<ng-template #flatItems>\n <ng-container *ngTemplateOutlet=\"options; context: {$implicit: items}\" />\n</ng-template>\n\n<ng-template\n #options\n let-items\n>\n <option\n *ngFor=\"let option of items\"\n [disabled]=\"itemsHandlers.disabledItemHandler()(option)\"\n [selected]=\"isSelected()(option)\"\n [value]=\"itemsHandlers.stringify()(option)\"\n >\n {{ itemsHandlers.stringify()(option) }}\n </option>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeSelect, isStandalone: true, selector: "select[tuiSelect]", inputs: { items: "items", labels: "labels", placeholderSetter: ["placeholder", "placeholderSetter"] }, host: { listeners: { "change": "selectOption($event.target.options.selectedIndex)" }, properties: { "attr.aria-invalid": "invalid()", "disabled": "!interactive()" } }, providers: [tuiAsTextfieldAccessor(TuiNativeSelect), tuiAsControl(TuiNativeSelect)], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }], ngImport: i0, template: "<option\n *ngIf=\"showPlaceholder()\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder() }}\n</option>\n\n<ng-container *ngIf=\"items && !isFlat(items); else flatItems\">\n <optgroup\n *ngFor=\"let group of labels; let index = index\"\n [label]=\"labels[index]\"\n >\n <ng-container *ngTemplateOutlet=\"options; context: {$implicit: items[index]}\" />\n </optgroup>\n</ng-container>\n\n<ng-template #flatItems>\n <ng-container *ngTemplateOutlet=\"options; context: {$implicit: items}\" />\n</ng-template>\n\n<ng-template\n #options\n let-items\n>\n <option\n *ngFor=\"let option of items\"\n [disabled]=\"itemsHandlers.disabledItemHandler()(option)\"\n [selected]=\"isSelected()(option)\"\n [value]=\"itemsHandlers.stringify()(option)\"\n >\n {{ itemsHandlers.stringify()(option) }}\n </option>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
40
  }
36
41
  export { TuiNativeSelect };
37
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeSelect, decorators: [{
@@ -39,7 +44,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
39
44
  args: [{ standalone: true, selector: 'select[tuiSelect]', imports: [NgForOf, NgIf, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsTextfieldAccessor(TuiNativeSelect), tuiAsControl(TuiNativeSelect)], hostDirectives: [TuiWithTextfield], host: {
40
45
  '[attr.aria-invalid]': 'invalid()',
41
46
  '[disabled]': '!interactive()',
42
- '[value]': 'stringified()',
43
47
  '(change)': 'selectOption($event.target.options.selectedIndex)',
44
48
  }, template: "<option\n *ngIf=\"showPlaceholder()\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder() }}\n</option>\n\n<ng-container *ngIf=\"items && !isFlat(items); else flatItems\">\n <optgroup\n *ngFor=\"let group of labels; let index = index\"\n [label]=\"labels[index]\"\n >\n <ng-container *ngTemplateOutlet=\"options; context: {$implicit: items[index]}\" />\n </optgroup>\n</ng-container>\n\n<ng-template #flatItems>\n <ng-container *ngTemplateOutlet=\"options; context: {$implicit: items}\" />\n</ng-template>\n\n<ng-template\n #options\n let-items\n>\n <option\n *ngFor=\"let option of items\"\n [disabled]=\"itemsHandlers.disabledItemHandler()(option)\"\n [selected]=\"isSelected()(option)\"\n [value]=\"itemsHandlers.stringify()(option)\"\n >\n {{ itemsHandlers.stringify()(option) }}\n </option>\n</ng-template>\n" }]
45
49
  }], propDecorators: { items: [{
@@ -50,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
50
54
  type: Input,
51
55
  args: ['placeholder']
52
56
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9zZWxlY3QvbmF0aXZlLXNlbGVjdC9uYXRpdmUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3NlbGVjdC9uYXRpdmUtc2VsZWN0L25hdGl2ZS1zZWxlY3QudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUUvRCxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRTlDLE1BZWEsZUFDVCxTQUFRLFVBQW9CO0lBaEJoQzs7UUFtQnVCLFdBQU0sR0FBRyxTQUFTLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsa0JBQWEsR0FBd0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFaEUsZ0JBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FDL0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ25FLENBQUM7UUFFaUIsb0JBQWUsR0FBRyxRQUFRLENBQ3pDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FDbEQsQ0FBQztRQUVpQixlQUFVLEdBQUcsUUFBUSxDQUNwQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUNyQixDQUFDLENBQUksRUFBRSxFQUFFLENBQ0wsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUNoRixDQUFDO1FBR0ssVUFBSyxHQUFzRCxFQUFFLENBQUM7UUFHOUQsV0FBTSxHQUFzQixFQUFFLENBQUM7S0FpQnpDO0lBZkcsOEJBQThCO0lBQzlCLElBQ1csaUJBQWlCLENBQUMsQ0FBUztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWU7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRVMsWUFBWSxDQUFDLEtBQWE7UUFDaEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBUSxDQUFDO1FBRWhELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBMUNRLGVBQWU7bUdBQWYsZUFBZSx5V0FUYixDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyx1R0MxQnZGLHM1QkFtQ0EsNENEWmMsT0FBTyxtSEFBRSxJQUFJLDZGQUFFLGdCQUFnQjs7U0FZaEMsZUFBZTs0RkFBZixlQUFlO2tCQWYzQixTQUFTO2lDQUNNLElBQUksWUFDTixtQkFBbUIsV0FDcEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLG1CQUV6Qix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsc0JBQXNCLGlCQUFpQixFQUFFLFlBQVksaUJBQWlCLENBQUMsa0JBQ25FLENBQUMsZ0JBQWdCLENBQUMsUUFDNUI7d0JBQ0YscUJBQXFCLEVBQUUsV0FBVzt3QkFDbEMsWUFBWSxFQUFFLGdCQUFnQjt3QkFDOUIsU0FBUyxFQUFFLGVBQWU7d0JBQzFCLFVBQVUsRUFBRSxtREFBbUQ7cUJBQ2xFOzhCQXlCTSxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsTUFBTTtzQkFEWixLQUFLO2dCQUtLLGlCQUFpQjtzQkFEM0IsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7dHVpSXNQcmVzZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aVRleHRmaWVsZEFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIHR1aUFzVGV4dGZpZWxkQWNjZXNzb3IsXG4gICAgVHVpV2l0aFRleHRmaWVsZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHR5cGUge1R1aUl0ZW1zSGFuZGxlcnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHtUVUlfSVRFTVNfSEFORExFUlN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHt0dWlJc0ZsYXR9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2VsZWN0W3R1aVNlbGVjdF0nLFxuICAgIGltcG9ydHM6IFtOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF0aXZlLXNlbGVjdC50ZW1wbGF0ZS5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFt0dWlBc1RleHRmaWVsZEFjY2Vzc29yKFR1aU5hdGl2ZVNlbGVjdCksIHR1aUFzQ29udHJvbChUdWlOYXRpdmVTZWxlY3QpXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aVdpdGhUZXh0ZmllbGRdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtaW52YWxpZF0nOiAnaW52YWxpZCgpJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnIWludGVyYWN0aXZlKCknLFxuICAgICAgICAnW3ZhbHVlXSc6ICdzdHJpbmdpZmllZCgpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ3NlbGVjdE9wdGlvbigkZXZlbnQudGFyZ2V0Lm9wdGlvbnMuc2VsZWN0ZWRJbmRleCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aU5hdGl2ZVNlbGVjdDxUPlxuICAgIGV4dGVuZHMgVHVpQ29udHJvbDxUIHwgbnVsbD5cbiAgICBpbXBsZW1lbnRzIFR1aVRleHRmaWVsZEFjY2Vzc29yPFQ+XG57XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRmxhdCA9IHR1aUlzRmxhdDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBzaWduYWwoJycpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpdGVtc0hhbmRsZXJzOiBUdWlJdGVtc0hhbmRsZXJzPFQ+ID0gaW5qZWN0KFRVSV9JVEVNU19IQU5ETEVSUyk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyaW5naWZpZWQgPSBjb21wdXRlZCgodmFsdWUgPSB0aGlzLnZhbHVlKCkpID0+XG4gICAgICAgIHR1aUlzUHJlc2VudCh2YWx1ZSkgPyB0aGlzLml0ZW1zSGFuZGxlcnMuc3RyaW5naWZ5KCkodmFsdWUpIDogJycsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzaG93UGxhY2Vob2xkZXIgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5wbGFjZWhvbGRlcigpICYmICF0aGlzLnN0cmluZ2lmaWVkKCksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1NlbGVjdGVkID0gY29tcHV0ZWQoXG4gICAgICAgICh2YWx1ZSA9IHRoaXMudmFsdWUoKSkgPT5cbiAgICAgICAgICAgICh4OiBUKSA9PlxuICAgICAgICAgICAgICAgIHR1aUlzUHJlc2VudCh2YWx1ZSkgJiYgdGhpcy5pdGVtc0hhbmRsZXJzLmlkZW50aXR5TWF0Y2hlcigpKHgsIHZhbHVlKSxcbiAgICApO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgVFtdPiB8IHJlYWRvbmx5IFRbXSB8IG51bGwgPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIFRPRE8odjUpOiB1c2Ugc2lnbmFsIGlucHV0c1xuICAgIEBJbnB1dCgncGxhY2Vob2xkZXInKVxuICAgIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXJTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIuc2V0KHgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlbGVjdE9wdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gKHRoaXMuaXRlbXM/LmZsYXQoKSA/PyBbXSkgYXMgVFtdO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UoaXRlbXNbaW5kZXggLSAodGhpcy5zaG93UGxhY2Vob2xkZXIoKSA/IDEgOiAwKV0gPz8gbnVsbCk7XG4gICAgfVxufVxuIiwiPG9wdGlvblxuICAgICpuZ0lmPVwic2hvd1BsYWNlaG9sZGVyKClcIlxuICAgIGRpc2FibGVkXG4gICAgc2VsZWN0ZWRcbiAgICB2YWx1ZT1cIlwiXG4+XG4gICAge3sgcGxhY2Vob2xkZXIoKSB9fVxuPC9vcHRpb24+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcyAmJiAhaXNGbGF0KGl0ZW1zKTsgZWxzZSBmbGF0SXRlbXNcIj5cbiAgICA8b3B0Z3JvdXBcbiAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxhYmVsczsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxzW2luZGV4XVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uczsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbXNbaW5kZXhdfVwiIC8+XG4gICAgPC9vcHRncm91cD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2ZsYXRJdGVtcz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uczsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbXN9XCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICNvcHRpb25zXG4gICAgbGV0LWl0ZW1zXG4+XG4gICAgPG9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGl0ZW1zXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW1zSGFuZGxlcnMuZGlzYWJsZWRJdGVtSGFuZGxlcigpKG9wdGlvbilcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCgpKG9wdGlvbilcIlxuICAgICAgICBbdmFsdWVdPVwiaXRlbXNIYW5kbGVycy5zdHJpbmdpZnkoKShvcHRpb24pXCJcbiAgICA+XG4gICAgICAgIHt7IGl0ZW1zSGFuZGxlcnMuc3RyaW5naWZ5KCkob3B0aW9uKSB9fVxuICAgIDwvb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9zZWxlY3QvbmF0aXZlLXNlbGVjdC9uYXRpdmUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3NlbGVjdC9uYXRpdmUtc2VsZWN0L25hdGl2ZS1zZWxlY3QudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFL0QsT0FBTyxFQUNILHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFOUMsTUFjYSxlQUNULFNBQVEsVUFBb0I7SUFmaEM7O1FBa0JxQixjQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFeEMsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUNuQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixrQkFBYSxHQUF3QixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVoRSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUMvRCxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbkUsQ0FBQztRQUVpQixvQkFBZSxHQUFHLFFBQVEsQ0FDekMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUNsRCxDQUFDO1FBRWlCLGVBQVUsR0FBRyxRQUFRLENBQ3BDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQ3JCLENBQUMsQ0FBSSxFQUFFLEVBQUUsQ0FDTCxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQ2hGLENBQUM7UUFFaUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUdyQixVQUFLLEdBQXNELEVBQUUsQ0FBQztRQUc5RCxXQUFNLEdBQXNCLEVBQUUsQ0FBQztLQWlCekM7SUFmRyw4QkFBOEI7SUFDOUIsSUFDVyxpQkFBaUIsQ0FBQyxDQUFTO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBZTtRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFUyxZQUFZLENBQUMsS0FBYTtRQUNoQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFRLENBQUM7UUFFaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQzsrR0FoRFEsZUFBZTttR0FBZixlQUFlLCtVQVJiLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLEVBQUUsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLHVHQzdCdkYsczVCQW1DQSw0Q0RUYyxPQUFPLG1IQUFFLElBQUksNkZBQUUsZ0JBQWdCOztTQVdoQyxlQUFlOzRGQUFmLGVBQWU7a0JBZDNCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG1CQUFtQixXQUNwQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsbUJBRXpCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxzQkFBc0IsaUJBQWlCLEVBQUUsWUFBWSxpQkFBaUIsQ0FBQyxrQkFDbkUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUM1Qjt3QkFDRixxQkFBcUIsRUFBRSxXQUFXO3dCQUNsQyxZQUFZLEVBQUUsZ0JBQWdCO3dCQUM5QixVQUFVLEVBQUUsbURBQW1EO3FCQUNsRTs4QkErQk0sS0FBSztzQkFEWCxLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFLSyxpQkFBaUI7c0JBRDNCLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfQUxMT1dfU0lHTkFMX1dSSVRFU30gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlJc1ByZXNlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQgdHlwZSB7VHVpVGV4dGZpZWxkQWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7XG4gICAgdHVpQXNUZXh0ZmllbGRBY2Nlc3NvcixcbiAgICBUdWlUZXh0ZmllbGREaXJlY3RpdmUsXG4gICAgVHVpV2l0aFRleHRmaWVsZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHR5cGUge1R1aUl0ZW1zSGFuZGxlcnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHtUVUlfSVRFTVNfSEFORExFUlN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHt0dWlJc0ZsYXR9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2VsZWN0W3R1aVNlbGVjdF0nLFxuICAgIGltcG9ydHM6IFtOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF0aXZlLXNlbGVjdC50ZW1wbGF0ZS5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFt0dWlBc1RleHRmaWVsZEFjY2Vzc29yKFR1aU5hdGl2ZVNlbGVjdCksIHR1aUFzQ29udHJvbChUdWlOYXRpdmVTZWxlY3QpXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1R1aVdpdGhUZXh0ZmllbGRdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtaW52YWxpZF0nOiAnaW52YWxpZCgpJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnIWludGVyYWN0aXZlKCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnc2VsZWN0T3B0aW9uKCRldmVudC50YXJnZXQub3B0aW9ucy5zZWxlY3RlZEluZGV4KScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTmF0aXZlU2VsZWN0PFQ+XG4gICAgZXh0ZW5kcyBUdWlDb250cm9sPFQgfCBudWxsPlxuICAgIGltcGxlbWVudHMgVHVpVGV4dGZpZWxkQWNjZXNzb3I8VD5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGREaXJlY3RpdmUpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRmxhdCA9IHR1aUlzRmxhdDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBzaWduYWwoJycpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpdGVtc0hhbmRsZXJzOiBUdWlJdGVtc0hhbmRsZXJzPFQ+ID0gaW5qZWN0KFRVSV9JVEVNU19IQU5ETEVSUyk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyaW5naWZpZWQgPSBjb21wdXRlZCgodmFsdWUgPSB0aGlzLnZhbHVlKCkpID0+XG4gICAgICAgIHR1aUlzUHJlc2VudCh2YWx1ZSkgPyB0aGlzLml0ZW1zSGFuZGxlcnMuc3RyaW5naWZ5KCkodmFsdWUpIDogJycsXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzaG93UGxhY2Vob2xkZXIgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5wbGFjZWhvbGRlcigpICYmICF0aGlzLnN0cmluZ2lmaWVkKCksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1NlbGVjdGVkID0gY29tcHV0ZWQoXG4gICAgICAgICh2YWx1ZSA9IHRoaXMudmFsdWUoKSkgPT5cbiAgICAgICAgICAgICh4OiBUKSA9PlxuICAgICAgICAgICAgICAgIHR1aUlzUHJlc2VudCh2YWx1ZSkgJiYgdGhpcy5pdGVtc0hhbmRsZXJzLmlkZW50aXR5TWF0Y2hlcigpKHgsIHZhbHVlKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHRoaXMuc3RyaW5naWZpZWQoKSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IFJlYWRvbmx5QXJyYXk8cmVhZG9ubHkgVFtdPiB8IHJlYWRvbmx5IFRbXSB8IG51bGwgPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIFRPRE8odjUpOiB1c2Ugc2lnbmFsIGlucHV0c1xuICAgIEBJbnB1dCgncGxhY2Vob2xkZXInKVxuICAgIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXJTZXR0ZXIoeDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIuc2V0KHgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlbGVjdE9wdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gKHRoaXMuaXRlbXM/LmZsYXQoKSA/PyBbXSkgYXMgVFtdO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UoaXRlbXNbaW5kZXggLSAodGhpcy5zaG93UGxhY2Vob2xkZXIoKSA/IDEgOiAwKV0gPz8gbnVsbCk7XG4gICAgfVxufVxuIiwiPG9wdGlvblxuICAgICpuZ0lmPVwic2hvd1BsYWNlaG9sZGVyKClcIlxuICAgIGRpc2FibGVkXG4gICAgc2VsZWN0ZWRcbiAgICB2YWx1ZT1cIlwiXG4+XG4gICAge3sgcGxhY2Vob2xkZXIoKSB9fVxuPC9vcHRpb24+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcyAmJiAhaXNGbGF0KGl0ZW1zKTsgZWxzZSBmbGF0SXRlbXNcIj5cbiAgICA8b3B0Z3JvdXBcbiAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxhYmVsczsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxzW2luZGV4XVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uczsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbXNbaW5kZXhdfVwiIC8+XG4gICAgPC9vcHRncm91cD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2ZsYXRJdGVtcz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uczsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbXN9XCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICNvcHRpb25zXG4gICAgbGV0LWl0ZW1zXG4+XG4gICAgPG9wdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGl0ZW1zXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW1zSGFuZGxlcnMuZGlzYWJsZWRJdGVtSGFuZGxlcigpKG9wdGlvbilcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCgpKG9wdGlvbilcIlxuICAgICAgICBbdmFsdWVdPVwiaXRlbXNIYW5kbGVycy5zdHJpbmdpZnkoKShvcHRpb24pXCJcbiAgICA+XG4gICAgICAgIHt7IGl0ZW1zSGFuZGxlcnMuc3RyaW5naWZ5KCkob3B0aW9uKSB9fVxuICAgIDwvb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,9 +1,9 @@
1
- import { computed, Directive, inject } from '@angular/core';
1
+ import { Directive, effect, inject } from '@angular/core';
2
2
  import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
3
- import { tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
3
+ import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
4
4
  import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
5
5
  import { tuiAsOptionContent } from '@taiga-ui/core/components/data-list';
6
- import { tuiAsAuxiliary, tuiAsTextfieldAccessor, TuiSelectLike, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
6
+ import { tuiAsAuxiliary, tuiAsTextfieldAccessor, TuiSelectLike, TuiTextfieldDirective, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
7
7
  import { tuiDropdownEnabled, tuiDropdownOpen } from '@taiga-ui/core/directives/dropdown';
8
8
  import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
9
9
  import { TuiSelectOption } from './select-option/select-option.component';
@@ -12,10 +12,15 @@ import * as i1 from "@taiga-ui/core/components/textfield";
12
12
  class TuiSelectDirective extends TuiControl {
13
13
  constructor() {
14
14
  super(...arguments);
15
+ this.textfield = inject(TuiTextfieldDirective);
15
16
  this.open = tuiDropdownOpen();
16
17
  this.itemsHandlers = inject(TUI_ITEMS_HANDLERS);
17
18
  this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
18
- this.stringified = tuiValueBinding(computed((value = this.value()) => tuiIsPresent(value) ? this.itemsHandlers.stringify()(value) : ''));
19
+ this.valueEffect = effect(() => {
20
+ const value = this.value();
21
+ const string = tuiIsPresent(value) ? this.itemsHandlers.stringify()(value) : '';
22
+ this.textfield.value.set(string);
23
+ }, TUI_ALLOW_SIGNAL_WRITES);
19
24
  }
20
25
  setValue(value) {
21
26
  this.onChange(value);
@@ -51,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
51
56
  },
52
57
  }]
53
58
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFFdkUsT0FBTyxFQUNILGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUU1RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUNBQXlDLENBQUM7OztBQUV4RSxNQWdCYSxrQkFDVCxTQUFRLFVBQW9CO0lBakJoQzs7UUFvQnFCLFNBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUN6QixrQkFBYSxHQUF3QixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUU5RCxvQkFBZSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RCxnQkFBVyxHQUFHLGVBQWUsQ0FDNUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQzlCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNuRSxDQUNKLENBQUM7S0FTTDtJQVBVLFFBQVEsQ0FBQyxLQUFRO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQzsrR0FwQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsOE5BYmhCO1lBQ1Asa0JBQWtCLENBQUMsZUFBZSxDQUFDO1lBQ25DLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDO1lBQzFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztZQUNoQyxjQUFjLENBQUMsa0JBQWtCLENBQUM7U0FDckM7O1NBUVEsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBaEI5QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1Asa0JBQWtCLENBQUMsZUFBZSxDQUFDO3dCQUNuQyxzQkFBc0Isb0JBQW9CO3dCQUMxQyxZQUFZLG9CQUFvQjt3QkFDaEMsY0FBYyxvQkFBb0I7cUJBQ3JDO29CQUNELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQztvQkFDakQsSUFBSSxFQUFFO3dCQUNGLFlBQVksRUFBRSxZQUFZO3dCQUMxQixRQUFRLEVBQUUsYUFBYTt3QkFDdkIsU0FBUyxFQUFFLHdEQUF3RDtxQkFDdEU7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbXB1dGVkLCBEaXJlY3RpdmUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7dHVpVmFsdWVCaW5kaW5nfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUlzUHJlc2VudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7dHVpQXNPcHRpb25Db250ZW50fSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQgdHlwZSB7VHVpVGV4dGZpZWxkQWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7XG4gICAgdHVpQXNBdXhpbGlhcnksXG4gICAgdHVpQXNUZXh0ZmllbGRBY2Nlc3NvcixcbiAgICBUdWlTZWxlY3RMaWtlLFxuICAgIFR1aVdpdGhUZXh0ZmllbGQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7dHVpRHJvcGRvd25FbmFibGVkLCB0dWlEcm9wZG93bk9wZW59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHR5cGUge1R1aUl0ZW1zSGFuZGxlcnN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHtUVUlfSVRFTVNfSEFORExFUlN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuXG5pbXBvcnQge1R1aVNlbGVjdE9wdGlvbn0gZnJvbSAnLi9zZWxlY3Qtb3B0aW9uL3NlbGVjdC1vcHRpb24uY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aVNlbGVjdF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc09wdGlvbkNvbnRlbnQoVHVpU2VsZWN0T3B0aW9uKSxcbiAgICAgICAgdHVpQXNUZXh0ZmllbGRBY2Nlc3NvcihUdWlTZWxlY3REaXJlY3RpdmUpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpU2VsZWN0RGlyZWN0aXZlKSxcbiAgICAgICAgdHVpQXNBdXhpbGlhcnkoVHVpU2VsZWN0RGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgVHVpU2VsZWN0TGlrZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvblRvdWNoZWQoKScsXG4gICAgICAgICcoaW5wdXQpJzogJyRldmVudC5pbnB1dFR5cGU/LmluY2x1ZGVzKFwiZGVsZXRlXCIpICYmIHNldFZhbHVlKG51bGwpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTZWxlY3REaXJlY3RpdmU8VD5cbiAgICBleHRlbmRzIFR1aUNvbnRyb2w8VCB8IG51bGw+XG4gICAgaW1wbGVtZW50cyBUdWlUZXh0ZmllbGRBY2Nlc3NvcjxUPlxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXRlbXNIYW5kbGVyczogVHVpSXRlbXNIYW5kbGVyczxUPiA9IGluamVjdChUVUlfSVRFTVNfSEFORExFUlMpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duRW5hYmxlZCA9IHR1aURyb3Bkb3duRW5hYmxlZCh0aGlzLmludGVyYWN0aXZlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyaW5naWZpZWQgPSB0dWlWYWx1ZUJpbmRpbmcoXG4gICAgICAgIGNvbXB1dGVkKCh2YWx1ZSA9IHRoaXMudmFsdWUoKSkgPT5cbiAgICAgICAgICAgIHR1aUlzUHJlc2VudCh2YWx1ZSkgPyB0aGlzLml0ZW1zSGFuZGxlcnMuc3RyaW5naWZ5KCkodmFsdWUpIDogJycsXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4uc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RSxPQUFPLEVBQ0gsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUU1RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUNBQXlDLENBQUM7OztBQUV4RSxNQWdCYSxrQkFDVCxTQUFRLFVBQW9CO0lBakJoQzs7UUFvQnFCLGNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDekIsa0JBQWEsR0FBd0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFOUQsb0JBQWUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsZ0JBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVoRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7S0FTL0I7SUFQVSxRQUFRLENBQUMsS0FBUTtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtJQUNMLENBQUM7K0dBdEJRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDhOQWJoQjtZQUNQLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztZQUNuQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQztZQUMxQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7WUFDaEMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1NBQ3JDOztTQVFRLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQWhCOUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFO3dCQUNQLGtCQUFrQixDQUFDLGVBQWUsQ0FBQzt3QkFDbkMsc0JBQXNCLG9CQUFvQjt3QkFDMUMsWUFBWSxvQkFBb0I7d0JBQ2hDLGNBQWMsb0JBQW9CO3FCQUNyQztvQkFDRCxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7b0JBQ2pELElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsUUFBUSxFQUFFLGFBQWE7d0JBQ3ZCLFNBQVMsRUFBRSx3REFBd0Q7cUJBQ3RFO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfQUxMT1dfU0lHTkFMX1dSSVRFU30gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlJc1ByZXNlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3R1aUFzT3B0aW9uQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHR5cGUge1R1aVRleHRmaWVsZEFjY2Vzc29yfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIHR1aUFzQXV4aWxpYXJ5LFxuICAgIHR1aUFzVGV4dGZpZWxkQWNjZXNzb3IsXG4gICAgVHVpU2VsZWN0TGlrZSxcbiAgICBUdWlUZXh0ZmllbGREaXJlY3RpdmUsXG4gICAgVHVpV2l0aFRleHRmaWVsZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHt0dWlEcm9wZG93bkVuYWJsZWQsIHR1aURyb3Bkb3duT3Blbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bic7XG5pbXBvcnQgdHlwZSB7VHVpSXRlbXNIYW5kbGVyc30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9pdGVtcy1oYW5kbGVycyc7XG5pbXBvcnQge1RVSV9JVEVNU19IQU5ETEVSU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9pdGVtcy1oYW5kbGVycyc7XG5cbmltcG9ydCB7VHVpU2VsZWN0T3B0aW9ufSBmcm9tICcuL3NlbGVjdC1vcHRpb24vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpU2VsZWN0XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzT3B0aW9uQ29udGVudChUdWlTZWxlY3RPcHRpb24pLFxuICAgICAgICB0dWlBc1RleHRmaWVsZEFjY2Vzc29yKFR1aVNlbGVjdERpcmVjdGl2ZSksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlTZWxlY3REaXJlY3RpdmUpLFxuICAgICAgICB0dWlBc0F1eGlsaWFyeShUdWlTZWxlY3REaXJlY3RpdmUpLFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBUdWlTZWxlY3RMaWtlXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnJGV2ZW50LmlucHV0VHlwZT8uaW5jbHVkZXMoXCJkZWxldGVcIikgJiYgc2V0VmFsdWUobnVsbCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVNlbGVjdERpcmVjdGl2ZTxUPlxuICAgIGV4dGVuZHMgVHVpQ29udHJvbDxUIHwgbnVsbD5cbiAgICBpbXBsZW1lbnRzIFR1aVRleHRmaWVsZEFjY2Vzc29yPFQ+XG57XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQgPSBpbmplY3QoVHVpVGV4dGZpZWxkRGlyZWN0aXZlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zSGFuZGxlcnM6IFR1aUl0ZW1zSGFuZGxlcnM8VD4gPSBpbmplY3QoVFVJX0lURU1TX0hBTkRMRVJTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93bkVuYWJsZWQgPSB0dWlEcm9wZG93bkVuYWJsZWQodGhpcy5pbnRlcmFjdGl2ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHN0cmluZyA9IHR1aUlzUHJlc2VudCh2YWx1ZSkgPyB0aGlzLml0ZW1zSGFuZGxlcnMuc3RyaW5naWZ5KCkodmFsdWUpIDogJyc7XG5cbiAgICAgICAgdGhpcy50ZXh0ZmllbGQudmFsdWUuc2V0KHN0cmluZyk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub3Blbi5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -86,7 +86,7 @@ class TuiSliderKeySteps extends TuiControl {
86
86
  this.transformer = tuiCreateKeyStepsTransformer(steps, this.slider);
87
87
  }
88
88
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSliderKeySteps, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
89
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiSliderKeySteps, isStandalone: true, selector: "input[tuiSlider][keySteps][ngModel],input[tuiSlider][keySteps][formControl],input[tuiSlider][keySteps][formControlName]", inputs: { keySteps: "keySteps" }, host: { listeners: { "blur": "onTouched()", "input": "onChange($event.target.value)", "change": "onChange($event.target.value)" }, properties: { "value": "this.value()", "disabled": "disabled()" } }, providers: [tuiFallbackValueProvider(0)], usesInheritance: true, ngImport: i0 }); }
89
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiSliderKeySteps, isStandalone: true, selector: "input[tuiSlider][keySteps][ngModel],input[tuiSlider][keySteps][formControl],input[tuiSlider][keySteps][formControlName]", inputs: { keySteps: "keySteps" }, host: { listeners: { "blur": "onTouched()", "input": "onChange($event.target.value)", "change": "onChange($event.target.value)" }, properties: { "value": "value()", "disabled": "disabled()" } }, providers: [tuiFallbackValueProvider(0)], usesInheritance: true, ngImport: i0 }); }
90
90
  }
91
91
  export { TuiSliderKeySteps };
92
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSliderKeySteps, decorators: [{
@@ -96,7 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
96
96
  selector: 'input[tuiSlider][keySteps][ngModel],input[tuiSlider][keySteps][formControl],input[tuiSlider][keySteps][formControlName]',
97
97
  providers: [tuiFallbackValueProvider(0)],
98
98
  host: {
99
- '[value]': 'this.value()',
99
+ '[value]': 'value()',
100
100
  '[disabled]': 'disabled()',
101
101
  '(blur)': 'onTouched()',
102
102
  '(input)': 'onChange($event.target.value)',
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
106
106
  }], propDecorators: { keySteps: [{
107
107
  type: Input
108
108
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9zbGlkZXIvaGVscGVycy9zbGlkZXIta2V5LXN0ZXBzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sYUFBYSxDQUFDOztBQUV6RCxNQVNhLHFCQUFxQjtJQVRsQztRQVVxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQU1wRSxTQUFJLEdBQWtCLENBQUMsQ0FBQztRQUV4QixnQkFBVyxHQUFHLE1BQU0sQ0FBNkMsSUFBSSxD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QUk7b0JBQ2hCLFFBQVEsRUFDSix5SEFBeUg7b0JBQzdILFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLEVBQUU7d0JBQ0YsU0FBUyxFQUFFLGNBQWM7d0JBQ3pCLFlBQVksRUFBRSxZQUFZO3dCQUMxQixRQUFRLEVBQUUsYUFBYTt3QkFDdkIsU0FBUyxFQUFFLCtCQUErQjt3QkFDMUMsVUFBVSxFQUFFLCtCQUErQjtxQkFDOUM7aUJBQ0o7OEJBT2MsUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBpbmplY3QsIElOSkVDVE9SLCBJbnB1dCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7VHVpVmFsdWVUcmFuc2Zvcm1lcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7dHVpQ29udHJvbFZhbHVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3N3aXRjaE1hcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aVNsaWRlckNvbXBvbmVudH0gZnJvbSAnLi4vc2xpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7VHVpS2V5U3RlcHN9IGZyb20gJy4va2V5LXN0ZXBzJztcbmltcG9ydCB7dHVpQ3JlYXRlS2V5U3RlcHNUcmFuc2Zvcm1lcn0gZnJvbSAnLi9rZXktc3RlcHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpU2xpZGVyXVtrZXlTdGVwc10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJ21pbicsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdtYXgnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAndmFsdWUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU2xpZGVyS2V5U3RlcHNCYXNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KElOSkVDVE9SKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7c2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWV9KTtcblxuICAgIHByb3RlY3RlZCBtaW4/OiBudW1iZXI7XG4gICAgcHJvdGVjdGVkIG1heD86IG51bWJlcjtcblxuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiAoeDogbnVtYmVyIHwgJ2FueScpID0+ICh4ID09PSAnYW55JyA/IG51bGwgOiB4KX0pXG4gICAgcHVibGljIHN0ZXA6IG51bWJlciB8IG51bGwgPSAxO1xuXG4gICAgcHVibGljIHRyYW5zZm9ybWVyID0gc2lnbmFsPFR1aVZhbHVlVHJhbnNmb3JtZXI8bnVtYmVyLCBudW1iZXI+IHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIHZhbHVlID0gdG9TaWduYWwoXG4gICAgICAgIHRpbWVyKDApIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzU0NDE4XG4gICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdHVpQ29udHJvbFZhbHVlPG51bWJlcj4odGhpcy5jb250cm9sKSkpLFxuICAgICk7XG5cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBnZXQgc2xpZGVyKCk6IFR1aVNsaWRlckNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUdWlTbGlkZXJDb21wb25lbnQpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBrZXlTdGVwcyhzdGVwczogVHVpS2V5U3RlcHMgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtZXIuc2V0KHN0ZXBzICYmIHR1aUNyZWF0ZUtleVN0ZXBzVHJhbnNmb3JtZXIoc3RlcHMsIHRoaXMuc2xpZGVyKSk7XG4gICAgICAgIHRoaXMubWluID0gc3RlcHM/LlswXVsxXTtcbiAgICAgICAgdGhpcy5tYXggPSBzdGVwcz8uW3N0ZXBzLmxlbmd0aCAtIDFdPy5bMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVE9ETyh2NSk6IHN0YW5kYXJkaXplIGxvZ2ljIGJldHdlZW4gYFR1aVNsaWRlcmAgJiBgVHVpSW5wdXRTbGlkZXJgIChmb3Igbm9uLWxpbmVhciBzbGlkZXIgYHN0ZXBgIG1lYW5zIHBlcmNlbnRhZ2UpXG4gICAgICogQWRkIHRoZXNlIGhvc3QtYmluZGluZ3MgdG8gYFR1aVNsaWRlcktleVN0ZXBzQmFzZWA6XG4gICAgICogYGBgXG4gICAgICogaG9zdDoge1xuICAgICAqICAgICAnW2F0dHIubWluXSc6ICcwJyxcbiAgICAgKiAgICAgJ1thdHRyLnN0ZXBdJzogJzEnLFxuICAgICAqICAgICAnW2F0dHIubWF4XSc6ICd0b3RhbFN0ZXBzJyxcbiAgICAgKiB9LFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG90YWxTdGVwcygpOiBudW1iZXIge1xuICAgICAgICAvKipcbiAgICAgICAgICogTm90LWludGVnZXIgYW1vdW50IG9mIHN0ZXBzIGlzIGludmFsaWQgdXNhZ2Ugb2YgbmF0aXZlIHNsaWRlcnNcbiAgICAgICAgICogYGBgaHRtbFxuICAgICAgICAgKiA8aW5wdXQgdHlwZT1cInJhbmdlXCIgW21heF09XCIxMDBcIiBbc3RlcF09XCIzLjMzXCIgLz5cbiAgICAgICAgICogYGBgXG4gICAgICAgICAqIChpbXBvc3NpYmxlIHRvIHNlbGVjdCAxMDA7IDk5LjkgaXMgbWF4IGFsbG93ZWQgdmFsdWUpXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwID8gTWF0aC5yb3VuZCgxMDAgLyB0aGlzLnN0ZXApIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgcHVibGljIHRha2VTdGVwKGNvZWZmaWNpZW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuc2xpZGVyLnZhbHVlICsgY29lZmZpY2llbnQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXIoKT8udG9Db250cm9sVmFsdWUodGhpcy5zbGlkZXIudmFsdWUgKyBjb2VmZmljaWVudCkgPz9cbiAgICAgICAgICAgIG5ld1ZhbHVlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOlxuICAgICAgICAnaW5wdXRbdHVpU2xpZGVyXVtrZXlTdGVwc11bbmdNb2RlbF0saW5wdXRbdHVpU2xpZGVyXVtrZXlTdGVwc11bZm9ybUNvbnRyb2xdLGlucHV0W3R1aVNsaWRlcl1ba2V5U3RlcHNdW2Zvcm1Db250cm9sTmFtZV0nLFxuICAgIHByb3ZpZGVyczogW3R1aUZhbGxiYWNrVmFsdWVQcm92aWRlcigwKV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3ZhbHVlXSc6ICd0aGlzLnZhbHVlKCknLFxuICAgICAgICAnW2Rpc2FibGVkXSc6ICdkaXNhYmxlZCgpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvblRvdWNoZWQoKScsXG4gICAgICAgICcoaW5wdXQpJzogJ29uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpJyxcbiAgICAgICAgJyhjaGFuZ2UpJzogJ29uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTbGlkZXJLZXlTdGVwcyBleHRlbmRzIFR1aUNvbnRyb2w8bnVtYmVyPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzbGlkZXIgPSBpbmplY3Q8VHVpU2xpZGVyQ29tcG9uZW50PihcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBUdWlTbGlkZXJDb21wb25lbnQpLFxuICAgICk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQga2V5U3RlcHMoc3RlcHM6IFR1aUtleVN0ZXBzKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtZXIgPSB0dWlDcmVhdGVLZXlTdGVwc1RyYW5zZm9ybWVyKHN0ZXBzLCB0aGlzLnNsaWRlcik7XG4gICAgfVxufVxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9zbGlkZXIvaGVscGVycy9zbGlkZXIta2V5LXN0ZXBzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sYUFBYSxDQUFDOztBQUV6RCxNQVNhLHFCQUFxQjtJQVRsQztRQVVxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQU1wRSxTQUFJLEdBQWtCLENBQUMsQ0FBQztRQUV4QixnQkFBVyxHQUFHLE1BQU0sQ0FBNkMsSUFBSSxD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QUk7b0JBQ2hCLFFBQVEsRUFDSix5SEFBeUg7b0JBQzdILFNBQVMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLEVBQUU7d0JBQ0YsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLFlBQVksRUFBRSxZQUFZO3dCQUMxQixRQUFRLEVBQUUsYUFBYTt3QkFDdkIsU0FBUyxFQUFFLCtCQUErQjt3QkFDMUMsVUFBVSxFQUFFLCtCQUErQjtxQkFDOUM7aUJBQ0o7OEJBT2MsUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBpbmplY3QsIElOSkVDVE9SLCBJbnB1dCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7VHVpVmFsdWVUcmFuc2Zvcm1lcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7dHVpQ29udHJvbFZhbHVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpRmFsbGJhY2tWYWx1ZVByb3ZpZGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3N3aXRjaE1hcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aVNsaWRlckNvbXBvbmVudH0gZnJvbSAnLi4vc2xpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7VHVpS2V5U3RlcHN9IGZyb20gJy4va2V5LXN0ZXBzJztcbmltcG9ydCB7dHVpQ3JlYXRlS2V5U3RlcHNUcmFuc2Zvcm1lcn0gZnJvbSAnLi9rZXktc3RlcHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpU2xpZGVyXVtrZXlTdGVwc10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJ21pbicsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdtYXgnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAndmFsdWUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU2xpZGVyS2V5U3RlcHNCYXNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KElOSkVDVE9SKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7c2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWV9KTtcblxuICAgIHByb3RlY3RlZCBtaW4/OiBudW1iZXI7XG4gICAgcHJvdGVjdGVkIG1heD86IG51bWJlcjtcblxuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiAoeDogbnVtYmVyIHwgJ2FueScpID0+ICh4ID09PSAnYW55JyA/IG51bGwgOiB4KX0pXG4gICAgcHVibGljIHN0ZXA6IG51bWJlciB8IG51bGwgPSAxO1xuXG4gICAgcHVibGljIHRyYW5zZm9ybWVyID0gc2lnbmFsPFR1aVZhbHVlVHJhbnNmb3JtZXI8bnVtYmVyLCBudW1iZXI+IHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIHZhbHVlID0gdG9TaWduYWwoXG4gICAgICAgIHRpbWVyKDApIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzU0NDE4XG4gICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdHVpQ29udHJvbFZhbHVlPG51bWJlcj4odGhpcy5jb250cm9sKSkpLFxuICAgICk7XG5cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBnZXQgc2xpZGVyKCk6IFR1aVNsaWRlckNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChUdWlTbGlkZXJDb21wb25lbnQpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBrZXlTdGVwcyhzdGVwczogVHVpS2V5U3RlcHMgfCBudWxsKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtZXIuc2V0KHN0ZXBzICYmIHR1aUNyZWF0ZUtleVN0ZXBzVHJhbnNmb3JtZXIoc3RlcHMsIHRoaXMuc2xpZGVyKSk7XG4gICAgICAgIHRoaXMubWluID0gc3RlcHM/LlswXVsxXTtcbiAgICAgICAgdGhpcy5tYXggPSBzdGVwcz8uW3N0ZXBzLmxlbmd0aCAtIDFdPy5bMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVE9ETyh2NSk6IHN0YW5kYXJkaXplIGxvZ2ljIGJldHdlZW4gYFR1aVNsaWRlcmAgJiBgVHVpSW5wdXRTbGlkZXJgIChmb3Igbm9uLWxpbmVhciBzbGlkZXIgYHN0ZXBgIG1lYW5zIHBlcmNlbnRhZ2UpXG4gICAgICogQWRkIHRoZXNlIGhvc3QtYmluZGluZ3MgdG8gYFR1aVNsaWRlcktleVN0ZXBzQmFzZWA6XG4gICAgICogYGBgXG4gICAgICogaG9zdDoge1xuICAgICAqICAgICAnW2F0dHIubWluXSc6ICcwJyxcbiAgICAgKiAgICAgJ1thdHRyLnN0ZXBdJzogJzEnLFxuICAgICAqICAgICAnW2F0dHIubWF4XSc6ICd0b3RhbFN0ZXBzJyxcbiAgICAgKiB9LFxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG90YWxTdGVwcygpOiBudW1iZXIge1xuICAgICAgICAvKipcbiAgICAgICAgICogTm90LWludGVnZXIgYW1vdW50IG9mIHN0ZXBzIGlzIGludmFsaWQgdXNhZ2Ugb2YgbmF0aXZlIHNsaWRlcnNcbiAgICAgICAgICogYGBgaHRtbFxuICAgICAgICAgKiA8aW5wdXQgdHlwZT1cInJhbmdlXCIgW21heF09XCIxMDBcIiBbc3RlcF09XCIzLjMzXCIgLz5cbiAgICAgICAgICogYGBgXG4gICAgICAgICAqIChpbXBvc3NpYmxlIHRvIHNlbGVjdCAxMDA7IDk5LjkgaXMgbWF4IGFsbG93ZWQgdmFsdWUpXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwID8gTWF0aC5yb3VuZCgxMDAgLyB0aGlzLnN0ZXApIDogSW5maW5pdHk7XG4gICAgfVxuXG4gICAgcHVibGljIHRha2VTdGVwKGNvZWZmaWNpZW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuc2xpZGVyLnZhbHVlICsgY29lZmZpY2llbnQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtZXIoKT8udG9Db250cm9sVmFsdWUodGhpcy5zbGlkZXIudmFsdWUgKyBjb2VmZmljaWVudCkgPz9cbiAgICAgICAgICAgIG5ld1ZhbHVlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOlxuICAgICAgICAnaW5wdXRbdHVpU2xpZGVyXVtrZXlTdGVwc11bbmdNb2RlbF0saW5wdXRbdHVpU2xpZGVyXVtrZXlTdGVwc11bZm9ybUNvbnRyb2xdLGlucHV0W3R1aVNsaWRlcl1ba2V5U3RlcHNdW2Zvcm1Db250cm9sTmFtZV0nLFxuICAgIHByb3ZpZGVyczogW3R1aUZhbGxiYWNrVmFsdWVQcm92aWRlcigwKV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3ZhbHVlXSc6ICd2YWx1ZSgpJyxcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICAnKGlucHV0KSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU2xpZGVyS2V5U3RlcHMgZXh0ZW5kcyBUdWlDb250cm9sPG51bWJlcj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2xpZGVyID0gaW5qZWN0PFR1aVNsaWRlckNvbXBvbmVudD4oXG4gICAgICAgIGZvcndhcmRSZWYoKCkgPT4gVHVpU2xpZGVyQ29tcG9uZW50KSxcbiAgICApO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGtleVN0ZXBzKHN0ZXBzOiBUdWlLZXlTdGVwcykge1xuICAgICAgICB0aGlzLnRyYW5zZm9ybWVyID0gdHVpQ3JlYXRlS2V5U3RlcHNUcmFuc2Zvcm1lcihzdGVwcywgdGhpcy5zbGlkZXIpO1xuICAgIH1cbn1cbiJdfQ==