@taiga-ui/legacy 4.4.1 → 4.5.0-canary.49229f4

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 (218) hide show
  1. package/classes/abstract-native-select.d.ts +1 -1
  2. package/components/color-selector/color-edit/color-edit.component.d.ts +1 -1
  3. package/components/input-date-range/input-date-range.component.d.ts +1 -4
  4. package/components/input-password/input-password.component.d.ts +4 -1
  5. package/components/input-password/input-password.directive.d.ts +3 -0
  6. package/components/input-password/input-password.module.d.ts +3 -0
  7. package/components/input-password/input-password.options.d.ts +12 -0
  8. package/components/input-tag/input-tag.component.d.ts +2 -1
  9. package/components/input-tag/input-tag.options.d.ts +1 -0
  10. package/components/input-time/native-time/native-time.component.d.ts +1 -1
  11. package/components/multi-select/multi-select.component.d.ts +2 -1
  12. package/components/primitive-textfield/primitive-textfield.component.d.ts +1 -0
  13. package/components/primitive-textfield/textfield/textfield.component.d.ts +1 -1
  14. package/components/sheet/components/sheet-heading/sheet-heading.component.d.ts +1 -1
  15. package/directives/textfield-controller/textfield-appearance.directive.d.ts +0 -6
  16. package/directives/textfield-controller/textfield-cleaner.directive.d.ts +0 -6
  17. package/directives/textfield-controller/textfield-controller.module.d.ts +0 -3
  18. package/directives/textfield-controller/textfield-controller.provider.d.ts +0 -6
  19. package/directives/textfield-controller/textfield-custom-content.directive.d.ts +0 -6
  20. package/directives/textfield-controller/textfield-filler.directive.d.ts +0 -6
  21. package/directives/textfield-controller/textfield-icon-left.directive.d.ts +0 -6
  22. package/directives/textfield-controller/textfield-icon.directive.d.ts +0 -6
  23. package/directives/textfield-controller/textfield-label-outside.directive.d.ts +0 -6
  24. package/directives/textfield-controller/textfield-postfix.directive.d.ts +0 -6
  25. package/directives/textfield-controller/textfield-prefix.directive.d.ts +0 -6
  26. package/directives/textfield-controller/textfield-size.directive.d.ts +0 -6
  27. package/directives/textfield-controller/textfield.options.d.ts +0 -6
  28. package/directives/unfinished-validator/unfinished-validator.directive.d.ts +0 -3
  29. package/directives/unfinished-validator/unfinished.validator.d.ts +0 -3
  30. package/directives/value-accessor/value-accessor.directive.d.ts +0 -3
  31. package/directives/value-accessor/value-accessor.module.d.ts +0 -3
  32. package/directives/value-accessor/value-accessor.provider.d.ts +0 -3
  33. package/esm2022/classes/abstract-native-select.mjs +5 -4
  34. package/esm2022/classes/control.mjs +2 -1
  35. package/esm2022/classes/interactive.mjs +2 -1
  36. package/esm2022/components/arrow/arrow.component.mjs +3 -3
  37. package/esm2022/components/color-selector/color-edit/color-edit.component.mjs +3 -3
  38. package/esm2022/components/color-selector/color-picker/color-picker.component.mjs +3 -3
  39. package/esm2022/components/color-selector/color-selector.component.mjs +6 -6
  40. package/esm2022/components/color-selector/flat-picker/flat-picker.component.mjs +3 -3
  41. package/esm2022/components/color-selector/linear-multi-picker/linear-multi-picker.component.mjs +4 -4
  42. package/esm2022/components/color-selector/linear-picker/linear-picker.component.mjs +3 -3
  43. package/esm2022/components/color-selector/palette/palette.component.mjs +3 -3
  44. package/esm2022/components/combo-box/combo-box-strict.directive.mjs +2 -1
  45. package/esm2022/components/combo-box/combo-box.component.mjs +5 -5
  46. package/esm2022/components/combo-box/combo-box.directive.mjs +2 -1
  47. package/esm2022/components/input/input.component.mjs +4 -4
  48. package/esm2022/components/input/input.directive.mjs +2 -1
  49. package/esm2022/components/input-color/input-color.component.mjs +4 -4
  50. package/esm2022/components/input-copy/input-copy.component.mjs +4 -4
  51. package/esm2022/components/input-copy/input-copy.directive.mjs +2 -1
  52. package/esm2022/components/input-date/input-date.component.mjs +4 -4
  53. package/esm2022/components/input-date/input-date.directive.mjs +2 -1
  54. package/esm2022/components/input-date/native-date/native-date.component.mjs +2 -1
  55. package/esm2022/components/input-date-multi/input-date-multi.component.mjs +4 -4
  56. package/esm2022/components/input-date-range/input-date-range.component.mjs +6 -20
  57. package/esm2022/components/input-date-range/input-date-range.directive.mjs +2 -1
  58. package/esm2022/components/input-date-time/input-date-time.component.mjs +5 -5
  59. package/esm2022/components/input-date-time/input-date-time.directive.mjs +2 -1
  60. package/esm2022/components/input-date-time/native-date-time/native-date-time.directive.mjs +2 -1
  61. package/esm2022/components/input-month/input-month.component.mjs +5 -5
  62. package/esm2022/components/input-month/input-month.directive.mjs +2 -1
  63. package/esm2022/components/input-month-range/input-month-range.component.mjs +4 -4
  64. package/esm2022/components/input-month-range/input-month-range.directive.mjs +2 -1
  65. package/esm2022/components/input-number/input-number.component.mjs +4 -4
  66. package/esm2022/components/input-number/input-number.directive.mjs +2 -1
  67. package/esm2022/components/input-password/input-password.component.mjs +7 -4
  68. package/esm2022/components/input-password/input-password.directive.mjs +5 -1
  69. package/esm2022/components/input-password/input-password.module.mjs +4 -1
  70. package/esm2022/components/input-password/input-password.options.mjs +10 -1
  71. package/esm2022/components/input-phone/input-phone.component.mjs +4 -4
  72. package/esm2022/components/input-phone/input-phone.directive.mjs +2 -1
  73. package/esm2022/components/input-phone-international/input-phone-international.component.mjs +18 -18
  74. package/esm2022/components/input-range/input-range.component.mjs +4 -4
  75. package/esm2022/components/input-slider/input-slider.component.mjs +4 -4
  76. package/esm2022/components/input-tag/input-tag.component.mjs +10 -7
  77. package/esm2022/components/input-tag/input-tag.options.mjs +3 -2
  78. package/esm2022/components/input-time/input-time.component.mjs +4 -4
  79. package/esm2022/components/input-time/input-time.directive.mjs +2 -1
  80. package/esm2022/components/input-time/native-time/native-time.component.mjs +10 -10
  81. package/esm2022/components/input-year/input-year.component.mjs +4 -4
  82. package/esm2022/components/input-year/input-year.directive.mjs +2 -1
  83. package/esm2022/components/multi-select/hide-selected.pipe.mjs +2 -1
  84. package/esm2022/components/multi-select/multi-select-group/multi-select-group.component.mjs +2 -2
  85. package/esm2022/components/multi-select/multi-select-group/multi-select-group.directive.mjs +2 -1
  86. package/esm2022/components/multi-select/multi-select.component.mjs +9 -6
  87. package/esm2022/components/multi-select/multi-select.directive.mjs +2 -1
  88. package/esm2022/components/multi-select/native-multi-select/native-multi-select-group.component.mjs +4 -4
  89. package/esm2022/components/multi-select/native-multi-select/native-multi-select.component.mjs +4 -4
  90. package/esm2022/components/multi-select-option/multi-select-option.component.mjs +2 -2
  91. package/esm2022/components/primitive-textfield/primitive-textfield.component.mjs +12 -5
  92. package/esm2022/components/primitive-textfield/primitive-textfield.directive.mjs +2 -1
  93. package/esm2022/components/primitive-textfield/textfield/textfield.component.mjs +7 -7
  94. package/esm2022/components/primitive-textfield/value-decoration/value-decoration.component.mjs +4 -4
  95. package/esm2022/components/select/native-select/native-select-group.component.mjs +4 -4
  96. package/esm2022/components/select/native-select/native-select.component.mjs +4 -4
  97. package/esm2022/components/select/select.component.mjs +4 -4
  98. package/esm2022/components/select/select.directive.mjs +2 -1
  99. package/esm2022/components/select-option/select-option.component.mjs +5 -5
  100. package/esm2022/components/sheet/components/sheet/sheet.component.mjs +6 -5
  101. package/esm2022/components/sheet/components/sheet/sheet.providers.mjs +3 -3
  102. package/esm2022/components/sheet/components/sheet-bar/sheet-bar.component.mjs +3 -3
  103. package/esm2022/components/sheet/components/sheet-heading/sheet-heading.component.mjs +6 -6
  104. package/esm2022/components/sheet/components/sheets-host/sheets-host.component.mjs +3 -3
  105. package/esm2022/components/sheet/directives/sheet-close/sheet-close.directive.mjs +2 -1
  106. package/esm2022/components/sheet/directives/sheet-stop/sheet-stop.directive.mjs +2 -1
  107. package/esm2022/components/sheet/directives/sheet-top/sheet-top.directive.mjs +2 -1
  108. package/esm2022/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.mjs +2 -1
  109. package/esm2022/components/sheet/sheet.directive.mjs +2 -1
  110. package/esm2022/components/svg/svg.component.mjs +3 -3
  111. package/esm2022/components/svg/svg.service.mjs +2 -2
  112. package/esm2022/components/table-bar/table-bar.component.mjs +6 -6
  113. package/esm2022/components/table-bar/table-bars-host.component.mjs +3 -3
  114. package/esm2022/components/tag/tag.component.mjs +4 -4
  115. package/esm2022/components/textarea/textarea.component.mjs +4 -4
  116. package/esm2022/components/textarea/textarea.directive.mjs +2 -1
  117. package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
  118. package/esm2022/directives/textfield-controller/textfield-appearance.directive.mjs +2 -7
  119. package/esm2022/directives/textfield-controller/textfield-cleaner.directive.mjs +2 -7
  120. package/esm2022/directives/textfield-controller/textfield-controller.module.mjs +1 -4
  121. package/esm2022/directives/textfield-controller/textfield-controller.provider.mjs +1 -7
  122. package/esm2022/directives/textfield-controller/textfield-custom-content.directive.mjs +2 -7
  123. package/esm2022/directives/textfield-controller/textfield-filler.directive.mjs +2 -7
  124. package/esm2022/directives/textfield-controller/textfield-icon-left.directive.mjs +2 -7
  125. package/esm2022/directives/textfield-controller/textfield-icon.directive.mjs +2 -7
  126. package/esm2022/directives/textfield-controller/textfield-label-outside.directive.mjs +2 -7
  127. package/esm2022/directives/textfield-controller/textfield-postfix.directive.mjs +2 -7
  128. package/esm2022/directives/textfield-controller/textfield-prefix.directive.mjs +2 -7
  129. package/esm2022/directives/textfield-controller/textfield-size.directive.mjs +2 -7
  130. package/esm2022/directives/textfield-controller/textfield.options.mjs +1 -4
  131. package/esm2022/directives/unfinished-validator/unfinished-validator.directive.mjs +1 -4
  132. package/esm2022/directives/unfinished-validator/unfinished.validator.mjs +1 -4
  133. package/esm2022/directives/value-accessor/value-accessor.directive.mjs +2 -4
  134. package/esm2022/directives/value-accessor/value-accessor.module.mjs +1 -4
  135. package/esm2022/directives/value-accessor/value-accessor.provider.mjs +1 -4
  136. package/esm2022/directives/wrapper/wrapper.directive.mjs +2 -1
  137. package/esm2022/pipes/to-country-code/to-country-code.pipe.mjs +3 -3
  138. package/fesm2022/taiga-ui-legacy-classes.mjs +6 -3
  139. package/fesm2022/taiga-ui-legacy-classes.mjs.map +1 -1
  140. package/fesm2022/taiga-ui-legacy-components-arrow.mjs +3 -3
  141. package/fesm2022/taiga-ui-legacy-components-arrow.mjs.map +1 -1
  142. package/fesm2022/taiga-ui-legacy-components-color-selector.mjs +18 -18
  143. package/fesm2022/taiga-ui-legacy-components-color-selector.mjs.map +1 -1
  144. package/fesm2022/taiga-ui-legacy-components-combo-box.mjs +6 -4
  145. package/fesm2022/taiga-ui-legacy-components-combo-box.mjs.map +1 -1
  146. package/fesm2022/taiga-ui-legacy-components-input-color.mjs +3 -3
  147. package/fesm2022/taiga-ui-legacy-components-input-color.mjs.map +1 -1
  148. package/fesm2022/taiga-ui-legacy-components-input-copy.mjs +4 -3
  149. package/fesm2022/taiga-ui-legacy-components-input-copy.mjs.map +1 -1
  150. package/fesm2022/taiga-ui-legacy-components-input-date-multi.mjs +3 -3
  151. package/fesm2022/taiga-ui-legacy-components-input-date-multi.mjs.map +1 -1
  152. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +5 -18
  153. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +1 -1
  154. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +6 -4
  155. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +1 -1
  156. package/fesm2022/taiga-ui-legacy-components-input-date.mjs +5 -3
  157. package/fesm2022/taiga-ui-legacy-components-input-date.mjs.map +1 -1
  158. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +4 -3
  159. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +1 -1
  160. package/fesm2022/taiga-ui-legacy-components-input-month.mjs +5 -4
  161. package/fesm2022/taiga-ui-legacy-components-input-month.mjs.map +1 -1
  162. package/fesm2022/taiga-ui-legacy-components-input-number.mjs +4 -3
  163. package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +1 -1
  164. package/fesm2022/taiga-ui-legacy-components-input-password.mjs +22 -3
  165. package/fesm2022/taiga-ui-legacy-components-input-password.mjs.map +1 -1
  166. package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs +18 -18
  167. package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs.map +1 -1
  168. package/fesm2022/taiga-ui-legacy-components-input-phone.mjs +4 -3
  169. package/fesm2022/taiga-ui-legacy-components-input-phone.mjs.map +1 -1
  170. package/fesm2022/taiga-ui-legacy-components-input-range.mjs +3 -3
  171. package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +1 -1
  172. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs +3 -3
  173. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +1 -1
  174. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +11 -7
  175. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +1 -1
  176. package/fesm2022/taiga-ui-legacy-components-input-time.mjs +13 -12
  177. package/fesm2022/taiga-ui-legacy-components-input-time.mjs.map +1 -1
  178. package/fesm2022/taiga-ui-legacy-components-input-year.mjs +4 -3
  179. package/fesm2022/taiga-ui-legacy-components-input-year.mjs.map +1 -1
  180. package/fesm2022/taiga-ui-legacy-components-input.mjs +4 -3
  181. package/fesm2022/taiga-ui-legacy-components-input.mjs.map +1 -1
  182. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs +1 -1
  183. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs.map +1 -1
  184. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +18 -12
  185. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +1 -1
  186. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs +21 -13
  187. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +1 -1
  188. package/fesm2022/taiga-ui-legacy-components-select-option.mjs +4 -4
  189. package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +1 -1
  190. package/fesm2022/taiga-ui-legacy-components-select.mjs +10 -9
  191. package/fesm2022/taiga-ui-legacy-components-select.mjs.map +1 -1
  192. package/fesm2022/taiga-ui-legacy-components-sheet.mjs +21 -15
  193. package/fesm2022/taiga-ui-legacy-components-sheet.mjs.map +1 -1
  194. package/fesm2022/taiga-ui-legacy-components-svg.mjs +3 -3
  195. package/fesm2022/taiga-ui-legacy-components-svg.mjs.map +1 -1
  196. package/fesm2022/taiga-ui-legacy-components-table-bar.mjs +7 -7
  197. package/fesm2022/taiga-ui-legacy-components-table-bar.mjs.map +1 -1
  198. package/fesm2022/taiga-ui-legacy-components-tag.mjs +3 -3
  199. package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +1 -1
  200. package/fesm2022/taiga-ui-legacy-components-textarea.mjs +4 -3
  201. package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +1 -1
  202. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs +3 -3
  203. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs.map +1 -1
  204. package/fesm2022/taiga-ui-legacy-directives-textfield-controller.mjs +10 -72
  205. package/fesm2022/taiga-ui-legacy-directives-textfield-controller.mjs.map +1 -1
  206. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs +0 -6
  207. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs.map +1 -1
  208. package/fesm2022/taiga-ui-legacy-directives-value-accessor.mjs +1 -9
  209. package/fesm2022/taiga-ui-legacy-directives-value-accessor.mjs.map +1 -1
  210. package/fesm2022/taiga-ui-legacy-directives-wrapper.mjs +1 -0
  211. package/fesm2022/taiga-ui-legacy-directives-wrapper.mjs.map +1 -1
  212. package/fesm2022/taiga-ui-legacy-pipes-to-country-code.mjs +2 -2
  213. package/fesm2022/taiga-ui-legacy-pipes-to-country-code.mjs.map +1 -1
  214. package/package.json +318 -318
  215. package/styles/mixins/mixins.less +14 -14
  216. package/styles/mixins/textfield.less +10 -10
  217. package/styles/mixins/textfield.scss +1 -1
  218. package/utils/icons-path-factory.d.ts +1 -1
@@ -7,8 +7,8 @@ import * as i0 from "@angular/core";
7
7
  * @deprecated: drop in v5.0
8
8
  */
9
9
  export declare abstract class AbstractTuiNativeSelect<H = TuiTextfieldHost, T = string> {
10
- private readonly idService;
11
10
  protected readonly datalist: TemplateRef<any> | null;
11
+ protected readonly autoId: string;
12
12
  protected readonly el: HTMLSelectElement;
13
13
  protected readonly host: H;
14
14
  protected readonly control: AbstractTuiControl<any>;
@@ -6,7 +6,7 @@ export declare class TuiColorEditComponent {
6
6
  readonly colorChange: EventEmitter<[number, number, number, number]>;
7
7
  readonly hexMask: MaskitoOptions;
8
8
  readonly modes: string[];
9
- mode: string;
9
+ mode: string | undefined;
10
10
  get isHex(): boolean;
11
11
  get hex(): string;
12
12
  get opacity(): number;
@@ -1,4 +1,3 @@
1
- import type { AfterViewChecked } from '@angular/core';
2
1
  import type { MaskitoOptions } from '@maskito/core';
3
2
  import type { TuiDateMode, TuiDay, TuiDayLike } from '@taiga-ui/cdk/date-time';
4
3
  import { TuiDayRange, TuiMonth } from '@taiga-ui/cdk/date-time';
@@ -11,9 +10,8 @@ import { AbstractTuiNullableControl } from '@taiga-ui/legacy/classes';
11
10
  import type { TuiFocusableElementAccessor } from '@taiga-ui/legacy/tokens';
12
11
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
13
12
  import * as i0 from "@angular/core";
14
- export declare class TuiInputDateRangeComponent extends AbstractTuiNullableControl<TuiDayRange> implements TuiFocusableElementAccessor, AfterViewChecked {
13
+ export declare class TuiInputDateRangeComponent extends AbstractTuiNullableControl<TuiDayRange> implements TuiFocusableElementAccessor {
15
14
  private readonly textfield?;
16
- private readonly calendarRange?;
17
15
  private readonly isMobile;
18
16
  private readonly mobileCalendar;
19
17
  private readonly options;
@@ -38,7 +36,6 @@ export declare class TuiInputDateRangeComponent extends AbstractTuiNullableContr
38
36
  get computedExampleText(): string;
39
37
  get computedValue(): string;
40
38
  onClick(): void;
41
- ngAfterViewChecked(): void;
42
39
  onValueChange(value: string): void;
43
40
  onRangeChange(range: TuiDayRange | null): void;
44
41
  writeValue(value: TuiDayRange | null): void;
@@ -6,6 +6,9 @@ import type { TuiFocusableElementAccessor, TuiNativeFocusableElement } from '@ta
6
6
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
7
7
  import type { Observable } from 'rxjs';
8
8
  import * as i0 from "@angular/core";
9
+ /**
10
+ * @deprecated use {@link TuiInputPassword} instead
11
+ */
9
12
  export declare class TuiInputPasswordComponent extends AbstractTuiControl<string> implements TuiFocusableElementAccessor {
10
13
  private readonly textfield?;
11
14
  private readonly textfieldSize;
@@ -13,7 +16,7 @@ export declare class TuiInputPasswordComponent extends AbstractTuiControl<string
13
16
  protected readonly directive$: Observable<any>;
14
17
  protected isPasswordHidden: boolean;
15
18
  protected readonly computedAppearance$: Observable<string>;
16
- protected readonly passwordTexts$: Observable<[show_password: string, hide_password: string]>;
19
+ protected readonly passwordTexts$: Observable<readonly [show_password: string, hide_password: string]>;
17
20
  protected readonly options: import("./input-password.options").TuiInputPasswordOptions;
18
21
  protected readonly type: TuiContext<TuiSizeL | TuiSizeS>;
19
22
  get nativeFocusableElement(): TuiNativeFocusableElement | null;
@@ -2,6 +2,9 @@ import type { DoCheck } from '@angular/core';
2
2
  import { AbstractTuiTextfieldHost } from '@taiga-ui/legacy/classes';
3
3
  import type { TuiInputPasswordComponent } from './input-password.component';
4
4
  import * as i0 from "@angular/core";
5
+ /**
6
+ * @deprecated use {@link TuiInputPassword} instead
7
+ */
5
8
  export declare class TuiInputPasswordDirective extends AbstractTuiTextfieldHost<TuiInputPasswordComponent> implements DoCheck {
6
9
  protected input?: HTMLInputElement;
7
10
  onValueChange(value: string): void;
@@ -9,6 +9,9 @@ import * as i7 from "@taiga-ui/legacy/components/primitive-textfield";
9
9
  import * as i8 from "@taiga-ui/legacy/directives";
10
10
  import * as i9 from "@taiga-ui/core/directives/appearance";
11
11
  import * as i10 from "@taiga-ui/core/components/icon";
12
+ /**
13
+ * @deprecated use {@link TuiInputPassword} instead
14
+ */
12
15
  export declare class TuiInputPasswordModule {
13
16
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputPasswordModule, never>;
14
17
  static ɵmod: i0.ɵɵNgModuleDeclaration<TuiInputPasswordModule, [typeof i1.TuiInputPasswordComponent, typeof i2.TuiInputPasswordDirective], [typeof i3.TuiHintComponent, typeof i3.TuiHintDirective, typeof i3.TuiHintOptionsDirective, typeof i3.TuiHintUnstyled, typeof i3.TuiHintDriver, typeof i3.TuiHintPosition, typeof i3.TuiHintHover, typeof i3.TuiHintOverflow, typeof i3.TuiHintDescribe, typeof i3.TuiHintHost, typeof i3.TuiHintManual, typeof i3.TuiHintPointer, typeof i4.CommonModule, typeof i5.FormsModule, typeof i6.PolymorpheusOutlet, typeof i6.PolymorpheusTemplate, typeof i7.TuiPrimitiveTextfieldModule, typeof i8.TuiTextfieldControllerModule, typeof i9.TuiAppearance, typeof i10.TuiIcon], [typeof i1.TuiInputPasswordComponent, typeof i2.TuiInputPasswordDirective, typeof i7.TuiTextfieldComponent, typeof i3.TuiHintComponent, typeof i3.TuiHintDirective, typeof i3.TuiHintOptionsDirective, typeof i3.TuiHintUnstyled, typeof i3.TuiHintDriver, typeof i3.TuiHintPosition, typeof i3.TuiHintHover, typeof i3.TuiHintOverflow, typeof i3.TuiHintDescribe, typeof i3.TuiHintHost, typeof i3.TuiHintManual, typeof i3.TuiHintPointer]>;
@@ -2,12 +2,24 @@ import type { Provider } from '@angular/core';
2
2
  import type { TuiContext } from '@taiga-ui/cdk/types';
3
3
  import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
4
4
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
+ /**
6
+ * @deprecated use {@link TuiInputPassword} instead
7
+ */
5
8
  export interface TuiInputPasswordOptions {
6
9
  readonly icons: Readonly<{
7
10
  hide: PolymorpheusContent<TuiContext<TuiSizeL | TuiSizeS>>;
8
11
  show: PolymorpheusContent<TuiContext<TuiSizeL | TuiSizeS>>;
9
12
  }>;
10
13
  }
14
+ /**
15
+ * @deprecated use {@link TuiInputPassword} instead
16
+ */
11
17
  export declare const TUI_INPUT_PASSWORD_DEFAULT_OPTIONS: TuiInputPasswordOptions;
18
+ /**
19
+ * @deprecated use {@link TuiInputPassword} instead
20
+ */
12
21
  export declare const TUI_INPUT_PASSWORD_OPTIONS: import("@angular/core").InjectionToken<TuiInputPasswordOptions>;
22
+ /**
23
+ * @deprecated use {@link TuiInputPassword} instead
24
+ */
13
25
  export declare function tuiInputPasswordOptionsProvider(options: Partial<TuiInputPasswordOptions>): Provider;
@@ -33,6 +33,7 @@ export declare class TuiInputTagComponent extends AbstractTuiMultipleControl<str
33
33
  rows: number;
34
34
  inputHidden: boolean;
35
35
  uniqueTags: boolean;
36
+ autoColor: boolean;
36
37
  maxLength: number | null;
37
38
  placeholder: string;
38
39
  removable: boolean;
@@ -90,5 +91,5 @@ export declare class TuiInputTagComponent extends AbstractTuiMultipleControl<str
90
91
  private focusInput;
91
92
  private clippedValue;
92
93
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputTagComponent, never>;
93
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputTagComponent, "tui-input-tag", never, { "separator": { "alias": "separator"; "required": false; }; "search": { "alias": "search"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "tagValidator": { "alias": "tagValidator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "inputHidden": { "alias": "inputHidden"; "required": false; }; "uniqueTags": { "alias": "uniqueTags"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "pseudoOpen": { "alias": "pseudoOpen"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "pseudoFocusedSetter": { "alias": "pseudoFocused"; "required": false; }; }, { "searchChange": "searchChange"; }, ["datalist"], ["*", "tuiContent", "select"], false, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiInputTagComponent, "tui-input-tag", never, { "separator": { "alias": "separator"; "required": false; }; "search": { "alias": "search"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "tagValidator": { "alias": "tagValidator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "inputHidden": { "alias": "inputHidden"; "required": false; }; "uniqueTags": { "alias": "uniqueTags"; "required": false; }; "autoColor": { "alias": "autoColor"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "removable": { "alias": "removable"; "required": false; }; "pseudoOpen": { "alias": "pseudoOpen"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "pseudoFocusedSetter": { "alias": "pseudoFocused"; "required": false; }; }, { "searchChange": "searchChange"; }, ["datalist"], ["*", "tuiContent", "select"], false, never>;
94
95
  }
@@ -1,6 +1,7 @@
1
1
  import type { Provider } from '@angular/core';
2
2
  import type { TuiStatus } from '@taiga-ui/legacy/utils';
3
3
  export interface TuiInputTagOptions {
4
+ readonly autoColor: boolean;
4
5
  readonly separator: RegExp | string;
5
6
  readonly tagStatus: TuiStatus;
6
7
  readonly uniqueTags: boolean;
@@ -2,7 +2,7 @@ import type { TuiInputTimeDirective } from '../input-time.directive';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiNativeTimeComponent {
4
4
  protected readonly host: TuiInputTimeDirective;
5
- protected readonly autoIdString: string;
5
+ protected readonly autoId: string;
6
6
  protected get items(): string[];
7
7
  protected get value(): string;
8
8
  protected get step(): number;
@@ -31,6 +31,7 @@ export declare class TuiMultiSelectComponent<T> extends AbstractTuiMultipleContr
31
31
  valueContent: TuiMultiSelectOptions<T>['valueContent'];
32
32
  tagValidator: TuiBooleanHandler<T>;
33
33
  rows: TuiMultiSelectOptions<T>['rows'];
34
+ autoColor: boolean;
34
35
  readonly searchChange: EventEmitter<string | null>;
35
36
  get size(): TuiSizeL | TuiSizeS;
36
37
  get nativeFocusableElement(): HTMLInputElement | null;
@@ -61,5 +62,5 @@ export declare class TuiMultiSelectComponent<T> extends AbstractTuiMultipleContr
61
62
  protected onActiveZone(active: boolean): void;
62
63
  private updateSearch;
63
64
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiMultiSelectComponent<any>, never>;
64
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiMultiSelectComponent<any>, "tui-multi-select", never, { "stringify": { "alias": "stringify"; "required": false; }; "identityMatcher": { "alias": "identityMatcher"; "required": false; }; "search": { "alias": "search"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "valueContent": { "alias": "valueContent"; "required": false; }; "tagValidator": { "alias": "tagValidator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; }, { "searchChange": "searchChange"; }, ["accessor", "nativeSelect", "datalist"], ["*", "select"], false, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiMultiSelectComponent<any>, "tui-multi-select", never, { "stringify": { "alias": "stringify"; "required": false; }; "identityMatcher": { "alias": "identityMatcher"; "required": false; }; "search": { "alias": "search"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "valueContent": { "alias": "valueContent"; "required": false; }; "tagValidator": { "alias": "tagValidator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "autoColor": { "alias": "autoColor"; "required": false; }; }, { "searchChange": "searchChange"; }, ["accessor", "nativeSelect", "datalist"], ["*", "select"], false, never>;
65
66
  }
@@ -61,6 +61,7 @@ export declare class TuiPrimitiveTextfieldComponent extends AbstractTuiInteracti
61
61
  protected onFocused(focused: boolean): void;
62
62
  protected clear(): void;
63
63
  protected onMouseDown(event: MouseEvent): void;
64
+ protected transitionStartHandler({ propertyName, target }: TransitionEvent): void;
64
65
  protected onAutofilled(autofilled: boolean): void;
65
66
  protected detectRetargetFromLabel(event: Event): void;
66
67
  private get iconPaddingLeft();
@@ -1,8 +1,8 @@
1
1
  import type { TuiTextfieldHost } from '@taiga-ui/legacy/tokens';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiTextfieldComponent {
4
+ private readonly autoId;
4
5
  private readonly el;
5
- private readonly idService;
6
6
  protected readonly controller: import("@taiga-ui/legacy/directives").TuiTextfieldController;
7
7
  protected readonly host: TuiTextfieldHost;
8
8
  constructor();
@@ -6,7 +6,7 @@ export declare class TuiSheetHeadingComponent implements AfterViewInit {
6
6
  private readonly el;
7
7
  protected readonly closeWord$: import("rxjs").Observable<string>;
8
8
  protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
9
- protected readonly id: string;
9
+ protected readonly autoId: string;
10
10
  ngAfterViewInit(): void;
11
11
  protected onClick(): void;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSheetHeadingComponent, never>;
@@ -1,12 +1,6 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare const TUI_TEXTFIELD_APPEARANCE_DIRECTIVE: import("@angular/core").InjectionToken<TuiTextfieldAppearanceDirective>;
7
- /**
8
- * @deprecated: drop in v5.0
9
- */
10
4
  export declare class TuiTextfieldAppearanceDirective extends AbstractTuiController {
11
5
  appearance: string;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldAppearanceDirective, never>;
@@ -1,12 +1,6 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare const TUI_TEXTFIELD_CLEANER: import("@angular/core").InjectionToken<TuiTextfieldCleanerDirective>;
7
- /**
8
- * @deprecated: drop in v5.0
9
- */
10
4
  export declare class TuiTextfieldCleanerDirective extends AbstractTuiController {
11
5
  cleaner: boolean;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldCleanerDirective, never>;
@@ -10,9 +10,6 @@ import * as i8 from "./textfield-prefix.directive";
10
10
  import * as i9 from "./textfield-postfix.directive";
11
11
  import * as i10 from "./textfield-filler.directive";
12
12
  import * as i11 from "@taiga-ui/polymorpheus";
13
- /**
14
- * @deprecated: drop in v5.0
15
- */
16
13
  export declare class TuiTextfieldControllerModule {
17
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldControllerModule, never>;
18
15
  static ɵmod: i0.ɵɵNgModuleDeclaration<TuiTextfieldControllerModule, [typeof i1.TuiTextfieldAppearanceDirective, typeof i2.TuiTextfieldCleanerDirective, typeof i3.TuiTextfieldCustomContentDirective, typeof i4.TuiTextfieldLabelOutsideDirective, typeof i5.TuiTextfieldSizeDirective, typeof i6.TuiTextfieldIconDirective, typeof i7.TuiTextfieldIconLeftDirective, typeof i8.TuiTextfieldPrefixDirective, typeof i9.TuiTextfieldPostfixDirective, typeof i10.TuiTextfieldFillerDirective], [typeof i11.PolymorpheusOutlet, typeof i11.PolymorpheusTemplate], [typeof i1.TuiTextfieldAppearanceDirective, typeof i2.TuiTextfieldCleanerDirective, typeof i3.TuiTextfieldCustomContentDirective, typeof i4.TuiTextfieldLabelOutsideDirective, typeof i5.TuiTextfieldSizeDirective, typeof i6.TuiTextfieldIconDirective, typeof i7.TuiTextfieldIconLeftDirective, typeof i8.TuiTextfieldPrefixDirective, typeof i9.TuiTextfieldPostfixDirective, typeof i10.TuiTextfieldFillerDirective, typeof i11.PolymorpheusOutlet, typeof i11.PolymorpheusTemplate]>;
@@ -1,11 +1,5 @@
1
1
  import type { Provider } from '@angular/core';
2
2
  import { InjectionToken } from '@angular/core';
3
3
  import { TuiTextfieldController } from './textfield.controller';
4
- /**
5
- * @deprecated: drop in v5.0
6
- */
7
4
  export declare const TUI_TEXTFIELD_WATCHED_CONTROLLER: InjectionToken<TuiTextfieldController>;
8
- /**
9
- * @deprecated: drop in v5.0
10
- */
11
5
  export declare const TEXTFIELD_CONTROLLER_PROVIDER: Provider;
@@ -1,13 +1,7 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
3
3
  import * as i0 from "@angular/core";
4
- /**
5
- * @deprecated: drop in v5.0
6
- */
7
4
  export declare const TUI_TEXTFIELD_CUSTOM_CONTENT: import("@angular/core").InjectionToken<TuiTextfieldCustomContentDirective>;
8
- /**
9
- * @deprecated: drop in v5.0
10
- */
11
5
  export declare class TuiTextfieldCustomContentDirective extends AbstractTuiController {
12
6
  customContent: PolymorpheusContent;
13
7
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldCustomContentDirective, never>;
@@ -1,12 +1,6 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare const TUI_TEXTFIELD_FILLER: import("@angular/core").InjectionToken<TuiTextfieldFillerDirective>;
7
- /**
8
- * @deprecated: drop in v5.0
9
- */
10
4
  export declare class TuiTextfieldFillerDirective extends AbstractTuiController {
11
5
  filler: string;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldFillerDirective, never>;
@@ -3,13 +3,7 @@ import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
3
3
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
4
4
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
5
  import * as i0 from "@angular/core";
6
- /**
7
- * @deprecated: drop in v5.0
8
- */
9
6
  export declare const TUI_TEXTFIELD_ICON_LEFT: import("@angular/core").InjectionToken<TuiTextfieldIconLeftDirective>;
10
- /**
11
- * @deprecated: drop in v5.0
12
- */
13
7
  export declare class TuiTextfieldIconLeftDirective extends AbstractTuiController {
14
8
  iconStart: PolymorpheusContent<TuiContext<TuiSizeL | TuiSizeS>>;
15
9
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldIconLeftDirective, never>;
@@ -3,13 +3,7 @@ import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
3
3
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
4
4
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
5
  import * as i0 from "@angular/core";
6
- /**
7
- * @deprecated: drop in v5.0
8
- */
9
6
  export declare const TUI_TEXTFIELD_ICON: import("@angular/core").InjectionToken<TuiTextfieldIconDirective>;
10
- /**
11
- * @deprecated: drop in v5.0
12
- */
13
7
  export declare class TuiTextfieldIconDirective extends AbstractTuiController {
14
8
  icon: PolymorpheusContent<TuiContext<TuiSizeL | TuiSizeS>>;
15
9
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldIconDirective, never>;
@@ -1,12 +1,6 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare const TUI_TEXTFIELD_LABEL_OUTSIDE: import("@angular/core").InjectionToken<TuiTextfieldLabelOutsideDirective>;
7
- /**
8
- * @deprecated: drop in v5.0
9
- */
10
4
  export declare class TuiTextfieldLabelOutsideDirective extends AbstractTuiController {
11
5
  labelOutside: boolean;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldLabelOutsideDirective, never>;
@@ -1,12 +1,6 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare const TUI_TEXTFIELD_POSTFIX: import("@angular/core").InjectionToken<TuiTextfieldPostfixDirective>;
7
- /**
8
- * @deprecated: drop in v5.0
9
- */
10
4
  export declare class TuiTextfieldPostfixDirective extends AbstractTuiController {
11
5
  postfix: string;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldPostfixDirective, never>;
@@ -1,12 +1,6 @@
1
1
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare const TUI_TEXTFIELD_PREFIX: import("@angular/core").InjectionToken<TuiTextfieldPrefixDirective>;
7
- /**
8
- * @deprecated: drop in v5.0
9
- */
10
4
  export declare class TuiTextfieldPrefixDirective extends AbstractTuiController {
11
5
  prefix: string;
12
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldPrefixDirective, never>;
@@ -1,13 +1,7 @@
1
1
  import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
2
2
  import { AbstractTuiController } from '@taiga-ui/legacy/classes';
3
3
  import * as i0 from "@angular/core";
4
- /**
5
- * @deprecated: drop in v5.0
6
- */
7
4
  export declare const TUI_TEXTFIELD_SIZE: import("@angular/core").InjectionToken<TuiTextfieldSizeDirective>;
8
- /**
9
- * @deprecated: drop in v5.0
10
- */
11
5
  export declare class TuiTextfieldSizeDirective extends AbstractTuiController {
12
6
  size: TuiSizeL | TuiSizeS;
13
7
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldSizeDirective, never>;
@@ -2,9 +2,6 @@ import type { Provider } from '@angular/core';
2
2
  import type { TuiContext } from '@taiga-ui/cdk/types';
3
3
  import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
4
4
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
- /**
6
- * @deprecated: drop in v5.0
7
- */
8
5
  export interface TuiTextfieldOptions {
9
6
  readonly hintOnDisabled: boolean;
10
7
  readonly iconCleaner: PolymorpheusContent<TuiContext<TuiSizeL | TuiSizeS>>;
@@ -19,7 +16,4 @@ export declare const TUI_TEXTFIELD_DEFAULT_OPTIONS: TuiTextfieldOptions;
19
16
  * Default parameters for textfield
20
17
  */
21
18
  export declare const TUI_TEXTFIELD_OPTIONS: import("@angular/core").InjectionToken<TuiTextfieldOptions>;
22
- /**
23
- * @deprecated: drop in v5.0
24
- */
25
19
  export declare function tuiTextfieldOptionsProvider(options: Partial<TuiTextfieldOptions>): Provider;
@@ -1,8 +1,5 @@
1
1
  import type { Validator } from '@angular/forms';
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare class TuiUnfinishedValidator implements Validator {
7
4
  private readonly injector;
8
5
  readonly validate: import("@angular/forms").ValidatorFn;
@@ -1,7 +1,4 @@
1
1
  import type { ValidatorFn } from '@angular/forms';
2
2
  import type { TuiFocusableElementAccessor } from '@taiga-ui/legacy/tokens';
3
3
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
4
- /**
5
- * @deprecated: drop in v5.0
6
- */
7
4
  export declare function tuiCreateUnfinishedValidator(nativeInputGetter: () => TuiFocusableElementAccessor, message: PolymorpheusContent): ValidatorFn;
@@ -1,7 +1,4 @@
1
1
  import * as i0 from "@angular/core";
2
- /**
3
- * @deprecated: drop in v5.0
4
- */
5
2
  export declare class TuiValueAccessorDirective {
6
3
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiValueAccessorDirective, never>;
7
4
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiValueAccessorDirective, "[tuiValueAccessor]", never, {}, {}, never, never, false, never>;
@@ -1,8 +1,5 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./value-accessor.directive";
3
- /**
4
- * @deprecated: drop in v5.0
5
- */
6
3
  export declare class TuiValueAccessorModule {
7
4
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiValueAccessorModule, never>;
8
5
  static ɵmod: i0.ɵɵNgModuleDeclaration<TuiValueAccessorModule, [typeof i1.TuiValueAccessorDirective], never, [typeof i1.TuiValueAccessorDirective]>;
@@ -1,5 +1,2 @@
1
1
  import type { FactoryProvider } from '@angular/core';
2
- /**
3
- * @deprecated: drop in v5.0
4
- */
5
2
  export declare const TUI_VALUE_ACCESSOR_PROVIDER: FactoryProvider;
@@ -1,5 +1,5 @@
1
1
  import { Directive, inject, Input, TemplateRef, ViewChild } from '@angular/core';
2
- import { TuiIdService } from '@taiga-ui/cdk/services';
2
+ import { tuiInjectId } from '@taiga-ui/cdk/services';
3
3
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
4
4
  import { TuiDataListDirective } from '@taiga-ui/core/components/data-list';
5
5
  import { TUI_ITEMS_HANDLERS } from '@taiga-ui/kit/tokens';
@@ -11,8 +11,8 @@ import * as i0 from "@angular/core";
11
11
  */
12
12
  class AbstractTuiNativeSelect {
13
13
  constructor() {
14
- this.idService = inject(TuiIdService);
15
14
  this.datalist = null;
15
+ this.autoId = tuiInjectId();
16
16
  this.el = tuiInjectElement();
17
17
  this.host = inject(TUI_TEXTFIELD_HOST);
18
18
  this.control = inject(AbstractTuiControl);
@@ -21,7 +21,7 @@ class AbstractTuiNativeSelect {
21
21
  this.placeholder = '';
22
22
  }
23
23
  get id() {
24
- return this.el.id || this.idService.generate();
24
+ return this.el.id || this.autoId;
25
25
  }
26
26
  get emptyOption() {
27
27
  return !!this.placeholder && !this.control.value;
@@ -33,6 +33,7 @@ export { AbstractTuiNativeSelect };
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractTuiNativeSelect, decorators: [{
34
34
  type: Directive,
35
35
  args: [{
36
+ standalone: false,
36
37
  host: {
37
38
  '[id]': 'id',
38
39
  },
@@ -45,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
45
46
  }], placeholder: [{
46
47
  type: Input
47
48
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF0aXZlLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jbGFzc2VzL2Fic3RyYWN0LW5hdGl2ZS1zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFFN0M7O0dBRUc7QUFDSCxNQUtzQix1QkFBdUI7SUFMN0M7UUFNcUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUcvQixhQUFRLEdBQTRCLElBQUksQ0FBQztRQUV6QyxPQUFFLEdBQUcsZ0JBQWdCLEVBQXFCLENBQUM7UUFDM0MsU0FBSSxHQUFHLE1BQU0sQ0FBSSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JDLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBR3ZELHdCQUFtQixHQUFnQyxJQUFJLENBQUM7UUFHeEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7S0FTM0I7SUFQRyxJQUFjLEVBQUU7UUFDWixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsV0FBVztRQUNyQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDckQsQ0FBQzsrR0F2QmlCLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhMQUc5QixvQkFBb0IsMkJBQVMsV0FBVzs7U0FIakMsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBTDVDLFNBQVM7bUJBQUM7b0JBQ1AsSUFBSSxFQUFFO3dCQUNGLE1BQU0sRUFBRSxJQUFJO3FCQUNmO2lCQUNKOzhCQUtzQixRQUFRO3NCQUQxQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQVMzRCxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHVpSWRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3NlcnZpY2VzJztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7VHVpRGF0YUxpc3REaXJlY3RpdmV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VFVJX0lURU1TX0hBTkRMRVJTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpVGV4dGZpZWxkSG9zdH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS90b2tlbnMnO1xuaW1wb3J0IHtUVUlfVEVYVEZJRUxEX0hPU1R9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdG9rZW5zJztcblxuaW1wb3J0IHtBYnN0cmFjdFR1aUNvbnRyb2x9IGZyb20gJy4vY29udHJvbCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IGRyb3AgaW4gdjUuMFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgICdbaWRdJzogJ2lkJyxcbiAgICB9LFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFR1aU5hdGl2ZVNlbGVjdDxIID0gVHVpVGV4dGZpZWxkSG9zdCwgVCA9IHN0cmluZz4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRTZXJ2aWNlID0gaW5qZWN0KFR1aUlkU2VydmljZSk7XG5cbiAgICBAVmlld0NoaWxkKFR1aURhdGFMaXN0RGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZX0pXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFsaXN0OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxTZWxlY3RFbGVtZW50PigpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBob3N0ID0gaW5qZWN0PEg+KFRVSV9URVhURklFTERfSE9TVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRyb2wgPSBpbmplY3QoQWJzdHJhY3RUdWlDb250cm9sKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbXNIYW5kbGVycyA9IGluamVjdChUVUlfSVRFTVNfSEFORExFUlMpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VD4gfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLmlkIHx8IHRoaXMuaWRTZXJ2aWNlLmdlbmVyYXRlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBlbXB0eU9wdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wbGFjZWhvbGRlciAmJiAhdGhpcy5jb250cm9sLnZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF0aXZlLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jbGFzc2VzL2Fic3RyYWN0LW5hdGl2ZS1zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFFN0M7O0dBRUc7QUFDSCxNQU1zQix1QkFBdUI7SUFON0M7UUFRdUIsYUFBUSxHQUE0QixJQUFJLENBQUM7UUFFekMsV0FBTSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE9BQUUsR0FBRyxnQkFBZ0IsRUFBcUIsQ0FBQztRQUMzQyxTQUFJLEdBQUcsTUFBTSxDQUFJLGtCQUFrQixDQUFDLENBQUM7UUFDckMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFHdkQsd0JBQW1CLEdBQWdDLElBQUksQ0FBQztRQUd4RCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztLQVMzQjtJQVBHLElBQWMsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDOytHQXRCaUIsdUJBQXVCO21HQUF2Qix1QkFBdUIsOExBQzlCLG9CQUFvQiwyQkFBUyxXQUFXOztTQURqQyx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFONUMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsS0FBSztvQkFDakIsSUFBSSxFQUFFO3dCQUNGLE1BQU0sRUFBRSxJQUFJO3FCQUNmO2lCQUNKOzhCQUdzQixRQUFRO3NCQUQxQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQVUzRCxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpSW5qZWN0SWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvc2VydmljZXMnO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtUdWlEYXRhTGlzdERpcmVjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHtUVUlfSVRFTVNfSEFORExFUlN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB0eXBlIHtUdWlUZXh0ZmllbGRIb3N0fSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5pbXBvcnQge1RVSV9URVhURklFTERfSE9TVH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeS90b2tlbnMnO1xuXG5pbXBvcnQge0Fic3RyYWN0VHVpQ29udHJvbH0gZnJvbSAnLi9jb250cm9sJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogZHJvcCBpbiB2NS4wXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IGZhbHNlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tpZF0nOiAnaWQnLFxuICAgIH0sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VHVpTmF0aXZlU2VsZWN0PEggPSBUdWlUZXh0ZmllbGRIb3N0LCBUID0gc3RyaW5nPiB7XG4gICAgQFZpZXdDaGlsZChUdWlEYXRhTGlzdERpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWV9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXRhbGlzdDogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1dG9JZCA9IHR1aUluamVjdElkKCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MU2VsZWN0RWxlbWVudD4oKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaG9zdCA9IGluamVjdDxIPihUVUlfVEVYVEZJRUxEX0hPU1QpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250cm9sID0gaW5qZWN0KEFic3RyYWN0VHVpQ29udHJvbCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGl0ZW1zSGFuZGxlcnMgPSBpbmplY3QoVFVJX0lURU1TX0hBTkRMRVJTKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5pZCB8fCB0aGlzLmF1dG9JZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGVtcHR5T3B0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnBsYWNlaG9sZGVyICYmICF0aGlzLmNvbnRyb2wudmFsdWU7XG4gICAgfVxufVxuIl19
@@ -160,6 +160,7 @@ export { AbstractTuiControl };
160
160
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AbstractTuiControl, decorators: [{
161
161
  type: Directive,
162
162
  args: [{
163
+ standalone: false,
163
164
  host: {
164
165
  '[class._readonly]': 'readOnly',
165
166
  '[class._invalid]': 'computedInvalid',
@@ -173,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
173
174
  export function tuiAsControl(control) {
174
175
  return tuiProvide(AbstractTuiControl, control);
175
176
  }
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jbGFzc2VzL2NvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0gsS0FBSyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFckQ7OztHQUdHO0FBQ0gsTUFNc0Isa0JBQ2xCLFNBQVEsc0JBQXNCO0lBdUI5QjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBckJLLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFaEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdEMsY0FBUyxHQUFHLGNBQWMsQ0FBQztRQUMzQixhQUFRLEdBQUcsY0FBYyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFD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QUFJLE9BQW9DO0lBQ2hFLE9BQU8sVUFBVSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSB0eXBlcz1cIkB0YWlnYS11aS90c2NvbmZpZy9uZy1kZXYtbW9kZVwiIC8+XG5pbXBvcnQgdHlwZSB7T25Jbml0LCBQcm92aWRlciwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB0eXBlIHtBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge05nQ29udHJvbCwgTmdNb2RlbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUdWlWYWx1ZVRyYW5zZm9ybWVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtFTVBUWV9GVU5DVElPTn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlJc1ByZXNlbnQsIHR1aVByb3ZpZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIGRlbGF5LFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBtYXAsXG4gICAgbWVyZ2UsXG4gICAgc3RhcnRXaXRoLFxuICAgIFN1YmplY3QsXG4gICAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBYnN0cmFjdFR1aUludGVyYWN0aXZlfSBmcm9tICcuL2ludGVyYWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogZHJvcCBpbiB2NS4wXG4gKiBCYXNpYyBDb250cm9sVmFsdWVBY2Nlc3NvciBjbGFzcyB0byBidWlsZCBmb3JtIGNvbXBvbmVudHMgdXBvblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuX3JlYWRvbmx5XSc6ICdyZWFkT25seScsXG4gICAgICAgICdbY2xhc3MuX2ludmFsaWRdJzogJ2NvbXB1dGVkSW52YWxpZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUdWlDb250cm9sPFQ+XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUludGVyYWN0aXZlXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHByZXZpb3VzSW50ZXJuYWxWYWx1ZT86IFQgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZCA9IEVNUFRZX0ZVTkNUSU9OO1xuICAgIHByb3RlY3RlZCBvbkNoYW5nZSA9IEVNUFRZX0ZVTkNUSU9OO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmYWxsYmFja1ZhbHVlID0gdGhpcy5nZXRGYWxsYmFja1ZhbHVlKCk7XG4gICAgcHJvdGVjdGVkIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlVHJhbnNmb3JtZXIgPSBpbmplY3Q8VHVpVmFsdWVUcmFuc2Zvcm1lcjxUPj4oXG4gICAgICAgIFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgICAgIHtvcHRpb25hbDogdHJ1ZX0sXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwc2V1ZG9JbnZhbGlkOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBpZiAobmdEZXZNb2RlICYmIHRoaXMubmdDb250cm9sID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zb2xlLmFzc2VydChcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBgTmdDb250cm9sIG5vdCBpbmplY3RlZCBpbiAke3RoaXMuY29uc3RydWN0b3IubmFtZX0hXFxuYCxcbiAgICAgICAgICAgICAgICAnVXNlIFsobmdNb2RlbCldIG9yIFtmb3JtQ29udHJvbF0gb3IgZm9ybUNvbnRyb2xOYW1lIGZvciBjb3JyZWN0IHdvcmsuJyxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZhbGxiYWNrVmFsdWUoKTogVDtcblxuICAgIHB1YmxpYyBnZXQgY29tcHV0ZWRJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pbnRlcmFjdGl2ZSAmJlxuICAgICAgICAgICAgKHRoaXMucHNldWRvSW52YWxpZCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdGhpcy5wc2V1ZG9JbnZhbGlkXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRvdWNoZWQgJiYgdGhpcy5pbnZhbGlkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzSW50ZXJuYWxWYWx1ZSA/PyB0aGlzLmZhbGxiYWNrVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNhZmVDdXJyZW50VmFsdWUoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd1ZhbHVlID8/IHRoaXMuZmFsbGJhY2tWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVOZ0NvbnRyb2xEYXRhPGJvb2xlYW4+KCh7aW52YWxpZH0pID0+IGludmFsaWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlTmdDb250cm9sRGF0YTxib29sZWFuPigoe3ZhbGlkfSkgPT4gdmFsaWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVOZ0NvbnRyb2xEYXRhPGJvb2xlYW4+KCh7dG91Y2hlZH0pID0+IHRvdWNoZWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlTmdDb250cm9sRGF0YTxib29sZWFuPigoe2Rpc2FibGVkfSkgPT4gZGlzYWJsZWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGludGVyYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMucmVhZE9ubHkgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVOZ0NvbnRyb2xEYXRhPEFic3RyYWN0Q29udHJvbCB8IG51bGw+KFxuICAgICAgICAgICAgKHtjb250cm9sfSkgPT4gY29udHJvbCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wdXRlZE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xOYW1lPy50b1N0cmluZygpID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250cm9sTmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sPy5uYW1lPy50b1N0cmluZygpID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2gkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMubmdDb250cm9sPy5jb250cm9sKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbWVyZ2UoY29udHJvbC52YWx1ZUNoYW5nZXMsIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcyksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaExvY2FsVmFsdWUodGhpcy5zYWZlQ3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0NvbnRyb2xVcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiAodmFsdWU6IFQgfCB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSAoY29tcG9uZW50VmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHRoaXMudG9Db250cm9sVmFsdWUoY29tcG9uZW50VmFsdWUpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlZnJlc2gkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrQ29udHJvbFVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBUIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPVxuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ01vZGVsICYmIHRoaXMucHJldmlvdXNJbnRlcm5hbFZhbHVlID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IHRoaXMubmdDb250cm9sLm1vZGVsXG4gICAgICAgICAgICAgICAgOiB2YWx1ZTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hMb2NhbFZhbHVlKHRoaXMuZnJvbUNvbnRyb2xWYWx1ZShjb250cm9sVmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlRm9jdXNlZChmb2N1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sTWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIudXBkYXRlRm9jdXNlZChmb2N1c2VkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYHZhbHVlYCBzZXR0ZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy52YWx1ZUlkZW50aWNhbENvbXBhcmF0b3IodGhpcy52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZpb3VzSW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbnRyb2xTZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihvbGRWYWx1ZTogVCwgbmV3VmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG9sZFZhbHVlID09PSBuZXdWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCByYXdWYWx1ZSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qge25nQ29udHJvbH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChuZ0NvbnRyb2wgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPVxuICAgICAgICAgICAgbmdDb250cm9sIGluc3RhbmNlb2YgTmdNb2RlbCAmJiB0aGlzLnByZXZpb3VzSW50ZXJuYWxWYWx1ZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBuZ0NvbnRyb2wudmlld01vZGVsXG4gICAgICAgICAgICAgICAgOiBuZ0NvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUNvbnRyb2xWYWx1ZShjb250cm9sVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZU5nQ29udHJvbERhdGE8VD4oXG4gICAgICAgIGV4dHJhY3RvcjogKG5nQ29udHJvbDogTmdDb250cm9sKSA9PiBUIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgZGVmYXVsdEZpZWxkVmFsdWU6IFQsXG4gICAgKTogVCB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZ0NvbnRyb2wgJiYgZXh0cmFjdG9yKHRoaXMubmdDb250cm9sKSkgPz8gZGVmYXVsdEZpZWxkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb250cm9sTWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5jaGVja0NvbnRyb2xVcGRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnRyb2xTZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja0NvbnRyb2xVcGRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hMb2NhbFZhbHVlKHZhbHVlOiBUIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpb3VzSW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNoZWNrQ29udHJvbFVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZnJvbUNvbnRyb2xWYWx1ZShjb250cm9sVmFsdWU6IHVua25vd24pOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVUcmFuc2Zvcm1lclxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlVHJhbnNmb3JtZXIuZnJvbUNvbnRyb2xWYWx1ZShjb250cm9sVmFsdWUpXG4gICAgICAgICAgICA6IChjb250cm9sVmFsdWUgYXMgVCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b0NvbnRyb2xWYWx1ZShjb21wb25lbnRWYWx1ZTogVCk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVRyYW5zZm9ybWVyXG4gICAgICAgICAgICA/IHRoaXMudmFsdWVUcmFuc2Zvcm1lci50b0NvbnRyb2xWYWx1ZShjb21wb25lbnRWYWx1ZSlcbiAgICAgICAgICAgIDogY29tcG9uZW50VmFsdWU7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpQXNDb250cm9sPFQ+KGNvbnRyb2w6IFR5cGU8QWJzdHJhY3RUdWlDb250cm9sPFQ+Pik6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4gdHVpUHJvdmlkZShBYnN0cmFjdFR1aUNvbnRyb2wsIGNvbnRyb2wpO1xufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jbGFzc2VzL2NvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFOUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0gsS0FBSyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFckQ7OztHQUdHO0FBQ0gsTUFPc0Isa0JBQ2xCLFNBQVEsc0JBQXNCO0lBdUI5QjtRQUNJLEtBQUssRUFBRSxDQUFDO1FBckJLLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFaEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdEMsY0FBUyxHQUFHLGNBQWMsQ0FBQztRQUMzQixhQUFRLEdBQUcsY0FBYyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFD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QUFzTVYsTUFBTSxVQUFVLFlBQVksQ0FBSSxPQUFvQztJQUNoRSxPQUFPLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuaW1wb3J0IHR5cGUge09uSW5pdCwgUHJvdmlkZXIsIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOZ0NvbnRyb2wsIE5nTW9kZWx9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHVpVmFsdWVUcmFuc2Zvcm1lcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7RU1QVFlfRlVOQ1RJT059IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7dHVpSXNQcmVzZW50LCB0dWlQcm92aWRlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtcbiAgICBkZWxheSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIG1lcmdlLFxuICAgIHN0YXJ0V2l0aCxcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWJzdHJhY3RUdWlJbnRlcmFjdGl2ZX0gZnJvbSAnLi9pbnRlcmFjdGl2ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IGRyb3AgaW4gdjUuMFxuICogQmFzaWMgQ29udHJvbFZhbHVlQWNjZXNzb3IgY2xhc3MgdG8gYnVpbGQgZm9ybSBjb21wb25lbnRzIHVwb25cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLl9yZWFkb25seV0nOiAncmVhZE9ubHknLFxuICAgICAgICAnW2NsYXNzLl9pbnZhbGlkXSc6ICdjb21wdXRlZEludmFsaWQnLFxuICAgIH0sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VHVpQ29udHJvbDxUPlxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlJbnRlcmFjdGl2ZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSBwcmV2aW91c0ludGVybmFsVmFsdWU/OiBUIHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByb3RlY3RlZCBvblRvdWNoZWQgPSBFTVBUWV9GVU5DVElPTjtcbiAgICBwcm90ZWN0ZWQgb25DaGFuZ2UgPSBFTVBUWV9GVU5DVElPTjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFsbGJhY2tWYWx1ZSA9IHRoaXMuZ2V0RmFsbGJhY2tWYWx1ZSgpO1xuICAgIHByb3RlY3RlZCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyID0gaW5qZWN0PFR1aVZhbHVlVHJhbnNmb3JtZXI8VD4+KFxuICAgICAgICBUdWlWYWx1ZVRyYW5zZm9ybWVyLFxuICAgICAgICB7b3B0aW9uYWw6IHRydWV9LFxuICAgICk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHNldWRvSW52YWxpZDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgaWYgKG5nRGV2TW9kZSAmJiB0aGlzLm5nQ29udHJvbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgYE5nQ29udHJvbCBub3QgaW5qZWN0ZWQgaW4gJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IVxcbmAsXG4gICAgICAgICAgICAgICAgJ1VzZSBbKG5nTW9kZWwpXSBvciBbZm9ybUNvbnRyb2xdIG9yIGZvcm1Db250cm9sTmFtZSBmb3IgY29ycmVjdCB3b3JrLicsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRGYWxsYmFja1ZhbHVlKCk6IFQ7XG5cbiAgICBwdWJsaWMgZ2V0IGNvbXB1dGVkSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaW50ZXJhY3RpdmUgJiZcbiAgICAgICAgICAgICh0aGlzLnBzZXVkb0ludmFsaWQgIT09IG51bGxcbiAgICAgICAgICAgICAgICA/IHRoaXMucHNldWRvSW52YWxpZFxuICAgICAgICAgICAgICAgIDogdGhpcy50b3VjaGVkICYmIHRoaXMuaW52YWxpZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c0ludGVybmFsVmFsdWUgPz8gdGhpcy5mYWxsYmFja1ZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzYWZlQ3VycmVudFZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZSA/PyB0aGlzLmZhbGxiYWNrVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlTmdDb250cm9sRGF0YTxib29sZWFuPigoe2ludmFsaWR9KSA9PiBpbnZhbGlkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZU5nQ29udHJvbERhdGE8Ym9vbGVhbj4oKHt2YWxpZH0pID0+IHZhbGlkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlTmdDb250cm9sRGF0YTxib29sZWFuPigoe3RvdWNoZWR9KSA9PiB0b3VjaGVkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZU5nQ29udHJvbERhdGE8Ym9vbGVhbj4oKHtkaXNhYmxlZH0pID0+IGRpc2FibGVkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpbnRlcmFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5ICYmICF0aGlzLmNvbXB1dGVkRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlTmdDb250cm9sRGF0YTxBYnN0cmFjdENvbnRyb2wgfCBudWxsPihcbiAgICAgICAgICAgICh7Y29udHJvbH0pID0+IGNvbnRyb2wsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29tcHV0ZWROYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sTmFtZT8udG9TdHJpbmcoKSA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29udHJvbE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8ubmFtZT8udG9TdHJpbmcoKSA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLm5nQ29udHJvbD8uY29udHJvbCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlKGNvbnRyb2wudmFsdWVDaGFuZ2VzLCBjb250cm9sLnN0YXR1c0NoYW5nZXMpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hMb2NhbFZhbHVlKHRoaXMuc2FmZUN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tDb250cm9sVXBkYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiBUIHwgdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gKGNvbXBvbmVudFZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICBvbkNoYW5nZSh0aGlzLnRvQ29udHJvbFZhbHVlKGNvbXBvbmVudFZhbHVlKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0NvbnRyb2xVcGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID1cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sIGluc3RhbmNlb2YgTmdNb2RlbCAmJiB0aGlzLnByZXZpb3VzSW50ZXJuYWxWYWx1ZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLm5nQ29udHJvbC5tb2RlbFxuICAgICAgICAgICAgICAgIDogdmFsdWU7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTG9jYWxWYWx1ZSh0aGlzLmZyb21Db250cm9sVmFsdWUoY29udHJvbFZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZUZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIWZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbE1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGB2YWx1ZWAgc2V0dGVyXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMudmFsdWVJZGVudGljYWxDb21wYXJhdG9yKHRoaXMudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c0ludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb250cm9sU2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWx1ZUlkZW50aWNhbENvbXBhcmF0b3Iob2xkVmFsdWU6IFQsIG5ld1ZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBvbGRWYWx1ZSA9PT0gbmV3VmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgcmF3VmFsdWUoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHtuZ0NvbnRyb2x9ID0gdGhpcztcblxuICAgICAgICBpZiAobmdDb250cm9sID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID1cbiAgICAgICAgICAgIG5nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWwgJiYgdGhpcy5wcmV2aW91c0ludGVybmFsVmFsdWUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gbmdDb250cm9sLnZpZXdNb2RlbFxuICAgICAgICAgICAgICAgIDogbmdDb250cm9sLnZhbHVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZyb21Db250cm9sVmFsdWUoY29udHJvbFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVOZ0NvbnRyb2xEYXRhPFQ+KFxuICAgICAgICBleHRyYWN0b3I6IChuZ0NvbnRyb2w6IE5nQ29udHJvbCkgPT4gVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgIGRlZmF1bHRGaWVsZFZhbHVlOiBULFxuICAgICk6IFQge1xuICAgICAgICByZXR1cm4gKHRoaXMubmdDb250cm9sICYmIGV4dHJhY3Rvcih0aGlzLm5nQ29udHJvbCkpID8/IGRlZmF1bHRGaWVsZFZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udHJvbE1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuY2hlY2tDb250cm9sVXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb250cm9sU2V0VmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tDb250cm9sVXBkYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoTG9jYWxWYWx1ZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0ludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGVja0NvbnRyb2xVcGRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZyb21Db250cm9sVmFsdWUoY29udHJvbFZhbHVlOiB1bmtub3duKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlVHJhbnNmb3JtZXJcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZVRyYW5zZm9ybWVyLmZyb21Db250cm9sVmFsdWUoY29udHJvbFZhbHVlKVxuICAgICAgICAgICAgOiAoY29udHJvbFZhbHVlIGFzIFQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9Db250cm9sVmFsdWUoY29tcG9uZW50VmFsdWU6IFQpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVUcmFuc2Zvcm1lclxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlVHJhbnNmb3JtZXIudG9Db250cm9sVmFsdWUoY29tcG9uZW50VmFsdWUpXG4gICAgICAgICAgICA6IGNvbXBvbmVudFZhbHVlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUFzQ29udHJvbDxUPihjb250cm9sOiBUeXBlPEFic3RyYWN0VHVpQ29udHJvbDxUPj4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGUoQWJzdHJhY3RUdWlDb250cm9sLCBjb250cm9sKTtcbn1cbiJdfQ==