@taiga-ui/legacy 4.52.0-canary.2c75afa → 4.52.0-canary.2d877cf

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 (225) hide show
  1. package/README.md +1 -1
  2. package/components/dialog/dialog.service.d.ts +1 -1
  3. package/components/dialog/dialog.tokens.d.ts +1 -3
  4. package/components/index.d.ts +0 -17
  5. package/components/mobile-dialog/mobile-dialog.options.d.ts +1 -3
  6. package/components/mobile-dialog/mobile-dialog.service.d.ts +1 -1
  7. package/components/pdf-viewer/pdf-viewer.options.d.ts +1 -3
  8. package/components/pdf-viewer/pdf-viewer.service.d.ts +1 -1
  9. package/fesm2022/taiga-ui-legacy-components-dialog.mjs +14 -19
  10. package/fesm2022/taiga-ui-legacy-components-dialog.mjs.map +1 -1
  11. package/fesm2022/taiga-ui-legacy-components-mobile-dialog.mjs +11 -16
  12. package/fesm2022/taiga-ui-legacy-components-mobile-dialog.mjs.map +1 -1
  13. package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs +13 -18
  14. package/fesm2022/taiga-ui-legacy-components-pdf-viewer.mjs.map +1 -1
  15. package/fesm2022/taiga-ui-legacy-components.mjs +0 -17
  16. package/fesm2022/taiga-ui-legacy-components.mjs.map +1 -1
  17. package/fesm2022/taiga-ui-legacy.mjs +0 -4
  18. package/fesm2022/taiga-ui-legacy.mjs.map +1 -1
  19. package/index.d.ts +0 -4
  20. package/package.json +12 -114
  21. package/classes/abstract-native-select.d.ts +0 -22
  22. package/classes/abstract-textfield-host.d.ts +0 -19
  23. package/classes/control.d.ts +0 -60
  24. package/classes/controller.d.ts +0 -9
  25. package/classes/index.d.ts +0 -9
  26. package/classes/interactive.d.ts +0 -34
  27. package/classes/multiple-control.d.ts +0 -11
  28. package/classes/named-day.d.ts +0 -11
  29. package/classes/nullable-control.d.ts +0 -10
  30. package/classes/stringifiable-item.d.ts +0 -11
  31. package/components/arrow/arrow.component.d.ts +0 -17
  32. package/components/arrow/arrow.options.d.ts +0 -19
  33. package/components/arrow/arrow.providers.d.ts +0 -23
  34. package/components/arrow/index.d.ts +0 -3
  35. package/components/input/index.d.ts +0 -3
  36. package/components/input/input.component.d.ts +0 -32
  37. package/components/input/input.directive.d.ts +0 -12
  38. package/components/input/input.module.d.ts +0 -16
  39. package/components/input-date-range/index.d.ts +0 -3
  40. package/components/input-date-range/input-date-range.component.d.ts +0 -66
  41. package/components/input-date-range/input-date-range.directive.d.ts +0 -16
  42. package/components/input-date-range/input-date-range.module.d.ts +0 -21
  43. package/components/input-date-time/index.d.ts +0 -3
  44. package/components/input-date-time/input-date-time.component.d.ts +0 -87
  45. package/components/input-date-time/input-date-time.directive.d.ts +0 -17
  46. package/components/input-date-time/input-date-time.module.d.ts +0 -23
  47. package/components/input-date-time/native-date-time/native-date-time.directive.d.ts +0 -13
  48. package/components/input-month-range/index.d.ts +0 -3
  49. package/components/input-month-range/input-month-range.component.d.ts +0 -38
  50. package/components/input-month-range/input-month-range.directive.d.ts +0 -23
  51. package/components/input-month-range/input-month-range.module.d.ts +0 -18
  52. package/components/input-number/index.d.ts +0 -4
  53. package/components/input-number/input-number.component.d.ts +0 -62
  54. package/components/input-number/input-number.directive.d.ts +0 -16
  55. package/components/input-number/input-number.module.d.ts +0 -18
  56. package/components/input-number/input-number.options.d.ts +0 -29
  57. package/components/input-range/index.d.ts +0 -2
  58. package/components/input-range/input-range.component.d.ts +0 -56
  59. package/components/input-range/input-range.module.d.ts +0 -19
  60. package/components/input-slider/index.d.ts +0 -2
  61. package/components/input-slider/input-slider.component.d.ts +0 -42
  62. package/components/input-slider/input-slider.module.d.ts +0 -18
  63. package/components/input-tag/index.d.ts +0 -3
  64. package/components/input-tag/input-tag.component.d.ts +0 -103
  65. package/components/input-tag/input-tag.module.d.ts +0 -22
  66. package/components/input-tag/input-tag.options.d.ts +0 -27
  67. package/components/multi-select/hide-selected.pipe.d.ts +0 -11
  68. package/components/multi-select/index.d.ts +0 -10
  69. package/components/multi-select/multi-select-group/multi-select-group.component.d.ts +0 -23
  70. package/components/multi-select/multi-select-group/multi-select-group.directive.d.ts +0 -8
  71. package/components/multi-select/multi-select.component.d.ts +0 -71
  72. package/components/multi-select/multi-select.directive.d.ts +0 -14
  73. package/components/multi-select/multi-select.module.d.ts +0 -30
  74. package/components/multi-select/multi-select.options.d.ts +0 -14
  75. package/components/multi-select/native-multi-select/native-multi-select-group.component.d.ts +0 -9
  76. package/components/multi-select/native-multi-select/native-multi-select.component.d.ts +0 -8
  77. package/components/multi-select/native-multi-select/native-multi-select.d.ts +0 -11
  78. package/components/multi-select-option/index.d.ts +0 -2
  79. package/components/multi-select-option/multi-select-option.component.d.ts +0 -9
  80. package/components/multi-select-option/multi-select-option.module.d.ts +0 -9
  81. package/components/primitive-textfield/index.d.ts +0 -7
  82. package/components/primitive-textfield/primitive-textfield-options.d.ts +0 -21
  83. package/components/primitive-textfield/primitive-textfield-types.d.ts +0 -11
  84. package/components/primitive-textfield/primitive-textfield.component.d.ts +0 -73
  85. package/components/primitive-textfield/primitive-textfield.directive.d.ts +0 -14
  86. package/components/primitive-textfield/primitive-textfield.module.d.ts +0 -21
  87. package/components/primitive-textfield/textfield/textfield.component.d.ts +0 -13
  88. package/components/primitive-textfield/value-decoration/value-decoration.component.d.ts +0 -22
  89. package/components/select/index.d.ts +0 -6
  90. package/components/select/native-select/native-select-group.component.d.ts +0 -17
  91. package/components/select/native-select/native-select.component.d.ts +0 -16
  92. package/components/select/select.component.d.ts +0 -45
  93. package/components/select/select.directive.d.ts +0 -16
  94. package/components/select/select.module.d.ts +0 -24
  95. package/components/select/select.options.d.ts +0 -25
  96. package/components/select-option/index.d.ts +0 -2
  97. package/components/select-option/select-option.component.d.ts +0 -27
  98. package/components/select-option/select-option.module.d.ts +0 -10
  99. package/components/tag/index.d.ts +0 -3
  100. package/components/tag/tag.component.d.ts +0 -44
  101. package/components/tag/tag.module.d.ts +0 -16
  102. package/components/tag/tag.options.d.ts +0 -27
  103. package/components/textarea/index.d.ts +0 -3
  104. package/components/textarea/textarea.component.d.ts +0 -54
  105. package/components/textarea/textarea.directive.d.ts +0 -12
  106. package/components/textarea/textarea.module.d.ts +0 -21
  107. package/components/tooltip/index.d.ts +0 -2
  108. package/components/tooltip/tooltip.component.d.ts +0 -12
  109. package/components/tooltip/tooltip.module.d.ts +0 -13
  110. package/directives/index.d.ts +0 -5
  111. package/directives/legacy-dropdown-open-monitor/index.d.ts +0 -1
  112. package/directives/legacy-dropdown-open-monitor/legacy-dropdown-open-monitor.d.ts +0 -11
  113. package/directives/textfield-controller/index.d.ts +0 -14
  114. package/directives/textfield-controller/textfield-appearance.directive.d.ts +0 -9
  115. package/directives/textfield-controller/textfield-cleaner.directive.d.ts +0 -9
  116. package/directives/textfield-controller/textfield-controller.module.d.ts +0 -17
  117. package/directives/textfield-controller/textfield-controller.provider.d.ts +0 -4
  118. package/directives/textfield-controller/textfield-custom-content.directive.d.ts +0 -10
  119. package/directives/textfield-controller/textfield-filler.directive.d.ts +0 -9
  120. package/directives/textfield-controller/textfield-icon-left.directive.d.ts +0 -12
  121. package/directives/textfield-controller/textfield-icon.directive.d.ts +0 -12
  122. package/directives/textfield-controller/textfield-label-outside.directive.d.ts +0 -9
  123. package/directives/textfield-controller/textfield-postfix.directive.d.ts +0 -9
  124. package/directives/textfield-controller/textfield-prefix.directive.d.ts +0 -9
  125. package/directives/textfield-controller/textfield-size.directive.d.ts +0 -10
  126. package/directives/textfield-controller/textfield.controller.d.ts +0 -41
  127. package/directives/textfield-controller/textfield.options.d.ts +0 -19
  128. package/directives/unfinished-validator/index.d.ts +0 -2
  129. package/directives/unfinished-validator/unfinished-validator.directive.d.ts +0 -10
  130. package/directives/unfinished-validator/unfinished.validator.d.ts +0 -4
  131. package/directives/value-accessor/index.d.ts +0 -3
  132. package/directives/value-accessor/value-accessor.directive.d.ts +0 -5
  133. package/directives/value-accessor/value-accessor.module.d.ts +0 -7
  134. package/directives/value-accessor/value-accessor.provider.d.ts +0 -2
  135. package/directives/wrapper/README.md +0 -19
  136. package/directives/wrapper/index.d.ts +0 -2
  137. package/directives/wrapper/wrapper.directive.d.ts +0 -22
  138. package/directives/wrapper/wrapper.module.d.ts +0 -10
  139. package/fesm2022/taiga-ui-legacy-classes.mjs +0 -413
  140. package/fesm2022/taiga-ui-legacy-classes.mjs.map +0 -1
  141. package/fesm2022/taiga-ui-legacy-components-arrow.mjs +0 -85
  142. package/fesm2022/taiga-ui-legacy-components-arrow.mjs.map +0 -1
  143. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +0 -346
  144. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +0 -1
  145. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +0 -459
  146. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +0 -1
  147. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +0 -221
  148. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +0 -1
  149. package/fesm2022/taiga-ui-legacy-components-input-number.mjs +0 -383
  150. package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +0 -1
  151. package/fesm2022/taiga-ui-legacy-components-input-range.mjs +0 -261
  152. package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +0 -1
  153. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs +0 -199
  154. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +0 -1
  155. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +0 -524
  156. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +0 -1
  157. package/fesm2022/taiga-ui-legacy-components-input.mjs +0 -156
  158. package/fesm2022/taiga-ui-legacy-components-input.mjs.map +0 -1
  159. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs +0 -47
  160. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs.map +0 -1
  161. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +0 -686
  162. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +0 -1
  163. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs +0 -454
  164. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +0 -1
  165. package/fesm2022/taiga-ui-legacy-components-select-option.mjs +0 -88
  166. package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +0 -1
  167. package/fesm2022/taiga-ui-legacy-components-select.mjs +0 -353
  168. package/fesm2022/taiga-ui-legacy-components-select.mjs.map +0 -1
  169. package/fesm2022/taiga-ui-legacy-components-tag.mjs +0 -225
  170. package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +0 -1
  171. package/fesm2022/taiga-ui-legacy-components-textarea.mjs +0 -262
  172. package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +0 -1
  173. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs +0 -53
  174. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs.map +0 -1
  175. package/fesm2022/taiga-ui-legacy-directives-legacy-dropdown-open-monitor.mjs +0 -49
  176. package/fesm2022/taiga-ui-legacy-directives-legacy-dropdown-open-monitor.mjs.map +0 -1
  177. package/fesm2022/taiga-ui-legacy-directives-textfield-controller.mjs +0 -401
  178. package/fesm2022/taiga-ui-legacy-directives-textfield-controller.mjs.map +0 -1
  179. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs +0 -48
  180. package/fesm2022/taiga-ui-legacy-directives-unfinished-validator.mjs.map +0 -1
  181. package/fesm2022/taiga-ui-legacy-directives-value-accessor.mjs +0 -44
  182. package/fesm2022/taiga-ui-legacy-directives-value-accessor.mjs.map +0 -1
  183. package/fesm2022/taiga-ui-legacy-directives-wrapper.mjs +0 -99
  184. package/fesm2022/taiga-ui-legacy-directives-wrapper.mjs.map +0 -1
  185. package/fesm2022/taiga-ui-legacy-directives.mjs +0 -10
  186. package/fesm2022/taiga-ui-legacy-directives.mjs.map +0 -1
  187. package/fesm2022/taiga-ui-legacy-tokens.mjs +0 -384
  188. package/fesm2022/taiga-ui-legacy-tokens.mjs.map +0 -1
  189. package/fesm2022/taiga-ui-legacy-utils.mjs +0 -262
  190. package/fesm2022/taiga-ui-legacy-utils.mjs.map +0 -1
  191. package/styles/mixins/mixins.less +0 -239
  192. package/styles/mixins/mixins.scss +0 -224
  193. package/styles/mixins/textfield.less +0 -324
  194. package/styles/mixins/textfield.scss +0 -308
  195. package/styles/taiga-ui-local.less +0 -3
  196. package/styles/taiga-ui-local.scss +0 -3
  197. package/tokens/countries-masks.d.ts +0 -9
  198. package/tokens/focusable-item-accessor.d.ts +0 -25
  199. package/tokens/fonts-ready.d.ts +0 -6
  200. package/tokens/icons.d.ts +0 -6
  201. package/tokens/index.d.ts +0 -14
  202. package/tokens/is-apple.d.ts +0 -6
  203. package/tokens/is-chromium.d.ts +0 -6
  204. package/tokens/is-firefox.d.ts +0 -6
  205. package/tokens/is-stackblitz.d.ts +0 -5
  206. package/tokens/month-formatter.d.ts +0 -10
  207. package/tokens/sanitizer.d.ts +0 -6
  208. package/tokens/textfield-appearance.d.ts +0 -7
  209. package/tokens/textfield-host.d.ts +0 -23
  210. package/tokens/touch-supported.d.ts +0 -5
  211. package/tokens/value-accessor.d.ts +0 -7
  212. package/utils/capitalize-first-letter.d.ts +0 -4
  213. package/utils/date-mode-maskito-adapter.d.ts +0 -6
  214. package/utils/format-phone.d.ts +0 -30
  215. package/utils/get-border.d.ts +0 -5
  216. package/utils/get-max-allowed-phone-length.d.ts +0 -24
  217. package/utils/get-safe-area-size.d.ts +0 -7
  218. package/utils/icons-path-factory.d.ts +0 -13
  219. package/utils/index.d.ts +0 -13
  220. package/utils/is-presumed-html-string.d.ts +0 -4
  221. package/utils/iso-to-country-code.d.ts +0 -13
  222. package/utils/not-kz-region.d.ts +0 -20
  223. package/utils/process-icon.d.ts +0 -4
  224. package/utils/specific-dropdown-controllers.d.ts +0 -4
  225. package/utils/status.d.ts +0 -4
@@ -1,383 +0,0 @@
1
- import { __decorate } from 'tslib';
2
- import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Input, ContentChildren, ViewChild, ChangeDetectionStrategy, Component, Directive, NgModule } from '@angular/core';
4
- import { maskitoInitialCalibrationPlugin } from '@maskito/core';
5
- import { maskitoParseNumber, maskitoNumberOptionsGenerator, maskitoCaretGuard } from '@maskito/kit';
6
- import { EMPTY_QUERY, CHAR_HYPHEN, CHAR_MINUS } from '@taiga-ui/cdk/constants';
7
- import { TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
8
- import { tuiClamp, tuiIsSafeToRound } from '@taiga-ui/cdk/utils/math';
9
- import { tuiProvideOptions, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
10
- import { TUI_NUMBER_FORMAT } from '@taiga-ui/core/tokens';
11
- import { tuiFormatNumber } from '@taiga-ui/core/utils/format';
12
- import { AbstractTuiNullableControl, tuiAsControl, AbstractTuiTextfieldHost } from '@taiga-ui/legacy/classes';
13
- import * as i4 from '@taiga-ui/legacy/components/primitive-textfield';
14
- import { TuiPrimitiveTextfieldComponent, TuiTextfieldComponent, TuiPrimitiveTextfieldModule } from '@taiga-ui/legacy/components/primitive-textfield';
15
- import * as i5 from '@taiga-ui/legacy/directives';
16
- import { TUI_TEXTFIELD_SIZE, TUI_TEXTFIELD_WATCHED_CONTROLLER, TEXTFIELD_CONTROLLER_PROVIDER, TuiTextfieldControllerModule, TuiValueAccessorModule } from '@taiga-ui/legacy/directives';
17
- import { tuiAsFocusableItemAccessor, tuiAsTextfieldHost } from '@taiga-ui/legacy/tokens';
18
- import * as i2 from '@taiga-ui/polymorpheus';
19
- import { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
20
- import * as i1 from '@maskito/angular';
21
- import { MaskitoDirective } from '@maskito/angular';
22
- import * as i3 from '@taiga-ui/core/components/button';
23
- import { TuiButton } from '@taiga-ui/core/components/button';
24
- import * as i6 from '@angular/common';
25
- import { CommonModule } from '@angular/common';
26
-
27
- /**
28
- * @deprecated use new version of {@link TUI_INPUT_NUMBER_DEFAULT_OPTIONS} (from @taiga-ui/kit) instead
29
- * TODO(v5): delete it
30
- */
31
- const TUI_INPUT_NUMBER_DEFAULT_OPTIONS = {
32
- icons: {
33
- up: '@tui.plus',
34
- down: '@tui.minus',
35
- },
36
- min: Number.MIN_SAFE_INTEGER,
37
- max: Number.MAX_SAFE_INTEGER,
38
- step: 0,
39
- };
40
- /**
41
- * @deprecated use new version of {@link TUI_INPUT_NUMBER_OPTIONS} (from @taiga-ui/kit) instead
42
- * TODO(v5): delete it
43
- */
44
- const TUI_INPUT_NUMBER_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_NUMBER_OPTIONS' : '', {
45
- factory: () => TUI_INPUT_NUMBER_DEFAULT_OPTIONS,
46
- });
47
- /**
48
- * @deprecated use new version of {@link tuiInputNumberOptionsProvider} (from @taiga-ui/kit) instead
49
- * TODO(v5): delete it
50
- */
51
- function tuiInputNumberOptionsProvider(options) {
52
- return tuiProvideOptions(TUI_INPUT_NUMBER_OPTIONS, options, TUI_INPUT_NUMBER_DEFAULT_OPTIONS);
53
- }
54
-
55
- const DEFAULT_MAX_LENGTH = 18;
56
- /**
57
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number tuiInputNumberOptionsProvider} (from @taiga-ui/kit) (property `valueTransformer`) instead
58
- * TODO(v5): delete it
59
- */
60
- const TUI_NUMBER_VALUE_TRANSFORMER = new InjectionToken(ngDevMode ? 'TUI_NUMBER_VALUE_TRANSFORMER' : '');
61
- /**
62
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead
63
- * TODO(v5): delete it
64
- */
65
- class TuiInputNumberComponent extends AbstractTuiNullableControl {
66
- constructor() {
67
- super(...arguments);
68
- this.isIOS = inject(TUI_IS_IOS);
69
- this.textfieldSize = inject(TUI_TEXTFIELD_SIZE);
70
- this.options = inject(TUI_INPUT_NUMBER_OPTIONS);
71
- this.unfinishedValue = '';
72
- this.polymorpheusValueContent = EMPTY_QUERY;
73
- this.valueTransformer = inject(TUI_NUMBER_VALUE_TRANSFORMER, { optional: true });
74
- this.numberFormat = inject(TUI_NUMBER_FORMAT);
75
- this.controller = inject(TUI_TEXTFIELD_WATCHED_CONTROLLER);
76
- this.min = this.options.min;
77
- this.max = this.options.max;
78
- this.step = this.options.step;
79
- }
80
- get nativeFocusableElement() {
81
- return !this.textfield || this.computedDisabled
82
- ? null
83
- : this.textfield.nativeFocusableElement;
84
- }
85
- get focused() {
86
- return !!this.textfield?.focused;
87
- }
88
- get inputMode() {
89
- if (this.isIOS) {
90
- return this.isNegativeAllowed
91
- ? 'text' // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'
92
- : 'decimal';
93
- }
94
- /**
95
- * Samsung Keyboard does not have minus sign for `inputmode=decimal`
96
- * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792
97
- */
98
- return 'numeric';
99
- }
100
- get calculatedMaxLength() {
101
- const decimalPart = !!this.precision &&
102
- this.nativeValue.includes(this.numberFormat().decimalSeparator);
103
- const precision = decimalPart ? Math.min(this.precision + 1, 20) : 0;
104
- const takeThousand = this.numberFormat().thousandSeparator.repeat(5).length;
105
- return DEFAULT_MAX_LENGTH + precision + takeThousand;
106
- }
107
- get computedValue() {
108
- return this.focused ? this.nativeValue : this.formattedValue;
109
- }
110
- onValueChange(nativeValue) {
111
- const parsedValue = maskitoParseNumber(nativeValue, this.numberFormat());
112
- this.unfinishedValue = null;
113
- if (Number.isNaN(parsedValue)) {
114
- this.value = null;
115
- return;
116
- }
117
- if (this.isNativeValueNotFinished) {
118
- this.unfinishedValue = nativeValue;
119
- this.cdr.markForCheck();
120
- return;
121
- }
122
- if (parsedValue < this.computedMin || parsedValue > this.computedMax) {
123
- return;
124
- }
125
- this.value = parsedValue;
126
- }
127
- writeValue(value) {
128
- super.writeValue(value);
129
- this.nativeValue = this.formattedValue;
130
- }
131
- get size() {
132
- return this.textfieldSize.size;
133
- }
134
- get icons() {
135
- return this.options.icons;
136
- }
137
- get computedMin() {
138
- return this.computeMin(this.min, this.max);
139
- }
140
- get computedMax() {
141
- return this.computeMax(this.min, this.max);
142
- }
143
- get isNegativeAllowed() {
144
- return this.computedMin < 0;
145
- }
146
- get formattedValue() {
147
- return this.value !== null ? this.getFormattedValue(this.value || 0) : '';
148
- }
149
- get canDecrement() {
150
- return this.interactive && (this.value || 0) > this.computedMin;
151
- }
152
- get canIncrement() {
153
- return this.interactive && (this.value || 0) < this.computedMax;
154
- }
155
- get computedPrefix() {
156
- return this.controller.prefix;
157
- }
158
- get computedPostfix() {
159
- const { postfix } = this.controller;
160
- return postfix && ` ${postfix}`;
161
- }
162
- get mask() {
163
- return this.calculateMask(this.precision, this.numberFormat().decimalMode, this.numberFormat().decimalSeparator, this.numberFormat().thousandSeparator, this.computedMin, this.computedMax, this.computedPrefix, this.computedPostfix);
164
- }
165
- get nativeValue() {
166
- return this.nativeFocusableElement?.value || '';
167
- }
168
- set nativeValue(value) {
169
- if (!this.textfield || !this.nativeFocusableElement) {
170
- return;
171
- }
172
- this.textfield.value = value;
173
- this.nativeFocusableElement.value = value;
174
- }
175
- onArrow(step) {
176
- if (!step) {
177
- return;
178
- }
179
- this.value = tuiClamp((this.value || 0) + step, this.computedMin, this.computedMax);
180
- this.nativeValue = this.formattedValue;
181
- }
182
- onFocused(focused) {
183
- this.updateFocused(focused);
184
- const nativeNumberValue = this.unfinishedValue
185
- ? maskitoParseNumber(this.unfinishedValue, this.numberFormat())
186
- : this.nativeNumberValue;
187
- this.unfinishedValue = null;
188
- if (Number.isNaN(nativeNumberValue)) {
189
- this.nativeValue =
190
- focused && !this.readOnly
191
- ? this.computedPrefix + this.computedPostfix
192
- : '';
193
- this.value = null;
194
- return;
195
- }
196
- if (!focused) {
197
- this.value = nativeNumberValue;
198
- this.nativeValue = this.formattedValue;
199
- }
200
- }
201
- getFormattedValue(value) {
202
- return (this.computedPrefix +
203
- tuiFormatNumber(value, {
204
- ...this.numberFormat(),
205
- /**
206
- * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]
207
- * but its rounding can violate it.
208
- * Before BigInt support there is no perfect solution – only trade off.
209
- * No rounding is better than lose precision and incorrect mutation of already valid value.
210
- */
211
- precision: tuiIsSafeToRound(value, this.precision)
212
- ? this.precision
213
- : Infinity,
214
- }).replace(CHAR_HYPHEN, CHAR_MINUS) +
215
- this.computedPostfix);
216
- }
217
- get isNativeValueNotFinished() {
218
- const { nativeNumberValue } = this;
219
- return nativeNumberValue < 0
220
- ? nativeNumberValue > this.computedMax
221
- : nativeNumberValue < this.computedMin;
222
- }
223
- get nativeNumberValue() {
224
- return maskitoParseNumber(this.nativeValue, this.numberFormat());
225
- }
226
- get precision() {
227
- return Number.isNaN(this.numberFormat().precision)
228
- ? 2
229
- : this.numberFormat().precision;
230
- }
231
- computeMin(min, max) {
232
- return Math.min(this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min, this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max);
233
- }
234
- computeMax(min, max) {
235
- return Math.max(this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min, this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max);
236
- }
237
- // eslint-disable-next-line @typescript-eslint/max-params,max-params
238
- calculateMask(precision, decimalMode, decimalSeparator, thousandSeparator, min, max, prefix, postfix) {
239
- const params = {
240
- decimalSeparator,
241
- thousandSeparator,
242
- min,
243
- max,
244
- prefix,
245
- postfix,
246
- maximumFractionDigits: precision,
247
- minimumFractionDigits: decimalMode === 'always' ? precision : 0,
248
- };
249
- const { plugins, ...options } = maskitoNumberOptionsGenerator(params);
250
- const initialCalibrationPlugin = maskitoInitialCalibrationPlugin(maskitoNumberOptionsGenerator({
251
- ...params,
252
- min: Number.MIN_SAFE_INTEGER,
253
- max: Number.MAX_SAFE_INTEGER,
254
- }));
255
- return {
256
- ...options,
257
- plugins: [
258
- ...plugins,
259
- initialCalibrationPlugin,
260
- maskitoCaretGuard((value) => [
261
- prefix.length,
262
- value.length - postfix.length,
263
- ]),
264
- ],
265
- };
266
- }
267
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
268
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiInputNumberComponent, isStandalone: false, selector: "tui-input-number", inputs: { min: "min", max: "max", step: "step" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)" }, properties: { "attr.data-size": "size" } }, providers: [
269
- tuiAsFocusableItemAccessor(TuiInputNumberComponent),
270
- tuiAsControl(TuiInputNumberComponent),
271
- TEXTFIELD_CONTROLLER_PROVIDER,
272
- ], queries: [{ propertyName: "polymorpheusValueContent", predicate: PolymorpheusOutlet, descendants: true }], viewQueries: [{ propertyName: "textfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n #textfield\n tuiTextfieldPostfix=\"\"\n tuiTextfieldPrefix=\"\"\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"mask\"\n [pseudoActive]=\"pseudoActive\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [value]=\"computedValue\"\n (focusedChange)=\"onFocused($event)\"\n (valueChange)=\"onValueChange($event)\"\n>\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n @if (polymorpheusValueContent.length) {\n <div\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n</tui-primitive-textfield>\n\n@if (step) {\n <section class=\"t-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [iconStart]=\"icons.up\"\n (click.prevent)=\"onArrow(step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [iconStart]=\"icons.down\"\n (click.prevent)=\"onArrow(-step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n -\n </button>\n </section>\n}\n\n@if (polymorpheusValueContent.changes | async) {}\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\" />\n</ng-template>\n", styles: [":host{display:flex;border-radius:var(--tui-radius-m);text-align:start}:host :host-context(*:disabled){pointer-events:none}.t-textfield{flex:1;min-inline-size:0;max-inline-size:100%;border-radius:inherit;text-align:inherit}.t-textfield:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.t-value-content{inline-size:100%}.t-buttons{display:flex;flex-direction:column;align-items:stretch;margin-inline-start:.125rem;border-radius:inherit}[data-size=s]+.t-buttons{flex-direction:row-reverse}[data-size=s]+.t-buttons .t-button:first-child{margin:0 0 0 .125rem;border-top-right-radius:inherit;border-bottom-right-radius:inherit}[data-size=s]+.t-buttons .t-button:last-child{border-radius:0}[data-size=m]+.t-buttons .t-button{inline-size:calc(var(--tui-height-m) * .75)}[data-size=l]+.t-buttons .t-button{inline-size:calc(var(--tui-height-l) * .75)}.t-buttons .t-button{display:flex;flex:1;block-size:auto;align-items:center;justify-content:center;border-radius:0}.t-buttons .t-button:first-child{margin-block-end:.125rem;border-top-right-radius:inherit}.t-buttons .t-button:last-child{border-bottom-right-radius:inherit}\n"], dependencies: [{ kind: "directive", type: i1.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"], outputs: ["maskitoChange", "maskitoElementChange"] }, { kind: "directive", type: i2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "iconCleaner", "readOnly", "invalid", "disabled", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i4.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { kind: "directive", type: i5.TuiTextfieldPrefixDirective, selector: "[tuiTextfieldPrefix]", inputs: ["tuiTextfieldPrefix"] }, { kind: "directive", type: i5.TuiTextfieldPostfixDirective, selector: "[tuiTextfieldPostfix]", inputs: ["tuiTextfieldPostfix"] }, { kind: "directive", type: i5.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
273
- }
274
- __decorate([
275
- tuiPure
276
- ], TuiInputNumberComponent.prototype, "computeMin", null);
277
- __decorate([
278
- tuiPure
279
- ], TuiInputNumberComponent.prototype, "computeMax", null);
280
- __decorate([
281
- tuiPure
282
- ], TuiInputNumberComponent.prototype, "calculateMask", null);
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberComponent, decorators: [{
284
- type: Component,
285
- args: [{ standalone: false, selector: 'tui-input-number', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
286
- tuiAsFocusableItemAccessor(TuiInputNumberComponent),
287
- tuiAsControl(TuiInputNumberComponent),
288
- TEXTFIELD_CONTROLLER_PROVIDER,
289
- ], host: {
290
- '[attr.data-size]': 'size',
291
- '(keydown.arrowDown)': 'onArrow(-step)',
292
- '(keydown.arrowUp)': 'onArrow(step)',
293
- }, template: "<tui-primitive-textfield\n #textfield\n tuiTextfieldPostfix=\"\"\n tuiTextfieldPrefix=\"\"\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"mask\"\n [pseudoActive]=\"pseudoActive\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [value]=\"computedValue\"\n (focusedChange)=\"onFocused($event)\"\n (valueChange)=\"onValueChange($event)\"\n>\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n @if (polymorpheusValueContent.length) {\n <div\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n</tui-primitive-textfield>\n\n@if (step) {\n <section class=\"t-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [iconStart]=\"icons.up\"\n (click.prevent)=\"onArrow(step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [iconStart]=\"icons.down\"\n (click.prevent)=\"onArrow(-step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n -\n </button>\n </section>\n}\n\n@if (polymorpheusValueContent.changes | async) {}\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\" />\n</ng-template>\n", styles: [":host{display:flex;border-radius:var(--tui-radius-m);text-align:start}:host :host-context(*:disabled){pointer-events:none}.t-textfield{flex:1;min-inline-size:0;max-inline-size:100%;border-radius:inherit;text-align:inherit}.t-textfield:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.t-value-content{inline-size:100%}.t-buttons{display:flex;flex-direction:column;align-items:stretch;margin-inline-start:.125rem;border-radius:inherit}[data-size=s]+.t-buttons{flex-direction:row-reverse}[data-size=s]+.t-buttons .t-button:first-child{margin:0 0 0 .125rem;border-top-right-radius:inherit;border-bottom-right-radius:inherit}[data-size=s]+.t-buttons .t-button:last-child{border-radius:0}[data-size=m]+.t-buttons .t-button{inline-size:calc(var(--tui-height-m) * .75)}[data-size=l]+.t-buttons .t-button{inline-size:calc(var(--tui-height-l) * .75)}.t-buttons .t-button{display:flex;flex:1;block-size:auto;align-items:center;justify-content:center;border-radius:0}.t-buttons .t-button:first-child{margin-block-end:.125rem;border-top-right-radius:inherit}.t-buttons .t-button:last-child{border-bottom-right-radius:inherit}\n"] }]
294
- }], propDecorators: { textfield: [{
295
- type: ViewChild,
296
- args: [TuiPrimitiveTextfieldComponent]
297
- }], polymorpheusValueContent: [{
298
- type: ContentChildren,
299
- args: [PolymorpheusOutlet, { descendants: true }]
300
- }], min: [{
301
- type: Input
302
- }], max: [{
303
- type: Input
304
- }], step: [{
305
- type: Input
306
- }], computeMin: [], computeMax: [], calculateMask: [] } });
307
-
308
- /**
309
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead
310
- * TODO(v5): delete it
311
- */
312
- class TuiInputNumberDirective extends AbstractTuiTextfieldHost {
313
- get value() {
314
- return this.host.computedValue;
315
- }
316
- onValueChange(value) {
317
- this.host.onValueChange(value);
318
- }
319
- ngDoCheck() {
320
- if (!this.host.nativeFocusableElement) {
321
- return;
322
- }
323
- this.host.nativeFocusableElement.inputMode = this.host.inputMode;
324
- this.host.nativeFocusableElement.maxLength =
325
- this.host.nativeFocusableElement.maxLength > 0
326
- ? this.host.nativeFocusableElement.maxLength
327
- : this.host.calculatedMaxLength;
328
- }
329
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
330
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiInputNumberDirective, isStandalone: false, selector: "tui-input-number", providers: [tuiAsTextfieldHost(TuiInputNumberDirective)], usesInheritance: true, ngImport: i0 }); }
331
- }
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberDirective, decorators: [{
333
- type: Directive,
334
- args: [{
335
- standalone: false,
336
- selector: 'tui-input-number',
337
- providers: [tuiAsTextfieldHost(TuiInputNumberDirective)],
338
- }]
339
- }] });
340
-
341
- /**
342
- * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead
343
- * TODO(v5): delete it
344
- */
345
- class TuiInputNumberModule {
346
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
347
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, declarations: [TuiInputNumberComponent, TuiInputNumberDirective], imports: [CommonModule,
348
- MaskitoDirective,
349
- PolymorpheusOutlet,
350
- PolymorpheusTemplate,
351
- TuiButton,
352
- TuiPrimitiveTextfieldModule,
353
- TuiTextfieldControllerModule,
354
- TuiValueAccessorModule], exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent] }); }
355
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, imports: [CommonModule,
356
- TuiPrimitiveTextfieldModule,
357
- TuiTextfieldControllerModule,
358
- TuiValueAccessorModule] }); }
359
- }
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiInputNumberModule, decorators: [{
361
- type: NgModule,
362
- args: [{
363
- imports: [
364
- CommonModule,
365
- MaskitoDirective,
366
- PolymorpheusOutlet,
367
- PolymorpheusTemplate,
368
- TuiButton,
369
- TuiPrimitiveTextfieldModule,
370
- TuiTextfieldControllerModule,
371
- TuiValueAccessorModule,
372
- ],
373
- declarations: [TuiInputNumberComponent, TuiInputNumberDirective],
374
- exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent],
375
- }]
376
- }] });
377
-
378
- /**
379
- * Generated bundle index. Do not edit.
380
- */
381
-
382
- export { TUI_INPUT_NUMBER_DEFAULT_OPTIONS, TUI_INPUT_NUMBER_OPTIONS, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiInputNumberDirective, TuiInputNumberModule, tuiInputNumberOptionsProvider };
383
- //# sourceMappingURL=taiga-ui-legacy-components-input-number.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taiga-ui-legacy-components-input-number.mjs","sources":["../../../projects/legacy/components/input-number/input-number.options.ts","../../../projects/legacy/components/input-number/input-number.component.ts","../../../projects/legacy/components/input-number/input-number.template.html","../../../projects/legacy/components/input-number/input-number.directive.ts","../../../projects/legacy/components/input-number/input-number.module.ts","../../../projects/legacy/components/input-number/taiga-ui-legacy-components-input-number.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * @deprecated use new version of {@link TuiInputNumberOptions} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport interface TuiInputNumberOptions {\n readonly icons: Readonly<{\n down: string;\n up: string;\n }>;\n readonly max: number;\n readonly min: number;\n readonly step: number;\n}\n\n/**\n * @deprecated use new version of {@link TUI_INPUT_NUMBER_DEFAULT_OPTIONS} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport const TUI_INPUT_NUMBER_DEFAULT_OPTIONS: TuiInputNumberOptions = {\n icons: {\n up: '@tui.plus',\n down: '@tui.minus',\n },\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n step: 0,\n};\n\n/**\n * @deprecated use new version of {@link TUI_INPUT_NUMBER_OPTIONS} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport const TUI_INPUT_NUMBER_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_INPUT_NUMBER_OPTIONS' : '',\n {\n factory: () => TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n },\n);\n\n/**\n * @deprecated use new version of {@link tuiInputNumberOptionsProvider} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\nexport function tuiInputNumberOptionsProvider(\n options: Partial<TuiInputNumberOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_INPUT_NUMBER_OPTIONS,\n options,\n TUI_INPUT_NUMBER_DEFAULT_OPTIONS,\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n InjectionToken,\n Input,\n type QueryList,\n ViewChild,\n} from '@angular/core';\nimport {maskitoInitialCalibrationPlugin, type MaskitoOptions} from '@maskito/core';\nimport {\n maskitoCaretGuard,\n maskitoNumberOptionsGenerator,\n type MaskitoNumberParams,\n maskitoParseNumber,\n} from '@maskito/kit';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {CHAR_HYPHEN, CHAR_MINUS, EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiClamp, tuiIsSafeToRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_NUMBER_FORMAT, type TuiDecimalMode} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {tuiFormatNumber} from '@taiga-ui/core/utils/format';\nimport {AbstractTuiNullableControl, tuiAsControl} from '@taiga-ui/legacy/classes';\nimport {TuiPrimitiveTextfieldComponent} from '@taiga-ui/legacy/components/primitive-textfield';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_TEXTFIELD_SIZE,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n} from '@taiga-ui/legacy/directives';\nimport {\n tuiAsFocusableItemAccessor,\n type TuiFocusableElementAccessor,\n} from '@taiga-ui/legacy/tokens';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n type TuiInputNumberOptions,\n} from './input-number.options';\n\nconst DEFAULT_MAX_LENGTH = 18;\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number tuiInputNumberOptionsProvider} (from @taiga-ui/kit) (property `valueTransformer`) instead\n * TODO(v5): delete it\n */\nexport const TUI_NUMBER_VALUE_TRANSFORMER = new InjectionToken<\n TuiValueTransformer<number | null>\n>(ngDevMode ? 'TUI_NUMBER_VALUE_TRANSFORMER' : '');\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\n@Component({\n standalone: false,\n selector: 'tui-input-number',\n templateUrl: './input-number.template.html',\n styleUrl: './input-number.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsFocusableItemAccessor(TuiInputNumberComponent),\n tuiAsControl(TuiInputNumberComponent),\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n '[attr.data-size]': 'size',\n '(keydown.arrowDown)': 'onArrow(-step)',\n '(keydown.arrowUp)': 'onArrow(step)',\n },\n})\nexport class TuiInputNumberComponent\n extends AbstractTuiNullableControl<number>\n implements TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly textfield?: TuiPrimitiveTextfieldComponent;\n\n private readonly isIOS = inject(TUI_IS_IOS);\n private readonly textfieldSize = inject(TUI_TEXTFIELD_SIZE);\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private unfinishedValue: string | null = '';\n\n @ContentChildren(PolymorpheusOutlet, {descendants: true})\n protected readonly polymorpheusValueContent: QueryList<unknown> = EMPTY_QUERY;\n\n protected override readonly valueTransformer = inject<\n TuiValueTransformer<number | null>\n >(TUI_NUMBER_VALUE_TRANSFORMER, {optional: true});\n\n protected numberFormat = inject(TUI_NUMBER_FORMAT);\n protected readonly controller = inject(TUI_TEXTFIELD_WATCHED_CONTROLLER);\n\n @Input()\n public min: number | null = this.options.min;\n\n @Input()\n public max: number | null = this.options.max;\n\n @Input()\n public step = this.options.step;\n\n public get nativeFocusableElement(): HTMLInputElement | null {\n return !this.textfield || this.computedDisabled\n ? null\n : this.textfield.nativeFocusableElement;\n }\n\n public get focused(): boolean {\n return !!this.textfield?.focused;\n }\n\n public get inputMode(): string {\n if (this.isIOS) {\n return this.isNegativeAllowed\n ? 'text' // iPhone does not have minus sign if inputMode is equal to 'numeric' / 'decimal'\n : 'decimal';\n }\n\n /**\n * Samsung Keyboard does not have minus sign for `inputmode=decimal`\n * @see https://github.com/taiga-family/taiga-ui/issues/11061#issuecomment-2939103792\n */\n return 'numeric';\n }\n\n public get calculatedMaxLength(): number {\n const decimalPart =\n !!this.precision &&\n this.nativeValue.includes(this.numberFormat().decimalSeparator);\n const precision = decimalPart ? Math.min(this.precision + 1, 20) : 0;\n const takeThousand = this.numberFormat().thousandSeparator.repeat(5).length;\n\n return DEFAULT_MAX_LENGTH + precision + takeThousand;\n }\n\n public get computedValue(): string {\n return this.focused ? this.nativeValue : this.formattedValue;\n }\n\n public onValueChange(nativeValue: string): void {\n const parsedValue = maskitoParseNumber(nativeValue, this.numberFormat());\n\n this.unfinishedValue = null;\n\n if (Number.isNaN(parsedValue)) {\n this.value = null;\n\n return;\n }\n\n if (this.isNativeValueNotFinished) {\n this.unfinishedValue = nativeValue;\n this.cdr.markForCheck();\n\n return;\n }\n\n if (parsedValue < this.computedMin || parsedValue > this.computedMax) {\n return;\n }\n\n this.value = parsedValue;\n }\n\n public override writeValue(value: number | null): void {\n super.writeValue(value);\n this.nativeValue = this.formattedValue;\n }\n\n protected get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n protected get icons(): TuiInputNumberOptions['icons'] {\n return this.options.icons;\n }\n\n protected get computedMin(): number {\n return this.computeMin(this.min, this.max);\n }\n\n protected get computedMax(): number {\n return this.computeMax(this.min, this.max);\n }\n\n protected get isNegativeAllowed(): boolean {\n return this.computedMin < 0;\n }\n\n protected get formattedValue(): string {\n return this.value !== null ? this.getFormattedValue(this.value || 0) : '';\n }\n\n protected get canDecrement(): boolean {\n return this.interactive && (this.value || 0) > this.computedMin;\n }\n\n protected get canIncrement(): boolean {\n return this.interactive && (this.value || 0) < this.computedMax;\n }\n\n protected get computedPrefix(): string {\n return this.controller.prefix;\n }\n\n protected get computedPostfix(): string {\n const {postfix} = this.controller;\n\n return postfix && ` ${postfix}`;\n }\n\n protected get mask(): MaskitoOptions {\n return this.calculateMask(\n this.precision,\n this.numberFormat().decimalMode,\n this.numberFormat().decimalSeparator,\n this.numberFormat().thousandSeparator,\n this.computedMin,\n this.computedMax,\n this.computedPrefix,\n this.computedPostfix,\n );\n }\n\n protected get nativeValue(): string {\n return this.nativeFocusableElement?.value || '';\n }\n\n protected set nativeValue(value: string) {\n if (!this.textfield || !this.nativeFocusableElement) {\n return;\n }\n\n this.textfield.value = value;\n this.nativeFocusableElement.value = value;\n }\n\n protected onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n this.value = tuiClamp(\n (this.value || 0) + step,\n this.computedMin,\n this.computedMax,\n );\n this.nativeValue = this.formattedValue;\n }\n\n protected onFocused(focused: boolean): void {\n this.updateFocused(focused);\n\n const nativeNumberValue = this.unfinishedValue\n ? maskitoParseNumber(this.unfinishedValue, this.numberFormat())\n : this.nativeNumberValue;\n\n this.unfinishedValue = null;\n\n if (Number.isNaN(nativeNumberValue)) {\n this.nativeValue =\n focused && !this.readOnly\n ? this.computedPrefix + this.computedPostfix\n : '';\n this.value = null;\n\n return;\n }\n\n if (!focused) {\n this.value = nativeNumberValue;\n this.nativeValue = this.formattedValue;\n }\n }\n\n protected getFormattedValue(value: number): string {\n return (\n this.computedPrefix +\n tuiFormatNumber(value, {\n ...this.numberFormat(),\n /**\n * Number can satisfy interval [Number.MIN_SAFE_INTEGER; Number.MAX_SAFE_INTEGER]\n * but its rounding can violate it.\n * Before BigInt support there is no perfect solution – only trade off.\n * No rounding is better than lose precision and incorrect mutation of already valid value.\n */\n precision: tuiIsSafeToRound(value, this.precision)\n ? this.precision\n : Infinity,\n }).replace(CHAR_HYPHEN, CHAR_MINUS) +\n this.computedPostfix\n );\n }\n\n private get isNativeValueNotFinished(): boolean {\n const {nativeNumberValue} = this;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.computedMax\n : nativeNumberValue < this.computedMin;\n }\n\n private get nativeNumberValue(): number {\n return maskitoParseNumber(this.nativeValue, this.numberFormat());\n }\n\n private get precision(): number {\n return Number.isNaN(this.numberFormat().precision)\n ? 2\n : this.numberFormat().precision;\n }\n\n @tuiPure\n private computeMin(min: number | null, max: number | null): number {\n return Math.min(\n this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min,\n this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max,\n );\n }\n\n @tuiPure\n private computeMax(min: number | null, max: number | null): number {\n return Math.max(\n this.valueTransformer?.fromControlValue(min) ?? min ?? this.options.min,\n this.valueTransformer?.fromControlValue(max) ?? max ?? this.options.max,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/max-params,max-params\n @tuiPure\n private calculateMask(\n precision: number,\n decimalMode: TuiDecimalMode,\n decimalSeparator: string,\n thousandSeparator: string,\n min: number,\n max: number,\n prefix: string,\n postfix: string,\n ): MaskitoOptions {\n const params: MaskitoNumberParams = {\n decimalSeparator,\n thousandSeparator,\n min,\n max,\n prefix,\n postfix,\n maximumFractionDigits: precision,\n minimumFractionDigits: decimalMode === 'always' ? precision : 0,\n };\n const {plugins, ...options} = maskitoNumberOptionsGenerator(params);\n const initialCalibrationPlugin = maskitoInitialCalibrationPlugin(\n maskitoNumberOptionsGenerator({\n ...params,\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n }),\n );\n\n return {\n ...options,\n plugins: [\n ...plugins,\n initialCalibrationPlugin,\n maskitoCaretGuard((value) => [\n prefix.length,\n value.length - postfix.length,\n ]),\n ],\n };\n }\n}\n","<tui-primitive-textfield\n #textfield\n tuiTextfieldPostfix=\"\"\n tuiTextfieldPrefix=\"\"\n tuiValueAccessor\n class=\"t-textfield\"\n [disabled]=\"computedDisabled\"\n [focusable]=\"focusable\"\n [invalid]=\"computedInvalid\"\n [maskito]=\"mask\"\n [pseudoActive]=\"pseudoActive\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [readOnly]=\"readOnly\"\n [value]=\"computedValue\"\n (focusedChange)=\"onFocused($event)\"\n (valueChange)=\"onValueChange($event)\"\n>\n <ng-content />\n <ng-content\n ngProjectAs=\"input\"\n select=\"input\"\n />\n @if (polymorpheusValueContent.length) {\n <div\n ngProjectAs=\"tuiContent\"\n class=\"t-value-content\"\n >\n <ng-container *polymorpheusOutlet=\"valueContent as text\">\n {{ text }}\n </ng-container>\n </div>\n }\n</tui-primitive-textfield>\n\n@if (step) {\n <section class=\"t-buttons\">\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canIncrement\"\n [iconStart]=\"icons.up\"\n (click.prevent)=\"onArrow(step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n +\n </button>\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfield.appearance\"\n [disabled]=\"!canDecrement\"\n [iconStart]=\"icons.down\"\n (click.prevent)=\"onArrow(-step)\"\n (mousedown.prevent)=\"nativeFocusableElement?.focus()\"\n >\n -\n </button>\n </section>\n}\n\n@if (polymorpheusValueContent.changes | async) {}\n\n<ng-template #valueContent>\n <ng-content select=\"tuiContent\" />\n</ng-template>\n","import {Directive, type DoCheck} from '@angular/core';\nimport {AbstractTuiTextfieldHost} from '@taiga-ui/legacy/classes';\nimport {tuiAsTextfieldHost} from '@taiga-ui/legacy/tokens';\n\nimport {type TuiInputNumberComponent} from './input-number.component';\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\n@Directive({\n standalone: false,\n selector: 'tui-input-number',\n providers: [tuiAsTextfieldHost(TuiInputNumberDirective)],\n})\nexport class TuiInputNumberDirective\n extends AbstractTuiTextfieldHost<TuiInputNumberComponent>\n implements DoCheck\n{\n protected input?: HTMLInputElement;\n\n public override get value(): string {\n return this.host.computedValue;\n }\n\n public onValueChange(value: string): void {\n this.host.onValueChange(value);\n }\n\n public ngDoCheck(): void {\n if (!this.host.nativeFocusableElement) {\n return;\n }\n\n this.host.nativeFocusableElement.inputMode = this.host.inputMode;\n this.host.nativeFocusableElement.maxLength =\n this.host.nativeFocusableElement.maxLength > 0\n ? this.host.nativeFocusableElement.maxLength\n : this.host.calculatedMaxLength;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n} from '@taiga-ui/legacy/components/primitive-textfield';\nimport {\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n} from '@taiga-ui/legacy/directives';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\n\nimport {TuiInputNumberComponent} from './input-number.component';\nimport {TuiInputNumberDirective} from './input-number.directive';\n\n/**\n * @deprecated use new version of {@link https://taiga-ui.dev/components/input-number TuiInputNumber} (from @taiga-ui/kit) instead\n * TODO(v5): delete it\n */\n@NgModule({\n imports: [\n CommonModule,\n MaskitoDirective,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n TuiButton,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n ],\n declarations: [TuiInputNumberComponent, TuiInputNumberDirective],\n exports: [TuiInputNumberComponent, TuiInputNumberDirective, TuiTextfieldComponent],\n})\nexport class TuiInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA;;;AAGG;AACU,MAAA,gCAAgC,GAA0B;AACnE,IAAA,KAAK,EAAE;AACH,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,IAAI,EAAE,YAAY;AACrB,KAAA;IACD,GAAG,EAAE,MAAM,CAAC,gBAAgB;IAC5B,GAAG,EAAE,MAAM,CAAC,gBAAgB;AAC5B,IAAA,IAAI,EAAE,CAAC;;AAGX;;;AAGG;AACU,MAAA,wBAAwB,GAAG,IAAI,cAAc,CACtD,SAAS,GAAG,0BAA0B,GAAG,EAAE,EAC3C;AACI,IAAA,OAAO,EAAE,MAAM,gCAAgC;AAClD,CAAA;AAGL;;;AAGG;AACG,SAAU,6BAA6B,CACzC,OAAuC,EAAA;IAEvC,OAAO,iBAAiB,CACpB,wBAAwB,EACxB,OAAO,EACP,gCAAgC,CACnC;AACL;;ACXA,MAAM,kBAAkB,GAAG,EAAE;AAE7B;;;AAGG;AACU,MAAA,4BAA4B,GAAG,IAAI,cAAc,CAE5D,SAAS,GAAG,8BAA8B,GAAG,EAAE;AAEjD;;;AAGG;AAkBG,MAAO,uBACT,SAAQ,0BAAkC,CAAA;AAlB9C,IAAA,WAAA,GAAA;;AAwBqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC;QACnD,IAAe,CAAA,eAAA,GAAkB,EAAE;QAGxB,IAAwB,CAAA,wBAAA,GAAuB,WAAW;QAEjD,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAEnD,4BAA4B,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAEvC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gCAAgC,CAAC;AAGjE,QAAA,IAAA,CAAA,GAAG,GAAkB,IAAI,CAAC,OAAO,CAAC,GAAG;AAGrC,QAAA,IAAA,CAAA,GAAG,GAAkB,IAAI,CAAC,OAAO,CAAC,GAAG;AAGrC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAgRlC;AA9QG,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;AAC3B,cAAE;AACF,cAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB;;AAG/C,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;;AAGpC,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC;kBACN,MAAM;kBACN,SAAS;;AAGnB;;;AAGG;AACH,QAAA,OAAO,SAAS;;AAGpB,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,MAAM,WAAW,GACb,CAAC,CAAC,IAAI,CAAC,SAAS;AAChB,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC;QACnE,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AACpE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AAE3E,QAAA,OAAO,kBAAkB,GAAG,SAAS,GAAG,YAAY;;AAGxD,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;;AAGzD,IAAA,aAAa,CAAC,WAAmB,EAAA;QACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAExE,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;YAEjB;;AAGJ,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAEvB;;AAGJ,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YAClE;;AAGJ,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW;;AAGZ,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;;AAG1C,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI;;AAGlC,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;;AAG7B,IAAA,IAAc,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;;AAG9C,IAAA,IAAc,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;;AAG9C,IAAA,IAAc,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC;;AAG/B,IAAA,IAAc,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE;;AAG7E,IAAA,IAAc,YAAY,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;;AAGnE,IAAA,IAAc,YAAY,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;;AAGnE,IAAA,IAAc,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM;;AAGjC,IAAA,IAAc,eAAe,GAAA;AACzB,QAAA,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC,UAAU;AAEjC,QAAA,OAAO,OAAO,IAAI,CAAI,CAAA,EAAA,OAAO,EAAE;;AAGnC,IAAA,IAAc,IAAI,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CACrB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAC/B,IAAI,CAAC,YAAY,EAAE,CAAC,gBAAgB,EACpC,IAAI,CAAC,YAAY,EAAE,CAAC,iBAAiB,EACrC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,eAAe,CACvB;;AAGL,IAAA,IAAc,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;;IAGnD,IAAc,WAAW,CAAC,KAAa,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACjD;;AAGJ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,KAAK;;AAGnC,IAAA,OAAO,CAAC,IAAmB,EAAA;QACjC,IAAI,CAAC,IAAI,EAAE;YACP;;QAGJ,IAAI,CAAC,KAAK,GAAG,QAAQ,CACjB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,CACnB;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;;AAGhC,IAAA,SAAS,CAAC,OAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAE3B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;cACzB,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE;AAC9D,cAAE,IAAI,CAAC,iBAAiB;AAE5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW;AACZ,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC;AACb,sBAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;sBAC3B,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;YAEjB;;QAGJ,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,IAAI,CAAC,KAAK,GAAG,iBAAiB;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;;;AAIpC,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACrC,QACI,IAAI,CAAC,cAAc;YACnB,eAAe,CAAC,KAAK,EAAE;gBACnB,GAAG,IAAI,CAAC,YAAY,EAAE;AACtB;;;;;AAKG;gBACH,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS;sBAC3C,IAAI,CAAC;AACP,sBAAE,QAAQ;AACjB,aAAA,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC;YACnC,IAAI,CAAC,eAAe;;AAI5B,IAAA,IAAY,wBAAwB,GAAA;AAChC,QAAA,MAAM,EAAC,iBAAiB,EAAC,GAAG,IAAI;QAEhC,OAAO,iBAAiB,GAAG;AACvB,cAAE,iBAAiB,GAAG,IAAI,CAAC;AAC3B,cAAE,iBAAiB,GAAG,IAAI,CAAC,WAAW;;AAG9C,IAAA,IAAY,iBAAiB,GAAA;QACzB,OAAO,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;;AAGpE,IAAA,IAAY,SAAS,GAAA;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS;AAC7C,cAAE;AACF,cAAE,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS;;IAI/B,UAAU,CAAC,GAAkB,EAAE,GAAkB,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,GAAG,CACX,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EACvE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAC1E;;IAIG,UAAU,CAAC,GAAkB,EAAE,GAAkB,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,GAAG,CACX,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EACvE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAC1E;;;AAKG,IAAA,aAAa,CACjB,SAAiB,EACjB,WAA2B,EAC3B,gBAAwB,EACxB,iBAAyB,EACzB,GAAW,EACX,GAAW,EACX,MAAc,EACd,OAAe,EAAA;AAEf,QAAA,MAAM,MAAM,GAAwB;YAChC,gBAAgB;YAChB,iBAAiB;YACjB,GAAG;YACH,GAAG;YACH,MAAM;YACN,OAAO;AACP,YAAA,qBAAqB,EAAE,SAAS;YAChC,qBAAqB,EAAE,WAAW,KAAK,QAAQ,GAAG,SAAS,GAAG,CAAC;SAClE;QACD,MAAM,EAAC,OAAO,EAAE,GAAG,OAAO,EAAC,GAAG,6BAA6B,CAAC,MAAM,CAAC;AACnE,QAAA,MAAM,wBAAwB,GAAG,+BAA+B,CAC5D,6BAA6B,CAAC;AAC1B,YAAA,GAAG,MAAM;YACT,GAAG,EAAE,MAAM,CAAC,gBAAgB;YAC5B,GAAG,EAAE,MAAM,CAAC,gBAAgB;AAC/B,SAAA,CAAC,CACL;QAED,OAAO;AACH,YAAA,GAAG,OAAO;AACV,YAAA,OAAO,EAAE;AACL,gBAAA,GAAG,OAAO;gBACV,wBAAwB;AACxB,gBAAA,iBAAiB,CAAC,CAAC,KAAK,KAAK;AACzB,oBAAA,MAAM,CAAC,MAAM;AACb,oBAAA,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;iBAChC,CAAC;AACL,aAAA;SACJ;;+GA3SI,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAXrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,0BAA0B,CAAC,uBAAuB,CAAC;YACnD,YAAY,CAAC,uBAAuB,CAAC;YACrC,6BAA6B;AAChC,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,SAAA,EAmBgB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EARxB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9E7C,wiEAyEA,EAAA,MAAA,EAAA,CAAA,onCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;ADoPY,UAAA,CAAA;IADP;AAMA,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGO,UAAA,CAAA;IADP;AAMA,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAIO,UAAA,CAAA;IADP;AAyCA,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;4FA5SQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAjBnC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA,0BAA0B,CAAyB,uBAAA,CAAA;AACnD,wBAAA,YAAY,CAAyB,uBAAA,CAAA;wBACrC,6BAA6B;qBAChC,EACK,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,qBAAqB,EAAE,gBAAgB;AACvC,wBAAA,mBAAmB,EAAE,eAAe;AACvC,qBAAA,EAAA,QAAA,EAAA,wiEAAA,EAAA,MAAA,EAAA,CAAA,onCAAA,CAAA,EAAA;8BAOgB,SAAS,EAAA,CAAA;sBADzB,SAAS;uBAAC,8BAA8B;gBAStB,wBAAwB,EAAA,CAAA;sBAD1C,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;gBAWjD,GAAG,EAAA,CAAA;sBADT;gBAIM,GAAG,EAAA,CAAA;sBADT;gBAIM,IAAI,EAAA,CAAA;sBADV;gBAuNO,UAAU,EAAA,EAAA,EAQV,UAAU,EAAA,EAAA,EASV,aAAa,EAAA,EAAA,EAAA,EAAA,CAAA;;AExUzB;;;AAGG;AAMG,MAAO,uBACT,SAAQ,wBAAiD,CAAA;AAKzD,IAAA,IAAoB,KAAK,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;;AAG3B,IAAA,aAAa,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;IAG3B,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACnC;;AAGJ,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,GAAG;AACzC,kBAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACnC,kBAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB;;+GAvBlC,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,gEAFrB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAE/C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE,CAAC,kBAAkB,CAAA,uBAAA,CAAyB,CAAC;AAC3D,iBAAA;;;ACGD;;;AAGG;MAeU,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAHd,YAAA,EAAA,CAAA,uBAAuB,EAAE,uBAAuB,aAT3D,YAAY;YACZ,gBAAgB;YAChB,kBAAkB;YAClB,oBAAoB;YACpB,SAAS;YACT,2BAA2B;YAC3B,4BAA4B;AAC5B,YAAA,sBAAsB,CAGhB,EAAA,OAAA,EAAA,CAAA,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAExE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAZzB,YAAY;YAKZ,2BAA2B;YAC3B,4BAA4B;YAC5B,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAKjB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,gBAAgB;wBAChB,kBAAkB;wBAClB,oBAAoB;wBACpB,SAAS;wBACT,2BAA2B;wBAC3B,4BAA4B;wBAC5B,sBAAsB;AACzB,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;AAChE,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,qBAAqB,CAAC;AACrF,iBAAA;;;AClCD;;AAEG;;;;"}