@angular/material 22.0.4 → 22.0.5

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 (74) hide show
  1. package/core/focus-indicators/_private.scss +3 -0
  2. package/fesm2022/_error-options-chunk.mjs +6 -6
  3. package/fesm2022/_error-state-chunk.mjs +9 -12
  4. package/fesm2022/_error-state-chunk.mjs.map +1 -1
  5. package/fesm2022/_form-field-chunk.mjs +30 -30
  6. package/fesm2022/_icon-button-chunk.mjs +6 -6
  7. package/fesm2022/_icon-registry-chunk.mjs +3 -3
  8. package/fesm2022/_internal-form-field-chunk.mjs +3 -3
  9. package/fesm2022/_line-chunk.mjs +7 -7
  10. package/fesm2022/_option-chunk.mjs +6 -6
  11. package/fesm2022/_option-module-chunk.mjs +4 -4
  12. package/fesm2022/_pseudo-checkbox-chunk.mjs +3 -3
  13. package/fesm2022/_pseudo-checkbox-module-chunk.mjs +4 -4
  14. package/fesm2022/_ripple-chunk.mjs +6 -6
  15. package/fesm2022/_ripple-loader-chunk.mjs +3 -3
  16. package/fesm2022/_ripple-module-chunk.mjs +4 -4
  17. package/fesm2022/_structural-styles-chunk.mjs +5 -5
  18. package/fesm2022/_structural-styles-chunk.mjs.map +1 -1
  19. package/fesm2022/_tooltip-chunk.mjs +6 -6
  20. package/fesm2022/autocomplete.mjs +13 -13
  21. package/fesm2022/badge.mjs +10 -10
  22. package/fesm2022/bottom-sheet.mjs +10 -10
  23. package/fesm2022/button-toggle.mjs +10 -10
  24. package/fesm2022/button.mjs +17 -17
  25. package/fesm2022/button.mjs.map +1 -1
  26. package/fesm2022/card.mjs +46 -46
  27. package/fesm2022/checkbox.mjs +7 -7
  28. package/fesm2022/chips.mjs +52 -47
  29. package/fesm2022/chips.mjs.map +1 -1
  30. package/fesm2022/core.mjs +12 -12
  31. package/fesm2022/core.mjs.map +1 -1
  32. package/fesm2022/datepicker.mjs +89 -84
  33. package/fesm2022/datepicker.mjs.map +1 -1
  34. package/fesm2022/dialog.mjs +25 -25
  35. package/fesm2022/divider.mjs +7 -7
  36. package/fesm2022/expansion.mjs +25 -25
  37. package/fesm2022/form-field.mjs +4 -4
  38. package/fesm2022/grid-list.mjs +22 -22
  39. package/fesm2022/icon-testing.mjs +7 -7
  40. package/fesm2022/icon.mjs +7 -7
  41. package/fesm2022/input.mjs +13 -8
  42. package/fesm2022/input.mjs.map +1 -1
  43. package/fesm2022/list.mjs +49 -49
  44. package/fesm2022/menu.mjs +22 -22
  45. package/fesm2022/paginator.mjs +11 -10
  46. package/fesm2022/paginator.mjs.map +1 -1
  47. package/fesm2022/progress-bar.mjs +7 -7
  48. package/fesm2022/progress-spinner.mjs +7 -7
  49. package/fesm2022/radio.mjs +10 -10
  50. package/fesm2022/select.mjs +16 -11
  51. package/fesm2022/select.mjs.map +1 -1
  52. package/fesm2022/sidenav.mjs +22 -22
  53. package/fesm2022/slide-toggle.mjs +7 -7
  54. package/fesm2022/slider.mjs +16 -16
  55. package/fesm2022/snack-bar.mjs +22 -22
  56. package/fesm2022/sort.mjs +15 -15
  57. package/fesm2022/sort.mjs.map +1 -1
  58. package/fesm2022/stepper.mjs +33 -33
  59. package/fesm2022/stepper.mjs.map +1 -1
  60. package/fesm2022/table.mjs +55 -55
  61. package/fesm2022/tabs.mjs +43 -43
  62. package/fesm2022/timepicker.mjs +16 -14
  63. package/fesm2022/timepicker.mjs.map +1 -1
  64. package/fesm2022/toolbar.mjs +10 -10
  65. package/fesm2022/tooltip.mjs +4 -4
  66. package/fesm2022/tree.mjs +25 -25
  67. package/package.json +2 -2
  68. package/prebuilt-themes/deeppurple-amber.css +2 -2
  69. package/prebuilt-themes/indigo-pink.css +2 -2
  70. package/prebuilt-themes/pink-bluegrey.css +2 -2
  71. package/prebuilt-themes/purple-green.css +2 -2
  72. package/schematics/ng-add/index.js +1 -1
  73. package/stepper/_m2-stepper.scss +2 -2
  74. package/types/core.d.ts +1 -0
@@ -33,7 +33,7 @@ class MatGridTile {
33
33
  }
34
34
  static ɵfac = i0.ɵɵngDeclareFactory({
35
35
  minVersion: "12.0.0",
36
- version: "22.0.5",
36
+ version: "22.0.6",
37
37
  ngImport: i0,
38
38
  type: MatGridTile,
39
39
  deps: [],
@@ -41,7 +41,7 @@ class MatGridTile {
41
41
  });
42
42
  static ɵcmp = i0.ɵɵngDeclareComponent({
43
43
  minVersion: "14.0.0",
44
- version: "22.0.5",
44
+ version: "22.0.6",
45
45
  type: MatGridTile,
46
46
  isStandalone: true,
47
47
  selector: "mat-grid-tile",
@@ -65,7 +65,7 @@ class MatGridTile {
65
65
  }
66
66
  i0.ɵɵngDeclareClassMetadata({
67
67
  minVersion: "12.0.0",
68
- version: "22.0.5",
68
+ version: "22.0.6",
69
69
  ngImport: i0,
70
70
  type: MatGridTile,
71
71
  decorators: [{
@@ -100,7 +100,7 @@ class MatGridTileText {
100
100
  }
101
101
  static ɵfac = i0.ɵɵngDeclareFactory({
102
102
  minVersion: "12.0.0",
103
- version: "22.0.5",
103
+ version: "22.0.6",
104
104
  ngImport: i0,
105
105
  type: MatGridTileText,
106
106
  deps: [],
@@ -108,7 +108,7 @@ class MatGridTileText {
108
108
  });
109
109
  static ɵcmp = i0.ɵɵngDeclareComponent({
110
110
  minVersion: "14.0.0",
111
- version: "22.0.5",
111
+ version: "22.0.6",
112
112
  type: MatGridTileText,
113
113
  isStandalone: true,
114
114
  selector: "mat-grid-tile-header, mat-grid-tile-footer",
@@ -124,7 +124,7 @@ class MatGridTileText {
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({
126
126
  minVersion: "12.0.0",
127
- version: "22.0.5",
127
+ version: "22.0.6",
128
128
  ngImport: i0,
129
129
  type: MatGridTileText,
130
130
  decorators: [{
@@ -147,7 +147,7 @@ i0.ɵɵngDeclareClassMetadata({
147
147
  class MatGridAvatarCssMatStyler {
148
148
  static ɵfac = i0.ɵɵngDeclareFactory({
149
149
  minVersion: "12.0.0",
150
- version: "22.0.5",
150
+ version: "22.0.6",
151
151
  ngImport: i0,
152
152
  type: MatGridAvatarCssMatStyler,
153
153
  deps: [],
@@ -155,7 +155,7 @@ class MatGridAvatarCssMatStyler {
155
155
  });
156
156
  static ɵdir = i0.ɵɵngDeclareDirective({
157
157
  minVersion: "14.0.0",
158
- version: "22.0.5",
158
+ version: "22.0.6",
159
159
  type: MatGridAvatarCssMatStyler,
160
160
  isStandalone: true,
161
161
  selector: "[mat-grid-avatar], [matGridAvatar]",
@@ -167,7 +167,7 @@ class MatGridAvatarCssMatStyler {
167
167
  }
168
168
  i0.ɵɵngDeclareClassMetadata({
169
169
  minVersion: "12.0.0",
170
- version: "22.0.5",
170
+ version: "22.0.6",
171
171
  ngImport: i0,
172
172
  type: MatGridAvatarCssMatStyler,
173
173
  decorators: [{
@@ -183,7 +183,7 @@ i0.ɵɵngDeclareClassMetadata({
183
183
  class MatGridTileHeaderCssMatStyler {
184
184
  static ɵfac = i0.ɵɵngDeclareFactory({
185
185
  minVersion: "12.0.0",
186
- version: "22.0.5",
186
+ version: "22.0.6",
187
187
  ngImport: i0,
188
188
  type: MatGridTileHeaderCssMatStyler,
189
189
  deps: [],
@@ -191,7 +191,7 @@ class MatGridTileHeaderCssMatStyler {
191
191
  });
192
192
  static ɵdir = i0.ɵɵngDeclareDirective({
193
193
  minVersion: "14.0.0",
194
- version: "22.0.5",
194
+ version: "22.0.6",
195
195
  type: MatGridTileHeaderCssMatStyler,
196
196
  isStandalone: true,
197
197
  selector: "mat-grid-tile-header",
@@ -203,7 +203,7 @@ class MatGridTileHeaderCssMatStyler {
203
203
  }
204
204
  i0.ɵɵngDeclareClassMetadata({
205
205
  minVersion: "12.0.0",
206
- version: "22.0.5",
206
+ version: "22.0.6",
207
207
  ngImport: i0,
208
208
  type: MatGridTileHeaderCssMatStyler,
209
209
  decorators: [{
@@ -219,7 +219,7 @@ i0.ɵɵngDeclareClassMetadata({
219
219
  class MatGridTileFooterCssMatStyler {
220
220
  static ɵfac = i0.ɵɵngDeclareFactory({
221
221
  minVersion: "12.0.0",
222
- version: "22.0.5",
222
+ version: "22.0.6",
223
223
  ngImport: i0,
224
224
  type: MatGridTileFooterCssMatStyler,
225
225
  deps: [],
@@ -227,7 +227,7 @@ class MatGridTileFooterCssMatStyler {
227
227
  });
228
228
  static ɵdir = i0.ɵɵngDeclareDirective({
229
229
  minVersion: "14.0.0",
230
- version: "22.0.5",
230
+ version: "22.0.6",
231
231
  type: MatGridTileFooterCssMatStyler,
232
232
  isStandalone: true,
233
233
  selector: "mat-grid-tile-footer",
@@ -239,7 +239,7 @@ class MatGridTileFooterCssMatStyler {
239
239
  }
240
240
  i0.ɵɵngDeclareClassMetadata({
241
241
  minVersion: "12.0.0",
242
- version: "22.0.5",
242
+ version: "22.0.6",
243
243
  ngImport: i0,
244
244
  type: MatGridTileFooterCssMatStyler,
245
245
  decorators: [{
@@ -468,7 +468,7 @@ class MatGridList {
468
468
  }
469
469
  static ɵfac = i0.ɵɵngDeclareFactory({
470
470
  minVersion: "12.0.0",
471
- version: "22.0.5",
471
+ version: "22.0.6",
472
472
  ngImport: i0,
473
473
  type: MatGridList,
474
474
  deps: [],
@@ -476,7 +476,7 @@ class MatGridList {
476
476
  });
477
477
  static ɵcmp = i0.ɵɵngDeclareComponent({
478
478
  minVersion: "14.0.0",
479
- version: "22.0.5",
479
+ version: "22.0.6",
480
480
  type: MatGridList,
481
481
  isStandalone: true,
482
482
  selector: "mat-grid-list",
@@ -509,7 +509,7 @@ class MatGridList {
509
509
  }
510
510
  i0.ɵɵngDeclareClassMetadata({
511
511
  minVersion: "12.0.0",
512
- version: "22.0.5",
512
+ version: "22.0.6",
513
513
  ngImport: i0,
514
514
  type: MatGridList,
515
515
  decorators: [{
@@ -552,7 +552,7 @@ i0.ɵɵngDeclareClassMetadata({
552
552
  class MatGridListModule {
553
553
  static ɵfac = i0.ɵɵngDeclareFactory({
554
554
  minVersion: "12.0.0",
555
- version: "22.0.5",
555
+ version: "22.0.6",
556
556
  ngImport: i0,
557
557
  type: MatGridListModule,
558
558
  deps: [],
@@ -560,7 +560,7 @@ class MatGridListModule {
560
560
  });
561
561
  static ɵmod = i0.ɵɵngDeclareNgModule({
562
562
  minVersion: "14.0.0",
563
- version: "22.0.5",
563
+ version: "22.0.6",
564
564
  ngImport: i0,
565
565
  type: MatGridListModule,
566
566
  imports: [MatLineModule, MatGridList, MatGridTile, MatGridTileText, MatGridTileHeaderCssMatStyler, MatGridTileFooterCssMatStyler, MatGridAvatarCssMatStyler],
@@ -568,7 +568,7 @@ class MatGridListModule {
568
568
  });
569
569
  static ɵinj = i0.ɵɵngDeclareInjector({
570
570
  minVersion: "12.0.0",
571
- version: "22.0.5",
571
+ version: "22.0.6",
572
572
  ngImport: i0,
573
573
  type: MatGridListModule,
574
574
  imports: [MatLineModule, BidiModule, MatLineModule]
@@ -576,7 +576,7 @@ class MatGridListModule {
576
576
  }
577
577
  i0.ɵɵngDeclareClassMetadata({
578
578
  minVersion: "12.0.0",
579
- version: "22.0.5",
579
+ version: "22.0.6",
580
580
  ngImport: i0,
581
581
  type: MatGridListModule,
582
582
  decorators: [{
@@ -104,7 +104,7 @@ class FakeMatIconRegistry {
104
104
  }
105
105
  static ɵfac = i0.ɵɵngDeclareFactory({
106
106
  minVersion: "12.0.0",
107
- version: "22.0.5",
107
+ version: "22.0.6",
108
108
  ngImport: i0,
109
109
  type: FakeMatIconRegistry,
110
110
  deps: [],
@@ -112,7 +112,7 @@ class FakeMatIconRegistry {
112
112
  });
113
113
  static ɵprov = i0.ɵɵngDeclareService({
114
114
  minVersion: "22.0.0",
115
- version: "22.0.5",
115
+ version: "22.0.6",
116
116
  ngImport: i0,
117
117
  type: FakeMatIconRegistry,
118
118
  autoProvided: false
@@ -120,7 +120,7 @@ class FakeMatIconRegistry {
120
120
  }
121
121
  i0.ɵɵngDeclareClassMetadata({
122
122
  minVersion: "12.0.0",
123
- version: "22.0.5",
123
+ version: "22.0.6",
124
124
  ngImport: i0,
125
125
  type: FakeMatIconRegistry,
126
126
  decorators: [{
@@ -133,7 +133,7 @@ i0.ɵɵngDeclareClassMetadata({
133
133
  class MatIconTestingModule {
134
134
  static ɵfac = i0.ɵɵngDeclareFactory({
135
135
  minVersion: "12.0.0",
136
- version: "22.0.5",
136
+ version: "22.0.6",
137
137
  ngImport: i0,
138
138
  type: MatIconTestingModule,
139
139
  deps: [],
@@ -141,13 +141,13 @@ class MatIconTestingModule {
141
141
  });
142
142
  static ɵmod = i0.ɵɵngDeclareNgModule({
143
143
  minVersion: "14.0.0",
144
- version: "22.0.5",
144
+ version: "22.0.6",
145
145
  ngImport: i0,
146
146
  type: MatIconTestingModule
147
147
  });
148
148
  static ɵinj = i0.ɵɵngDeclareInjector({
149
149
  minVersion: "12.0.0",
150
- version: "22.0.5",
150
+ version: "22.0.6",
151
151
  ngImport: i0,
152
152
  type: MatIconTestingModule,
153
153
  providers: [{
@@ -158,7 +158,7 @@ class MatIconTestingModule {
158
158
  }
159
159
  i0.ɵɵngDeclareClassMetadata({
160
160
  minVersion: "12.0.0",
161
- version: "22.0.5",
161
+ version: "22.0.6",
162
162
  ngImport: i0,
163
163
  type: MatIconTestingModule,
164
164
  decorators: [{
package/fesm2022/icon.mjs CHANGED
@@ -230,7 +230,7 @@ class MatIcon {
230
230
  }
231
231
  static ɵfac = i0.ɵɵngDeclareFactory({
232
232
  minVersion: "12.0.0",
233
- version: "22.0.5",
233
+ version: "22.0.6",
234
234
  ngImport: i0,
235
235
  type: MatIcon,
236
236
  deps: [],
@@ -238,7 +238,7 @@ class MatIcon {
238
238
  });
239
239
  static ɵcmp = i0.ɵɵngDeclareComponent({
240
240
  minVersion: "16.1.0",
241
- version: "22.0.5",
241
+ version: "22.0.6",
242
242
  type: MatIcon,
243
243
  isStandalone: true,
244
244
  selector: "mat-icon",
@@ -274,7 +274,7 @@ class MatIcon {
274
274
  }
275
275
  i0.ɵɵngDeclareClassMetadata({
276
276
  minVersion: "12.0.0",
277
- version: "22.0.5",
277
+ version: "22.0.6",
278
278
  ngImport: i0,
279
279
  type: MatIcon,
280
280
  decorators: [{
@@ -324,7 +324,7 @@ i0.ɵɵngDeclareClassMetadata({
324
324
  class MatIconModule {
325
325
  static ɵfac = i0.ɵɵngDeclareFactory({
326
326
  minVersion: "12.0.0",
327
- version: "22.0.5",
327
+ version: "22.0.6",
328
328
  ngImport: i0,
329
329
  type: MatIconModule,
330
330
  deps: [],
@@ -332,7 +332,7 @@ class MatIconModule {
332
332
  });
333
333
  static ɵmod = i0.ɵɵngDeclareNgModule({
334
334
  minVersion: "14.0.0",
335
- version: "22.0.5",
335
+ version: "22.0.6",
336
336
  ngImport: i0,
337
337
  type: MatIconModule,
338
338
  imports: [MatIcon],
@@ -340,7 +340,7 @@ class MatIconModule {
340
340
  });
341
341
  static ɵinj = i0.ɵɵngDeclareInjector({
342
342
  minVersion: "12.0.0",
343
- version: "22.0.5",
343
+ version: "22.0.6",
344
344
  ngImport: i0,
345
345
  type: MatIconModule,
346
346
  imports: [BidiModule]
@@ -348,7 +348,7 @@ class MatIconModule {
348
348
  }
349
349
  i0.ɵɵngDeclareClassMetadata({
350
350
  minVersion: "12.0.0",
351
- version: "22.0.5",
351
+ version: "22.0.6",
352
352
  ngImport: i0,
353
353
  type: MatIconModule,
354
354
  decorators: [{
@@ -5,6 +5,7 @@ import * as i0 from '@angular/core';
5
5
  import { InjectionToken, inject, ElementRef, NgZone, Renderer2, isSignal, effect, booleanAttribute, Input, Directive, NgModule } from '@angular/core';
6
6
  import { _IdGenerator } from '@angular/cdk/a11y';
7
7
  import { NgControl, Validators, NgForm, FormGroupDirective } from '@angular/forms';
8
+ import { FORM_FIELD } from '@angular/forms/signals';
8
9
  import { Subject } from 'rxjs';
9
10
  import { MAT_INPUT_VALUE_ACCESSOR } from './_input-value-accessor-chunk.mjs';
10
11
  import { MAT_FORM_FIELD, MatFormFieldControl } from './_form-field-chunk.mjs';
@@ -143,6 +144,10 @@ class MatInput {
143
144
  optional: true,
144
145
  self: true
145
146
  });
147
+ const formField = inject(FORM_FIELD, {
148
+ optional: true,
149
+ self: true
150
+ });
146
151
  const element = this._elementRef.nativeElement;
147
152
  const nodeName = element.nodeName.toLowerCase();
148
153
  if (accessor) {
@@ -161,7 +166,7 @@ class MatInput {
161
166
  this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);
162
167
  });
163
168
  }
164
- this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, this.ngControl, parentFormGroup, parentForm, this.stateChanges);
169
+ this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, formField || this.ngControl, parentFormGroup, parentForm, this.stateChanges);
165
170
  this._isServer = !this._platform.isBrowser;
166
171
  this._isNativeSelect = nodeName === 'select';
167
172
  this._isTextarea = nodeName === 'textarea';
@@ -313,7 +318,7 @@ class MatInput {
313
318
  }
314
319
  static ɵfac = i0.ɵɵngDeclareFactory({
315
320
  minVersion: "12.0.0",
316
- version: "22.0.5",
321
+ version: "22.0.6",
317
322
  ngImport: i0,
318
323
  type: MatInput,
319
324
  deps: [],
@@ -321,7 +326,7 @@ class MatInput {
321
326
  });
322
327
  static ɵdir = i0.ɵɵngDeclareDirective({
323
328
  minVersion: "16.1.0",
324
- version: "22.0.5",
329
+ version: "22.0.6",
325
330
  type: MatInput,
326
331
  isStandalone: true,
327
332
  selector: "input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]",
@@ -374,7 +379,7 @@ class MatInput {
374
379
  }
375
380
  i0.ɵɵngDeclareClassMetadata({
376
381
  minVersion: "12.0.0",
377
- version: "22.0.5",
382
+ version: "22.0.6",
378
383
  ngImport: i0,
379
384
  type: MatInput,
380
385
  decorators: [{
@@ -455,7 +460,7 @@ i0.ɵɵngDeclareClassMetadata({
455
460
  class MatInputModule {
456
461
  static ɵfac = i0.ɵɵngDeclareFactory({
457
462
  minVersion: "12.0.0",
458
- version: "22.0.5",
463
+ version: "22.0.6",
459
464
  ngImport: i0,
460
465
  type: MatInputModule,
461
466
  deps: [],
@@ -463,7 +468,7 @@ class MatInputModule {
463
468
  });
464
469
  static ɵmod = i0.ɵɵngDeclareNgModule({
465
470
  minVersion: "14.0.0",
466
- version: "22.0.5",
471
+ version: "22.0.6",
467
472
  ngImport: i0,
468
473
  type: MatInputModule,
469
474
  imports: [MatFormFieldModule, MatInput],
@@ -471,7 +476,7 @@ class MatInputModule {
471
476
  });
472
477
  static ɵinj = i0.ɵɵngDeclareInjector({
473
478
  minVersion: "12.0.0",
474
- version: "22.0.5",
479
+ version: "22.0.6",
475
480
  ngImport: i0,
476
481
  type: MatInputModule,
477
482
  imports: [MatFormFieldModule, MatFormFieldModule, TextFieldModule, BidiModule]
@@ -479,7 +484,7 @@ class MatInputModule {
479
484
  }
480
485
  i0.ɵɵngDeclareClassMetadata({
481
486
  minVersion: "12.0.0",
482
- version: "22.0.5",
487
+ version: "22.0.6",
483
488
  ngImport: i0,
484
489
  type: MatInputModule,
485
490
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"input.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n isSignal,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\nimport {ErrorStateMatcher, _ErrorStateTracker} from '../core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n/** Object that can be used to configure the default options for the input. */\nexport interface MatInputConfig {\n /** Whether disabled inputs should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the input. */\nexport const MAT_INPUT_CONFIG = new InjectionToken<MatInputConfig>('MAT_INPUT_CONFIG');\n\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mat-mdc-input-disabled-interactive]': 'disabledInteractive',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled && !disabledInteractive',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput\n implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\n{\n protected _elementRef =\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\n protected _platform = inject(Platform);\n ngControl = inject(NgControl, {optional: true, self: true})!;\n private _autofillMonitor = inject(AutofillMonitor);\n private _ngZone = inject(NgZone);\n protected _formField? = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n private _renderer = inject(Renderer2);\n\n protected _uid = inject(_IdGenerator).getId('mat-input-');\n protected _previousNativeValue: any;\n private _inputValueAccessor!: {value: any};\n private _signalBasedValueAccessor?: {value: WritableSignal<any>};\n private _previousPlaceholder: string | null = null;\n private _errorStateTracker: _ErrorStateTracker;\n private _config = inject(MAT_INPUT_CONFIG, {optional: true});\n private _cleanupIosKeyup: (() => void) | undefined;\n private _cleanupWebkitWheel: (() => void) | undefined;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean = false;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean = false;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean = false;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder!: string;\n\n /**\n * Name of the input.\n * @docs-private\n */\n @Input() name!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean | undefined;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._signalBasedValueAccessor\n ? this._signalBasedValueAccessor.value()\n : this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n if (this._signalBasedValueAccessor) {\n this._signalBasedValueAccessor.value.set(value);\n } else {\n this._inputValueAccessor.value = value;\n }\n\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Whether the input is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor() {\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const accessor = inject(MAT_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n if (accessor) {\n if (isSignal(accessor.value)) {\n this._signalBasedValueAccessor = accessor;\n } else {\n this._inputValueAccessor = accessor;\n }\n } else {\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = element;\n }\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (this._platform.IOS) {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\n });\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!this._formField;\n this.disabledInteractive = this._config?.disabledInteractive || false;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n\n if (this._signalBasedValueAccessor) {\n effect(() => {\n // Read the value so the effect can register the dependency.\n this._signalBasedValueAccessor!.value();\n this.stateChanges.next();\n });\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n this._cleanupIosKeyup?.();\n this._cleanupWebkitWheel?.();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Refreshes the error state of the input. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\n const element = this._elementRef.nativeElement as HTMLInputElement;\n\n // Focusing an input that has text will cause all the text to be selected. Clear it since\n // the user won't be able to change it. This is based on the internal implementation.\n if (element.type === 'number') {\n // setSelectionRange doesn't work on number inputs so it needs to be set briefly to text.\n element.type = 'text';\n element.setSelectionRange(0, 0);\n element.type = 'number';\n } else {\n element.setSelectionRange(0, 0);\n }\n }\n\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n\n /** Gets the current placeholder of the form field. */\n protected _getPlaceholder(): string | null {\n return this.placeholder || null;\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (\n MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (\n !this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled\n );\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (\n this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n );\n } else {\n return (this.focused && !this.disabled) || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n const element = this._elementRef.nativeElement;\n\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n private _iOSKeyupListener = (event: Event): void => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n if (this._isNativeSelect) {\n return null;\n }\n\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\n return 'true';\n }\n\n return null;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '../form-field';\nimport {MatInput} from './input';\n\n@NgModule({\n imports: [MatFormFieldModule, MatInput],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, BidiModule],\n})\nexport class MatInputModule {}\n"],"names":["getMatInputUnsupportedTypeError","type","Error","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","InjectionToken","MatInput","_elementRef","inject","ElementRef","_platform","Platform","ngControl","NgControl","optional","self","_autofillMonitor","AutofillMonitor","_ngZone","NgZone","_formField","MAT_FORM_FIELD","_renderer","Renderer2","_uid","_IdGenerator","getId","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_errorStateTracker","_config","_cleanupIosKeyup","_cleanupWebkitWheel","_isServer","_isNativeSelect","_isTextarea","_isInFormField","focused","stateChanges","Subject","controlType","autofilled","disabled","_disabled","value","coerceBooleanProperty","next","id","_id","placeholder","name","required","_required","control","hasValidator","Validators","_type","_validateType","getSupportedInputTypes","has","nativeElement","errorStateMatcher","matcher","userAriaDescribedBy","set","readonly","_readonly","disabledInteractive","errorState","_neverEmptyInputTypes","filter","t","constructor","parentForm","NgForm","parentFormGroup","FormGroupDirective","defaultErrorStateMatcher","ErrorStateMatcher","accessor","MAT_INPUT_VALUE_ACCESSOR","element","nodeName","toLowerCase","isSignal","IOS","runOutsideAngular","listen","_iOSKeyupListener","_ErrorStateTracker","isBrowser","multiple","effect","ngAfterViewInit","monitor","subscribe","event","isAutofilled","ngOnChanges","ngOnDestroy","complete","stopMonitoring","ngDoCheck","updateErrorState","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","focus","options","_focusChanged","isFocused","setSelectionRange","_onInput","newValue","_getPlaceholder","setAttribute","removeAttribute","indexOf","ngDevMode","_isNeverEmpty","_isBadInput","validity","badInput","empty","shouldLabelFloat","selectElement","firstOption","selectedIndex","label","describedByIds","existingDescribedBy","getAttribute","split","setDescribedByIds","ids","length","join","onContainerClick","_isInlineSelect","size","el","target","selectionStart","selectionEnd","_getReadonlyAttribute","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","isStandalone","selector","inputs","booleanAttribute","host","listeners","properties","classAttribute","providers","provide","MatFormFieldControl","useExisting","exportAs","usesOnChanges","ngImport","decorators","args","Input","transform","MatInputModule","NgModule","imports","MatFormFieldModule","exports","TextFieldModule","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AASM,SAAUA,+BAA+BA,CAACC,IAAY,EAAA;AAC1D,EAAA,OAAOC,KAAK,CAAC,CAAA,YAAA,EAAeD,IAAI,gCAAgC,CAAC;AACnE;;AC0BA,MAAME,uBAAuB,GAAG,CAC9B,QAAQ,EACR,UAAU,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,CACT;MASYC,gBAAgB,GAAG,IAAIC,cAAc,CAAiB,kBAAkB;MAsCxEC,QAAQ,CAAA;AAGTC,EAAAA,WAAW,GACnBC,MAAM,CAAyEC,UAAU,CAAC;AAClFC,EAAAA,SAAS,GAAGF,MAAM,CAACG,QAAQ,CAAC;AACtCC,EAAAA,SAAS,GAAGJ,MAAM,CAACK,SAAS,EAAE;AAACC,IAAAA,QAAQ,EAAE,IAAI;AAAEC,IAAAA,IAAI,EAAE;AAAI,GAAC,CAAE;AACpDC,EAAAA,gBAAgB,GAAGR,MAAM,CAACS,eAAe,CAAC;AAC1CC,EAAAA,OAAO,GAAGV,MAAM,CAACW,MAAM,CAAC;AACtBC,EAAAA,UAAU,GAAIZ,MAAM,CAAea,cAAc,EAAE;AAACP,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;AACtEQ,EAAAA,SAAS,GAAGd,MAAM,CAACe,SAAS,CAAC;EAE3BC,IAAI,GAAGhB,MAAM,CAACiB,YAAY,CAAC,CAACC,KAAK,CAAC,YAAY,CAAC;EAC/CC,oBAAoB;EACtBC,mBAAmB;EACnBC,yBAAyB;AACzBC,EAAAA,oBAAoB,GAAkB,IAAI;EAC1CC,kBAAkB;AAClBC,EAAAA,OAAO,GAAGxB,MAAM,CAACJ,gBAAgB,EAAE;AAACU,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;EACpDmB,gBAAgB;EAChBC,mBAAmB;AAGlBC,EAAAA,SAAS,GAAY,KAAK;AAG1BC,EAAAA,eAAe,GAAY,KAAK;AAGhCC,EAAAA,WAAW,GAAY,KAAK;AAG5BC,EAAAA,cAAc,GAAY,KAAK;AAMxCC,EAAAA,OAAO,GAAY,KAAK;AAMfC,EAAAA,YAAY,GAAkB,IAAIC,OAAO,EAAQ;AAM1DC,EAAAA,WAAW,GAAW,WAAW;AAMjCC,EAAAA,UAAU,GAAG,KAAK;EAMlB,IACIC,QAAQA,GAAA;IACV,OAAO,IAAI,CAACC,SAAS;AACvB,EAAA;EACA,IAAID,QAAQA,CAACE,KAAmB,EAAA;AAC9B,IAAA,IAAI,CAACD,SAAS,GAAGE,qBAAqB,CAACD,KAAK,CAAC;IAI7C,IAAI,IAAI,CAACP,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,GAAG,KAAK;AACpB,MAAA,IAAI,CAACC,YAAY,CAACQ,IAAI,EAAE;AAC1B,IAAA;AACF,EAAA;AACUH,EAAAA,SAAS,GAAG,KAAK;EAM3B,IACII,EAAEA,GAAA;IACJ,OAAO,IAAI,CAACC,GAAG;AACjB,EAAA;EACA,IAAID,EAAEA,CAACH,KAAa,EAAA;AAClB,IAAA,IAAI,CAACI,GAAG,GAAGJ,KAAK,IAAI,IAAI,CAACtB,IAAI;AAC/B,EAAA;EACU0B,GAAG;EAMJC,WAAW;EAMXC,IAAI;EAMb,IACIC,QAAQA,GAAA;AACV,IAAA,OAAO,IAAI,CAACC,SAAS,IAAI,IAAI,CAAC1C,SAAS,EAAE2C,OAAO,EAAEC,YAAY,CAACC,UAAU,CAACJ,QAAQ,CAAC,IAAI,KAAK;AAC9F,EAAA;EACA,IAAIA,QAAQA,CAACP,KAAmB,EAAA;AAC9B,IAAA,IAAI,CAACQ,SAAS,GAAGP,qBAAqB,CAACD,KAAK,CAAC;AAC/C,EAAA;EACUQ,SAAS;EAGnB,IACIrD,IAAIA,GAAA;IACN,OAAO,IAAI,CAACyD,KAAK;AACnB,EAAA;EACA,IAAIzD,IAAIA,CAAC6C,KAAa,EAAA;AACpB,IAAA,IAAI,CAACY,KAAK,GAAGZ,KAAK,IAAI,MAAM;IAC5B,IAAI,CAACa,aAAa,EAAE;AAKpB,IAAA,IAAI,CAAC,IAAI,CAACtB,WAAW,IAAIuB,sBAAsB,EAAE,CAACC,GAAG,CAAC,IAAI,CAACH,KAAK,CAAC,EAAE;MAChE,IAAI,CAACnD,WAAW,CAACuD,aAAkC,CAAC7D,IAAI,GAAG,IAAI,CAACyD,KAAK;AACxE,IAAA;AACF,EAAA;AACUA,EAAAA,KAAK,GAAG,MAAM;EAGxB,IACIK,iBAAiBA,GAAA;AACnB,IAAA,OAAO,IAAI,CAAChC,kBAAkB,CAACiC,OAAO;AACxC,EAAA;EACA,IAAID,iBAAiBA,CAACjB,KAAwB,EAAA;AAC5C,IAAA,IAAI,CAACf,kBAAkB,CAACiC,OAAO,GAAGlB,KAAK;AACzC,EAAA;EAM2BmB,mBAAmB;EAM9C,IACInB,KAAKA,GAAA;AACP,IAAA,OAAO,IAAI,CAACjB,yBAAA,GACR,IAAI,CAACA,yBAAyB,CAACiB,KAAK,EAAA,GACpC,IAAI,CAAClB,mBAAmB,CAACkB,KAAK;AACpC,EAAA;EACA,IAAIA,KAAKA,CAACA,KAAU,EAAA;AAClB,IAAA,IAAIA,KAAK,KAAK,IAAI,CAACA,KAAK,EAAE;MACxB,IAAI,IAAI,CAACjB,yBAAyB,EAAE;QAClC,IAAI,CAACA,yBAAyB,CAACiB,KAAK,CAACoB,GAAG,CAACpB,KAAK,CAAC;AACjD,MAAA,CAAA,MAAO;AACL,QAAA,IAAI,CAAClB,mBAAmB,CAACkB,KAAK,GAAGA,KAAK;AACxC,MAAA;AAEA,MAAA,IAAI,CAACN,YAAY,CAACQ,IAAI,EAAE;AAC1B,IAAA;AACF,EAAA;EAGA,IACImB,QAAQA,GAAA;IACV,OAAO,IAAI,CAACC,SAAS;AACvB,EAAA;EACA,IAAID,QAAQA,CAACrB,KAAmB,EAAA;AAC9B,IAAA,IAAI,CAACsB,SAAS,GAAGrB,qBAAqB,CAACD,KAAK,CAAC;AAC/C,EAAA;AACQsB,EAAAA,SAAS,GAAG,KAAK;EAIzBC,mBAAmB;EAGnB,IAAIC,UAAUA,GAAA;AACZ,IAAA,OAAO,IAAI,CAACvC,kBAAkB,CAACuC,UAAU;AAC3C,EAAA;EACA,IAAIA,UAAUA,CAACxB,KAAc,EAAA;AAC3B,IAAA,IAAI,CAACf,kBAAkB,CAACuC,UAAU,GAAGxB,KAAK;AAC5C,EAAA;EAEUyB,qBAAqB,GAAG,CAChC,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,MAAM,CACP,CAACC,MAAM,CAACC,CAAC,IAAIb,sBAAsB,EAAE,CAACC,GAAG,CAACY,CAAC,CAAC,CAAC;AAE9CC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,UAAU,GAAGnE,MAAM,CAACoE,MAAM,EAAE;AAAC9D,MAAAA,QAAQ,EAAE;AAAI,KAAC,CAAC;AACnD,IAAA,MAAM+D,eAAe,GAAGrE,MAAM,CAACsE,kBAAkB,EAAE;AAAChE,MAAAA,QAAQ,EAAE;AAAI,KAAC,CAAC;AACpE,IAAA,MAAMiE,wBAAwB,GAAGvE,MAAM,CAACwE,iBAAiB,CAAC;AAC1D,IAAA,MAAMC,QAAQ,GAAGzE,MAAM,CAAC0E,wBAAwB,EAAE;AAACpE,MAAAA,QAAQ,EAAE,IAAI;AAAEC,MAAAA,IAAI,EAAE;AAAI,KAAC,CAAC;AAE/E,IAAA,MAAMoE,OAAO,GAAG,IAAI,CAAC5E,WAAW,CAACuD,aAAa;IAC9C,MAAMsB,QAAQ,GAAGD,OAAO,CAACC,QAAQ,CAACC,WAAW,EAAE;AAE/C,IAAA,IAAIJ,QAAQ,EAAE;AACZ,MAAA,IAAIK,QAAQ,CAACL,QAAQ,CAACnC,KAAK,CAAC,EAAE;QAC5B,IAAI,CAACjB,yBAAyB,GAAGoD,QAAQ;AAC3C,MAAA,CAAA,MAAO;QACL,IAAI,CAACrD,mBAAmB,GAAGqD,QAAQ;AACrC,MAAA;AACF,IAAA,CAAA,MAAO;MAGL,IAAI,CAACrD,mBAAmB,GAAGuD,OAAO;AACpC,IAAA;AAEA,IAAA,IAAI,CAACxD,oBAAoB,GAAG,IAAI,CAACmB,KAAK;AAGtC,IAAA,IAAI,CAACG,EAAE,GAAG,IAAI,CAACA,EAAE;AAKjB,IAAA,IAAI,IAAI,CAACvC,SAAS,CAAC6E,GAAG,EAAE;AACtB,MAAA,IAAI,CAACrE,OAAO,CAACsE,iBAAiB,CAAC,MAAK;AAClC,QAAA,IAAI,CAACvD,gBAAgB,GAAG,IAAI,CAACX,SAAS,CAACmE,MAAM,CAACN,OAAO,EAAE,OAAO,EAAE,IAAI,CAACO,iBAAiB,CAAC;AACzF,MAAA,CAAC,CAAC;AACJ,IAAA;AAEA,IAAA,IAAI,CAAC3D,kBAAkB,GAAG,IAAI4D,kBAAkB,CAC9CZ,wBAAwB,EACxB,IAAI,CAACnE,SAAS,EACdiE,eAAe,EACfF,UAAU,EACV,IAAI,CAACnC,YAAY,CAClB;IACD,IAAI,CAACL,SAAS,GAAG,CAAC,IAAI,CAACzB,SAAS,CAACkF,SAAS;AAC1C,IAAA,IAAI,CAACxD,eAAe,GAAGgD,QAAQ,KAAK,QAAQ;AAC5C,IAAA,IAAI,CAAC/C,WAAW,GAAG+C,QAAQ,KAAK,UAAU;AAC1C,IAAA,IAAI,CAAC9C,cAAc,GAAG,CAAC,CAAC,IAAI,CAAClB,UAAU;IACvC,IAAI,CAACiD,mBAAmB,GAAG,IAAI,CAACrC,OAAO,EAAEqC,mBAAmB,IAAI,KAAK;IAErE,IAAI,IAAI,CAACjC,eAAe,EAAE;MACxB,IAAI,CAACM,WAAW,GAAIyC,OAA6B,CAACU,QAAA,GAC9C,4BAAA,GACA,mBAAmB;AACzB,IAAA;IAEA,IAAI,IAAI,CAAChE,yBAAyB,EAAE;AAClCiE,MAAAA,MAAM,CAAC,MAAK;AAEV,QAAA,IAAI,CAACjE,yBAA0B,CAACiB,KAAK,EAAE;AACvC,QAAA,IAAI,CAACN,YAAY,CAACQ,IAAI,EAAE;AAC1B,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEA+C,EAAAA,eAAeA,GAAA;AACb,IAAA,IAAI,IAAI,CAACrF,SAAS,CAACkF,SAAS,EAAE;AAC5B,MAAA,IAAI,CAAC5E,gBAAgB,CAACgF,OAAO,CAAC,IAAI,CAACzF,WAAW,CAACuD,aAAa,CAAC,CAACmC,SAAS,CAACC,KAAK,IAAG;AAC9E,QAAA,IAAI,CAACvD,UAAU,GAAGuD,KAAK,CAACC,YAAY;AACpC,QAAA,IAAI,CAAC3D,YAAY,CAACQ,IAAI,EAAE;AAC1B,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEAoD,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAAC5D,YAAY,CAACQ,IAAI,EAAE;AAC1B,EAAA;AAEAqD,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAAC7D,YAAY,CAAC8D,QAAQ,EAAE;AAE5B,IAAA,IAAI,IAAI,CAAC5F,SAAS,CAACkF,SAAS,EAAE;MAC5B,IAAI,CAAC5E,gBAAgB,CAACuF,cAAc,CAAC,IAAI,CAAChG,WAAW,CAACuD,aAAa,CAAC;AACtE,IAAA;IAEA,IAAI,CAAC7B,gBAAgB,IAAI;IACzB,IAAI,CAACC,mBAAmB,IAAI;AAC9B,EAAA;AAEAsE,EAAAA,SAASA,GAAA;IACP,IAAI,IAAI,CAAC5F,SAAS,EAAE;MAIlB,IAAI,CAAC6F,gBAAgB,EAAE;AAMvB,MAAA,IAAI,IAAI,CAAC7F,SAAS,CAACgC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAChC,SAAS,CAACgC,QAAQ,KAAK,IAAI,CAACA,QAAQ,EAAE;AACjF,QAAA,IAAI,CAACA,QAAQ,GAAG,IAAI,CAAChC,SAAS,CAACgC,QAAQ;AACvC,QAAA,IAAI,CAACJ,YAAY,CAACQ,IAAI,EAAE;AAC1B,MAAA;AACF,IAAA;IAKA,IAAI,CAAC0D,sBAAsB,EAAE;IAI7B,IAAI,CAACC,sBAAsB,EAAE;AAC/B,EAAA;EAGAC,KAAKA,CAACC,OAAsB,EAAA;IAC1B,IAAI,CAACtG,WAAW,CAACuD,aAAa,CAAC8C,KAAK,CAACC,OAAO,CAAC;AAC/C,EAAA;AAGAJ,EAAAA,gBAAgBA,GAAA;AACd,IAAA,IAAI,CAAC1E,kBAAkB,CAAC0E,gBAAgB,EAAE;AAC5C,EAAA;EAGAK,aAAaA,CAACC,SAAkB,EAAA;AAC9B,IAAA,IAAIA,SAAS,KAAK,IAAI,CAACxE,OAAO,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACH,eAAe,IAAI2E,SAAS,IAAI,IAAI,CAACnE,QAAQ,IAAI,IAAI,CAACyB,mBAAmB,EAAE;AACnF,MAAA,MAAMc,OAAO,GAAG,IAAI,CAAC5E,WAAW,CAACuD,aAAiC;AAIlE,MAAA,IAAIqB,OAAO,CAAClF,IAAI,KAAK,QAAQ,EAAE;QAE7BkF,OAAO,CAAClF,IAAI,GAAG,MAAM;AACrBkF,QAAAA,OAAO,CAAC6B,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B7B,OAAO,CAAClF,IAAI,GAAG,QAAQ;AACzB,MAAA,CAAA,MAAO;AACLkF,QAAAA,OAAO,CAAC6B,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,MAAA;AACF,IAAA;IAEA,IAAI,CAACzE,OAAO,GAAGwE,SAAS;AACxB,IAAA,IAAI,CAACvE,YAAY,CAACQ,IAAI,EAAE;AAC1B,EAAA;EAEAiE,QAAQA,GAAA,CAQR;AAGUP,EAAAA,sBAAsBA,GAAA;IAC9B,MAAMQ,QAAQ,GAAG,IAAI,CAAC3G,WAAW,CAACuD,aAAa,CAAChB,KAAK;AAErD,IAAA,IAAI,IAAI,CAACnB,oBAAoB,KAAKuF,QAAQ,EAAE;MAC1C,IAAI,CAACvF,oBAAoB,GAAGuF,QAAQ;AACpC,MAAA,IAAI,CAAC1E,YAAY,CAACQ,IAAI,EAAE;AAC1B,IAAA;AACF,EAAA;AAGQ2D,EAAAA,sBAAsBA,GAAA;AAC5B,IAAA,MAAMxD,WAAW,GAAG,IAAI,CAACgE,eAAe,EAAE;AAC1C,IAAA,IAAIhE,WAAW,KAAK,IAAI,CAACrB,oBAAoB,EAAE;AAC7C,MAAA,MAAMqD,OAAO,GAAG,IAAI,CAAC5E,WAAW,CAACuD,aAAa;MAC9C,IAAI,CAAChC,oBAAoB,GAAGqB,WAAW;AACvCA,MAAAA,WAAA,GACIgC,OAAO,CAACiC,YAAY,CAAC,aAAa,EAAEjE,WAAW,CAAA,GAC/CgC,OAAO,CAACkC,eAAe,CAAC,aAAa,CAAC;AAC5C,IAAA;AACF,EAAA;AAGUF,EAAAA,eAAeA,GAAA;AACvB,IAAA,OAAO,IAAI,CAAChE,WAAW,IAAI,IAAI;AACjC,EAAA;AAGUQ,EAAAA,aAAaA,GAAA;AACrB,IAAA,IACExD,uBAAuB,CAACmH,OAAO,CAAC,IAAI,CAAC5D,KAAK,CAAC,GAAG,EAAE,KAC/C,OAAO6D,SAAS,KAAK,WAAW,IAAIA,SAAS,CAAC,EAC/C;AACA,MAAA,MAAMvH,+BAA+B,CAAC,IAAI,CAAC0D,KAAK,CAAC;AACnD,IAAA;AACF,EAAA;AAGU8D,EAAAA,aAAaA,GAAA;AACrB,IAAA,OAAO,IAAI,CAACjD,qBAAqB,CAAC+C,OAAO,CAAC,IAAI,CAAC5D,KAAK,CAAC,GAAG,EAAE;AAC5D,EAAA;AAGU+D,EAAAA,WAAWA,GAAA;IAEnB,IAAIC,QAAQ,GAAI,IAAI,CAACnH,WAAW,CAACuD,aAAkC,CAAC4D,QAAQ;AAC5E,IAAA,OAAOA,QAAQ,IAAIA,QAAQ,CAACC,QAAQ;AACtC,EAAA;EAMA,IAAIC,KAAKA,GAAA;IACP,OACE,CAAC,IAAI,CAACJ,aAAa,EAAE,IACrB,CAAC,IAAI,CAACjH,WAAW,CAACuD,aAAa,CAAChB,KAAK,IACrC,CAAC,IAAI,CAAC2E,WAAW,EAAE,IACnB,CAAC,IAAI,CAAC9E,UAAU;AAEpB,EAAA;EAMA,IAAIkF,gBAAgBA,GAAA;IAClB,IAAI,IAAI,CAACzF,eAAe,EAAE;AAIxB,MAAA,MAAM0F,aAAa,GAAG,IAAI,CAACvH,WAAW,CAACuD,aAAkC;AACzE,MAAA,MAAMiE,WAAW,GAAkCD,aAAa,CAACjB,OAAO,CAAC,CAAC,CAAC;MAI3E,OACE,IAAI,CAACtE,OAAO,IACZuF,aAAa,CAACjC,QAAQ,IACtB,CAAC,IAAI,CAAC+B,KAAK,IACX,CAAC,EAAEE,aAAa,CAACE,aAAa,GAAG,EAAE,IAAID,WAAW,IAAIA,WAAW,CAACE,KAAK,CAAC;AAE5E,IAAA,CAAA,MAAO;AACL,MAAA,OAAQ,IAAI,CAAC1F,OAAO,IAAI,CAAC,IAAI,CAACK,QAAQ,IAAK,CAAC,IAAI,CAACgF,KAAK;AACxD,IAAA;AACF,EAAA;EAMA,IAAIM,cAAcA,GAAA;AAChB,IAAA,MAAM/C,OAAO,GAAG,IAAI,CAAC5E,WAAW,CAACuD,aAAa;AAC9C,IAAA,MAAMqE,mBAAmB,GAAGhD,OAAO,CAACiD,YAAY,CAAC,kBAAkB,CAAC;AAEpE,IAAA,OAAOD,mBAAmB,EAAEE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AAC9C,EAAA;EAMAC,iBAAiBA,CAACC,GAAa,EAAA;AAC7B,IAAA,MAAMpD,OAAO,GAAG,IAAI,CAAC5E,WAAW,CAACuD,aAAa;IAE9C,IAAIyE,GAAG,CAACC,MAAM,EAAE;MACdrD,OAAO,CAACiC,YAAY,CAAC,kBAAkB,EAAEmB,GAAG,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,IAAA,CAAA,MAAO;AACLtD,MAAAA,OAAO,CAACkC,eAAe,CAAC,kBAAkB,CAAC;AAC7C,IAAA;AACF,EAAA;AAMAqB,EAAAA,gBAAgBA,GAAA;AAId,IAAA,IAAI,CAAC,IAAI,CAACnG,OAAO,EAAE;MACjB,IAAI,CAACqE,KAAK,EAAE;AACd,IAAA;AACF,EAAA;AAGA+B,EAAAA,eAAeA,GAAA;AACb,IAAA,MAAMxD,OAAO,GAAG,IAAI,CAAC5E,WAAW,CAACuD,aAAkC;AACnE,IAAA,OAAO,IAAI,CAAC1B,eAAe,KAAK+C,OAAO,CAACU,QAAQ,IAAIV,OAAO,CAACyD,IAAI,GAAG,CAAC,CAAC;AACvE,EAAA;EAEQlD,iBAAiB,GAAIQ,KAAY,IAAU;AACjD,IAAA,MAAM2C,EAAE,GAAG3C,KAAK,CAAC4C,MAA0B;AAQ3C,IAAA,IAAI,CAACD,EAAE,CAAC/F,KAAK,IAAI+F,EAAE,CAACE,cAAc,KAAK,CAAC,IAAIF,EAAE,CAACG,YAAY,KAAK,CAAC,EAAE;AAKjEH,MAAAA,EAAE,CAAC7B,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B6B,MAAAA,EAAE,CAAC7B,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAA;EACF,CAAC;AAGSiC,EAAAA,qBAAqBA,GAAA;IAC7B,IAAI,IAAI,CAAC7G,eAAe,EAAE;AACxB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAI,IAAI,CAAC+B,QAAQ,IAAK,IAAI,CAACvB,QAAQ,IAAI,IAAI,CAACyB,mBAAoB,EAAE;AAChE,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,OAAO,IAAI;AACb,EAAA;;;;;UA1gBW/D,QAAQ;AAAA4I,IAAAA,IAAA,EAAA,EAAA;AAAAJ,IAAAA,MAAA,EAAAK,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAR,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAxJ,IAAAA,IAAA,EAAAK,QAAQ;AAAAoJ,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,2HAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAhH,MAAAA,QAAA,EAAA,UAAA;AAAAK,MAAAA,EAAA,EAAA,IAAA;AAAAE,MAAAA,WAAA,EAAA,aAAA;AAAAC,MAAAA,IAAA,EAAA,MAAA;AAAAC,MAAAA,QAAA,EAAA,UAAA;AAAApD,MAAAA,IAAA,EAAA,MAAA;AAAA8D,MAAAA,iBAAA,EAAA,mBAAA;AAAAE,MAAAA,mBAAA,EAAA,CAAA,kBAAA,EAAA,qBAAA,CAAA;AAAAnB,MAAAA,KAAA,EAAA,OAAA;AAAAqB,MAAAA,QAAA,EAAA,UAAA;AAAAE,MAAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAsLAwF,gBAAgB;KAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,SAAA,EAAA;AAAA,QAAA,OAAA,EAAA,qBAAA;AAAA,QAAA,MAAA,EAAA,sBAAA;AAAA,QAAA,OAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,wBAAA,EAAA,WAAA;AAAA,QAAA,2CAAA,EAAA,+BAAA;AAAA,QAAA,wCAAA,EAAA,gBAAA;AAAA,QAAA,0CAAA,EAAA,qBAAA;AAAA,QAAA,6BAAA,EAAA,gBAAA;AAAA,QAAA,oCAAA,EAAA,mBAAA;AAAA,QAAA,IAAA,EAAA,IAAA;AAAA,QAAA,UAAA,EAAA,kCAAA;AAAA,QAAA,UAAA,EAAA,UAAA;AAAA,QAAA,WAAA,EAAA,cAAA;AAAA,QAAA,eAAA,EAAA,yBAAA;AAAA,QAAA,oBAAA,EAAA,mDAAA;AAAA,QAAA,mBAAA,EAAA,yCAAA;AAAA,QAAA,oBAAA,EAAA,UAAA;AAAA,QAAA,SAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,SAAA,EAxLxB,CAAC;AAACC,MAAAA,OAAO,EAAEC,mBAAmB;AAAEC,MAAAA,WAAW,EAAE/J;KAAS,CAAC;IAAAgK,QAAA,EAAA,CAAA,UAAA,CAAA;AAAAC,IAAAA,aAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAArB;AAAA,GAAA,CAAA;;;;;;QAEvD7I,QAAQ;AAAAmK,EAAAA,UAAA,EAAA,CAAA;UApCpBpB,SAAS;AAACqB,IAAAA,IAAA,EAAA,CAAA;AACTf,MAAAA,QAAQ,EAAE,CAAA;AAC8C,yDAAA,CAAA;AACxDW,MAAAA,QAAQ,EAAE,UAAU;AACpBR,MAAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,uBAAuB;AAIhC,QAAA,0BAA0B,EAAE,WAAW;AACvC,QAAA,6CAA6C,EAAE,+BAA+B;AAC9E,QAAA,0CAA0C,EAAE,gBAAgB;AAC5D,QAAA,4CAA4C,EAAE,qBAAqB;AACnE,QAAA,+BAA+B,EAAE,gBAAgB;AACjD,QAAA,sCAAsC,EAAE,mBAAmB;AAG3D,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,YAAY,EAAE,kCAAkC;AAChD,QAAA,YAAY,EAAE,UAAU;AACxB,QAAA,aAAa,EAAE,cAAc;AAC7B,QAAA,iBAAiB,EAAE,yBAAyB;AAC5C,QAAA,sBAAsB,EAAE,iDAAiD;AAGzE,QAAA,qBAAqB,EAAE,yCAAyC;AAChE,QAAA,sBAAsB,EAAE,UAAU;AAGlC,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,SAAS,EAAE,qBAAqB;AAChC,QAAA,QAAQ,EAAE,sBAAsB;AAChC,QAAA,SAAS,EAAE;OACZ;AACDI,MAAAA,SAAS,EAAE,CAAC;AAACC,QAAAA,OAAO,EAAEC,mBAAmB;AAAEC,QAAAA,WAAW,EAAA/J;OAAW;KAClE;;;;;YA+DEqK;;;YAoBAA;;;YAaAA;;;YAMAA;;;YAMAA;;;YAUAA;;;YAkBAA;;;YAYAA,KAAK;aAAC,kBAAkB;;;YAMxBA;;;YAmBAA;;;YAUAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAEf;OAAiB;;;;;MClQzBgB,cAAc,CAAA;;;;;UAAdA,cAAc;AAAA3B,IAAAA,IAAA,EAAA,EAAA;AAAAJ,IAAAA,MAAA,EAAAK,EAAA,CAAAC,eAAA,CAAA0B;AAAA,GAAA,CAAA;;;;;UAAdD,cAAc;AAAAE,IAAAA,OAAA,EAAA,CAHfC,kBAAkB,EAAE1K,QAAQ,CAAA;IAAA2K,OAAA,EAAA,CAC5B3K,QAAQ,EAAE0K,kBAAkB,EAAEE,eAAe,EAAEC,UAAU;AAAA,GAAA,CAAA;AAExD,EAAA,OAAAC,IAAA,GAAAjC,EAAA,CAAAkC,mBAAA,CAAA;AAAA7B,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAe,IAAAA,QAAA,EAAArB,EAAA;AAAAlJ,IAAAA,IAAA,EAAA4K,cAAc;cAHfG,kBAAkB,EACRA,kBAAkB,EAAEE,eAAe,EAAEC,UAAU;AAAA,GAAA,CAAA;;;;;;QAExDN,cAAc;AAAAJ,EAAAA,UAAA,EAAA,CAAA;UAJ1BK,QAAQ;AAACJ,IAAAA,IAAA,EAAA,CAAA;AACRK,MAAAA,OAAO,EAAE,CAACC,kBAAkB,EAAE1K,QAAQ,CAAC;MACvC2K,OAAO,EAAE,CAAC3K,QAAQ,EAAE0K,kBAAkB,EAAEE,eAAe,EAAEC,UAAU;KACpE;;;;;;"}
1
+ {"version":3,"file":"input.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n isSignal,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\nimport {FORM_FIELD} from '@angular/forms/signals';\nimport {ErrorStateMatcher, _ErrorStateTracker} from '../core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n/** Object that can be used to configure the default options for the input. */\nexport interface MatInputConfig {\n /** Whether disabled inputs should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the input. */\nexport const MAT_INPUT_CONFIG = new InjectionToken<MatInputConfig>('MAT_INPUT_CONFIG');\n\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mat-mdc-input-disabled-interactive]': 'disabledInteractive',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled && !disabledInteractive',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput\n implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\n{\n protected _elementRef =\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\n protected _platform = inject(Platform);\n ngControl = inject(NgControl, {optional: true, self: true})!;\n private _autofillMonitor = inject(AutofillMonitor);\n private _ngZone = inject(NgZone);\n protected _formField? = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n private _renderer = inject(Renderer2);\n\n protected _uid = inject(_IdGenerator).getId('mat-input-');\n protected _previousNativeValue: any;\n private _inputValueAccessor!: {value: any};\n private _signalBasedValueAccessor?: {value: WritableSignal<any>};\n private _previousPlaceholder: string | null = null;\n private _errorStateTracker: _ErrorStateTracker;\n private _config = inject(MAT_INPUT_CONFIG, {optional: true});\n private _cleanupIosKeyup: (() => void) | undefined;\n private _cleanupWebkitWheel: (() => void) | undefined;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean = false;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean = false;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean = false;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder!: string;\n\n /**\n * Name of the input.\n * @docs-private\n */\n @Input() name!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean | undefined;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._signalBasedValueAccessor\n ? this._signalBasedValueAccessor.value()\n : this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n if (this._signalBasedValueAccessor) {\n this._signalBasedValueAccessor.value.set(value);\n } else {\n this._inputValueAccessor.value = value;\n }\n\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Whether the input is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor() {\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const accessor = inject(MAT_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\n const formField = inject(FORM_FIELD, {optional: true, self: true});\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n if (accessor) {\n if (isSignal(accessor.value)) {\n this._signalBasedValueAccessor = accessor;\n } else {\n this._inputValueAccessor = accessor;\n }\n } else {\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = element;\n }\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (this._platform.IOS) {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\n });\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n formField || this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!this._formField;\n this.disabledInteractive = this._config?.disabledInteractive || false;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n\n if (this._signalBasedValueAccessor) {\n effect(() => {\n // Read the value so the effect can register the dependency.\n this._signalBasedValueAccessor!.value();\n this.stateChanges.next();\n });\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n this._cleanupIosKeyup?.();\n this._cleanupWebkitWheel?.();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Refreshes the error state of the input. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\n const element = this._elementRef.nativeElement as HTMLInputElement;\n\n // Focusing an input that has text will cause all the text to be selected. Clear it since\n // the user won't be able to change it. This is based on the internal implementation.\n if (element.type === 'number') {\n // setSelectionRange doesn't work on number inputs so it needs to be set briefly to text.\n element.type = 'text';\n element.setSelectionRange(0, 0);\n element.type = 'number';\n } else {\n element.setSelectionRange(0, 0);\n }\n }\n\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n\n /** Gets the current placeholder of the form field. */\n protected _getPlaceholder(): string | null {\n return this.placeholder || null;\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (\n MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (\n !this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled\n );\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (\n this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n );\n } else {\n return (this.focused && !this.disabled) || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n const element = this._elementRef.nativeElement;\n\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n private _iOSKeyupListener = (event: Event): void => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n if (this._isNativeSelect) {\n return null;\n }\n\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\n return 'true';\n }\n\n return null;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '../form-field';\nimport {MatInput} from './input';\n\n@NgModule({\n imports: [MatFormFieldModule, MatInput],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, BidiModule],\n})\nexport class MatInputModule {}\n"],"names":["getMatInputUnsupportedTypeError","type","Error","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","InjectionToken","MatInput","_elementRef","inject","ElementRef","_platform","Platform","ngControl","NgControl","optional","self","_autofillMonitor","AutofillMonitor","_ngZone","NgZone","_formField","MAT_FORM_FIELD","_renderer","Renderer2","_uid","_IdGenerator","getId","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_errorStateTracker","_config","_cleanupIosKeyup","_cleanupWebkitWheel","_isServer","_isNativeSelect","_isTextarea","_isInFormField","focused","stateChanges","Subject","controlType","autofilled","disabled","_disabled","value","coerceBooleanProperty","next","id","_id","placeholder","name","required","_required","control","hasValidator","Validators","_type","_validateType","getSupportedInputTypes","has","nativeElement","errorStateMatcher","matcher","userAriaDescribedBy","set","readonly","_readonly","disabledInteractive","errorState","_neverEmptyInputTypes","filter","t","constructor","parentForm","NgForm","parentFormGroup","FormGroupDirective","defaultErrorStateMatcher","ErrorStateMatcher","accessor","MAT_INPUT_VALUE_ACCESSOR","formField","FORM_FIELD","element","nodeName","toLowerCase","isSignal","IOS","runOutsideAngular","listen","_iOSKeyupListener","_ErrorStateTracker","isBrowser","multiple","effect","ngAfterViewInit","monitor","subscribe","event","isAutofilled","ngOnChanges","ngOnDestroy","complete","stopMonitoring","ngDoCheck","updateErrorState","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","focus","options","_focusChanged","isFocused","setSelectionRange","_onInput","newValue","_getPlaceholder","setAttribute","removeAttribute","indexOf","ngDevMode","_isNeverEmpty","_isBadInput","validity","badInput","empty","shouldLabelFloat","selectElement","firstOption","selectedIndex","label","describedByIds","existingDescribedBy","getAttribute","split","setDescribedByIds","ids","length","join","onContainerClick","_isInlineSelect","size","el","target","selectionStart","selectionEnd","_getReadonlyAttribute","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","isStandalone","selector","inputs","booleanAttribute","host","listeners","properties","classAttribute","providers","provide","MatFormFieldControl","useExisting","exportAs","usesOnChanges","ngImport","decorators","args","Input","transform","MatInputModule","NgModule","imports","MatFormFieldModule","exports","TextFieldModule","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}