@skbkontur/react-ui 3.9.4 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +57 -0
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
  4. package/cjs/components/Autocomplete/Autocomplete.js +11 -5
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +1 -0
  7. package/cjs/components/Button/Button.js +7 -3
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Center/Center.d.ts +1 -0
  10. package/cjs/components/Center/Center.js +10 -3
  11. package/cjs/components/Center/Center.js.map +1 -1
  12. package/cjs/components/Checkbox/Checkbox.d.ts +3 -2
  13. package/cjs/components/Checkbox/Checkbox.js +10 -4
  14. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  15. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  16. package/cjs/components/ComboBox/ComboBox.js +100 -70
  17. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  18. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +3 -3
  19. package/cjs/components/CurrencyInput/CurrencyInput.js +7 -4
  20. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  21. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  22. package/cjs/components/DateInput/DateInput.js +6 -3
  23. package/cjs/components/DateInput/DateInput.js.map +1 -1
  24. package/cjs/components/DatePicker/DatePicker.d.ts +4 -2
  25. package/cjs/components/DatePicker/DatePicker.js +17 -7
  26. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  27. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  28. package/cjs/components/Dropdown/Dropdown.js +11 -4
  29. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  30. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  31. package/cjs/components/DropdownMenu/DropdownMenu.js +7 -4
  32. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  33. package/cjs/components/FxInput/FxInput.d.ts +1 -0
  34. package/cjs/components/FxInput/FxInput.js +9 -2
  35. package/cjs/components/FxInput/FxInput.js.map +1 -1
  36. package/cjs/components/Gapped/Gapped.d.ts +1 -0
  37. package/cjs/components/Gapped/Gapped.js +8 -5
  38. package/cjs/components/Gapped/Gapped.js.map +1 -1
  39. package/cjs/components/Group/Group.d.ts +1 -0
  40. package/cjs/components/Group/Group.js +10 -7
  41. package/cjs/components/Group/Group.js.map +1 -1
  42. package/cjs/components/Hint/Hint.d.ts +3 -2
  43. package/cjs/components/Hint/Hint.js +7 -4
  44. package/cjs/components/Hint/Hint.js.map +1 -1
  45. package/cjs/components/Input/Input.d.ts +4 -1
  46. package/cjs/components/Input/Input.js +13 -5
  47. package/cjs/components/Input/Input.js.map +1 -1
  48. package/cjs/components/Kebab/Kebab.d.ts +1 -0
  49. package/cjs/components/Kebab/Kebab.js +8 -5
  50. package/cjs/components/Kebab/Kebab.js.map +1 -1
  51. package/cjs/components/Link/Link.d.ts +1 -0
  52. package/cjs/components/Link/Link.js +11 -3
  53. package/cjs/components/Link/Link.js.map +1 -1
  54. package/cjs/components/Loader/Loader.d.ts +1 -0
  55. package/cjs/components/Loader/Loader.js +9 -6
  56. package/cjs/components/Loader/Loader.js.map +1 -1
  57. package/cjs/components/MenuItem/MenuItem.d.ts +1 -0
  58. package/cjs/components/MenuItem/MenuItem.js +13 -7
  59. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  60. package/cjs/components/Modal/Modal.js +1 -1
  61. package/cjs/components/Modal/Modal.js.map +1 -1
  62. package/cjs/components/Modal/ModalBody.d.ts +1 -0
  63. package/cjs/components/Modal/ModalBody.js +9 -6
  64. package/cjs/components/Modal/ModalBody.js.map +1 -1
  65. package/cjs/components/Paging/Paging.d.ts +2 -2
  66. package/cjs/components/Paging/Paging.js +6 -5
  67. package/cjs/components/Paging/Paging.js.map +1 -1
  68. package/cjs/components/PasswordInput/PasswordInput.d.ts +3 -2
  69. package/cjs/components/PasswordInput/PasswordInput.js +13 -6
  70. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  71. package/cjs/components/Radio/Radio.d.ts +5 -10
  72. package/cjs/components/Radio/Radio.js +11 -10
  73. package/cjs/components/Radio/Radio.js.map +1 -1
  74. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -16
  75. package/cjs/components/RadioGroup/RadioGroup.js +16 -19
  76. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  77. package/cjs/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  78. package/cjs/components/RadioGroup/RadioGroupContext.js +21 -0
  79. package/cjs/components/RadioGroup/RadioGroupContext.js.map +1 -0
  80. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  81. package/cjs/components/ScrollContainer/ScrollContainer.js +8 -5
  82. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  83. package/cjs/components/Select/Select.d.ts +1 -0
  84. package/cjs/components/Select/Select.js +6 -4
  85. package/cjs/components/Select/Select.js.map +1 -1
  86. package/cjs/components/SidePage/SidePage.d.ts +1 -0
  87. package/cjs/components/SidePage/SidePage.js +4 -1
  88. package/cjs/components/SidePage/SidePage.js.map +1 -1
  89. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  90. package/cjs/components/SidePage/SidePageBody.js +9 -6
  91. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  92. package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
  93. package/cjs/components/SidePage/SidePageContainer.js +9 -6
  94. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  95. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -2
  96. package/cjs/components/SidePage/SidePageFooter.js +11 -12
  97. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  98. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  99. package/cjs/components/SidePage/SidePageHeader.js +6 -3
  100. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  101. package/cjs/components/Spinner/Spinner.d.ts +1 -0
  102. package/cjs/components/Spinner/Spinner.js +8 -5
  103. package/cjs/components/Spinner/Spinner.js.map +1 -1
  104. package/cjs/components/Sticky/Sticky.d.ts +1 -0
  105. package/cjs/components/Sticky/Sticky.js +8 -5
  106. package/cjs/components/Sticky/Sticky.js.map +1 -1
  107. package/cjs/components/Switcher/Switcher.d.ts +1 -0
  108. package/cjs/components/Switcher/Switcher.js +6 -3
  109. package/cjs/components/Switcher/Switcher.js.map +1 -1
  110. package/cjs/components/Tabs/Indicator.d.ts +1 -0
  111. package/cjs/components/Tabs/Indicator.js +16 -15
  112. package/cjs/components/Tabs/Indicator.js.map +1 -1
  113. package/cjs/components/Tabs/Tab.d.ts +2 -1
  114. package/cjs/components/Tabs/Tab.js +13 -9
  115. package/cjs/components/Tabs/Tab.js.map +1 -1
  116. package/cjs/components/Tabs/Tabs.d.ts +1 -0
  117. package/cjs/components/Tabs/Tabs.js +9 -9
  118. package/cjs/components/Tabs/Tabs.js.map +1 -1
  119. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  120. package/cjs/components/Textarea/Textarea.js +12 -5
  121. package/cjs/components/Textarea/Textarea.js.map +1 -1
  122. package/cjs/components/Toast/Toast.d.ts +3 -0
  123. package/cjs/components/Toast/Toast.js +15 -4
  124. package/cjs/components/Toast/Toast.js.map +1 -1
  125. package/cjs/components/Toast/ToastView.d.ts +1 -0
  126. package/cjs/components/Toast/ToastView.js +8 -5
  127. package/cjs/components/Toast/ToastView.js.map +1 -1
  128. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  129. package/cjs/components/Toggle/Toggle.js +9 -6
  130. package/cjs/components/Toggle/Toggle.js.map +1 -1
  131. package/cjs/components/Token/Token.d.ts +1 -0
  132. package/cjs/components/Token/Token.js +7 -4
  133. package/cjs/components/Token/Token.js.map +1 -1
  134. package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
  135. package/cjs/components/TokenInput/TokenInput.js +11 -8
  136. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  137. package/cjs/components/Tooltip/Tooltip.d.ts +3 -1
  138. package/cjs/components/Tooltip/Tooltip.js +16 -5
  139. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  140. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  141. package/cjs/components/TooltipMenu/TooltipMenu.js +8 -5
  142. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  143. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  144. package/cjs/internal/CommonWrapper/CommonWrapper.js +38 -15
  145. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  146. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +3 -2
  147. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  148. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  149. package/cjs/internal/CustomComboBox/ComboBoxView.js +15 -5
  150. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  151. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  152. package/cjs/internal/CustomComboBox/CustomComboBox.js +8 -5
  153. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  154. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -2
  155. package/cjs/internal/DateSelect/DateSelect.js +3 -3
  156. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  157. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  158. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -13
  159. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  160. package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
  161. package/cjs/internal/FocusTrap/FocusTrap.js +12 -9
  162. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  163. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +12 -4
  164. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  165. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  166. package/cjs/internal/InputLikeText/InputLikeText.js +10 -3
  167. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  168. package/cjs/internal/InternalMenu/InternalMenu.d.ts +2 -3
  169. package/cjs/internal/InternalMenu/InternalMenu.js +16 -22
  170. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  171. package/cjs/internal/MaskedInput/MaskedInput.d.ts +2 -2
  172. package/cjs/internal/MaskedInput/MaskedInput.js +3 -3
  173. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  174. package/cjs/internal/Menu/Menu.d.ts +1 -0
  175. package/cjs/internal/Menu/Menu.js +9 -6
  176. package/cjs/internal/Menu/Menu.js.map +1 -1
  177. package/cjs/internal/Popup/Popup.d.ts +4 -4
  178. package/cjs/internal/Popup/Popup.js +50 -27
  179. package/cjs/internal/Popup/Popup.js.map +1 -1
  180. package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -0
  181. package/cjs/internal/PopupMenu/PopupMenu.js +7 -4
  182. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  183. package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -1
  184. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  185. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  186. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -3
  187. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  188. package/cjs/internal/RenderLayer/RenderLayer.d.ts +3 -1
  189. package/cjs/internal/RenderLayer/RenderLayer.js +13 -7
  190. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  191. package/cjs/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  192. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +20 -19
  193. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  194. package/cjs/internal/ZIndex/ZIndex.d.ts +2 -0
  195. package/cjs/internal/ZIndex/ZIndex.js +45 -34
  196. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  197. package/cjs/internal/icons/16px/index.d.ts +17 -16
  198. package/cjs/internal/icons/16px/index.js +108 -51
  199. package/cjs/internal/icons/16px/index.js.map +1 -1
  200. package/cjs/lib/callChildRef/callChildRef.d.ts +3 -0
  201. package/cjs/lib/callChildRef/callChildRef.js +19 -0
  202. package/cjs/lib/callChildRef/callChildRef.js.map +1 -0
  203. package/cjs/lib/rootNode/getRootNode.d.ts +3 -0
  204. package/cjs/lib/rootNode/getRootNode.js +27 -0
  205. package/cjs/lib/rootNode/getRootNode.js.map +1 -0
  206. package/cjs/lib/rootNode/index.d.ts +2 -0
  207. package/cjs/lib/rootNode/index.js +2 -0
  208. package/cjs/lib/rootNode/index.js.map +1 -0
  209. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  210. package/cjs/lib/rootNode/rootNodeDecorator.js +31 -0
  211. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -0
  212. package/cjs/lib/theming/Emotion.js +1 -0
  213. package/cjs/lib/theming/Emotion.js.map +1 -1
  214. package/cjs/lib/utils.d.ts +3 -0
  215. package/cjs/lib/utils.js +15 -2
  216. package/cjs/lib/utils.js.map +1 -1
  217. package/components/Autocomplete/Autocomplete/Autocomplete.js +19 -16
  218. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  219. package/components/Autocomplete/Autocomplete.d.ts +1 -0
  220. package/components/Button/Button/Button.js +15 -12
  221. package/components/Button/Button/Button.js.map +1 -1
  222. package/components/Button/Button.d.ts +1 -0
  223. package/components/Center/Center/Center.js +14 -9
  224. package/components/Center/Center/Center.js.map +1 -1
  225. package/components/Center/Center.d.ts +1 -0
  226. package/components/Checkbox/Checkbox/Checkbox.js +16 -10
  227. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  228. package/components/Checkbox/Checkbox.d.ts +3 -2
  229. package/components/ComboBox/ComboBox/ComboBox.js +38 -32
  230. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  231. package/components/ComboBox/ComboBox.d.ts +2 -0
  232. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +29 -27
  233. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  234. package/components/CurrencyInput/CurrencyInput.d.ts +3 -3
  235. package/components/DateInput/DateInput/DateInput.js +7 -3
  236. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  237. package/components/DateInput/DateInput.d.ts +1 -0
  238. package/components/DatePicker/DatePicker/DatePicker.js +29 -22
  239. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  240. package/components/DatePicker/DatePicker.d.ts +4 -2
  241. package/components/Dropdown/Dropdown/Dropdown.js +15 -13
  242. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  243. package/components/Dropdown/Dropdown.d.ts +1 -0
  244. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +15 -9
  245. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  246. package/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  247. package/components/FxInput/FxInput/FxInput.js +13 -9
  248. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  249. package/components/FxInput/FxInput.d.ts +1 -0
  250. package/components/Gapped/Gapped/Gapped.js +15 -11
  251. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  252. package/components/Gapped/Gapped.d.ts +1 -0
  253. package/components/Group/Group/Group.js +22 -9
  254. package/components/Group/Group/Group.js.map +1 -1
  255. package/components/Group/Group.d.ts +1 -0
  256. package/components/Hint/Hint/Hint.js +18 -12
  257. package/components/Hint/Hint/Hint.js.map +1 -1
  258. package/components/Hint/Hint.d.ts +3 -2
  259. package/components/Input/Input/Input.js +21 -14
  260. package/components/Input/Input/Input.js.map +1 -1
  261. package/components/Input/Input.d.ts +4 -1
  262. package/components/Kebab/Kebab/Kebab.js +12 -7
  263. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  264. package/components/Kebab/Kebab.d.ts +1 -0
  265. package/components/Link/Link/Link.js +15 -11
  266. package/components/Link/Link/Link.js.map +1 -1
  267. package/components/Link/Link.d.ts +1 -0
  268. package/components/Loader/Loader/Loader.js +16 -11
  269. package/components/Loader/Loader/Loader.js.map +1 -1
  270. package/components/Loader/Loader.d.ts +1 -0
  271. package/components/MenuItem/MenuItem/MenuItem.js +21 -14
  272. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  273. package/components/MenuItem/MenuItem.d.ts +1 -0
  274. package/components/Modal/Modal/Modal.js +1 -1
  275. package/components/Modal/Modal/Modal.js.map +1 -1
  276. package/components/Modal/ModalBody/ModalBody.js +16 -10
  277. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  278. package/components/Modal/ModalBody.d.ts +1 -0
  279. package/components/Paging/Paging/Paging.js +17 -14
  280. package/components/Paging/Paging/Paging.js.map +1 -1
  281. package/components/Paging/Paging.d.ts +2 -2
  282. package/components/PasswordInput/PasswordInput/PasswordInput.js +18 -14
  283. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  284. package/components/PasswordInput/PasswordInput.d.ts +3 -2
  285. package/components/Radio/Radio/Radio.js +17 -19
  286. package/components/Radio/Radio/Radio.js.map +1 -1
  287. package/components/Radio/Radio.d.ts +5 -10
  288. package/components/RadioGroup/RadioGroup/RadioGroup.js +35 -38
  289. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  290. package/components/RadioGroup/RadioGroup.d.ts +2 -16
  291. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js +12 -0
  292. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js.map +1 -0
  293. package/components/RadioGroup/RadioGroupContext/package.json +6 -0
  294. package/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  295. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +13 -8
  296. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  297. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  298. package/components/Select/Select/Select.js +8 -5
  299. package/components/Select/Select/Select.js.map +1 -1
  300. package/components/Select/Select.d.ts +1 -0
  301. package/components/SidePage/SidePage/SidePage.js +6 -3
  302. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  303. package/components/SidePage/SidePage.d.ts +1 -0
  304. package/components/SidePage/SidePageBody/SidePageBody.js +16 -10
  305. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  306. package/components/SidePage/SidePageBody.d.ts +1 -0
  307. package/components/SidePage/SidePageContainer/SidePageContainer.js +16 -9
  308. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  309. package/components/SidePage/SidePageContainer.d.ts +1 -0
  310. package/components/SidePage/SidePageFooter/SidePageFooter.js +22 -19
  311. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  312. package/components/SidePage/SidePageFooter.d.ts +1 -2
  313. package/components/SidePage/SidePageHeader/SidePageHeader.js +15 -10
  314. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  315. package/components/SidePage/SidePageHeader.d.ts +1 -0
  316. package/components/Spinner/Spinner/Spinner.js +8 -3
  317. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  318. package/components/Spinner/Spinner.d.ts +1 -0
  319. package/components/Sticky/Sticky/Sticky.js +13 -8
  320. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  321. package/components/Sticky/Sticky.d.ts +1 -0
  322. package/components/Switcher/Switcher/Switcher.js +11 -6
  323. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  324. package/components/Switcher/Switcher.d.ts +1 -0
  325. package/components/Tabs/Indicator/Indicator.js +16 -14
  326. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  327. package/components/Tabs/Indicator.d.ts +1 -0
  328. package/components/Tabs/Tab/Tab.js +31 -34
  329. package/components/Tabs/Tab/Tab.js.map +1 -1
  330. package/components/Tabs/Tab.d.ts +2 -1
  331. package/components/Tabs/Tabs/Tabs.js +20 -20
  332. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  333. package/components/Tabs/Tabs.d.ts +1 -0
  334. package/components/Textarea/Textarea/Textarea.js +21 -17
  335. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  336. package/components/Textarea/Textarea.d.ts +1 -0
  337. package/components/Toast/Toast/Toast.js +29 -14
  338. package/components/Toast/Toast/Toast.js.map +1 -1
  339. package/components/Toast/Toast.d.ts +3 -0
  340. package/components/Toast/ToastView/ToastView.js +10 -5
  341. package/components/Toast/ToastView/ToastView.js.map +1 -1
  342. package/components/Toast/ToastView.d.ts +1 -0
  343. package/components/Toggle/Toggle/Toggle.js +16 -11
  344. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  345. package/components/Toggle/Toggle.d.ts +1 -0
  346. package/components/Token/Token/Token.js +11 -4
  347. package/components/Token/Token/Token.js.map +1 -1
  348. package/components/Token/Token.d.ts +1 -0
  349. package/components/TokenInput/TokenInput/TokenInput.js +12 -6
  350. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  351. package/components/TokenInput/TokenInput.d.ts +1 -0
  352. package/components/Tooltip/Tooltip/Tooltip.js +24 -15
  353. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  354. package/components/Tooltip/Tooltip.d.ts +3 -1
  355. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +23 -17
  356. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  357. package/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  358. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +37 -10
  359. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  360. package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  361. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +5 -3
  362. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  363. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +23 -13
  364. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  365. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  366. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +12 -4
  367. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  368. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  369. package/internal/DateSelect/DateSelect/DateSelect.js +5 -5
  370. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  371. package/internal/DateSelect/DateSelect.d.ts +2 -2
  372. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +11 -15
  373. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  374. package/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  375. package/internal/FocusTrap/FocusTrap/FocusTrap.js +17 -9
  376. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  377. package/internal/FocusTrap/FocusTrap.d.ts +1 -0
  378. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +13 -7
  379. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  380. package/internal/InputLikeText/InputLikeText/InputLikeText.js +11 -6
  381. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  382. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  383. package/internal/InternalMenu/InternalMenu/InternalMenu.js +24 -25
  384. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  385. package/internal/InternalMenu/InternalMenu.d.ts +2 -3
  386. package/internal/MaskedInput/MaskedInput/MaskedInput.js +7 -7
  387. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  388. package/internal/MaskedInput/MaskedInput.d.ts +2 -2
  389. package/internal/Menu/Menu/Menu.js +11 -8
  390. package/internal/Menu/Menu/Menu.js.map +1 -1
  391. package/internal/Menu/Menu.d.ts +1 -0
  392. package/internal/Popup/Popup/Popup.js +79 -68
  393. package/internal/Popup/Popup/Popup.js.map +1 -1
  394. package/internal/Popup/Popup.d.ts +4 -4
  395. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -7
  396. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  397. package/internal/PopupMenu/PopupMenu.d.ts +1 -0
  398. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  399. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  400. package/internal/RenderContainer/RenderContainer.d.ts +1 -1
  401. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +2 -3
  402. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  403. package/internal/RenderLayer/RenderLayer/RenderLayer.js +20 -18
  404. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  405. package/internal/RenderLayer/RenderLayer.d.ts +3 -1
  406. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +35 -43
  407. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  408. package/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  409. package/internal/ZIndex/ZIndex/ZIndex.js +20 -8
  410. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  411. package/internal/ZIndex/ZIndex.d.ts +2 -0
  412. package/internal/icons/16px/index/index.js +83 -51
  413. package/internal/icons/16px/index/index.js.map +1 -1
  414. package/internal/icons/16px/index.d.ts +17 -16
  415. package/lib/callChildRef/callChildRef/callChildRef.js +14 -0
  416. package/lib/callChildRef/callChildRef/callChildRef.js.map +1 -0
  417. package/lib/callChildRef/callChildRef/package.json +6 -0
  418. package/lib/callChildRef/callChildRef.d.ts +3 -0
  419. package/lib/rootNode/getRootNode/getRootNode.js +25 -0
  420. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -0
  421. package/lib/rootNode/getRootNode/package.json +6 -0
  422. package/lib/rootNode/getRootNode.d.ts +3 -0
  423. package/lib/rootNode/index/index.js +2 -0
  424. package/lib/rootNode/index/index.js.map +1 -0
  425. package/lib/rootNode/index/package.json +6 -0
  426. package/lib/rootNode/index.d.ts +2 -0
  427. package/lib/rootNode/package.json +6 -0
  428. package/lib/rootNode/rootNodeDecorator/package.json +6 -0
  429. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +37 -0
  430. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -0
  431. package/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  432. package/lib/theming/Emotion/Emotion.js +1 -0
  433. package/lib/theming/Emotion/Emotion.js.map +1 -1
  434. package/lib/utils/utils.js +11 -1
  435. package/lib/utils/utils.js.map +1 -1
  436. package/lib/utils.d.ts +3 -0
  437. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Checkbox.tsx"],"names":["Checkbox","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","React","createRef","componentDidMount","current","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","styles","root","rootFallback","isIE11","isEdge","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","isFirefox","box","globalClasses","boxChecked","boxDisabled","boxFocus","boxError","boxWarning","e","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","UNSAFE_componentWillReceiveProps","nextProps","render","focus","blur","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n\nexport class Checkbox extends React.Component<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input = React.createRef<HTMLInputElement>();\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n public UNSAFE_componentWillReceiveProps(nextProps: CheckboxProps) {\n if (nextProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input.current?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input.current?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input.current) {\n this.input.current.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.input,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxDisabled(this.theme)]: props.disabled,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label\n className={rootClass}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n onClick={fixFirefoxModifiedClickOnLabel(this.input)}\n >\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input.current) {\n const checked = !this.input.current.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.current.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Checkbox.tsx"],"names":["Checkbox","rootNode","state","focusedByTab","indeterminate","props","initialIndeterminate","theme","input","React","createRef","componentDidMount","current","setRootNode","setIndeterminate","setState","resetIndeterminate","renderMain","error","warning","onMouseEnter","onMouseLeave","onMouseOver","onValueChange","type","rest","isIndeterminate","rootClass","styles","root","rootFallback","isIE11","isEdge","rootChecked","checked","disabled","Boolean","inputProps","className","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","onClick","handleClick","ref","caption","children","captionClass","captionIE11","iconClass","iconUnchecked","iconFixBaseline","isFirefox","box","globalClasses","boxChecked","boxDisabled","boxFocus","boxError","boxWarning","e","requestAnimationFrame","keyListener","isTabPressed","event","currentTarget","undefined","componentDidUpdate","prevProps","render","focus","blur","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { OkIcon, SquareIcon } from '../../internal/icons/16px';\nimport { isEdge, isFirefox, isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\n\nimport { styles, globalClasses } from './Checkbox.styles';\n\nexport interface CheckboxProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Контент `label`\n */\n children?: React.ReactNode;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: boolean) => void;\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n /**\n * [Неопределённое состояние](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#attr-indeterminate) чекбокса из HTML.\n */\n initialIndeterminate?: boolean;\n }\n > {}\n\nexport interface CheckboxState {\n focusedByTab: boolean;\n indeterminate: boolean;\n}\n@rootNode\nexport class Checkbox extends React.PureComponent<CheckboxProps, CheckboxState> {\n public static __KONTUR_REACT_UI__ = 'Checkbox';\n\n public static propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n onValueChange: PropTypes.func,\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public state = {\n focusedByTab: false,\n indeterminate: this.props.initialIndeterminate || false,\n };\n\n private theme!: Theme;\n private input = React.createRef<HTMLInputElement>();\n\n public componentDidMount = () => {\n if (this.state.indeterminate && this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(prevProps: CheckboxProps) {\n if (prevProps.checked !== this.props.checked) {\n this.resetIndeterminate();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Программная установка фокуса чекбоксу.\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.input.current?.focus();\n }\n\n /**\n * Программное снятие фокуса с чекбокса.\n * @public\n */\n public blur() {\n this.input.current?.blur();\n }\n\n /**\n * Устанавливает чекбокс в HTML-состояние `indeterminate`.\n * @public\n */\n public setIndeterminate = () => {\n this.setState({\n indeterminate: true,\n });\n if (this.input.current) {\n this.input.current.indeterminate = true;\n }\n };\n\n /**\n * Снимает с чекбокса HTML-состояние `indeterminate`.\n * @public\n */\n public resetIndeterminate = () => {\n this.setState({\n indeterminate: false,\n });\n if (this.input.current) {\n this.input.current.indeterminate = false;\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<CheckboxProps>) => {\n const {\n error,\n warning,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onValueChange,\n type,\n initialIndeterminate,\n ...rest\n } = props;\n const isIndeterminate = this.state.indeterminate;\n\n const rootClass = cx({\n [styles.root(this.theme)]: true,\n [styles.rootFallback()]: isIE11 || isEdge,\n [styles.rootChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n\n const inputProps = {\n ...rest,\n type: 'checkbox',\n className: styles.input(),\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onClick: this.handleClick,\n ref: this.input,\n };\n\n let caption = null;\n if (this.props.children) {\n const captionClass = cx({\n [styles.caption(this.theme)]: true,\n [styles.captionIE11()]: isIE11 || isEdge,\n [styles.disabled(this.theme)]: Boolean(props.disabled),\n });\n caption = <span className={captionClass}>{this.props.children}</span>;\n }\n\n const iconClass = cx({\n [styles.iconUnchecked()]: !props.checked && !isIndeterminate,\n [styles.iconFixBaseline()]: isFirefox || isIE11 || isEdge,\n });\n\n const box = (\n <span\n className={cx(styles.box(this.theme), globalClasses.box, {\n [styles.boxChecked(this.theme)]: props.checked || isIndeterminate,\n [styles.boxDisabled(this.theme)]: props.disabled,\n [styles.boxFocus(this.theme)]: this.state.focusedByTab,\n [styles.boxError(this.theme)]: props.error,\n [styles.boxWarning(this.theme)]: props.warning,\n })}\n >\n {(isIndeterminate && <SquareIcon className={iconClass} />) || <OkIcon className={iconClass} />}\n </span>\n );\n\n return (\n <label\n className={rootClass}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n onClick={fixFirefoxModifiedClickOnLabel(this.input)}\n >\n <input {...inputProps} />\n {box}\n {caption}\n </label>\n );\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByTab: false });\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const checked = event.currentTarget.checked;\n this.props.onValueChange?.(checked);\n\n this.resetIndeterminate();\n\n this.props.onChange?.(event);\n };\n\n private handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n this.props.onClick?.(e);\n // support IE11's and old Edge's special behavior\n // https://github.com/jquery/jquery/issues/1698\n if (this.state.indeterminate && (isIE11 || isEdge)) {\n this.resetIndeterminate();\n // simulate correct behavior only if onValueChange is used\n // because we cant simulate real native onChange event\n if (this.props.onValueChange && this.input.current) {\n const checked = !this.input.current.checked;\n\n if (this.props.checked === undefined) {\n // in case of uncontrolled mode\n this.input.current.checked = checked;\n }\n\n this.props.onValueChange(checked);\n }\n }\n };\n}\n"]}
@@ -140,6 +140,7 @@ export declare class ComboBox<T = ComboBoxItem> extends React.Component<ComboBox
140
140
  drawArrow: boolean;
141
141
  };
142
142
  private comboboxElement;
143
+ private setRootNode;
143
144
  /**
144
145
  * @public
145
146
  */
@@ -179,4 +180,5 @@ export declare class ComboBox<T = ComboBoxItem> extends React.Component<ComboBox
179
180
  */
180
181
  reset(): void;
181
182
  render(): JSX.Element;
183
+ private customComboBoxRef;
182
184
  }
@@ -1,10 +1,11 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.ComboBox = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
 
3
- var _CustomComboBox = require("../../internal/CustomComboBox");var
3
+ var _CustomComboBox = require("../../internal/CustomComboBox");
4
4
 
5
5
 
6
6
 
7
7
 
8
+ var _rootNode = require("../../lib/rootNode");var _class, _class2, _temp;var
8
9
 
9
10
 
10
11
 
@@ -165,8 +166,8 @@ var _CustomComboBox = require("../../internal/CustomComboBox");var
165
166
 
166
167
 
167
168
 
168
- ComboBox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ComboBox, _React$Component);function ComboBox() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
169
169
 
170
+ ComboBox = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ComboBox, _React$Component);function ComboBox() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
170
171
 
171
172
 
172
173
 
@@ -178,86 +179,115 @@ ComboBox = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
178
179
 
179
180
 
180
181
 
181
- comboboxElement = null;return _this;}var _proto = ComboBox.prototype;
182
182
 
183
- /**
183
+ comboboxElement = null;_this.
184
+ setRootNode = void 0;_this.
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+ customComboBoxRef = function (element) {
269
+ _this.setRootNode(element);
270
+ _this.comboboxElement = element;
271
+ };return _this;}var _proto = ComboBox.prototype; /**
184
272
  * @public
185
- */_proto.
186
- focus = function focus() {
187
- if (this.comboboxElement) {
188
- this.comboboxElement.focus();
189
- }
190
- }
191
-
192
- /**
273
+ */_proto.focus = function focus() {if (this.comboboxElement) {this.comboboxElement.focus();}} /**
193
274
  * @public
194
- */;_proto.
195
- blur = function blur() {
196
- if (this.comboboxElement) {
197
- this.comboboxElement.blur();
198
- }
199
- }
200
-
201
- /**
275
+ */;_proto.blur = function blur() {if (this.comboboxElement) {this.comboboxElement.blur();}} /**
202
276
  * Открывает выпадающий список и запускает поиск элементов
203
277
  *
204
278
  * @public
205
279
  * @param {string} [query] Текст поиска. По умолчанию берется
206
280
  * текст из инпута или результат `valueToString(value)`
207
- */;_proto.
208
- search = function search(query) {
209
- if (this.comboboxElement) {
210
- this.comboboxElement.search(query);
211
- }
212
- }
213
-
214
- /**
281
+ */;_proto.search = function search(query) {if (this.comboboxElement) {this.comboboxElement.search(query);}} /**
215
282
  * @public
216
- */;_proto.
217
- cancelSearch = function cancelSearch() {
218
- if (this.comboboxElement) {
219
- this.comboboxElement.cancelSearch();
220
- }
221
- }
222
-
223
- /**
283
+ */;_proto.cancelSearch = function cancelSearch() {if (this.comboboxElement) {this.comboboxElement.cancelSearch();}} /**
224
284
  * @public Открывает выпадающий список
225
- */;_proto.
226
- open = function open() {
227
- if (this.comboboxElement) {
228
- this.comboboxElement.open();
229
- }
230
- }
231
-
232
- /**
285
+ */;_proto.open = function open() {if (this.comboboxElement) {this.comboboxElement.open();}} /**
233
286
  * @public Закрывает выпадающий список
234
- */;_proto.
235
- close = function close() {
236
- if (this.comboboxElement) {
237
- this.comboboxElement.close();
238
- }
239
- }
240
-
241
- /**
287
+ */;_proto.close = function close() {if (this.comboboxElement) {this.comboboxElement.close();}} /**
242
288
  * Выделяет текст внутри input
243
289
  * @public
244
- */;_proto.
245
- selectInputText = function selectInputText() {
246
- if (this.comboboxElement) {
247
- this.comboboxElement.selectInputText();
248
- }
249
- }
250
-
251
- /**
290
+ */;_proto.selectInputText = function selectInputText() {if (this.comboboxElement) {this.comboboxElement.selectInputText();}} /**
252
291
  * Сбрасывает введенное пользователем значение
253
292
  * @public
254
- */;_proto.
255
- reset = function reset() {
256
- if (this.comboboxElement) {
257
- this.comboboxElement.reset();
258
- }
259
- };_proto.
260
-
261
- render = function render() {var _this2 = this;
262
- return /*#__PURE__*/_react.default.createElement(_CustomComboBox.CustomComboBox, (0, _extends2.default)({}, this.props, { ref: function ref(element) {return _this2.comboboxElement = element;} }));
263
- };return ComboBox;}(_react.default.Component);exports.ComboBox = ComboBox;ComboBox.__KONTUR_REACT_UI__ = 'ComboBox';ComboBox.defaultProps = { itemToValue: function itemToValue(item) {return item.value;}, valueToString: function valueToString(item) {return item.label;}, renderValue: function renderValue(item) {return item.label;}, renderItem: function renderItem(item) {return item.label;}, menuAlign: 'left', searchOnFocus: true, drawArrow: true };
293
+ */;_proto.reset = function reset() {if (this.comboboxElement) {this.comboboxElement.reset();}};_proto.render = function render() {return /*#__PURE__*/_react.default.createElement(_CustomComboBox.CustomComboBox, (0, _extends2.default)({}, this.props, { ref: this.customComboBoxRef }));};return ComboBox;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBox', _class2.defaultProps = { itemToValue: function itemToValue(item) {return item.value;}, valueToString: function valueToString(item) {return item.label;}, renderValue: function renderValue(item) {return item.label;}, renderItem: function renderItem(item) {return item.label;}, menuAlign: 'left', searchOnFocus: true, drawArrow: true }, _temp)) || _class;exports.ComboBox = ComboBox;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBox.tsx"],"names":["ComboBox","comboboxElement","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","element","React","Component","__KONTUR_REACT_UI__","defaultProps","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"sUAAA;;AAEA,+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqKaA,Q;;;;;;;;;;;;;AAaHC,IAAAA,e,GAA+C,I;;AAEvD;AACF;AACA,K;AACSC,EAAAA,K,GAAP,iBAAe;AACb,QAAI,KAAKD,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBC,KAArB;AACD;AACF;;AAED;AACF;AACA,K;AACSC,EAAAA,I,GAAP,gBAAc;AACZ,QAAI,KAAKF,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBE,IAArB;AACD;AACF;;AAED;AACF;AACA;AACA;AACA;AACA;AACA,K;AACSC,EAAAA,M,GAAP,gBAAcC,KAAd,EAA8B;AAC5B,QAAI,KAAKJ,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBG,MAArB,CAA4BC,KAA5B;AACD;AACF;;AAED;AACF;AACA,K;AACSC,EAAAA,Y,GAAP,wBAAsB;AACpB,QAAI,KAAKL,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBK,YAArB;AACD;AACF;;AAED;AACF;AACA,K;AACSC,EAAAA,I,GAAP,gBAAc;AACZ,QAAI,KAAKN,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBM,IAArB;AACD;AACF;;AAED;AACF;AACA,K;AACSC,EAAAA,K,GAAP,iBAAe;AACb,QAAI,KAAKP,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBO,KAArB;AACD;AACF;;AAED;AACF;AACA;AACA,K;AACSC,EAAAA,e,GAAP,2BAAyB;AACvB,QAAI,KAAKR,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBQ,eAArB;AACD;AACF;;AAED;AACF;AACA;AACA,K;AACSC,EAAAA,K,GAAP,iBAAe;AACb,QAAI,KAAKT,eAAT,EAA0B;AACxB,WAAKA,eAAL,CAAqBS,KAArB;AACD;AACF,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd,wBAAO,6BAAC,8BAAD,6BAAoB,KAAKC,KAAzB,IAAgC,GAAG,EAAE,aAACC,OAAD,UAAc,MAAI,CAACZ,eAAL,GAAuBY,OAArC,EAArC,IAAP;AACD,G,mBA/F6CC,eAAMC,S,8BAAzCf,Q,CACGgB,mB,GAAsB,U,CADzBhB,Q,CAGGiB,Y,GAAe,EAC3BC,WAAW,EAAE,qBAACC,IAAD,UAAwBA,IAAI,CAACC,KAA7B,EADc,EAE3BC,aAAa,EAAE,uBAACF,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAFY,EAG3BC,WAAW,EAAE,qBAACJ,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAHc,EAI3BE,UAAU,EAAE,oBAACL,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAJe,EAK3BG,SAAS,EAAE,MALgB,EAM3BC,aAAa,EAAE,IANY,EAO3BC,SAAS,EAAE,IAPgB,E","sourcesContent":["import React from 'react';\n\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\n\nexport interface ComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<T[]>;\n\n /**\n * Необходим для сравнения полученных результатов с `value`\n * @default item => item.label\n */\n itemToValue: (item: T) => string | number;\n\n maxLength?: number;\n\n menuAlign?: 'left' | 'right';\n\n onBlur?: () => void;\n\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n\n onFocus?: () => void;\n\n /**\n * Вызывается при изменении текста в поле ввода,\n * если результатом функции будет строка,\n * то она станет следующим состояним полем ввода\n */\n onInputValueChange?: (value: string) => Nullable<string> | void;\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с элемента.\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `renderValue` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает onValueChange со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`,\n * с которым будет вызван onValueChange.\n */\n onUnexpectedInput?: (value: string) => void | null | T;\n\n placeholder?: string;\n\n /**\n * Функция отрисовки элементов результата поиска.\n * Не применяется если элемент является функцией или React-элементом\n * @default item => item.label\n */\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n\n /**\n * Функция для отрисовки сообщения о пустом результате поиска\n * Если есть renderAddButton - не работает\n */\n renderNotFound?: () => React.ReactNode;\n\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /**\n * Функция отрисовки выбранного значения\n * @default item => item.label\n */\n renderValue: (item: T) => React.ReactNode;\n\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string) => React.ReactNode;\n\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n\n /**\n * Выбранное значение\n * Ожидается, что `value` того же типа что и элементы в массиве,\n * возвращаемом в `getItems`\n */\n value?: Nullable<T>;\n\n /**\n * Необходим для преобразования `value` в строку при фокусировке\n * @default item => item.label\n */\n valueToString: (item: T) => string;\n\n size?: 'small' | 'medium' | 'large';\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n\n public static defaultProps = {\n itemToValue: (item: ComboBoxItem) => item.value,\n valueToString: (item: ComboBoxItem) => item.label,\n renderValue: (item: ComboBoxItem) => item.label,\n renderItem: (item: ComboBoxItem) => item.label,\n menuAlign: 'left',\n searchOnFocus: true,\n drawArrow: true,\n };\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.props} ref={(element) => (this.comboboxElement = element)} />;\n }\n}\n"]}
1
+ {"version":3,"sources":["ComboBox.tsx"],"names":["ComboBox","rootNode","comboboxElement","setRootNode","customComboBoxRef","element","focus","blur","search","query","cancelSearch","open","close","selectInputText","reset","render","props","React","Component","__KONTUR_REACT_UI__","defaultProps","itemToValue","item","value","valueToString","label","renderValue","renderItem","menuAlign","searchOnFocus","drawArrow"],"mappings":"sUAAA;;AAEA;;;;;AAKA,8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkKaA,Q,OADZC,kB;;;;;;;;;;;;;AAcSC,IAAAA,e,GAA+C,I;AAC/CC,IAAAA,W;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFAC,IAAAA,iB,GAAoB,UAACC,OAAD,EAA0C;AACpE,YAAKF,WAAL,CAAiBE,OAAjB;AACA,YAAKH,eAAL,GAAuBG,OAAvB;AACD,K,gDArFD;AACF;AACA,K,OACSC,K,GAAP,iBAAe,CACb,IAAI,KAAKJ,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBI,KAArB,GACD,CACF,C,CAED;AACF;AACA,K,QACSC,I,GAAP,gBAAc,CACZ,IAAI,KAAKL,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBK,IAArB,GACD,CACF,C,CAED;AACF;AACA;AACA;AACA;AACA;AACA,K,QACSC,M,GAAP,gBAAcC,KAAd,EAA8B,CAC5B,IAAI,KAAKP,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBM,MAArB,CAA4BC,KAA5B,EACD,CACF,C,CAED;AACF;AACA,K,QACSC,Y,GAAP,wBAAsB,CACpB,IAAI,KAAKR,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBQ,YAArB,GACD,CACF,C,CAED;AACF;AACA,K,QACSC,I,GAAP,gBAAc,CACZ,IAAI,KAAKT,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBS,IAArB,GACD,CACF,C,CAED;AACF;AACA,K,QACSC,K,GAAP,iBAAe,CACb,IAAI,KAAKV,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBU,KAArB,GACD,CACF,C,CAED;AACF;AACA;AACA,K,QACSC,e,GAAP,2BAAyB,CACvB,IAAI,KAAKX,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBW,eAArB,GACD,CACF,C,CAED;AACF;AACA;AACA,K,QACSC,K,GAAP,iBAAe,CACb,IAAI,KAAKZ,eAAT,EAA0B,CACxB,KAAKA,eAAL,CAAqBY,KAArB,GACD,CACF,C,QAEMC,M,GAAP,kBAAgB,CACd,oBAAO,6BAAC,8BAAD,6BAAoB,KAAKC,KAAzB,IAAgC,GAAG,EAAE,KAAKZ,iBAA1C,IAAP,CACD,C,mBAhG6Ca,eAAMC,S,WACtCC,mB,GAAsB,U,UAEtBC,Y,GAAe,EAC3BC,WAAW,EAAE,qBAACC,IAAD,UAAwBA,IAAI,CAACC,KAA7B,EADc,EAE3BC,aAAa,EAAE,uBAACF,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAFY,EAG3BC,WAAW,EAAE,qBAACJ,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAHc,EAI3BE,UAAU,EAAE,oBAACL,IAAD,UAAwBA,IAAI,CAACG,KAA7B,EAJe,EAK3BG,SAAS,EAAE,MALgB,EAM3BC,aAAa,EAAE,IANY,EAO3BC,SAAS,EAAE,IAPgB,E","sourcesContent":["import React from 'react';\n\nimport { CustomComboBox } from '../../internal/CustomComboBox';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuItemState } from '../MenuItem';\nimport { InputIconType } from '../Input';\nimport { CommonProps } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport interface ComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n /**\n * Вызывает функцию поиска `getItems` при фокусе и очистке поля ввода\n * @default true\n */\n searchOnFocus?: boolean;\n /**\n * Рисует справа иконку в виде стрелки\n * @default true\n */\n drawArrow?: boolean;\n\n autoFocus?: boolean;\n\n borderless?: boolean;\n\n /**\n * Не использовать Portal для рендеринга меню.\n * См. https://github.com/skbkontur/retail-ui/issues/15\n * @default false\n */\n disablePortal?: boolean;\n\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n leftIcon?: InputIconType;\n\n rightIcon?: InputIconType;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются объекты с типом `{ value: string, label: string }`.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `itemToValue`, `renderValue`, `renderItem`, `valueToString`\n */\n getItems: (query: string) => Promise<T[]>;\n\n /**\n * Необходим для сравнения полученных результатов с `value`\n * @default item => item.label\n */\n itemToValue: (item: T) => string | number;\n\n maxLength?: number;\n\n menuAlign?: 'left' | 'right';\n\n onBlur?: () => void;\n\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n\n onFocus?: () => void;\n\n /**\n * Вызывается при изменении текста в поле ввода,\n * если результатом функции будет строка,\n * то она станет следующим состояним полем ввода\n */\n onInputValueChange?: (value: string) => Nullable<string> | void;\n\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с элемента.\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `renderValue` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает onValueChange со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`,\n * с которым будет вызван onValueChange.\n */\n onUnexpectedInput?: (value: string) => void | null | T;\n\n placeholder?: string;\n\n /**\n * Функция отрисовки элементов результата поиска.\n * Не применяется если элемент является функцией или React-элементом\n * @default item => item.label\n */\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n\n /**\n * Функция для отрисовки сообщения о пустом результате поиска\n * Если есть renderAddButton - не работает\n */\n renderNotFound?: () => React.ReactNode;\n\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /**\n * Функция отрисовки выбранного значения\n * @default item => item.label\n */\n renderValue: (item: T) => React.ReactNode;\n\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string) => React.ReactNode;\n\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n\n /**\n * Выбранное значение\n * Ожидается, что `value` того же типа что и элементы в массиве,\n * возвращаемом в `getItems`\n */\n value?: Nullable<T>;\n\n /**\n * Необходим для преобразования `value` в строку при фокусировке\n * @default item => item.label\n */\n valueToString: (item: T) => string;\n\n size?: 'small' | 'medium' | 'large';\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n width?: string | number;\n\n maxMenuHeight?: number | string;\n\n onMouseEnter?: (e: React.MouseEvent) => void;\n\n onMouseOver?: (e: React.MouseEvent) => void;\n\n onMouseLeave?: (e: React.MouseEvent) => void;\n\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface ComboBoxItem {\n value: string;\n label: string;\n}\n\n@rootNode\nexport class ComboBox<T = ComboBoxItem> extends React.Component<ComboBoxProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBox';\n\n public static defaultProps = {\n itemToValue: (item: ComboBoxItem) => item.value,\n valueToString: (item: ComboBoxItem) => item.label,\n renderValue: (item: ComboBoxItem) => item.label,\n renderItem: (item: ComboBoxItem) => item.label,\n menuAlign: 'left',\n searchOnFocus: true,\n drawArrow: true,\n };\n\n private comboboxElement: Nullable<CustomComboBox<T>> = null;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.comboboxElement) {\n this.comboboxElement.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.comboboxElement) {\n this.comboboxElement.blur();\n }\n }\n\n /**\n * Открывает выпадающий список и запускает поиск элементов\n *\n * @public\n * @param {string} [query] Текст поиска. По умолчанию берется\n * текст из инпута или результат `valueToString(value)`\n */\n public search(query?: string) {\n if (this.comboboxElement) {\n this.comboboxElement.search(query);\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.comboboxElement) {\n this.comboboxElement.cancelSearch();\n }\n }\n\n /**\n * @public Открывает выпадающий список\n */\n public open() {\n if (this.comboboxElement) {\n this.comboboxElement.open();\n }\n }\n\n /**\n * @public Закрывает выпадающий список\n */\n public close() {\n if (this.comboboxElement) {\n this.comboboxElement.close();\n }\n }\n\n /**\n * Выделяет текст внутри input\n * @public\n */\n public selectInputText() {\n if (this.comboboxElement) {\n this.comboboxElement.selectInputText();\n }\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n if (this.comboboxElement) {\n this.comboboxElement.reset();\n }\n }\n\n public render() {\n return <CustomComboBox {...this.props} ref={this.customComboBoxRef} />;\n }\n\n private customComboBoxRef = (element: Nullable<CustomComboBox<T>>) => {\n this.setRootNode(element);\n this.comboboxElement = element;\n };\n}\n"]}
@@ -37,7 +37,7 @@ export interface CurrencyInputState {
37
37
  * <br/>
38
38
  * Если `fractionDigits=15`, то в целой части допускается **0**.
39
39
  */
40
- export declare class CurrencyInput extends React.Component<CurrencyInputProps, CurrencyInputState> {
40
+ export declare class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {
41
41
  static __KONTUR_REACT_UI__: string;
42
42
  static propTypes: {
43
43
  align: PropTypes.Requireable<string>;
@@ -72,9 +72,9 @@ export declare class CurrencyInput extends React.Component<CurrencyInputProps, C
72
72
  state: CurrencyInputState;
73
73
  private input;
74
74
  private tempSelectionForOnChange;
75
+ private setRootNode;
75
76
  componentDidMount(): void;
76
- UNSAFE_componentWillReceiveProps(nextProps: CurrencyInputProps): void;
77
- componentDidUpdate(prevProps: Readonly<CurrencyInputProps>, prevState: Readonly<CurrencyInputState>): void;
77
+ componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState): void;
78
78
  render(): JSX.Element;
79
79
  renderMain: (props: CommonWrapperRestProps<CurrencyInputProps>) => JSX.Element;
80
80
  /**
@@ -7,12 +7,13 @@ var _client = require("../../lib/client");
7
7
  var _Input = require("../Input");
8
8
 
9
9
  var _CommonWrapper = require("../../internal/CommonWrapper");
10
+ var _rootNode = require("../../lib/rootNode");
10
11
 
11
12
  var _constants = require("./constants");
12
13
  var _SelectionHelper = require("./SelectionHelper");
13
14
  var _CurrencyHelper = require("./CurrencyHelper");
14
15
  var _CurrencyInputHelper = require("./CurrencyInputHelper");
15
- var _CurrencyInputKeyboardActions = require("./CurrencyInputKeyboardActions");
16
+ var _CurrencyInputKeyboardActions = require("./CurrencyInputKeyboardActions");var _class, _class2, _temp;
16
17
 
17
18
 
18
19
 
@@ -53,7 +54,8 @@ var _CurrencyInputKeyboardActions = require("./CurrencyInputKeyboardActions");
53
54
  * <br/>
54
55
  * Если `fractionDigits=15`, то в целой части допускается **0**.
55
56
  */var
56
- CurrencyInput = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(CurrencyInput, _React$Component);function CurrencyInput() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
57
+
58
+ CurrencyInput = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.default)(CurrencyInput, _React$PureComponent);function CurrencyInput() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;_this.
57
59
 
58
60
 
59
61
 
@@ -95,6 +97,7 @@ CurrencyInput = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.de
95
97
 
96
98
  input = void 0;_this.
97
99
  tempSelectionForOnChange = _SelectionHelper.SelectionHelper.fromPosition(0);_this.
100
+ setRootNode = void 0;_this.
98
101
 
99
102
 
100
103
 
@@ -436,8 +439,8 @@ CurrencyInput = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.de
436
439
 
437
440
  refInput = function (element) {
438
441
  _this.input = element;
439
- };return _this;}var _proto = CurrencyInput.prototype;_proto.componentDidMount = function componentDidMount() {var _this$props = this.props,maxLength = _this$props.maxLength,integerDigits = _this$props.integerDigits,fractionDigits = _this$props.fractionDigits;(0, _warning.default)(maxLength === undefined, "[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'");(0, _warning.default)((integerDigits || 0) + (fractionDigits || 0) <= _constants.MAX_SAFE_DIGITS, "[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds " + _constants.MAX_SAFE_DIGITS + "." + "\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15");};_proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {var value = nextProps.value,fractionDigits = nextProps.fractionDigits,hideTrailingZeros = nextProps.hideTrailingZeros;if (value !== _CurrencyHelper.CurrencyHelper.parse(this.state.formatted) || fractionDigits !== this.props.fractionDigits) {var state = this.getState(value, fractionDigits, hideTrailingZeros);this.setState(state);}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (this.state.focused && this.input) {var _this$state$selection = this.state.selection,start = _this$state$selection.start,end = _this$state$selection.end;this.input.setSelectionRange(start, end);}if (prevState.selection !== this.state.selection) {this.scrollInput();}};_proto.render = function render() {return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, this.renderMain);};_proto.getState = function getState(value, fractionDigits, hideTrailingZeros) {return { formatted: _CurrencyHelper.CurrencyHelper.format(value, { fractionDigits: fractionDigits, hideTrailingZeros: hideTrailingZeros }), selection: _SelectionHelper.SelectionHelper.fromPosition(0) };};_proto.setSelectionFromEvent = function setSelectionFromEvent(event) {var selection = getInputSelectionFromEvent(event.target);var normilized = _CurrencyInputHelper.CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);this.setState({ selection: normilized });} // for IE11
440
- ;return CurrencyInput;}(_react.default.Component);exports.CurrencyInput = CurrencyInput;CurrencyInput.__KONTUR_REACT_UI__ = 'CurrencyInput';CurrencyInput.propTypes = { align: _propTypes.default.oneOf(['left', 'center', 'right']), autoFocus: _propTypes.default.bool, borderless: _propTypes.default.bool, disabled: _propTypes.default.bool, error: _propTypes.default.bool, fractionDigits: _propTypes.default.number, hideTrailingZeros: _propTypes.default.bool, leftIcon: _propTypes.default.element, placeholder: _propTypes.default.string, signed: _propTypes.default.bool, size: _propTypes.default.oneOf(['small', 'medium', 'large']), value: _propTypes.default.number, warning: _propTypes.default.bool, width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), onBlur: _propTypes.default.func, onValueChange: _propTypes.default.func.isRequired, onFocus: _propTypes.default.func, onMouseEnter: _propTypes.default.func, onMouseLeave: _propTypes.default.func, onMouseOver: _propTypes.default.func, onSubmit: _propTypes.default.func };CurrencyInput.defaultProps = { align: 'right', fractionDigits: 2, hideTrailingZeros: false, value: null, inputMode: 'decimal' };
442
+ };return _this;}var _proto = CurrencyInput.prototype;_proto.componentDidMount = function componentDidMount() {var _this$props = this.props,maxLength = _this$props.maxLength,integerDigits = _this$props.integerDigits,fractionDigits = _this$props.fractionDigits;(0, _warning.default)(maxLength === undefined, "[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'");(0, _warning.default)((integerDigits || 0) + (fractionDigits || 0) <= _constants.MAX_SAFE_DIGITS, "[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds " + _constants.MAX_SAFE_DIGITS + "." + "\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15");};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var _this$props2 = this.props,value = _this$props2.value,fractionDigits = _this$props2.fractionDigits,hideTrailingZeros = _this$props2.hideTrailingZeros;if (value !== _CurrencyHelper.CurrencyHelper.parse(prevState.formatted) || prevProps.fractionDigits !== fractionDigits) {this.setState(this.getState(value, fractionDigits, hideTrailingZeros));}if (this.state.focused && this.input) {var _this$state$selection = this.state.selection,start = _this$state$selection.start,end = _this$state$selection.end;this.input.setSelectionRange(start, end);}if (prevState.selection !== this.state.selection) {this.scrollInput();}};_proto.render = function render() {return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), this.renderMain);};_proto.getState = function getState(value, fractionDigits, hideTrailingZeros) {return { formatted: _CurrencyHelper.CurrencyHelper.format(value, { fractionDigits: fractionDigits, hideTrailingZeros: hideTrailingZeros }), selection: _SelectionHelper.SelectionHelper.fromPosition(0) };};_proto.setSelectionFromEvent = function setSelectionFromEvent(event) {var selection = getInputSelectionFromEvent(event.target);var normilized = _CurrencyInputHelper.CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);this.setState({ selection: normilized });} // for IE11
443
+ ;return CurrencyInput;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'CurrencyInput', _class2.propTypes = { align: _propTypes.default.oneOf(['left', 'center', 'right']), autoFocus: _propTypes.default.bool, borderless: _propTypes.default.bool, disabled: _propTypes.default.bool, error: _propTypes.default.bool, fractionDigits: _propTypes.default.number, hideTrailingZeros: _propTypes.default.bool, leftIcon: _propTypes.default.element, placeholder: _propTypes.default.string, signed: _propTypes.default.bool, size: _propTypes.default.oneOf(['small', 'medium', 'large']), value: _propTypes.default.number, warning: _propTypes.default.bool, width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), onBlur: _propTypes.default.func, onValueChange: _propTypes.default.func.isRequired, onFocus: _propTypes.default.func, onMouseEnter: _propTypes.default.func, onMouseLeave: _propTypes.default.func, onMouseOver: _propTypes.default.func, onSubmit: _propTypes.default.func }, _class2.defaultProps = { align: 'right', fractionDigits: 2, hideTrailingZeros: false, value: null, inputMode: 'decimal' }, _temp)) || _class;exports.CurrencyInput = CurrencyInput;
441
444
 
442
445
  function getInputSelectionFromEvent(input) {
443
446
  if (!(input instanceof HTMLInputElement)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["CurrencyInput.tsx"],"names":["CurrencyInput","state","getState","props","value","fractionDigits","hideTrailingZeros","focused","input","tempSelectionForOnChange","SelectionHelper","fromPosition","renderMain","signed","onSubmit","integerDigits","rest","placeholder","CurrencyHelper","format","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","focus","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","isIE11","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","CURRENCY_INPUT_ACTIONS","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","CurrencyInputHelper","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLenght","onFocus","onBlur","element","componentDidMount","maxLength","undefined","MAX_SAFE_DIGITS","UNSAFE_componentWillReceiveProps","nextProps","componentDidUpdate","prevProps","prevState","setSelectionRange","render","normilized","normalizeSelection","React","Component","__KONTUR_REACT_UI__","propTypes","align","PropTypes","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","string","size","warning","width","oneOfType","func","isRequired","defaultProps","inputMode","HTMLInputElement","Error"],"mappings":"ucAAA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;AACaA,a;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCJC,IAAAA,K;AACF,UAAKC,QAAL,CAAc,MAAKC,KAAL,CAAWC,KAAzB,EAAgC,MAAKD,KAAL,CAAWE,cAA3C,EAA2D,MAAKF,KAAL,CAAWG,iBAAtE,C;AACHC,MAAAA,OAAO,EAAE,K;;;AAGHC,IAAAA,K;AACAC,IAAAA,wB,GAAsCC,iCAAgBC,YAAhB,CAA6B,CAA7B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCvCC,IAAAA,U,GAAa,UAACT,KAAD,EAAuD;AACjEE,MAAAA,cADiE,GACeF,KADf,CACjEE,cADiE,CACjDQ,MADiD,GACeV,KADf,CACjDU,MADiD,CACzCC,QADyC,GACeX,KADf,CACzCW,QADyC,CAC/BC,aAD+B,GACeZ,KADf,CAC/BY,aAD+B,CAChBT,iBADgB,GACeH,KADf,CAChBG,iBADgB,CACMU,IADN,+CACeb,KADf;AAEzE,UAAMc,WAAW;AACf,YAAKd,KAAL,CAAWc,WAAX,IAA0B,IAA1B;AACIC,qCAAeC,MAAf,CAAsB,CAAtB,EAAyB,EAAEd,cAAc,EAAdA,cAAF,EAAkBC,iBAAiB,EAAjBA,iBAAlB,EAAzB,CADJ;AAEI,YAAKH,KAAL,CAAWc,WAHjB;;AAKA;AACE,qCAAC,YAAD;AACMD,QAAAA,IADN;AAEE,UAAA,KAAK,EAAE,MAAKf,KAAL,CAAWmB,SAFpB;AAGE,UAAA,MAAM,EAAE,MAAKC,UAHf;AAIE,UAAA,OAAO,EAAE,MAAKC,WAJhB;AAKE,UAAA,SAAS,EAAE,MAAKC,aALlB;AAME,UAAA,SAAS,EAAE,MAAKC,aANlB;AAOE,UAAA,aAAa,EAAE,MAAKC,iBAPtB;AAQE,UAAA,OAAO,EAAE,MAAKC,WARhB;AASE,UAAA,MAAM,EAAE,MAAKC,UATf;AAUE,UAAA,KAAK,EAAE,MAAKC,SAVd;AAWE,UAAA,YAAY,EAAE,MAAKzB,KAAL,CAAW0B,YAX3B;AAYE,UAAA,YAAY,EAAE,MAAK1B,KAAL,CAAW2B,YAZ3B;AAaE,UAAA,WAAW,EAAE,MAAK3B,KAAL,CAAW4B,WAb1B;AAcE,UAAA,GAAG,EAAE,MAAKC,QAdZ;AAeE,UAAA,WAAW,EAAE,MAAK/B,KAAL,CAAWM,OAAX,GAAqB,EAArB,GAA0BU,WAfzC,IADF;;;AAmBD,K;;;;;AAKMgB,IAAAA,K,GAAQ,YAAM;AACnB,UAAI,MAAKzB,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAWyB,KAAX;AACD;AACF,K;;;;;AAKMC,IAAAA,I,GAAO,YAAM;AAClB,UAAI,MAAK1B,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAW0B,IAAX;AACD;AACF,K;;;;;;;;;;;;;;;;AAgBgBC,IAAAA,8B,GAAiC,qBAAS,MAAKC,qBAAd,EAAqC,GAArC,C;;AAE1Cb,IAAAA,a,GAAgB,UAACc,KAAD,EAA+C;AACrE,UAAIC,cAAJ,EAAY;AACVD,QAAAA,KAAK,CAACE,OAAN;AACA,cAAKJ,8BAAL,CAAoCE,KAApC;AACD,OAHD,MAGO;AACL,cAAKD,qBAAL,CAA2BC,KAA3B;AACD;AACF,K;;AAEOb,IAAAA,a,GAAgB,UAACa,KAAD,EAAkD;AACxE,UAAMG,SAAS,GAAG,MAAKC,YAAL,CAAkBJ,KAAK,CAACK,MAAxB,CAAlB;AACA,YAAKjC,wBAAL,GAAgC+B,SAAhC;;AAEA,UAAI,MAAKrC,KAAL,CAAWwC,SAAf,EAA0B;AACxB,cAAKxC,KAAL,CAAWwC,SAAX,CAAqBN,KAArB;AACA,YAAIA,KAAK,CAACO,gBAAV,EAA4B;AAC1B;AACD;AACF;;AAED,UAAMC,MAAM,GAAG,iDAAcR,KAAd,CAAf;;AAEA,UAAIQ,MAAM,KAAKC,qDAAuBC,MAAtC,EAA8C;AAC5C;AACD;;AAED,UAAIF,MAAM,KAAKC,qDAAuBE,OAAtC,EAA+C;AAC7CX,QAAAA,KAAK,CAACY,cAAN;AACD;;AAED,cAAQJ,MAAR;AACE,aAAKC,qDAAuBI,MAA5B,CAAoC;AAClC,gBAAI,MAAK/C,KAAL,CAAWW,QAAf,EAAyB;AACvB,oBAAKX,KAAL,CAAWW,QAAX;AACD;AACD;AACD;AACD,aAAKgC,qDAAuBK,SAA5B,CAAuC;AACrC,kBAAKC,UAAL,CAAgBC,yCAAoBC,UAApB,CAA+B,MAAKrD,KAAL,CAAWmB,SAA1C,EAAqDoB,SAArD,EAAgE,CAAC,CAAjE,CAAhB,EAAqFA,SAAS,CAACe,GAA/F,EAAoG,EAApG;AACA;AACD;AACD,aAAKT,qDAAuBU,MAA5B,CAAoC;AAClC,kBAAKJ,UAAL,CAAgBZ,SAAS,CAACiB,KAA1B,EAAiCJ,yCAAoBC,UAApB,CAA+B,MAAKrD,KAAL,CAAWmB,SAA1C,EAAqDoB,SAArD,EAAgE,CAAC,CAAjE,CAAjC,EAAsG,EAAtG;AACA;AACD;AACD,aAAKM,qDAAuBY,cAA5B,CAA4C;AAC1C,kBAAKJ,UAAL,CAAgBd,SAAhB,EAA2B,CAAC,CAA5B;AACA;AACD;AACD,aAAKM,qDAAuBa,eAA5B,CAA6C;AAC3C,kBAAKL,UAAL,CAAgBd,SAAhB,EAA2B,CAAC,CAA5B;AACA;AACD;AACD,aAAKM,qDAAuBc,IAA5B,CAAkC;AAChC,kBAAKC,QAAL,CAAc,EAAErB,SAAS,EAAE9B,iCAAgBC,YAAhB,CAA6B,CAA7B,CAAb,EAAd;AACA;AACD;AACD,aAAKmC,qDAAuBgB,GAA5B,CAAiC;AAC/B,gBAAMP,GAAG,GAAG,MAAKtD,KAAL,CAAWmB,SAAX,CAAqB2C,MAAjC;AACA,kBAAKF,QAAL,CAAc,EAAErB,SAAS,EAAE9B,iCAAgBC,YAAhB,CAA6B4C,GAA7B,CAAb,EAAd;AACA;AACD;AACD,aAAKT,qDAAuBkB,mBAA5B,CAAiD;AAC/C,kBAAKC,eAAL,CAAqBzB,SAArB,EAAgC,CAAC,CAAjC;AACA;AACD;AACD,aAAKM,qDAAuBoB,oBAA5B,CAAkD;AAChD,kBAAKD,eAAL,CAAqBzB,SAArB,EAAgC,CAAC,CAAjC;AACA;AACD;AACD,aAAKM,qDAAuBqB,aAA5B,CAA2C;AACzC,kBAAKN,QAAL,CAAc;AACZrB,cAAAA,SAAS,EAAE9B,iCAAgB0D,OAAhB,CAAwB,CAAxB,EAA2B,MAAKnE,KAAL,CAAWmB,SAAX,CAAqB2C,MAAhD,CADC,EAAd;;AAGA;AACD;AACD,aAAKjB,qDAAuBuB,sBAA5B,CAAoD;AAClD,kBAAKR,QAAL,CAAc;AACZrB,cAAAA,SAAS,EAAE9B,iCAAgB4D,QAAhB,CAAyB,CAAzB,EAA4B9B,SAAS,CAACiB,KAAtC,CADC,EAAd;;AAGA;AACD;AACD,aAAKX,qDAAuByB,oBAA5B,CAAkD;AAChD,gBAAMC,QAAQ,GAAG,MAAKvE,KAAL,CAAWmB,SAAX,CAAqB2C,MAAtC;AACA,kBAAKF,QAAL,CAAc;AACZrB,cAAAA,SAAS,EAAE9B,iCAAgB0D,OAAhB,CAAwB5B,SAAS,CAACiB,KAAlC,EAAyCe,QAAzC,CADC,EAAd;;AAGA;AACD,WA1DH;;AA4DD,K;;AAEOC,IAAAA,W,GAAc,YAAM;AAC1B,UAAMC,IAAI,kBAAG,MAAKlE,KAAR,qBAAG,YAAYmE,OAAZ,EAAb;AACA,UAAI,CAACD,IAAD,IAASA,IAAI,CAACE,WAAL,KAAqBF,IAAI,CAACG,WAAvC,EAAoD;AAClD;AACD;AACD,UAAMC,GAAG,GAAG,CAAZ;AACA,UAAMC,KAAK,GAAG,CAAd;;AAEA,UAAMvC,SAAS,GAAG,MAAKvC,KAAL,CAAWuC,SAA7B;AACA,UAAMwC,QAAQ,GAAGxC,SAAS,CAACiB,KAAV,KAAoBjB,SAAS,CAACe,GAA/C;AACA,UAAM0B,QAAQ,GAAGD,QAAQ,IAAIxC,SAAS,CAAC0C,SAAV,KAAwB,SAApC,GAAgD1C,SAAS,CAACe,GAA1D,GAAgEf,SAAS,CAACiB,KAA3F;AACA,UAAM0B,UAAU,GAAG,MAAKlF,KAAL,CAAWmB,SAAX,CAAqB2C,MAAxC;AACA,UAAMqB,SAAS,GAAGV,IAAI,CAACE,WAAL,GAAmBO,UAArC;AACA,UAAME,KAAK,GAAGC,IAAI,CAACC,IAAL,CAAUb,IAAI,CAACG,WAAL,GAAmBO,SAA7B,CAAd;AACA,UAAMI,UAAU,GAAGF,IAAI,CAACC,IAAL,CAAUb,IAAI,CAACe,UAAL,GAAkBL,SAA5B,CAAnB;AACA,UAAMM,QAAQ,GAAGF,UAAU,GAAGH,KAA9B;;AAEA,UAAIJ,QAAQ,GAAGO,UAAU,GAAGV,GAA5B,EAAiC;AAC/BJ,QAAAA,IAAI,CAACe,UAAL,GAAkB,CAACR,QAAQ,GAAGF,KAAZ,IAAqBK,SAAvC;AACD;AACD,UAAIH,QAAQ,GAAGS,QAAQ,GAAGZ,GAA1B,EAA+B;AAC7BJ,QAAAA,IAAI,CAACe,UAAL,GAAkB,CAACR,QAAQ,GAAGI,KAAX,GAAmBN,KAApB,IAA6BK,SAA/C;AACD;AACF,K;;AAEO3C,IAAAA,Y,GAAe,UAACjC,KAAD,EAAmC;AACxD,UAAMgC,SAAS,GAAGmD,0BAA0B,CAACnF,KAAD,CAA5C;AACA,aAAO;AACLiD,QAAAA,KAAK,EAAEjB,SAAS,CAACiB,KADZ;AAELF,QAAAA,GAAG,EAAEf,SAAS,CAACe,GAFV;AAGL2B,QAAAA,SAAS,EAAE,MAAKjF,KAAL,CAAWuC,SAAX,CAAqB0C,SAH3B,EAAP;;AAKD,K;;AAEO5B,IAAAA,U,GAAa,UAACd,SAAD,EAAuBoD,IAAvB,EAAwC;AAC3D,UAAMX,QAAQ,GAAG5B,yCAAoBC,UAApB,CAA+B,MAAKrD,KAAL,CAAWmB,SAA1C,EAAqDoB,SAArD,EAAgEoD,IAAhE,CAAjB;AACA,YAAK/B,QAAL,CAAc,EAAErB,SAAS,EAAE9B,iCAAgBC,YAAhB,CAA6BsE,QAA7B,CAAb,EAAd;AACD,K;;AAEOhB,IAAAA,e,GAAkB,UAACzB,SAAD,EAAuBoD,IAAvB,EAAwC;AAChE,UAAMC,QAAQ,GAAGxC,yCAAoBY,eAApB,CAAoC,MAAKhE,KAAL,CAAWmB,SAA/C,EAA0DoB,SAA1D,EAAqEoD,IAArE,CAAjB;AACA,YAAK/B,QAAL,CAAc,EAAErB,SAAS,EAAEqD,QAAb,EAAd;AACD,K;;AAEOzC,IAAAA,U,GAAa,UAACK,KAAD,EAAgBF,GAAhB,EAA6BnD,KAA7B,EAA+C;AAClE,UAAM0F,MAAM,GAAGzC,yCAAoB0C,UAApB,CAA+B,MAAK9F,KAAL,CAAWmB,SAA1C,EAAqDqC,KAArD,EAA4DF,GAA5D,EAAiEnD,KAAjE,EAAwE;AACrFW,QAAAA,aAAa,EAAE,MAAKZ,KAAL,CAAWY,aAD2D;AAErFV,QAAAA,cAAc,EAAE,MAAKF,KAAL,CAAWE,cAF0D;AAGrF2F,QAAAA,QAAQ,EAAE,CAAC,MAAK7F,KAAL,CAAWU,MAH+D,EAAxE,CAAf;;AAKA,UAAIiF,MAAJ,EAAY;AACV,YAAM1E,SAAS,GAAG0E,MAAM,CAAC1F,KAAzB;AACA,YAAMoC,SAAS,GAAG9B,iCAAgBC,YAAhB,CAA6BmF,MAAM,CAACb,QAApC,CAAlB;AACA,cAAKpB,QAAL,CAAc,EAAEzC,SAAS,EAATA,SAAF,EAAaoB,SAAS,EAATA,SAAb,EAAd,EAAwC,YAAM;AAC5C,cAAMyD,WAAW,GAAG/E,+BAAegF,KAAf,CAAqB9E,SAArB,CAApB;AACA,cAAI,MAAKjB,KAAL,CAAWC,KAAX,KAAqB6F,WAAzB,EAAsC;AACpC,kBAAK9F,KAAL,CAAWgG,aAAX,CAAyBF,WAAzB;AACD;AACF,SALD;AAMA,eAAO,IAAP;AACD;;AAED,UAAI,MAAKzF,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAW4F,KAAX;AACD;AACD,aAAO,KAAP;AACD,K;;AAEOC,IAAAA,gB,GAAmB,UAACjG,KAAD,EAAmB;AAC5C,UAAMoC,SAAS,GAAG,MAAK/B,wBAAvB;AACA,UAAM6F,QAAQ,GAAG,MAAKrG,KAAL,CAAWmB,SAA5B;AACA,UAAIoB,SAAS,CAACiB,KAAV,KAAoBjB,SAAS,CAACe,GAAlC,EAAuC;AACrC,eAAOnD,KAAK,CAACmG,SAAN,CAAgB/D,SAAS,CAACiB,KAA1B,EAAiCrD,KAAK,CAAC2D,MAAN,IAAgBuC,QAAQ,CAACvC,MAAT,GAAkBvB,SAAS,CAACe,GAA5C,CAAjC,CAAP;AACD,OAFD,MAEO,IAAInD,KAAK,CAAC2D,MAAN,GAAeuC,QAAQ,CAACvC,MAA5B,EAAoC;AACzC,eAAO3D,KAAK,CAACoG,MAAN,CAAahE,SAAS,CAACiB,KAAvB,EAA8BrD,KAAK,CAAC2D,MAAN,GAAeuC,QAAQ,CAACvC,MAAtD,CAAP;AACD;AACD,aAAO,IAAP;AACD,K;;AAEOtC,IAAAA,iB,GAAoB,UAACrB,KAAD,EAAyB;AACnD,UAAMoC,SAAS,GAAG,MAAK/B,wBAAvB;AACA,UAAMgG,KAAK,GAAG,MAAKJ,gBAAL,CAAsBjG,KAAtB,CAAd;AACA,UAAIqG,KAAK,IAAI,IAAT,IAAiB,CAAC,MAAKrD,UAAL,CAAgBZ,SAAS,CAACiB,KAA1B,EAAiCjB,SAAS,CAACe,GAA3C,EAAgDkD,KAAhD,CAAtB,EAA8E;AAC5E,cAAK5C,QAAL,CAAc,EAAErB,SAAS,EAATA,SAAF,EAAd;AACD;AACF,K;;AAEOd,IAAAA,W,GAAc,UAACW,KAAD,EAAmD;AACvE,UAAMqE,IAAI,GAAGrE,KAAK,CAACsE,aAAN,CAAoBC,OAApB,CAA4B,MAA5B,CAAb;AACA,UAAMpE,SAAS,GAAG,MAAKC,YAAL,CAAkBJ,KAAK,CAACK,MAAxB,CAAlB;AACA,YAAKU,UAAL,CAAgBZ,SAAS,CAACiB,KAA1B,EAAiCjB,SAAS,CAACe,GAA3C,EAAgDmD,IAAhD;AACArE,MAAAA,KAAK,CAACY,cAAN;AACD,K;;AAEOtB,IAAAA,U,GAAa,UAACU,KAAD,EAAmD;AACtE,UAAMG,SAAS,GAAG,MAAKC,YAAL,CAAkBJ,KAAK,CAACK,MAAxB,CAAlB;AACA,UAAIF,SAAS,CAACiB,KAAV,KAAoBjB,SAAS,CAACe,GAAlC,EAAuC;AACrC,YAAMgD,SAAS,GAAG,MAAKtG,KAAL,CAAWmB,SAAX,CAAqBmF,SAArB,CAA+B/D,SAAS,CAACiB,KAAzC,EAAgDjB,SAAS,CAACe,GAA1D,CAAlB;AACA,YAAMmD,IAAI,GAAGxF,+BAAe2F,kBAAf,CAAkCN,SAAlC,CAAb;AACAlE,QAAAA,KAAK,CAACsE,aAAN,CAAoBG,OAApB,CAA4B,MAA5B,EAAoCJ,IAApC;AACD;AACDrE,MAAAA,KAAK,CAACY,cAAN;AACD,K;;AAEOrB,IAAAA,S,GAAY,UAACS,KAAD,EAAmD;AACrE,UAAMG,SAAS,GAAG,MAAKC,YAAL,CAAkBJ,KAAK,CAACK,MAAxB,CAAlB;AACA,UAAIF,SAAS,CAACiB,KAAV,KAAoBjB,SAAS,CAACe,GAAlC,EAAuC;AACrC,YAAMgD,SAAS,GAAG,MAAKtG,KAAL,CAAWmB,SAAX,CAAqBmF,SAArB,CAA+B/D,SAAS,CAACiB,KAAzC,EAAgDjB,SAAS,CAACe,GAA1D,CAAlB;AACA,YAAMmD,IAAI,GAAGxF,+BAAe2F,kBAAf,CAAkCN,SAAlC,CAAb;AACAlE,QAAAA,KAAK,CAACsE,aAAN,CAAoBG,OAApB,CAA4B,MAA5B,EAAoCJ,IAApC;AACA,cAAKtD,UAAL,CAAgBZ,SAAS,CAACiB,KAA1B,EAAiCjB,SAAS,CAACe,GAA3C,EAAgD,EAAhD;AACD;AACDlB,MAAAA,KAAK,CAACY,cAAN;AACD,K;;AAEO3B,IAAAA,W,GAAc,UAACe,KAAD,EAA+C;AACNA,MAAAA,KAAK,CAACK,MADA,CAC3DqE,cAD2D,iBAC3DA,cAD2D,CAC3CC,YAD2C,iBAC3CA,YAD2C,CAC7BC,kBAD6B,iBAC7BA,kBAD6B;AAEnE,UAAMC,WAAW,GAAG7E,KAAK,CAACK,MAAN,CAAatC,KAAb,CAAmB2D,MAAvC;;AAEA,UAAMvB,SAAS,GAAG;AAChBiB,QAAAA,KAAK,EAAEsD,cAAc,KAAKC,YAAnB,GAAkCD,cAAc,IAAI,CAApD,GAAwDA,cAAc,IAAIG,WADjE;AAEhB3D,QAAAA,GAAG,EAAEyD,YAAY,KAAKD,cAAjB,GAAkCC,YAAY,IAAI,CAAlD,GAAsDA,YAAY,IAAIE,WAF3D;AAGhBhC,QAAAA,SAAS,EAAG+B,kBAAD,IAA8C,MAHzC,EAAlB;;;AAMA,YAAKpD,QAAL,CAAc;AACZtD,QAAAA,OAAO,EAAE,IADG;AAEZiC,QAAAA,SAAS,EAATA,SAFY,EAAd;;;AAKA,UAAI,MAAKrC,KAAL,CAAWgH,OAAf,EAAwB;AACtB,cAAKhH,KAAL,CAAWgH,OAAX,CAAmB9E,KAAnB;AACD;AACF,K;;AAEOhB,IAAAA,U,GAAa,UAACgB,KAAD,EAA+C;AAClE,UAAMjC,KAAK,GAAGc,+BAAegF,KAAf,CAAqB,MAAKjG,KAAL,CAAWmB,SAAhC,CAAd;;AAEA,YAAKyC,QAAL;AACK,YAAK3D,QAAL,CAAcE,KAAd,EAAqB,MAAKD,KAAL,CAAWE,cAAhC,EAAgD,MAAKF,KAAL,CAAWG,iBAA3D,CADL;AAEEC,QAAAA,OAAO,EAAE,KAFX;;;AAKA,UAAI,MAAKJ,KAAL,CAAWiH,MAAf,EAAuB;AACrB,cAAKjH,KAAL,CAAWiH,MAAX,CAAkB/E,KAAlB;AACD;AACF,K;;AAEOL,IAAAA,Q,GAAW,UAACqF,OAAD,EAA8B;AAC/C,YAAK7G,KAAL,GAAa6G,OAAb;AACD,K,2DApVMC,iB,GAAP,6BAAiC,mBACsB,KAAKnH,KAD3B,CACvBoH,SADuB,eACvBA,SADuB,CACZxG,aADY,eACZA,aADY,CACGV,cADH,eACGA,cADH,CAE/B,sBACEkH,SAAS,KAAKC,SADhB,qGAIA,sBACE,CAACzG,aAAa,IAAI,CAAlB,KAAwBV,cAAc,IAAI,CAA1C,KAAgDoH,0BADlD,EAEE,0EAAwEA,0BAAxE,4EAFF,EAKD,C,QAEMC,gC,GAAP,0CAAwCC,SAAxC,EAAuE,KAC7DvH,KAD6D,GAChBuH,SADgB,CAC7DvH,KAD6D,CACtDC,cADsD,GAChBsH,SADgB,CACtDtH,cADsD,CACtCC,iBADsC,GAChBqH,SADgB,CACtCrH,iBADsC,CAErE,IAAIF,KAAK,KAAKc,+BAAegF,KAAf,CAAqB,KAAKjG,KAAL,CAAWmB,SAAhC,CAAV,IAAwDf,cAAc,KAAK,KAAKF,KAAL,CAAWE,cAA1F,EAA0G,CACxG,IAAMJ,KAAK,GAAG,KAAKC,QAAL,CAAcE,KAAd,EAAqBC,cAArB,EAAqCC,iBAArC,CAAd,CACA,KAAKuD,QAAL,CAAc5D,KAAd,EACD,CACF,C,QAEM2H,kB,GAAP,4BAA0BC,SAA1B,EAAmEC,SAAnE,EAA4G,CAC1G,IAAI,KAAK7H,KAAL,CAAWM,OAAX,IAAsB,KAAKC,KAA/B,EAAsC,6BACb,KAAKP,KAAL,CAAWuC,SADE,CAC5BiB,KAD4B,yBAC5BA,KAD4B,CACrBF,GADqB,yBACrBA,GADqB,CAGpC,KAAK/C,KAAL,CAAWuH,iBAAX,CAA6BtE,KAA7B,EAAoCF,GAApC,EACD,CACD,IAAIuE,SAAS,CAACtF,SAAV,KAAwB,KAAKvC,KAAL,CAAWuC,SAAvC,EAAkD,CAChD,KAAKiC,WAAL,GACD,CACF,C,QAEMuD,M,GAAP,kBAAgB,CACd,oBAAO,6BAAC,4BAAD,EAAmB,KAAK7H,KAAxB,EAAgC,KAAKS,UAArC,CAAP,CACD,C,QAgDOV,Q,GAAR,kBAAiBE,KAAjB,EAA0CC,cAA1C,EAA4EC,iBAA5E,EAAwG,CACtG,OAAO,EACLc,SAAS,EAAEF,+BAAeC,MAAf,CAAsBf,KAAtB,EAA6B,EAAEC,cAAc,EAAdA,cAAF,EAAkBC,iBAAiB,EAAjBA,iBAAlB,EAA7B,CADN,EAELkC,SAAS,EAAE9B,iCAAgBC,YAAhB,CAA6B,CAA7B,CAFN,EAAP,CAID,C,QAEOyB,qB,GAAR,+BAA8BC,KAA9B,EAAyE,CACvE,IAAMG,SAAS,GAAGmD,0BAA0B,CAACtD,KAAK,CAACK,MAAP,CAA5C,CACA,IAAMuF,UAAU,GAAG5E,yCAAoB6E,kBAApB,CAAuC,KAAKjI,KAAL,CAAWmB,SAAlD,EAA6DoB,SAA7D,CAAnB,CACA,KAAKqB,QAAL,CAAc,EAAErB,SAAS,EAAEyF,UAAb,EAAd,EACD,C,CAED;0BA1IiCE,eAAMC,S,wCAA5BpI,a,CACGqI,mB,GAAsB,e,CADzBrI,a,CAGGsI,S,GAAY,EACxBC,KAAK,EAAEC,mBAAUC,KAAV,CAAgB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAhB,CADiB,EAExBC,SAAS,EAAEF,mBAAUG,IAFG,EAGxBC,UAAU,EAAEJ,mBAAUG,IAHE,EAIxBE,QAAQ,EAAEL,mBAAUG,IAJI,EAKxBG,KAAK,EAAEN,mBAAUG,IALO,EAMxBtI,cAAc,EAAEmI,mBAAUO,MANF,EAOxBzI,iBAAiB,EAAEkI,mBAAUG,IAPL,EAQxBK,QAAQ,EAAER,mBAAUnB,OARI,EASxBpG,WAAW,EAAEuH,mBAAUS,MATC,EAUxBpI,MAAM,EAAE2H,mBAAUG,IAVM,EAWxBO,IAAI,EAAEV,mBAAUC,KAAV,CAAgB,CAAC,OAAD,EAAU,QAAV,EAAoB,OAApB,CAAhB,CAXkB,EAYxBrI,KAAK,EAAEoI,mBAAUO,MAZO,EAaxBI,OAAO,EAAEX,mBAAUG,IAbK,EAcxBS,KAAK,EAAEZ,mBAAUa,SAAV,CAAoB,CAACb,mBAAUO,MAAX,EAAmBP,mBAAUS,MAA7B,CAApB,CAdiB,EAexB7B,MAAM,EAAEoB,mBAAUc,IAfM,EAgBxBnD,aAAa,EAAEqC,mBAAUc,IAAV,CAAeC,UAhBN,EAiBxBpC,OAAO,EAAEqB,mBAAUc,IAjBK,EAkBxBzH,YAAY,EAAE2G,mBAAUc,IAlBA,EAmBxBxH,YAAY,EAAE0G,mBAAUc,IAnBA,EAoBxBvH,WAAW,EAAEyG,mBAAUc,IApBC,EAqBxBxI,QAAQ,EAAE0H,mBAAUc,IArBI,E,CAHftJ,a,CA2BGwJ,Y,GAAe,EAC3BjB,KAAK,EAAE,OADoB,EAE3BlI,cAAc,EAAE,CAFW,EAG3BC,iBAAiB,EAAE,KAHQ,EAI3BF,KAAK,EAAE,IAJoB,EAK3BqJ,SAAS,EAAE,SALgB,E;;AAuW/B,SAAS9D,0BAAT,CAAoCnF,KAApC,EAAmE;AACjE,MAAI,EAAEA,KAAK,YAAYkJ,gBAAnB,CAAJ,EAA0C;AACxC,UAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD;;AAED,SAAO;AACLlG,IAAAA,KAAK,EAAEjD,KAAK,CAACuG,cADR;AAELxD,IAAAA,GAAG,EAAE/C,KAAK,CAACwG,YAFN;AAGL9B,IAAAA,SAAS,EAAE1E,KAAK,CAACyG,kBAHZ,EAAP;;AAKD","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros: boolean;\n /** Кол-во цифр после зяпятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\nexport class CurrencyInput extends React.Component<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: PropTypes.number,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n public state: CurrencyInputState = {\n ...this.getState(this.props.value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n\n public componentDidMount(): void {\n const { maxLength, integerDigits, fractionDigits } = this.props;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: CurrencyInputProps) {\n const { value, fractionDigits, hideTrailingZeros } = nextProps;\n if (value !== CurrencyHelper.parse(this.state.formatted) || fractionDigits !== this.props.fractionDigits) {\n const state = this.getState(value, fractionDigits, hideTrailingZeros);\n this.setState(state);\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<CurrencyInputProps>, prevState: Readonly<CurrencyInputState>) {\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n const placeholder =\n this.props.placeholder == null\n ? CurrencyHelper.format(0, { fractionDigits, hideTrailingZeros })\n : this.props.placeholder;\n\n return (\n <Input\n {...rest}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : placeholder}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.props.fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (delta != null && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLenght = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLenght,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLenght,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n"]}
1
+ {"version":3,"sources":["CurrencyInput.tsx"],"names":["CurrencyInput","rootNode","state","getState","props","value","fractionDigits","hideTrailingZeros","focused","input","tempSelectionForOnChange","SelectionHelper","fromPosition","setRootNode","renderMain","signed","onSubmit","integerDigits","rest","placeholder","CurrencyHelper","format","formatted","handleBlur","handleFocus","handleMouseUp","handleKeyDown","handleValueChange","handlePaste","handleCopy","handleCut","onMouseEnter","onMouseLeave","onMouseOver","refInput","focus","blur","debouncedSetSelectionFromEvent","setSelectionFromEvent","event","isIE11","persist","selection","getSelection","target","onKeyDown","defaultPrevented","action","CURRENCY_INPUT_ACTIONS","Ignore","Unknown","preventDefault","Submit","Backspace","inputValue","CurrencyInputHelper","moveCursor","end","Delete","start","MoveCursorLeft","MoveCursorRight","Home","setState","End","length","ExtendSelectionLeft","extendSelection","ExtendSelectionRight","FullSelection","forward","ExtendSelectionToStart","backward","ExtendSelectionToEnd","inputEnd","scrollInput","node","getNode","scrollWidth","clientWidth","PAD","SHIFT","selected","position","direction","charsCount","charWidth","frame","Math","ceil","frameStart","scrollLeft","frameEnd","getInputSelectionFromEvent","step","extended","result","safeInsert","unsigned","parsedValue","parse","onValueChange","blink","getOnChangeDelta","oldValue","substring","substr","delta","data","clipboardData","getData","formatForClipboard","setData","selectionStart","selectionEnd","selectionDirection","valueLenght","onFocus","onBlur","element","componentDidMount","maxLength","undefined","MAX_SAFE_DIGITS","componentDidUpdate","prevProps","prevState","setSelectionRange","render","normilized","normalizeSelection","React","PureComponent","__KONTUR_REACT_UI__","propTypes","align","PropTypes","oneOf","autoFocus","bool","borderless","disabled","error","number","leftIcon","string","size","warning","width","oneOfType","func","isRequired","defaultProps","inputMode","HTMLInputElement","Error"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport debounce from 'lodash.debounce';\n\nimport { isIE11 } from '../../lib/client';\nimport { Input, InputProps } from '../Input';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { TSetRootNode, rootNode } from '../../lib/rootNode';\n\nimport { MAX_SAFE_DIGITS } from './constants';\nimport { Selection, SelectionDirection, SelectionHelper } from './SelectionHelper';\nimport { CurrencyHelper } from './CurrencyHelper';\nimport { CurrencyInputHelper } from './CurrencyInputHelper';\nimport { CURRENCY_INPUT_ACTIONS, extractAction } from './CurrencyInputKeyboardActions';\n\nexport interface CurrencyInputProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Значение */\n value: Nullable<number>;\n /** Убрать лишние нули после запятой */\n hideTrailingZeros: boolean;\n /** Кол-во цифр после зяпятой */\n fractionDigits?: Nullable<number>;\n /** Отрицательные значения */\n signed?: boolean;\n /**\n * Допустимое кол-во цифр целой части.\n * Если передан **0**, или `fractionDigits=15`, то и в целой части допускается только **0**.\n */\n integerDigits?: Nullable<number>;\n /** Вызывается при изменении `value` */\n onValueChange: (value: Nullable<number>) => void;\n /** onSubmit */\n onSubmit?: () => void;\n }\n > {}\n\nexport interface CurrencyInputState {\n formatted: string;\n selection: Selection;\n focused: boolean;\n}\n\n/**\n * Поле для денежных сумм (и других числовых значений).\n * Принимает любые свойства `Input`.\n *\n * Максимальная длина числа - **15 цифр** (с десятичным разделителем в любом месте).\n * <br/>\n * Если `fractionDigits=15`, то в целой части допускается **0**.\n */\n@rootNode\nexport class CurrencyInput extends React.PureComponent<CurrencyInputProps, CurrencyInputState> {\n public static __KONTUR_REACT_UI__ = 'CurrencyInput';\n\n public static propTypes = {\n align: PropTypes.oneOf(['left', 'center', 'right']),\n autoFocus: PropTypes.bool,\n borderless: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n fractionDigits: PropTypes.number,\n hideTrailingZeros: PropTypes.bool,\n leftIcon: PropTypes.element,\n placeholder: PropTypes.string,\n signed: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n value: PropTypes.number,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onValueChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onSubmit: PropTypes.func,\n };\n\n public static defaultProps = {\n align: 'right',\n fractionDigits: 2,\n hideTrailingZeros: false,\n value: null,\n inputMode: 'decimal',\n };\n\n public state: CurrencyInputState = {\n ...this.getState(this.props.value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n };\n\n private input: Nullable<Input>;\n private tempSelectionForOnChange: Selection = SelectionHelper.fromPosition(0);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount(): void {\n const { maxLength, integerDigits, fractionDigits } = this.props;\n warning(\n maxLength === undefined,\n `[CurrencyInput]: Prop 'maxLength' has been deprecated. See 'integerDigits' and 'fractionDigits'`,\n );\n warning(\n (integerDigits || 0) + (fractionDigits || 0) <= MAX_SAFE_DIGITS,\n `[CurrencyInput]: Sum of 'integerDigits' and 'fractionDigits' exceeds ${MAX_SAFE_DIGITS}.` +\n `\\nSee https://tech.skbkontur.ru/react-ui/#/CurrencyInput?id=why15`,\n );\n }\n\n public componentDidUpdate(prevProps: CurrencyInputProps, prevState: CurrencyInputState) {\n const { value, fractionDigits, hideTrailingZeros } = this.props;\n if (value !== CurrencyHelper.parse(prevState.formatted) || prevProps.fractionDigits !== fractionDigits) {\n this.setState(this.getState(value, fractionDigits, hideTrailingZeros));\n }\n if (this.state.focused && this.input) {\n const { start, end } = this.state.selection;\n\n this.input.setSelectionRange(start, end);\n }\n if (prevState.selection !== this.state.selection) {\n this.scrollInput();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<CurrencyInputProps>) => {\n const { fractionDigits, signed, onSubmit, integerDigits, hideTrailingZeros, ...rest } = props;\n const placeholder =\n this.props.placeholder == null\n ? CurrencyHelper.format(0, { fractionDigits, hideTrailingZeros })\n : this.props.placeholder;\n\n return (\n <Input\n {...rest}\n value={this.state.formatted}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onMouseUp={this.handleMouseUp}\n onKeyDown={this.handleKeyDown}\n onValueChange={this.handleValueChange}\n onPaste={this.handlePaste}\n onCopy={this.handleCopy}\n onCut={this.handleCut}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n ref={this.refInput}\n placeholder={this.state.focused ? '' : placeholder}\n />\n );\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.input) {\n this.input.focus();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.input) {\n this.input.blur();\n }\n };\n\n private getState(value: Nullable<number>, fractionDigits: Nullable<number>, hideTrailingZeros: boolean) {\n return {\n formatted: CurrencyHelper.format(value, { fractionDigits, hideTrailingZeros }),\n selection: SelectionHelper.fromPosition(0),\n };\n }\n\n private setSelectionFromEvent(event: React.MouseEvent<HTMLInputElement>) {\n const selection = getInputSelectionFromEvent(event.target);\n const normilized = CurrencyInputHelper.normalizeSelection(this.state.formatted, selection);\n this.setState({ selection: normilized });\n }\n\n // for IE11\n private readonly debouncedSetSelectionFromEvent = debounce(this.setSelectionFromEvent, 300);\n\n private handleMouseUp = (event: React.MouseEvent<HTMLInputElement>) => {\n if (isIE11) {\n event.persist();\n this.debouncedSetSelectionFromEvent(event);\n } else {\n this.setSelectionFromEvent(event);\n }\n };\n\n private handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n this.tempSelectionForOnChange = selection;\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n const action = extractAction(event);\n\n if (action === CURRENCY_INPUT_ACTIONS.Ignore) {\n return;\n }\n\n if (action !== CURRENCY_INPUT_ACTIONS.Unknown) {\n event.preventDefault();\n }\n\n switch (action) {\n case CURRENCY_INPUT_ACTIONS.Submit: {\n if (this.props.onSubmit) {\n this.props.onSubmit();\n }\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Backspace: {\n this.inputValue(CurrencyInputHelper.moveCursor(this.state.formatted, selection, -1), selection.end, '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Delete: {\n this.inputValue(selection.start, CurrencyInputHelper.moveCursor(this.state.formatted, selection, +1), '');\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorLeft: {\n this.moveCursor(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.MoveCursorRight: {\n this.moveCursor(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.Home: {\n this.setState({ selection: SelectionHelper.fromPosition(0) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.End: {\n const end = this.state.formatted.length;\n this.setState({ selection: SelectionHelper.fromPosition(end) });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionLeft: {\n this.extendSelection(selection, -1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionRight: {\n this.extendSelection(selection, +1);\n return;\n }\n case CURRENCY_INPUT_ACTIONS.FullSelection: {\n this.setState({\n selection: SelectionHelper.forward(0, this.state.formatted.length),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToStart: {\n this.setState({\n selection: SelectionHelper.backward(0, selection.start),\n });\n return;\n }\n case CURRENCY_INPUT_ACTIONS.ExtendSelectionToEnd: {\n const inputEnd = this.state.formatted.length;\n this.setState({\n selection: SelectionHelper.forward(selection.start, inputEnd),\n });\n return;\n }\n }\n };\n\n private scrollInput = () => {\n const node = this.input?.getNode();\n if (!node || node.scrollWidth === node.clientWidth) {\n return;\n }\n const PAD = 1;\n const SHIFT = 3;\n\n const selection = this.state.selection;\n const selected = selection.start !== selection.end;\n const position = selected && selection.direction === 'forward' ? selection.end : selection.start;\n const charsCount = this.state.formatted.length;\n const charWidth = node.scrollWidth / charsCount;\n const frame = Math.ceil(node.clientWidth / charWidth);\n const frameStart = Math.ceil(node.scrollLeft / charWidth);\n const frameEnd = frameStart + frame;\n\n if (position < frameStart + PAD) {\n node.scrollLeft = (position - SHIFT) * charWidth;\n }\n if (position > frameEnd - PAD) {\n node.scrollLeft = (position - frame + SHIFT) * charWidth;\n }\n };\n\n private getSelection = (input: EventTarget): Selection => {\n const selection = getInputSelectionFromEvent(input);\n return {\n start: selection.start,\n end: selection.end,\n direction: this.state.selection.direction,\n };\n };\n\n private moveCursor = (selection: Selection, step: number) => {\n const position = CurrencyInputHelper.moveCursor(this.state.formatted, selection, step);\n this.setState({ selection: SelectionHelper.fromPosition(position) });\n };\n\n private extendSelection = (selection: Selection, step: number) => {\n const extended = CurrencyInputHelper.extendSelection(this.state.formatted, selection, step);\n this.setState({ selection: extended });\n };\n\n private inputValue = (start: number, end: number, value: string) => {\n const result = CurrencyInputHelper.safeInsert(this.state.formatted, start, end, value, {\n integerDigits: this.props.integerDigits,\n fractionDigits: this.props.fractionDigits,\n unsigned: !this.props.signed,\n });\n if (result) {\n const formatted = result.value;\n const selection = SelectionHelper.fromPosition(result.position);\n this.setState({ formatted, selection }, () => {\n const parsedValue = CurrencyHelper.parse(formatted);\n if (this.props.value !== parsedValue) {\n this.props.onValueChange(parsedValue);\n }\n });\n return true;\n }\n\n if (this.input) {\n this.input.blink();\n }\n return false;\n };\n\n private getOnChangeDelta = (value: string) => {\n const selection = this.tempSelectionForOnChange;\n const oldValue = this.state.formatted;\n if (selection.start !== selection.end) {\n return value.substring(selection.start, value.length - (oldValue.length - selection.end));\n } else if (value.length > oldValue.length) {\n return value.substr(selection.start, value.length - oldValue.length);\n }\n return null;\n };\n\n private handleValueChange = (value: string): void => {\n const selection = this.tempSelectionForOnChange;\n const delta = this.getOnChangeDelta(value);\n if (delta != null && !this.inputValue(selection.start, selection.end, delta)) {\n this.setState({ selection });\n }\n };\n\n private handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const data = event.clipboardData.getData('text');\n const selection = this.getSelection(event.target);\n this.inputValue(selection.start, selection.end, data);\n event.preventDefault();\n };\n\n private handleCopy = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n }\n event.preventDefault();\n };\n\n private handleCut = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const selection = this.getSelection(event.target);\n if (selection.start !== selection.end) {\n const substring = this.state.formatted.substring(selection.start, selection.end);\n const data = CurrencyHelper.formatForClipboard(substring);\n event.clipboardData.setData('text', data);\n this.inputValue(selection.start, selection.end, '');\n }\n event.preventDefault();\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const { selectionStart, selectionEnd, selectionDirection } = event.target;\n const valueLenght = event.target.value.length;\n\n const selection = {\n start: selectionStart !== selectionEnd ? selectionStart || 0 : selectionStart || valueLenght,\n end: selectionEnd !== selectionStart ? selectionEnd || 0 : selectionEnd || valueLenght,\n direction: (selectionDirection as SelectionDirection) || 'none',\n };\n\n this.setState({\n focused: true,\n selection,\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const value = CurrencyHelper.parse(this.state.formatted);\n\n this.setState({\n ...this.getState(value, this.props.fractionDigits, this.props.hideTrailingZeros),\n focused: false,\n });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private refInput = (element: Nullable<Input>) => {\n this.input = element;\n };\n}\n\nfunction getInputSelectionFromEvent(input: EventTarget): Selection {\n if (!(input instanceof HTMLInputElement)) {\n throw new Error('input is not HTMLInputElement');\n }\n\n return {\n start: input.selectionStart!,\n end: input.selectionEnd!,\n direction: input.selectionDirection as SelectionDirection,\n };\n}\n"]}
@@ -70,6 +70,7 @@ export declare class DateInput extends React.Component<DateInputProps, DateInput
70
70
  private locale;
71
71
  private blurEvent;
72
72
  private theme;
73
+ private setRootNode;
73
74
  private conditionalHandler;
74
75
  constructor(props: DateInputProps);
75
76
  componentDidUpdate(prevProps: DateInputProps, prevState: DateInputState): void;