@skbkontur/react-ui 4.2.2 → 4.3.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 (337) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +9 -17
  3. package/cjs/components/Autocomplete/Autocomplete.js +10 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +4 -5
  6. package/cjs/components/Button/Button.js +8 -3
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.mixins.js +1 -1
  9. package/cjs/components/Button/Button.mixins.js.map +1 -1
  10. package/cjs/components/Button/Button.styles.js +18 -18
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Center/Center.d.ts +4 -3
  13. package/cjs/components/Center/Center.js +9 -3
  14. package/cjs/components/Center/Center.js.map +1 -1
  15. package/cjs/components/ComboBox/ComboBox.d.ts +8 -13
  16. package/cjs/components/ComboBox/ComboBox.js +12 -2
  17. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  18. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  19. package/cjs/components/CurrencyInput/CurrencyInput.js +15 -6
  20. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  21. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  22. package/cjs/components/CurrencyLabel/CurrencyLabel.js +15 -15
  23. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  24. package/cjs/components/DateInput/DateInput.d.ts +8 -11
  25. package/cjs/components/DateInput/DateInput.js +11 -3
  26. package/cjs/components/DateInput/DateInput.js.map +1 -1
  27. package/cjs/components/DatePicker/DatePicker.d.ts +6 -8
  28. package/cjs/components/DatePicker/DatePicker.js +12 -6
  29. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  30. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  31. package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
  32. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  33. package/cjs/components/FxInput/FxInput.d.ts +6 -6
  34. package/cjs/components/FxInput/FxInput.js +13 -10
  35. package/cjs/components/FxInput/FxInput.js.map +1 -1
  36. package/cjs/components/Gapped/Gapped.d.ts +7 -8
  37. package/cjs/components/Gapped/Gapped.js +12 -6
  38. package/cjs/components/Gapped/Gapped.js.map +1 -1
  39. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  40. package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
  41. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  42. package/cjs/components/Hint/Hint.d.ts +7 -11
  43. package/cjs/components/Hint/Hint.js +15 -5
  44. package/cjs/components/Hint/Hint.js.map +1 -1
  45. package/cjs/components/Input/Input.d.ts +4 -3
  46. package/cjs/components/Input/Input.js +7 -4
  47. package/cjs/components/Input/Input.js.map +1 -1
  48. package/cjs/components/Kebab/Kebab.d.ts +7 -11
  49. package/cjs/components/Kebab/Kebab.js +14 -5
  50. package/cjs/components/Kebab/Kebab.js.map +1 -1
  51. package/cjs/components/Link/Link.d.ts +4 -4
  52. package/cjs/components/Link/Link.js +11 -4
  53. package/cjs/components/Link/Link.js.map +1 -1
  54. package/cjs/components/Loader/Loader.d.ts +7 -4
  55. package/cjs/components/Loader/Loader.js +14 -4
  56. package/cjs/components/Loader/Loader.js.map +1 -1
  57. package/cjs/components/Modal/Modal.d.ts +4 -3
  58. package/cjs/components/Modal/Modal.js +8 -3
  59. package/cjs/components/Modal/Modal.js.map +1 -1
  60. package/cjs/components/Paging/Paging.d.ts +6 -9
  61. package/cjs/components/Paging/Paging.js +15 -5
  62. package/cjs/components/Paging/Paging.js.map +1 -1
  63. package/cjs/components/Paging/PagingDefaultComponent.d.ts +1 -1
  64. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
  65. package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
  66. package/cjs/components/PasswordInput/PasswordInput.js +8 -3
  67. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  68. package/cjs/components/Radio/Radio.d.ts +4 -3
  69. package/cjs/components/Radio/Radio.js +8 -3
  70. package/cjs/components/Radio/Radio.js.map +1 -1
  71. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -4
  72. package/cjs/components/RadioGroup/RadioGroup.js +4 -2
  73. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  74. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +6 -7
  75. package/cjs/components/ScrollContainer/ScrollContainer.js +11 -5
  76. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  77. package/cjs/components/Select/Select.d.ts +3 -12
  78. package/cjs/components/Select/Select.js +6 -1
  79. package/cjs/components/Select/Select.js.map +1 -1
  80. package/cjs/components/Select/Select.styles.js +4 -4
  81. package/cjs/components/Select/Select.styles.js.map +1 -1
  82. package/cjs/components/SidePage/SidePage.d.ts +5 -6
  83. package/cjs/components/SidePage/SidePage.js +8 -1
  84. package/cjs/components/SidePage/SidePage.js.map +1 -1
  85. package/cjs/components/Spinner/Spinner.d.ts +4 -2
  86. package/cjs/components/Spinner/Spinner.js +9 -3
  87. package/cjs/components/Spinner/Spinner.js.map +1 -1
  88. package/cjs/components/Sticky/Sticky.d.ts +5 -4
  89. package/cjs/components/Sticky/Sticky.js +9 -2
  90. package/cjs/components/Sticky/Sticky.js.map +1 -1
  91. package/cjs/components/Tabs/Tab.d.ts +4 -4
  92. package/cjs/components/Tabs/Tab.js +11 -13
  93. package/cjs/components/Tabs/Tab.js.map +1 -1
  94. package/cjs/components/Tabs/Tabs.d.ts +4 -4
  95. package/cjs/components/Tabs/Tabs.js +12 -3
  96. package/cjs/components/Tabs/Tabs.js.map +1 -1
  97. package/cjs/components/Textarea/Textarea.d.ts +8 -10
  98. package/cjs/components/Textarea/Textarea.js +10 -6
  99. package/cjs/components/Textarea/Textarea.js.map +1 -1
  100. package/cjs/components/Toggle/Toggle.d.ts +5 -6
  101. package/cjs/components/Toggle/Toggle.js +10 -4
  102. package/cjs/components/Toggle/Toggle.js.map +1 -1
  103. package/cjs/components/TokenInput/TokenInput.d.ts +19 -16
  104. package/cjs/components/TokenInput/TokenInput.js +75 -57
  105. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  106. package/cjs/components/Tooltip/Tooltip.d.ts +10 -14
  107. package/cjs/components/Tooltip/Tooltip.js +23 -12
  108. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  109. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +5 -4
  110. package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
  111. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  112. package/cjs/internal/BGRuler.d.ts +13 -15
  113. package/cjs/internal/BGRuler.js +16 -8
  114. package/cjs/internal/BGRuler.js.map +1 -1
  115. package/cjs/internal/Calendar/Calendar.d.ts +4 -13
  116. package/cjs/internal/Calendar/Calendar.js +10 -5
  117. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  118. package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
  119. package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
  120. package/cjs/internal/Calendar/Month.js +16 -11
  121. package/cjs/internal/Calendar/Month.js.map +1 -1
  122. package/cjs/internal/ComponentCombinator.d.ts +6 -8
  123. package/cjs/internal/ComponentCombinator.js +6 -2
  124. package/cjs/internal/ComponentCombinator.js.map +1 -1
  125. package/cjs/internal/ComponentTable.d.ts +5 -6
  126. package/cjs/internal/ComponentTable.js +11 -2
  127. package/cjs/internal/ComponentTable.js.map +1 -1
  128. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
  129. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +7 -1
  130. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  131. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  132. package/cjs/internal/CustomComboBox/ComboBoxView.js +18 -10
  133. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  134. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
  135. package/cjs/internal/DateSelect/DateSelect.js +15 -9
  136. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  137. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
  138. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -5
  139. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  140. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
  141. package/cjs/internal/InputLikeText/InputLikeText.js +7 -2
  142. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  143. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -9
  144. package/cjs/internal/InternalMenu/InternalMenu.js +16 -6
  145. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  146. package/cjs/internal/MaskedInput/MaskedInput.d.ts +4 -2
  147. package/cjs/internal/MaskedInput/MaskedInput.js +7 -2
  148. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  149. package/cjs/internal/Menu/Menu.d.ts +4 -7
  150. package/cjs/internal/Menu/Menu.js +7 -1
  151. package/cjs/internal/Menu/Menu.js.map +1 -1
  152. package/cjs/internal/Popup/Popup.d.ts +10 -16
  153. package/cjs/internal/Popup/Popup.js +21 -7
  154. package/cjs/internal/Popup/Popup.js.map +1 -1
  155. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
  156. package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
  157. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  158. package/cjs/internal/RenderLayer/RenderLayer.d.ts +4 -3
  159. package/cjs/internal/RenderLayer/RenderLayer.js +8 -2
  160. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  161. package/cjs/internal/ThemePlayground/VariableValue.d.ts +5 -4
  162. package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
  163. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  164. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -11
  165. package/cjs/internal/ZIndex/ZIndex.js +10 -3
  166. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  167. package/cjs/lib/createPropsGetter.d.ts +2 -1
  168. package/cjs/lib/createPropsGetter.js +2 -0
  169. package/cjs/lib/createPropsGetter.js.map +1 -1
  170. package/components/Autocomplete/Autocomplete/Autocomplete.js +22 -12
  171. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  172. package/components/Autocomplete/Autocomplete.d.ts +9 -17
  173. package/components/Button/Button/Button.js +11 -5
  174. package/components/Button/Button/Button.js.map +1 -1
  175. package/components/Button/Button.d.ts +4 -5
  176. package/components/Button/Button.mixins/Button.mixins.js +1 -1
  177. package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
  178. package/components/Button/Button.styles/Button.styles.js +18 -18
  179. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  180. package/components/Center/Center/Center.js +7 -5
  181. package/components/Center/Center/Center.js.map +1 -1
  182. package/components/Center/Center.d.ts +4 -3
  183. package/components/ComboBox/ComboBox/ComboBox.js +3 -1
  184. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  185. package/components/ComboBox/ComboBox.d.ts +8 -13
  186. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +21 -18
  187. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  188. package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  189. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +21 -15
  190. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  191. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  192. package/components/DateInput/DateInput/DateInput.js +17 -4
  193. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  194. package/components/DateInput/DateInput.d.ts +8 -11
  195. package/components/DatePicker/DatePicker/DatePicker.js +12 -9
  196. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  197. package/components/DatePicker/DatePicker.d.ts +6 -8
  198. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
  199. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  200. package/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  201. package/components/FxInput/FxInput/FxInput.js +11 -9
  202. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  203. package/components/FxInput/FxInput.d.ts +6 -6
  204. package/components/Gapped/Gapped/Gapped.js +17 -8
  205. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  206. package/components/Gapped/Gapped.d.ts +7 -8
  207. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
  208. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  209. package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  210. package/components/Hint/Hint/Hint.js +30 -18
  211. package/components/Hint/Hint/Hint.js.map +1 -1
  212. package/components/Hint/Hint.d.ts +7 -11
  213. package/components/Input/Input/Input.js +9 -7
  214. package/components/Input/Input/Input.js.map +1 -1
  215. package/components/Input/Input.d.ts +4 -3
  216. package/components/Kebab/Kebab/Kebab.js +19 -8
  217. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  218. package/components/Kebab/Kebab.d.ts +7 -11
  219. package/components/Link/Link/Link.js +9 -6
  220. package/components/Link/Link/Link.js.map +1 -1
  221. package/components/Link/Link.d.ts +4 -4
  222. package/components/Loader/Loader/Loader.js +22 -17
  223. package/components/Loader/Loader/Loader.js.map +1 -1
  224. package/components/Loader/Loader.d.ts +7 -4
  225. package/components/Modal/Modal/Modal.js +3 -1
  226. package/components/Modal/Modal/Modal.js.map +1 -1
  227. package/components/Modal/Modal.d.ts +4 -3
  228. package/components/Paging/Paging/Paging.js +24 -14
  229. package/components/Paging/Paging/Paging.js.map +1 -1
  230. package/components/Paging/Paging.d.ts +6 -9
  231. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
  232. package/components/Paging/PagingDefaultComponent.d.ts +1 -1
  233. package/components/PasswordInput/PasswordInput/PasswordInput.js +7 -5
  234. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  235. package/components/PasswordInput/PasswordInput.d.ts +4 -3
  236. package/components/Radio/Radio/Radio.js +7 -5
  237. package/components/Radio/Radio/Radio.js.map +1 -1
  238. package/components/Radio/Radio.d.ts +4 -3
  239. package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -10
  240. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  241. package/components/RadioGroup/RadioGroup.d.ts +2 -4
  242. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +10 -6
  243. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  244. package/components/ScrollContainer/ScrollContainer.d.ts +6 -7
  245. package/components/Select/Select/Select.js +4 -3
  246. package/components/Select/Select/Select.js.map +1 -1
  247. package/components/Select/Select.d.ts +3 -12
  248. package/components/Select/Select.styles/Select.styles.js +4 -4
  249. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  250. package/components/SidePage/SidePage/SidePage.js +14 -9
  251. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  252. package/components/SidePage/SidePage.d.ts +5 -6
  253. package/components/Spinner/Spinner/Spinner.js +7 -5
  254. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  255. package/components/Spinner/Spinner.d.ts +4 -2
  256. package/components/Sticky/Sticky/Sticky.js +7 -4
  257. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  258. package/components/Sticky/Sticky.d.ts +5 -4
  259. package/components/Tabs/Tab/Tab.js +15 -7
  260. package/components/Tabs/Tab/Tab.js.map +1 -1
  261. package/components/Tabs/Tab.d.ts +4 -4
  262. package/components/Tabs/Tabs/Tabs.js +10 -8
  263. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  264. package/components/Tabs/Tabs.d.ts +4 -4
  265. package/components/Textarea/Textarea/Textarea.js +19 -14
  266. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  267. package/components/Textarea/Textarea.d.ts +8 -10
  268. package/components/Toggle/Toggle/Toggle.js +12 -7
  269. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  270. package/components/Toggle/Toggle.d.ts +5 -6
  271. package/components/TokenInput/TokenInput/TokenInput.js +107 -77
  272. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  273. package/components/TokenInput/TokenInput.d.ts +19 -16
  274. package/components/Tooltip/Tooltip/Tooltip.js +51 -30
  275. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  276. package/components/Tooltip/Tooltip.d.ts +10 -14
  277. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
  278. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  279. package/components/TooltipMenu/TooltipMenu.d.ts +5 -4
  280. package/internal/BGRuler/BGRuler.js +11 -6
  281. package/internal/BGRuler/BGRuler.js.map +1 -1
  282. package/internal/BGRuler.d.ts +13 -15
  283. package/internal/Calendar/Calendar/Calendar.js +11 -5
  284. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  285. package/internal/Calendar/Calendar.d.ts +4 -13
  286. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
  287. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  288. package/internal/Calendar/Month/Month.js +20 -11
  289. package/internal/Calendar/Month/Month.js.map +1 -1
  290. package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
  291. package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
  292. package/internal/ComponentCombinator.d.ts +6 -8
  293. package/internal/ComponentTable/ComponentTable.js +16 -4
  294. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  295. package/internal/ComponentTable.d.ts +5 -6
  296. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +4 -2
  297. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  298. package/internal/CustomComboBox/ComboBoxMenu.d.ts +4 -4
  299. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +21 -10
  300. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  301. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  302. package/internal/DateSelect/DateSelect/DateSelect.js +14 -11
  303. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  304. package/internal/DateSelect/DateSelect.d.ts +4 -6
  305. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -10
  306. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  307. package/internal/DropdownContainer/DropdownContainer.d.ts +3 -6
  308. package/internal/InputLikeText/InputLikeText/InputLikeText.js +4 -2
  309. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  310. package/internal/InputLikeText/InputLikeText.d.ts +4 -3
  311. package/internal/InternalMenu/InternalMenu/InternalMenu.js +21 -10
  312. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  313. package/internal/InternalMenu/InternalMenu.d.ts +3 -9
  314. package/internal/MaskedInput/MaskedInput/MaskedInput.js +3 -1
  315. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  316. package/internal/MaskedInput/MaskedInput.d.ts +4 -2
  317. package/internal/Menu/Menu/Menu.js +10 -3
  318. package/internal/Menu/Menu/Menu.js.map +1 -1
  319. package/internal/Menu/Menu.d.ts +4 -7
  320. package/internal/Popup/Popup/Popup.js +32 -23
  321. package/internal/Popup/Popup/Popup.js.map +1 -1
  322. package/internal/Popup/Popup.d.ts +10 -16
  323. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
  324. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  325. package/internal/PopupMenu/PopupMenu.d.ts +8 -11
  326. package/internal/RenderLayer/RenderLayer/RenderLayer.js +8 -4
  327. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  328. package/internal/RenderLayer/RenderLayer.d.ts +4 -3
  329. package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
  330. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  331. package/internal/ThemePlayground/VariableValue.d.ts +5 -4
  332. package/internal/ZIndex/ZIndex/ZIndex.js +15 -13
  333. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  334. package/internal/ZIndex/ZIndex.d.ts +7 -11
  335. package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
  336. package/lib/createPropsGetter.d.ts +2 -1
  337. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["TokenInput.tsx"],"names":["TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","defaultToKey","item","toString","identity","defaultRenderToken","isActive","onClick","onDoubleClick","onRemove","disabled","TokenInput","TokenInputLocaleHelper","rootNode","state","input","tokensInputMenu","textHelper","wrapper","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","props","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","preventDefault","focus","requestAnimationFrame","payload","onBlur","valueToString","isEditingMode","finishTokenEdit","isTokenValueChanged","length","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","menu","getMenuRef","relatedTarget","document","activeElement","contains","handleWrapperMouseDown","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","tokens","map","token","selectedItems","indexOf","sort","index","clipboardData","setData","join","delimiters","handleInputPaste","WithReference","paste","getData","delimiter","stopPropagation","split","valueToItem","filter","newItems","concat","onValueChange","tryGetItems","query","getItems","hideMenuIfEmptyInputValue","isSelectedItem","isEditingItem","editingItem","autocompleteItemsUnique","unshift","LayoutEvents","emit","highlightMenuItem","selectItemIndex","findIndex","toLowerCase","highlightItem","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","key","WithoutReference","newValue","handleAddItem","enter","up","down","blur","moveFocusToLastToken","selectionStart","focusInput","selectInputText","setSelectionRange","itemsNew","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","itemNew","handleValueChange","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","handleIconClick","handleTokenDoubleClick","renderAddButton","showAddItemHint","locale","addButtonComment","addButtonTitle","componentDidMount","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","isCursorVisibleForState","componentWillUnmount","removeEventListener","render","theme","renderMain","Error","width","maxMenuHeight","error","warning","placeholder","renderItem","renderNotFound","onMouseEnter","onMouseLeave","inputMode","menuWidth","menuAlign","renderTotalCount","totalCount","showMenu","lineHeight","parseInt","tokenInputLineHeight","inputInlineStyles","height","Math","max","flex","caretColor","labelClassName","styles","label","labelDisabled","labelFocused","inputClassName","inputDisabled","inputEditing","setRootNode","helperText","helperTextEditing","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","isInputValueChanged","React","PureComponent","__KONTUR_REACT_UI__","defaultProps","renderValue","toKey","emptyHandler"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, FocusEvent, FocusEventHandler, KeyboardEvent, MouseEventHandler, ReactNode } from 'react';\nimport isEqual from 'lodash.isequal';\n\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Menu } from '../../internal/Menu';\nimport { Token, TokenProps } from '../Token';\nimport { MenuItemState } from '../MenuItem';\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { TokenInputLocale, TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport { TokenInputAction, tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T> extends CommonProps {\n selectedItems: T[];\n onValueChange: (items: T[]) => void;\n onMouseEnter: MouseEventHandler<HTMLDivElement>;\n onMouseLeave: MouseEventHandler<HTMLDivElement>;\n onFocus: FocusEventHandler<HTMLTextAreaElement>;\n onBlur: FocusEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n type?: TokenInputType;\n /**\n * Ширина выпадающего меню может быть указана как 'auto'\n * а также в пикселях, процентах (от ширины инпута)\n * или других конкретных единицах\n *\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto'\n * (по ширине текста)\n */\n menuWidth: React.CSSProperties['width'];\n menuAlign: TokenInputMenuAlign;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются строки.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `renderItem`, `valueToString`\n */\n getItems?: (query: string) => Promise<T[]>;\n hideMenuIfEmptyInputValue?: boolean;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode | null;\n renderValue: (item: T) => React.ReactNode;\n /**\n * Функция должна возвращать строковое представление токена\n * @default item => item\n */\n valueToString: (item: T) => string;\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n\n renderNotFound?: () => React.ReactNode;\n valueToItem: (item: string) => T;\n toKey: (item: T) => string | number | undefined;\n placeholder?: string;\n delimiters: string[];\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n /**\n * Вызывается при изменении текста в поле ввода,\n */\n onInputValueChange?: (value: string) => void;\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с компонента\n *\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `valueToString` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`, с которым будет вызван `onValueChange`.\n * Если возвращаемое значение будет равно `null`,\n * то сработает очистка текущего значения инпута,\n * а в режиме редактирования токен будет удален\n */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n} as const;\n\nconst defaultToKey = <T extends {}>(item: T): string => item.toString();\nconst identity = <T extends {}>(item: T): T => item;\nconst defaultRenderToken = <T extends {}>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n >\n {item}\n </Token>\n);\n\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n\n public static defaultProps: Partial<TokenInputProps<any>> = {\n selectedItems: [],\n delimiters: [',', ' '],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.updateInputTextWidth();\n document.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.props.selectedItems.length) {\n LayoutEvents.emit();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n selectedItems,\n width,\n maxMenuHeight,\n error,\n warning,\n disabled,\n placeholder,\n renderItem,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n onMouseEnter,\n onMouseLeave,\n inputMode,\n menuWidth,\n menuAlign,\n renderTotalCount,\n totalCount,\n } = this.props;\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n inputValueHeight,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: Math.max(lineHeight, inputValueHeight),\n // input растягивается на всю ширину чтобы placeholder не обрезался\n flex: selectedItems && selectedItems.length === 0 ? 1 : undefined,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), {\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), {\n [styles.inputDisabled(theme)]: !!disabled,\n [styles.inputEditing(theme)]: this.isEditingMode,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n >\n <TextWidthHelper\n ref={this.textHelperRef}\n classHelp={cx(styles.helperText(theme), {\n [styles.helperTextEditing(theme)]: this.isEditingMode,\n })}\n text={inputValue}\n theme={this.theme}\n />\n {this.renderTokensStart()}\n <textarea\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={selectedItems.length > 0 ? undefined : placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n />\n {showMenu && (\n <TokenInputMenu\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElement={menuAlign === 'cursor' ? this.input! : this.wrapper!}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? <span className={styles.reservedInput(theme)}>{reservedInputValue}</span> : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.props.valueToItem(this.state.inputValue);\n\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.props.selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (state.inputValue !== '' || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n requestAnimationFrame(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.props.onBlur?.(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n const { valueToString } = this.props;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { selectedItems, valueToString } = this.props;\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken =\n target && this.wrapper?.contains(target) && target !== this.wrapper! && target !== this.input!;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => this.props.selectedItems.indexOf(token))\n .sort()\n .map((index) => this.props.selectedItems[index])\n .map((item) => this.props.valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(this.props.delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n let paste = event.clipboardData.getData('text');\n const { delimiters } = this.props;\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n for (const delimiter of delimiters) {\n paste = paste.split(delimiter).join(delimiters[0]);\n }\n const tokens = paste.split(delimiters[0]);\n const items = tokens\n .map((token) => this.props.valueToItem(token))\n .filter((item) => !this.hasValueInItems(this.props.selectedItems, item));\n const newItems = this.props.selectedItems.concat(items);\n this.props.onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.state.inputValue !== '' || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const isSelectedItem = (item: T) => this.hasValueInItems(this.props.selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = this.props.selectedItems[this.state.editingTokenIndex];\n return !!editingItem && isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = this.props.selectedItems[this.state.editingTokenIndex];\n if (\n isEqual(editingItem, this.props.valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => this.props.valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n if (this.menuRef) {\n this.menuRef.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex);\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.props.delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n\n switch (true) {\n case isKeyEnter(e):\n if (this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n this.moveFocusToLastToken();\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.props.selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n requestAnimationFrame(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n if (!this.isEditingMode) {\n const itemsNew = this.props.selectedItems.filter(\n (item) => !this.hasValueInItems(this.state.activeTokens, item),\n );\n this.props.onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: this.props.selectedItems,\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = this.props.selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = activeItemIndex + (isKeyArrowLeft(e) ? -1 : +1);\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = activeItemIndex === this.props.selectedItems.length - 1 && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.props.selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.props.selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.props.onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.props.valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems } = this.props;\n\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: this.props.valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange(this.props.selectedItems.filter((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const editingTokenIndex = this.props.selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.state.inputValue !== '') {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: this.props.valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const { selectedItems, valueToItem } = this.props;\n const editedItem = valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.state.inputValue !== '' && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const { selectedItems } = this.props;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.props.selectedItems.slice(this.state.editingTokenIndex + 1).map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenEdit(item);\n }\n };\n\n return renderToken(item, {\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["TokenInput.tsx"],"names":["TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","defaultToKey","item","toString","identity","defaultRenderToken","isActive","onClick","onDoubleClick","onRemove","disabled","TokenInput","TokenInputLocaleHelper","rootNode","getProps","defaultProps","state","input","tokensInputMenu","textHelper","wrapper","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","preventDefault","focus","requestAnimationFrame","payload","onBlur","isEditingMode","finishTokenEdit","isTokenValueChanged","length","valueToString","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","menu","getMenuRef","relatedTarget","document","activeElement","contains","handleWrapperMouseDown","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","selectedItems","delimiters","tokens","map","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","valueToItem","onValueChange","delimiter","stopPropagation","split","filter","newItems","concat","tryGetItems","query","props","getItems","hideMenuIfEmptyInputValue","isSelectedItem","isEditingItem","editingItem","autocompleteItemsUnique","unshift","LayoutEvents","emit","highlightMenuItem","selectItemIndex","findIndex","toLowerCase","highlightItem","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","key","WithoutReference","newValue","handleAddItem","enter","up","down","blur","moveFocusToLastToken","selectionStart","focusInput","selectInputText","setSelectionRange","itemsNew","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","itemNew","handleValueChange","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","handleIconClick","handleTokenDoubleClick","renderAddButton","showAddItemHint","locale","addButtonComment","addButtonTitle","componentDidMount","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","isCursorVisibleForState","componentWillUnmount","removeEventListener","render","theme","renderMain","Error","maxMenuHeight","error","warning","placeholder","renderNotFound","inputMode","renderTotalCount","totalCount","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","showMenu","lineHeight","parseInt","tokenInputLineHeight","inputInlineStyles","height","Math","max","flex","caretColor","labelClassName","styles","label","labelDisabled","labelFocused","inputClassName","inputDisabled","inputEditing","setRootNode","helperText","helperTextEditing","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","isInputValueChanged","React","PureComponent","__KONTUR_REACT_UI__","renderValue","toKey","emptyHandler"],"mappings":"oqBAAA;AACA;;AAEA;;;;;;;;;;;;;AAaA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oD;;AAEYA,c,oDAAAA,c,GAAAA,c,CAAAA,c,yCAAAA,c,CAAAA,c,+CAAAA,c,CAAAA,c,kCAAAA,c,8BAAAA,c;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHL,IAAMC,YAAY,GAAG;AAC1BC,EAAAA,UAAU,EAAE,EADc;AAE1BC,EAAAA,kBAAkB,EAAEC,SAFM;AAG1BC,EAAAA,iBAAiB,EAAED,SAHO;AAI1BE,EAAAA,YAAY,EAAE,EAJY;AAK1BC,EAAAA,iBAAiB,EAAE,CAAC,CALM;AAM1BC,EAAAA,OAAO,EAAE,KANiB;AAO1BC,EAAAA,OAAO,EAAE,KAPiB;AAQ1BC,EAAAA,WAAW,EAAE,KARa;AAS1BC,EAAAA,eAAe,EAAE,CATS;AAU1BC,EAAAA,gBAAgB,EAAE,EAVQ,EAArB,C;;;AAaA,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B;AAEhCC,EAAAA,cAAc,EAAE,sBAFgB,EAA3B,C;;;;;;;;;;;;;;;;;;;;;;;;AA0BP,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAeC,IAAf,UAAmCA,IAAI,CAACC,QAAL,EAAnC,EAArB;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAeF,IAAf,UAA8BA,IAA9B,EAAjB;AACA,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB;AACzBH,IADyB;AAEvBI,EAAAA,QAFuB,QAEvBA,QAFuB,CAEbC,OAFa,QAEbA,OAFa,CAEJC,aAFI,QAEJA,aAFI,CAEWC,QAFX,QAEWA,QAFX,CAEqBC,QAFrB,QAEqBA,QAFrB;;AAIzB,iCAAC,YAAD;AACE,MAAA,GAAG,EAAER,IAAI,CAACC,QAAL,EADP;AAEE,MAAA,QAAQ,EAAEG,QAFZ;AAGE,MAAA,OAAO,EAAEC,OAHX;AAIE,MAAA,aAAa,EAAEC,aAJjB;AAKE,MAAA,QAAQ,EAAEC,QALZ;AAME,MAAA,QAAQ,EAAEC,QANZ;;AAQGR,IAAAA,IARH,CAJyB,GAA3B,C;;;;;;AAkBaS,U,WADZ,wBAAO,YAAP,EAAqBC,8BAArB,C,MADAC,kB;;;;;;;;;;;;;;;;;;;;;AAuBSC,IAAAA,Q,GAAW,0CAAkBH,UAAU,CAACI,YAA7B,C;;AAEZC,IAAAA,K,GAA4B9B,Y;;;;AAI3B+B,IAAAA,K,GAAoC,I;AACpCC,IAAAA,e,GAA4C,I;AAC5CC,IAAAA,U,GAAqC,I;AACrCC,IAAAA,O,GAAmC,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4LnCC,IAAAA,e,GAAkB,UAACC,KAAD,EAAaC,KAAb,EAA0B;AAClD,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,eAAOD,KAAK,CAACE,QAAN,CAAeD,KAAf,CAAP;AACD;AACD;AACA,aAAOD,KAAK,CAACG,IAAN,CAAW,UAACvB,IAAD,UAAU,qBAAQA,IAAR,EAAcqB,KAAd,CAAV,EAAX,CAAP;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCOG,IAAAA,Q,GAAW,UAACC,IAAD,UAAgC,MAAKV,KAAL,GAAaU,IAA7C,E;AACXC,IAAAA,kB,GAAqB,UAACD,IAAD,UAA8B,MAAKT,eAAL,GAAuBS,IAArD,E;AACrBE,IAAAA,a,GAAgB,UAACF,IAAD,UAA4B,MAAKR,UAAL,GAAkBQ,IAA9C,E;AAChBG,IAAAA,U,GAAa,UAACH,IAAD,UAA6B,MAAKP,OAAL,GAAeO,IAA5C,E;;AAEbI,IAAAA,Q,GAAW,UAACC,MAAD,EAA2BC,EAA3B,EAA+C;AAChE,YAAKC,QAAL,CAAc,UAACC,SAAD,UAAe,0CAAkBA,SAAlB,EAA6BH,MAA7B,CAAf,EAAd,EAAmEC,EAAnE;AACD,K;;;;;;;;;;;;;;AAcOG,IAAAA,gB,GAAmB,UAACC,KAAD,EAA4C;AACrE,YAAKN,QAAL,CAAc,EAAEO,IAAI,EAAE,cAAR,EAAd;AACA,YAAKxB,QAAL,GAAgByB,OAAhB,CAAwBF,KAAxB;AACD,K;;AAEOG,IAAAA,e,GAAkB,UAACH,KAAD,EAA4C;AACpE,UAAMI,YAAY,GAAG,MAAKA,YAAL,CAAkBJ,KAAlB,CAArB;;AAEA,UAAI,CAACI,YAAL,EAAmB;AACjB,cAAKC,iBAAL;AACD;;AAED,UAAID,YAAY,IAAI,MAAKzB,KAAL,CAAWrB,WAA/B,EAA4C;AAC1C0C,QAAAA,KAAK,CAACM,cAAN;AACA;AACA,6BAAK1B,KAAL,iCAAY2B,KAAZ;AACA;AACAC,QAAAA,qBAAqB,CAAC,qDAAM,MAAK5B,KAAX,qBAAM,aAAY2B,KAAZ,EAAN,EAAD,CAArB;AACA,cAAKb,QAAL,CAAc,EAAEO,IAAI,EAAE,kBAAR,EAA4BQ,OAAO,EAAE,KAArC,EAAd;AACD,OAPD,MAOO;AACL,cAAKf,QAAL,CAAc,EAAEO,IAAI,EAAE,MAAR,EAAd;AACA,cAAKxB,QAAL,GAAgBiC,MAAhB,CAAuBV,KAAvB;AACD;AACF,K;;AAEOK,IAAAA,iB,GAAoB,YAAM;AAChC,wBAA0C,MAAK1B,KAA/C,CAAQ7B,UAAR,eAAQA,UAAR,CAAoBG,iBAApB,eAAoBA,iBAApB;;AAEA,UAAIH,UAAU,KAAK,EAAnB,EAAuB;AACrB;AACA,YAAI,MAAK6D,aAAT,EAAwB;AACtB,gBAAKC,eAAL;AACD;AACD;AACD;;AAED;AACA,UAAI,MAAKD,aAAL,IAAsB,CAAC,MAAKE,mBAAhC,EAAqD;AACnD,cAAKD,eAAL;AACA;AACD;;AAED;AACA,UAAI3D,iBAAiB,IAAIA,iBAAiB,CAAC6D,MAAlB,KAA6B,CAAtD,EAAyD;AACvD,YAAMjD,KAAI,GAAGZ,iBAAiB,CAAC,CAAD,CAA9B;;AAEA,YAAI,MAAKwB,QAAL,GAAgBsC,aAAhB,CAA8BlD,KAA9B,MAAwCf,UAA5C,EAAwD;AACtD,gBAAK6D,aAAL,GAAqB,MAAKC,eAAL,EAArB,GAA8C,MAAKI,UAAL,CAAgBnD,KAAhB,CAA9C;;AAEA;AACD;AACF;;AAED,UAAI,MAAKoD,cAAT,EAAyB;AACvB,cAAKC,uBAAL;AACD;AACF,K;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BOd,IAAAA,Y,GAAe,UAACJ,KAAD,EAAoC;AACzD,UAAI,MAAKmB,OAAT,EAAkB;AAChB,YAAMC,IAAI,GAAG,oDAAY,MAAKvC,eAAjB,qBAAY,sBAAsBwC,UAAtB,EAAZ,CAAb;AACA,YAAMC,aAAa,GAAItB,KAAK,CAACsB,aAAN,IAAuBC,QAAQ,CAACC,aAAvD;;AAEA,YAAIJ,IAAI,IAAIA,IAAI,CAACK,QAAL,CAAcH,aAAd,CAAZ,EAA0C;AACxC,iBAAO,IAAP;AACD;AACF;AACD,aAAO,KAAP;AACD,K;;AAEOI,IAAAA,sB,GAAyB,UAAC1B,KAAD,EAA0C;AACzE,YAAKN,QAAL,CAAc,EAAEO,IAAI,EAAE,kBAAR,EAA4BQ,OAAO,EAAE,IAArC,EAAd;AACA,UAAMkB,MAAM,GAAG3B,KAAK,CAAC2B,MAArB;AACA,UAAMC,cAAc;AAClBD,MAAAA,MAAM,sBAAI,MAAK5C,OAAT,qBAAI,cAAc0C,QAAd,CAAuBE,MAAvB,CAAJ,CAAN,IAA4CA,MAAM,KAAK,MAAK5C,OAA5D,IAAwE4C,MAAM,KAAK,MAAK/C,KAD1F;AAEA,UAAI,CAACgD,cAAL,EAAqB;AACnB,cAAKlC,QAAL,CAAc,EAAEO,IAAI,EAAE,0BAAR,EAAd;AACD;AACF,K;;AAEO4B,IAAAA,oB,GAAuB,YAAM;AACnC,YAAKnC,QAAL,CAAc,EAAEO,IAAI,EAAE,kBAAR,EAA4BQ,OAAO,EAAE,KAArC,EAAd;AACD,K;;AAEOqB,IAAAA,U,GAAa,UAAC9B,KAAD,EAAgB;AACnC,UAAI,CAAC,MAAKrB,KAAL,CAAWvB,OAAZ,IAAuB,MAAKuB,KAAL,CAAWzB,YAAX,CAAwB4D,MAAxB,KAAmC,CAA1D,IAA+D,MAAKiB,eAAxE,EAAyF;AACvF;AACD;AACD/B,MAAAA,KAAK,CAACM,cAAN;AACA,2BAAqD,MAAK7B,QAAL,EAArD,CAAQuD,aAAR,kBAAQA,aAAR,CAAuBjB,aAAvB,kBAAuBA,aAAvB,CAAsCkB,UAAtC,kBAAsCA,UAAtC;AACA;AACA,UAAMC,MAAM,GAAG,MAAKvD,KAAL,CAAWzB,YAAX;AACZiF,MAAAA,GADY,CACR,UAACC,KAAD,UAAWJ,aAAa,CAACK,OAAd,CAAsBD,KAAtB,CAAX,EADQ;AAEZE,MAAAA,IAFY;AAGZH,MAAAA,GAHY,CAGR,UAACI,KAAD,UAAWP,aAAa,CAACO,KAAD,CAAxB,EAHQ;AAIZJ,MAAAA,GAJY,CAIR,UAACtE,IAAD,UAAUkD,aAAa,CAAClD,IAAD,CAAvB,EAJQ,CAAf;AAKAmC,MAAAA,KAAK,CAACwC,aAAN,CAAoBC,OAApB,CAA4B,YAA5B,EAA0CP,MAAM,CAACQ,IAAP,CAAYT,UAAU,CAAC,CAAD,CAAtB,CAA1C;AACD,K;;AAEOU,IAAAA,gB,GAAmB,UAAC3C,KAAD,EAA8C;AACvE,UAAI,MAAKC,IAAL,KAAcrD,cAAc,CAACgG,aAA7B,IAA8C,CAAC5C,KAAK,CAACwC,aAAzD,EAAwE;AACtE;AACD;AACD,UAAIK,KAAK,GAAG7C,KAAK,CAACwC,aAAN,CAAoBM,OAApB,CAA4B,MAA5B,CAAZ;AACA,4BAAkE,MAAKrE,QAAL,EAAlE,CAAQwD,UAAR,mBAAQA,UAAR,CAAoBD,aAApB,mBAAoBA,aAApB,CAAmCe,WAAnC,mBAAmCA,WAAnC,CAAgDC,aAAhD,mBAAgDA,aAAhD;AACA,UAAIf,UAAU,CAAC7C,IAAX,CAAgB,UAAC6D,SAAD,UAAeJ,KAAK,CAAC1D,QAAN,CAAe8D,SAAf,CAAf,EAAhB,CAAJ,EAA+D;AAC7DjD,QAAAA,KAAK,CAACM,cAAN;AACAN,QAAAA,KAAK,CAACkD,eAAN;AACA,6DAAwBjB,UAAxB,wCAAoC,KAAzBgB,SAAyB;AAClCJ,UAAAA,KAAK,GAAGA,KAAK,CAACM,KAAN,CAAYF,SAAZ,EAAuBP,IAAvB,CAA4BT,UAAU,CAAC,CAAD,CAAtC,CAAR;AACD;AACD,YAAMC,MAAM,GAAGW,KAAK,CAACM,KAAN,CAAYlB,UAAU,CAAC,CAAD,CAAtB,CAAf;AACA,YAAMhD,MAAK,GAAGiD,MAAM;AACjBC,QAAAA,GADW,CACP,UAACC,KAAD,UAAWW,WAAW,CAACX,KAAD,CAAtB,EADO;AAEXgB,QAAAA,MAFW,CAEJ,UAACvF,IAAD,UAAU,CAAC,MAAKmB,eAAL,CAAqBgD,aAArB,EAAoCnE,IAApC,CAAX,EAFI,CAAd;AAGA,YAAMwF,QAAQ,GAAGrB,aAAa,CAACsB,MAAd,CAAqBrE,MAArB,CAAjB;AACA+D,QAAAA,aAAa,CAACK,QAAD,CAAb;;AAEA,cAAK3D,QAAL,CAAc,EAAEO,IAAI,EAAE,wBAAR,EAAkCQ,OAAO,EAAEzD,SAA3C,EAAd;AACA,cAAKuG,WAAL;AACD;AACF,K;;AAEOA,IAAAA,W,iHAAc,iBAAOC,KAAP,uSAAOA,KAAP,cAAOA,KAAP,GAAe,EAAf;AAChB,sBAAKC,KAAL,CAAWC,QAAX,KAAwB,MAAK/E,KAAL,CAAW7B,UAAX,KAA0B,EAA1B,IAAgC,CAAC,MAAK2G,KAAL,CAAWE,yBAApE,CADgB;AAElB,sBAAKjE,QAAL,CAAc,EAAEO,IAAI,EAAE,aAAR,EAAuBQ,OAAO,EAAE,IAAhC,EAAd,EAFkB;AAGc,wBAAKgD,KAAL,CAAWC,QAAX,CAAoBF,KAApB,CAHd,SAGZvG,iBAHY;AAIlB,sBAAKyC,QAAL,CAAc,EAAEO,IAAI,EAAE,aAAR,EAAuBQ,OAAO,EAAE,KAAhC,EAAd,EAJkB;;AAMoC,sBAAKhC,QAAL,EANpC,EAMVuD,aANU,mBAMVA,aANU,EAMKe,WANL,mBAMKA,WANL,EAMkBhC,aANlB,mBAMkBA,aANlB;AAOZ6C,gBAAAA,cAPY,GAOK,SAAjBA,cAAiB,CAAC/F,IAAD,UAAa,MAAKmB,eAAL,CAAqBgD,aAArB,EAAoCnE,IAApC,CAAb,EAPL;AAQZgG,gBAAAA,aARY,GAQI,SAAhBA,aAAgB,CAAChG,IAAD,EAAa;AACjC,sBAAMiG,WAAW,GAAG9B,aAAa,CAAC,MAAKrD,KAAL,CAAWxB,iBAAZ,CAAjC;AACA,yBAAO,CAAC,CAAC2G,WAAF,IAAiB,qBAAQjG,IAAR,EAAciG,WAAd,CAAxB;AACD,iBAXiB;;AAaZC,gBAAAA,uBAbY,GAac9G,iBAAiB,CAACmG,MAAlB,CAAyB,UAACvF,IAAD,UAAU,CAAC+F,cAAc,CAAC/F,IAAD,CAAf,IAAyBgG,aAAa,CAAChG,IAAD,CAAhD,EAAzB,CAbd;;AAelB,oBAAI,MAAK8C,aAAT,EAAwB;AAChBmD,kBAAAA,WADgB,GACF9B,aAAa,CAAC,MAAKrD,KAAL,CAAWxB,iBAAZ,CADX;AAEtB;AACE,uCAAQ2G,WAAR,EAAqBf,WAAW,CAAC,MAAKpE,KAAL,CAAW7B,UAAZ,CAAhC;AACA,mBAAC,MAAKkC,eAAL,CAAqB+E,uBAArB,EAA8CD,WAA9C,CAFH;AAGE;AACAC,oBAAAA,uBAAuB,CAACC,OAAxB,CAAgCF,WAAhC;AACD;AACF;;AAED,oBAAIN,KAAK,KAAK,EAAV,IAAgB,MAAK7E,KAAL,CAAW7B,UAAX,KAA0B,EAA9C,EAAkD;AAChD,wBAAK4C,QAAL,CAAc,EAAEO,IAAI,EAAE,wBAAR,EAAkCQ,OAAO,EAAEsD,uBAA3C,EAAd,EAAoF,YAAM;AACxFE,oBAAAA,YAAY,CAACC,IAAb;AACA,0BAAKC,iBAAL;AACD,mBAHD;AAID;AACKC,gBAAAA,eA/BY,GA+BML,uBAAuB,CAACM,SAAxB;AACtB,0BAACxG,IAAD,UAAUkD,aAAa,CAAClD,IAAD,CAAb,CAAoByG,WAApB,OAAsC,MAAK3F,KAAL,CAAW7B,UAAX,CAAsBwH,WAAtB,EAAhD,EADsB,CA/BN;;AAkClB,oBAAI,MAAKnD,OAAT,EAAkB;AAChB,wBAAKA,OAAL,CAAaoD,aAAb,CAA2BH,eAAe,GAAG,CAAlB,GAAsB,CAAtB,GAA0BA,eAArD;AACD,iBApCiB,yD;;;;AAwCdI,IAAAA,a,GAAgB,UAACxE,KAAD,EAA+C;AACrE,UAAI,MAAK+B,eAAT,EAA0B;AACxB,cAAK0C,kBAAL,CAAwBzE,KAAxB;AACD,OAFD,MAEO;AACL,cAAK0E,oBAAL,CAA0B1E,KAA1B;AACD;AACF,K;;AAEOyE,IAAAA,kB,GAAqB,UAACE,CAAD,EAA2C;AACtEA,MAAAA,CAAC,CAACzB,eAAF;;AAEA;AACG,YAAKjD,IAAL,KAAcrD,cAAc,CAACgG,aAA7B;AACC,YAAKnE,QAAL,GAAgBwD,UAAhB,CAA2B7C,IAA3B,CAAgC,UAACwF,GAAD,UAASA,GAAG,KAAKD,CAAC,CAACC,GAAV,IAAkBA,GAAG,KAAK,GAAR,IAAe,6BAAWD,CAAX,CAA1C,EAAhC,CADF;AAEC,mCAAWA,CAAX,KAAiB,MAAK1E,IAAL,KAAcrD,cAAc,CAACiI,gBAHjD;AAIE;AACAF,QAAAA,CAAC,CAACrE,cAAF;AACA,YAAMwE,QAAQ,GAAG,MAAKnG,KAAL,CAAW7B,UAA5B;AACA,YAAIgI,QAAQ,KAAK,EAAjB,EAAqB;AACnB,cAAI,MAAKnE,aAAT,EAAwB;AACtB,kBAAKC,eAAL;AACD,WAFD,MAEO;AACL,kBAAKmE,aAAL;AACD;AACF;AACF;;AAED,cAAQ,IAAR;AACE,aAAK,6BAAWJ,CAAX,CAAL;AACE,cAAI,MAAKxD,OAAT,EAAkB;AAChB,kBAAKA,OAAL,CAAa6D,KAAb,CAAmBL,CAAnB;AACD;AACD;AACA;AACAA,UAAAA,CAAC,CAACrE,cAAF;AACA;AACF,aAAK,qCAAmBqE,CAAnB,CAAL;AACEA,UAAAA,CAAC,CAACrE,cAAF;AACA,cAAI,MAAKa,OAAT,EAAkB;AAChB,gBAAI,+BAAawD,CAAb,CAAJ,EAAqB;AACnB,oBAAKxD,OAAL,CAAa8D,EAAb;AACD,aAFD,MAEO;AACL,oBAAK9D,OAAL,CAAa+D,IAAb;AACD;AACF;AACD;AACF,aAAK,8BAAYP,CAAZ,CAAL;AACE,gCAAK/F,KAAL,kCAAYuG,IAAZ;AACA;AACF,aAAK,iCAAeR,CAAf,CAAL;AACE,cAAI,CAAC,MAAKhE,aAAV,EAAyB;AACvB,kBAAKyE,oBAAL;AACD;AACD;AACF,aAAK,iCAAeT,CAAf,CAAL;AACE,cAAI,uBAAK/F,KAAL,kCAAYyG,cAAZ,MAA+B,CAAnC,EAAsC;AACpC,kBAAKD,oBAAL;AACD;AACD,gBA/BJ;;AAiCD,K;;;;;;;;;AASOE,IAAAA,U,GAAa,YAAM;AACzB9E,MAAAA,qBAAqB,CAAC,qDAAM,MAAK5B,KAAX,qBAAM,aAAY2B,KAAZ,EAAN,EAAD,CAArB;AACD,K;;AAEOgF,IAAAA,e,GAAkB,YAAM;AAC9B,UAAI,MAAK3G,KAAT,EAAgB;AACd,cAAKA,KAAL,CAAW4G,iBAAX,CAA6B,CAA7B,EAAgC,MAAK7G,KAAL,CAAW7B,UAAX,CAAsBgE,MAAtD;AACD;AACF,K;;AAEO4D,IAAAA,oB,GAAuB,UAACC,CAAD,EAAmC;AAChE,4BAAyC,MAAKlG,QAAL,EAAzC,CAAQuD,aAAR,mBAAQA,aAAR,CAAuBgB,aAAvB,mBAAuBA,aAAvB;AACA,cAAQ,IAAR;AACE,aAAK,iCAAe2B,CAAf,CAAL;AACA,aAAK,8BAAYA,CAAZ,CAAL,CAAqB;AACnB,gBAAI,CAAC,MAAKhE,aAAV,EAAyB;AACvB,kBAAM8E,QAAQ,GAAGzD,aAAa,CAACoB,MAAd,CAAqB,UAACvF,IAAD,UAAU,CAAC,MAAKmB,eAAL,CAAqB,MAAKL,KAAL,CAAWzB,YAAhC,EAA8CW,IAA9C,CAAX,EAArB,CAAjB;AACAmF,cAAAA,aAAa,CAACyC,QAAD,CAAb;AACA,oBAAK/F,QAAL,CAAc,EAAEO,IAAI,EAAE,0BAAR,EAAd,EAAoD,YAAM;AACxDgE,gBAAAA,YAAY,CAACC,IAAb;AACA,sCAAKtF,KAAL,kCAAY2B,KAAZ;AACD,eAHD;AAID;AACD;AACD;AACD,aAAK,uCAAqBoE,CAArB,CAAL;AACE,gBAAKe,mBAAL,CAAyBf,CAAzB;AACA;AACF,aAAK,8BAAYA,CAAZ,CAAL;AACE,kCAAK5F,OAAL,oCAAcoG,IAAd;AACA;AACF,aAAK,6BAAWR,CAAX,CAAL;AACEA,UAAAA,CAAC,CAACrE,cAAF;AACA,cAAI,MAAK3B,KAAL,CAAWzB,YAAX,CAAwB4D,MAAxB,KAAmC,CAAvC,EAA0C;AACxC,kBAAK6E,eAAL,CAAqB,MAAKhH,KAAL,CAAWzB,YAAX,CAAwB,CAAxB,CAArB;AACD;AACD;AACF,aAAK,sCAAoByH,CAApB,CAAL;AACEA,UAAAA,CAAC,CAACrE,cAAF;AACA,gBAAKZ,QAAL,CAAc;AACZO,YAAAA,IAAI,EAAE,mBADM;AAEZQ,YAAAA,OAAO,EAAEuB,aAFG,EAAd;;AAIA,gBA/BJ;;AAiCD,K;;AAEO0D,IAAAA,mB,GAAsB,UAACf,CAAD,EAAmC;AAC/DA,MAAAA,CAAC,CAACrE,cAAF;AACA,UAAM0B,aAAa,GAAG,MAAKvD,QAAL,GAAgBuD,aAAtC;AACA,UAAM9E,YAAY,GAAG,MAAKyB,KAAL,CAAWzB,YAAhC;AACA,UAAM0I,eAAe,GAAG5D,aAAa,CAACK,OAAd,CAAsBnF,YAAY,CAAC,CAAD,CAAlC,CAAxB;AACA,UAAM2I,YAAY,GAAGD,eAAe,IAAI,iCAAejB,CAAf,IAAoB,CAAC,CAArB,GAAyB,CAAC,CAA9B,CAApC;AACA,UAAMmB,UAAU,GAAGF,eAAe,KAAK,CAApB,IAAyB,iCAAejB,CAAf,CAA5C;AACA,UAAMoB,WAAW,GAAGH,eAAe,KAAK5D,aAAa,CAAClB,MAAd,GAAuB,CAA3C,IAAgD,kCAAgB6D,CAAhB,CAApE;AACA,UAAI,CAACA,CAAC,CAACqB,QAAH,IAAe9I,YAAY,CAAC4D,MAAb,KAAwB,CAA3C,EAA8C;AAC5C,cAAKmF,+BAAL,CAAqCH,UAArC,EAAiDC,WAAjD,EAA8DF,YAA9D;AACD,OAFD,MAEO;AACL,cAAKK,4BAAL,CAAkCJ,UAAlC,EAA8CC,WAA9C,EAA2DF,YAA3D;AACD;AACF,K;;AAEOI,IAAAA,+B,GAAkC,UAACH,UAAD,EAAsBC,WAAtB,EAA4CF,YAA5C,EAAqE;AAC7G,UAAIE,WAAJ,EAAiB;AACf,cAAKrG,QAAL,CAAc,EAAEO,IAAI,EAAE,0BAAR,EAAd,EAAoD,qDAAM,MAAKrB,KAAX,qBAAM,aAAY2B,KAAZ,EAAN,EAApD;AACD,OAFD,MAEO,IAAI,CAACuF,UAAL,EAAiB;AACtB,cAAKpG,QAAL,CAAc;AACZO,UAAAA,IAAI,EAAE,mBADM;AAEZQ,UAAAA,OAAO,EAAE,CAAC,MAAKhC,QAAL,GAAgBuD,aAAhB,CAA8B6D,YAA9B,CAAD,CAFG,EAAd;;AAID;AACF,K;;AAEOK,IAAAA,4B,GAA+B,UAACJ,UAAD,EAAsBC,WAAtB,EAA4CF,YAA5C,EAAqE;AAC1G,UAAI,CAACC,UAAD,IAAe,CAACC,WAApB,EAAiC;AAC/B,YAAMI,OAAO,GAAG,MAAK1H,QAAL,GAAgBuD,aAAhB,CAA8B6D,YAA9B,CAAhB;AACA,YAAMJ,QAAQ,IAAIU,OAAJ,SAAgB,MAAKxH,KAAL,CAAWzB,YAAX,CAAwBkG,MAAxB,CAA+B,UAACvF,IAAD,UAAU,CAAC,qBAAQA,IAAR,EAAcsI,OAAd,CAAX,EAA/B,CAAhB,CAAd;AACA,cAAKzG,QAAL,CAAc,EAAEO,IAAI,EAAE,mBAAR,EAA6BQ,OAAO,EAAEgF,QAAtC,EAAd;AACD;AACF,K;;AAEOW,IAAAA,iB,GAAoB,UAACnH,KAAD,EAAgB;AAC1C,YAAKR,QAAL,GAAgBuE,aAAhB,CAA8B/D,KAA9B;AACD,K;;AAEO8F,IAAAA,a,GAAgB,YAAM;AAC5B,UAAMlH,IAAI,GAAG,MAAKY,QAAL,GAAgBsE,WAAhB,CAA4B,MAAKpE,KAAL,CAAW7B,UAAvC,CAAb;AACA,UAAIe,IAAJ,EAAU;AACR,cAAKmD,UAAL,CAAgBnD,IAAhB;AACD;AACF,K;;AAEOmD,IAAAA,U,GAAa,UAACnD,IAAD,EAAa;AAChC,4BAAyC,MAAKY,QAAL,EAAzC,CAAQuD,aAAR,mBAAQA,aAAR,CAAuBjB,aAAvB,mBAAuBA,aAAvB;AACA,UAAI,MAAKJ,aAAT,EAAwB;AACtB,cAAKjB,QAAL,CAAc,EAAEO,IAAI,EAAE,cAAR,EAAwBQ,OAAO,EAAEM,aAAa,CAAClD,IAAD,CAA9C,EAAd,EAAsE,MAAK+C,eAA3E;AACD,OAFD,MAEO,IAAI,CAAC,MAAK5B,eAAL,CAAqBgD,aAArB,EAAoCnE,IAApC,CAAL,EAAgD;AACrD,cAAKuI,iBAAL,CAAuBpE,aAAa,CAACsB,MAAd,CAAqB,CAACzF,IAAD,CAArB,CAAvB;AACA,cAAK6B,QAAL,CAAc,EAAEO,IAAI,EAAE,aAAR,EAAd;AACA,cAAKsD,WAAL;AACD;AACF,K;;AAEO8C,IAAAA,iB,GAAoB,UAACxI,IAAD,EAAa;AACvC,YAAK4F,KAAL,CAAWT,aAAX,0BAAKS,KAAL,CAAWT,aAAX,CAA2B,MAAKvE,QAAL,GAAgBuD,aAAhB,CAA8BoB,MAA9B,CAAqC,UAACkD,CAAD,UAAO,CAAC,qBAAQA,CAAR,EAAWzI,IAAX,CAAR,EAArC,CAA3B;AACA,UAAM0I,oBAAoB,GAAG,MAAK5H,KAAL,CAAWzB,YAAX,CAAwBkG,MAAxB,CAA+B,UAACkD,CAAD,UAAO,CAAC,qBAAQA,CAAR,EAAWzI,IAAX,CAAR,EAA/B,CAA7B;;AAEA,YAAK6B,QAAL,CAAc,EAAEO,IAAI,EAAE,mBAAR,EAA6BQ,OAAO,EAAE8F,oBAAtC,EAAd;AACA,UAAIA,oBAAoB,CAACzF,MAArB,KAAgC,CAApC,EAAuC;AACrC,cAAKwE,UAAL;AACD;;AAED,YAAK/B,WAAL;AACD,K;;AAEOiD,IAAAA,gB,GAAmB,UAACxG,KAAD,EAAuCmG,OAAvC,EAAsD;AAC/E,UAAMlH,KAAK,GAAG,MAAKN,KAAL,CAAWzB,YAAzB;AACA,UAAI8C,KAAK,CAACyG,OAAV,EAAmB;AACjB,YAAMpD,QAAQ,GAAG,MAAKrE,eAAL,CAAqB,MAAKL,KAAL,CAAWzB,YAAhC,EAA8CiJ,OAA9C;AACblH,QAAAA,KAAK,CAACmE,MAAN,CAAa,UAACvF,IAAD,UAAU,CAAC,qBAAQA,IAAR,EAAcsI,OAAd,CAAX,EAAb,CADa;AAETlH,QAAAA,KAFS,GAEFkH,OAFE,EAAjB;AAGA,cAAKzG,QAAL,CAAc,EAAEO,IAAI,EAAE,mBAAR,EAA6BQ,OAAO,EAAE4C,QAAtC,EAAd;AACD,OALD,MAKO;AACL,cAAK3D,QAAL,CAAc,EAAEO,IAAI,EAAE,mBAAR,EAA6BQ,OAAO,EAAE,CAAC0F,OAAD,CAAtC,EAAd;AACD;AACD,YAAKb,UAAL;AACD,K;;AAEOK,IAAAA,e,GAAkB,UAACQ,OAAD,EAAgB;AACxC,4BAAyC,MAAK1H,QAAL,EAAzC,CAAQuD,aAAR,mBAAQA,aAAR,CAAuBjB,aAAvB,mBAAuBA,aAAvB;AACA,UAAM5D,iBAAiB,GAAG6E,aAAa,CAACqC,SAAd,CAAwB,UAACxG,IAAD,UAAUA,IAAI,KAAKsI,OAAnB,EAAxB,CAA1B;AACA,YAAKzG,QAAL,CAAc,EAAEO,IAAI,EAAE,yBAAR,EAAmCQ,OAAO,EAAEtD,iBAA5C,EAAd;;AAEA,UAAI,MAAKwB,KAAL,CAAW7B,UAAX,KAA0B,EAA9B,EAAkC;AAChC,YAAI,MAAK6B,KAAL,CAAW5B,kBAAX,KAAkCC,SAAtC,EAAiD;AAC/C,gBAAK0C,QAAL,CAAc,EAAEO,IAAI,EAAE,qBAAR,EAA+BQ,OAAO,EAAE,MAAK9B,KAAL,CAAW7B,UAAnD,EAAd;AACD;AACF;AACD,YAAK4C,QAAL,CAAc,EAAEO,IAAI,EAAE,cAAR,EAAwBQ,OAAO,EAAEM,aAAa,CAACoF,OAAD,CAA9C,EAAd,EAAyE,MAAKZ,eAA9E;AACA,YAAK7F,QAAL,CAAc,EAAEO,IAAI,EAAE,0BAAR,EAAd;;AAEA,YAAKsD,WAAL;AACD,K;;AAEO3C,IAAAA,e,GAAkB,YAAM;AAC9B,UAAMoB,aAAa,GAAG,MAAKvD,QAAL,GAAgBuD,aAAtC;AACA,yBAA8D,MAAKrD,KAAnE,CAAQxB,iBAAR,gBAAQA,iBAAR,CAA2BL,UAA3B,gBAA2BA,UAA3B,CAAuCC,kBAAvC,gBAAuCA,kBAAvC;AACA,UAAM2J,UAAU,GAAG,MAAKjI,QAAL,GAAgBsE,WAAhB,CAA4BjG,UAA5B,CAAnB;AACA,UAAMuG,QAAQ,GAAGrB,aAAa,CAACsB,MAAd,CAAqB,EAArB,CAAjB;;AAEA,UAAI,CAAC,MAAKtE,eAAL,CAAqBgD,aAArB,EAAoC0E,UAApC,CAAL,EAAsD;AACpDrD,QAAAA,QAAQ,CAACsD,MAAT,OAAAtD,QAAQ,GAAQlG,iBAAR,EAA2B,CAA3B,SAAkCL,UAAU,KAAK,EAAf,GAAoB,CAAC4J,UAAD,CAApB,GAAmC,EAArE,EAAR;AACA,cAAKN,iBAAL,CAAuB/C,QAAvB;AACD;;AAED,YAAK3D,QAAL,CAAc,EAAEO,IAAI,EAAE,4BAAR,EAAd;;AAEA,UAAIlD,kBAAJ,EAAwB;AACtB,cAAK2C,QAAL,CAAc,EAAEO,IAAI,EAAE,cAAR,EAAwBQ,OAAO,EAAE1D,kBAAjC,EAAd;AACA,cAAK2C,QAAL,CAAc,EAAEO,IAAI,EAAE,wBAAR,EAAd;AACD,OAHD,MAGO;AACL,cAAKP,QAAL,CAAc,EAAEO,IAAI,EAAE,aAAR,EAAd;AACD;;AAED,UAAIoD,QAAQ,CAACvC,MAAT,KAAoBkB,aAAa,CAAClB,MAAtC,EAA8C;AAC5C,cAAKpB,QAAL,CAAc,EAAEO,IAAI,EAAE,mBAAR,EAA6BQ,OAAO,EAAE,CAAC4C,QAAQ,CAAClG,iBAAD,CAAT,CAAtC,EAAd;AACD;AACF,K;;AAEO+D,IAAAA,uB,GAA0B,YAAM;AACtC,UAAQpE,UAAR,GAAuB,MAAK6B,KAA5B,CAAQ7B,UAAR;AACA,UAAQ8J,iBAAR,GAA8B,MAAKnD,KAAnC,CAAQmD,iBAAR;;AAEA,UAAIA,iBAAJ,EAAuB;AACrB;AACA,YAAMC,aAAa,GAAGD,iBAAiB,CAAC9J,UAAD,CAAvC;;AAEA,YAAI+J,aAAa,KAAK7J,SAAtB,EAAiC;AAC/B;AACD;;AAED,YAAI6J,aAAa,KAAK,IAAtB,EAA4B;AAC1B,gBAAKnH,QAAL,CAAc,EAAEO,IAAI,EAAE,aAAR,EAAd,EAAuC,YAAM;AAC3C,gBAAI,MAAKU,aAAT,EAAwB;AACtB,oBAAKC,eAAL;AACD;AACF,WAJD;;AAMA;AACD;;AAED,YAAIiG,aAAJ,EAAmB;AACjB,gBAAK7F,UAAL,CAAgB6F,aAAhB;AACD;AACF;AACF,K;;AAEOC,IAAAA,sB,GAAyB,UAAC9G,KAAD,EAA6C;AAC5E,YAAKN,QAAL,CAAc,EAAEO,IAAI,EAAE,0BAAR,EAAd;AACA,UAAIuD,KAAK,GAAGxD,KAAK,CAAC2B,MAAN,CAAazC,KAAb,CAAmB6H,QAAnB,EAAZ;;AAEA,UAAIvD,KAAK,CAACwD,QAAN,CAAe,GAAf,CAAJ,EAAyB;AACvBxD,QAAAA,KAAK,GAAGA,KAAK,CAACyD,SAAN,KAAoB,GAA5B;AACD;AACD,UAAI,MAAKtI,KAAL,CAAW7B,UAAX,KAA0B,EAA1B,IAAgC0G,KAAK,KAAK,EAA9C,EAAkD;AAChD,cAAK9D,QAAL,CAAc,EAAEO,IAAI,EAAE,wBAAR,EAAkCQ,OAAO,EAAEzD,SAA3C,EAAd;AACD;AACD,YAAK0C,QAAL,CAAc,EAAEO,IAAI,EAAE,cAAR,EAAwBQ,OAAO,EAAE+C,KAAjC,EAAd,EAAwD,YAAM;AAC5D,cAAKD,WAAL,CAAiBC,KAAjB;AACD,OAFD;AAGA,UAAI,MAAKC,KAAL,CAAWyD,kBAAf,EAAmC;AACjC,cAAKzD,KAAL,CAAWyD,kBAAX,CAA8B1D,KAA9B;AACD;AACF,K;;AAEOW,IAAAA,iB,GAAoB,YAAM;AAChC;AACE,YAAKhD,OAAL;AACA,YAAKxC,KAAL,CAAW1B,iBADX;AAEA,YAAK0B,KAAL,CAAW1B,iBAAX,CAA6B6D,MAA7B,GAAsC,CAFtC;AAGA,YAAKb,IAAL,KAAcrD,cAAc,CAACuK,QAJ/B;AAKE;AACA,cAAKhG,OAAL,CAAaoD,aAAb,CAA2B,CAA3B;AACD;AACF,K;;AAEO6C,IAAAA,iB,GAAoB,YAAM;AAChC,UAAQjK,iBAAR,GAA8B,MAAKwB,KAAnC,CAAQxB,iBAAR;AACA,UAAM6E,aAAa,GAAG,MAAKvD,QAAL,GAAgBuD,aAAtC;AACA,UAAMiB,SAAS,GAAG9F,iBAAiB,IAAI,CAArB,GAAyBA,iBAAzB,GAA6C6E,aAAa,CAAClB,MAA7E;AACA,aAAOkB,aAAa,CAACqF,KAAd,CAAoB,CAApB,EAAuBpE,SAAvB,EAAkCd,GAAlC,CAAsC,MAAKmF,WAA3C,CAAP;AACD,K;;AAEOC,IAAAA,e,GAAkB,YAAM;AAC9B,UAAI,MAAK5I,KAAL,CAAWxB,iBAAX,IAAgC,CAApC,EAAuC;AACrC,eAAO,MAAKsB,QAAL;AACJuD,QAAAA,aADI,CACUqF,KADV,CACgB,MAAK1I,KAAL,CAAWxB,iBAAX,GAA+B,CAD/C;AAEJgF,QAAAA,GAFI,CAEA,MAAKmF,WAFL,CAAP;AAGD;AACF,K;;AAEOA,IAAAA,W,GAAc,UAACzJ,IAAD,EAAa;AACjC,wBAAuD,MAAK4F,KAA5D,qCAAQ6D,WAAR,CAAQA,WAAR,sCAAsBtJ,kBAAtB,yBAA0CK,QAA1C,eAA0CA,QAA1C;;AAEA,UAAMJ,QAAQ,GAAG,MAAKU,KAAL,CAAWzB,YAAX,CAAwBiC,QAAxB,CAAiCtB,IAAjC,CAAjB;;AAEA;AACA,UAAM2J,eAAqD,GAAG,SAAxDA,eAAwD,CAACxH,KAAD,EAAW;AACvEA,QAAAA,KAAK,CAACkD,eAAN;AACA,YAAI,CAAC,MAAKvC,aAAV,EAAyB;AACvB,gBAAK0F,iBAAL,CAAuBxI,IAAvB;AACD;AACF,OALD;;AAOA;AACA,UAAM2I,gBAAyD,GAAG,SAA5DA,gBAA4D,CAACxG,KAAD,EAAW;AAC3EA,QAAAA,KAAK,CAACkD,eAAN;AACA,YAAI,CAAC,MAAKvC,aAAV,EAAyB;AACvB,gBAAK6F,gBAAL,CAAsBxG,KAAtB,EAA6BnC,IAA7B;AACD;AACF,OALD;;AAOA,UAAM4J,sBAA+D,GAAG,SAAlEA,sBAAkE,CAACzH,KAAD,EAAW;AACjFA,QAAAA,KAAK,CAACkD,eAAN;AACA,YAAI,CAAC,MAAKvC,aAAV,EAAyB;AACvB,gBAAKgF,eAAL,CAAqB9H,IAArB;AACD;AACF,OALD;;AAOA,aAAOyJ,WAAW,CAACzJ,IAAD,EAAO;AACvBI,QAAAA,QAAQ,EAARA,QADuB;AAEvBC,QAAAA,OAAO,EAAEsI,gBAFc;AAGvBrI,QAAAA,aAAa,EAAEsJ,sBAHQ;AAIvBrJ,QAAAA,QAAQ,EAAEoJ,eAJa;AAKvBnJ,QAAAA,QAAQ,EAARA,QALuB,EAAP,CAAlB;;AAOD,K;;AAEOqJ,IAAAA,e,GAAkB,UAACxI,KAAD,EAAgE,KAA/DA,KAA+D,cAA/DA,KAA+D,GAAvD,MAAKP,KAAL,CAAW7B,UAA4C;AACxF,UAAI,CAAC,MAAK6K,eAAV,EAA2B;AACzB;AACD;;AAED,UAAI,MAAKlE,KAAL,CAAWiE,eAAf,EAAgC;AAC9B,eAAO,MAAKjE,KAAL,CAAWiE,eAAX,CAA2BxI,KAA3B,EAAkC,MAAK6F,aAAvC,CAAP;AACD;;AAED,yBAA6C,MAAK6C,MAAlD,CAAQC,gBAAR,gBAAQA,gBAAR,CAA0BC,cAA1B,gBAA0BA,cAA1B;;AAEA;AACE,qCAAC,kBAAD,IAAU,OAAO,EAAE,MAAK/C,aAAxB,EAAuC,OAAO,EAAE8C,gBAAhD,EAAkE,GAAG,EAAC,iBAAtE;AACGC,QAAAA,cADH,OACoB5I,KADpB,CADF;;;AAKD,K,wDAnyBM6I,iB,GAAP,6BAA2B,CACzB,KAAKC,oBAAL,GACAzG,QAAQ,CAAC0G,gBAAT,CAA0B,MAA1B,EAAkC,KAAKnG,UAAvC,EACA,IAAI,KAAK2B,KAAL,CAAWyE,SAAf,EAA0B,CACxB,KAAK5C,UAAL,GACD,CACF,C,QAEM6C,kB,GAAP,4BAA0BC,SAA1B,EAA2EtI,SAA3E,EAA0G,CACxG,IAAIA,SAAS,CAAChD,UAAV,KAAyB,KAAK6B,KAAL,CAAW7B,UAAxC,EAAoD,CAClD,KAAKkL,oBAAL,GACD,CACD,IAAIlI,SAAS,CAAC5C,YAAV,CAAuB4D,MAAvB,KAAkC,CAAlC,IAAuC,KAAKnC,KAAL,CAAWzB,YAAX,CAAwB4D,MAAxB,GAAiC,CAA5E,EAA+E,CAC7E,KAAKpB,QAAL,CAAc,EACZO,IAAI,EAAE,wBADM,EAEZQ,OAAO,EAAEzD,SAFG,EAAd,EAID,CACD,IAAIoL,SAAS,CAACpG,aAAV,CAAwBlB,MAAxB,KAAmC,KAAKrC,QAAL,GAAgBuD,aAAhB,CAA8BlB,MAArE,EAA6E,CAC3EmD,YAAY,CAACC,IAAb,GACD,CACD,IAAI,CAAC,KAAKmE,uBAAL,CAA6BvI,SAA7B,CAAD,IAA4C,KAAKiC,eAArD,EAAsE,CACpE,KAAKwB,WAAL,CAAiB,KAAK5C,aAAL,GAAqB,EAArB,GAA0B,KAAKhC,KAAL,CAAW7B,UAAtD,EACD,CACF,C,QAEMwL,oB,GAAP,gCAA8B,CAC5B/G,QAAQ,CAACgH,mBAAT,CAA6B,MAA7B,EAAqC,KAAKzG,UAA1C,EACD,C,CAED;AACF;AACA,K,QACSvB,K,GAAP,iBAAe,kBACb,qBAAK3B,KAAL,kCAAY2B,KAAZ,GACD,C,CAED;AACF;AACA,K,QACS4E,I,GAAP,gBAAc,kBACZ,qBAAKvG,KAAL,kCAAYuG,IAAZ,GACD,C,QAEMqD,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,qBACnB,IAAI,KAAKzI,IAAL,KAAcrD,cAAc,CAACiI,gBAA7B,IAAiD,CAAC,KAAKpB,KAAL,CAAWC,QAAjE,EAA2E,CACzE,MAAMiF,KAAK,CAAC,8BAA8B,KAAK1I,IAApC,CAAX,CACD,CAED,mBAWI,KAAKwD,KAXT,CACEmF,aADF,gBACEA,aADF,CAEEC,KAFF,gBAEEA,KAFF,CAGEC,OAHF,gBAGEA,OAHF,CAIEzK,QAJF,gBAIEA,QAJF,CAKE0K,WALF,gBAKEA,WALF,CAMEC,cANF,gBAMEA,cANF,CAOErF,yBAPF,gBAOEA,yBAPF,CAQEsF,SARF,gBAQEA,SARF,CASEC,gBATF,gBASEA,gBATF,CAUEC,UAVF,gBAUEA,UAVF,CAaA,sBAA+F,KAAK1K,QAAL,EAA/F,CAAQuD,aAAR,mBAAQA,aAAR,CAAuBoH,KAAvB,mBAAuBA,KAAvB,CAA8BC,YAA9B,mBAA8BA,YAA9B,CAA4CC,YAA5C,mBAA4CA,YAA5C,CAA0DC,SAA1D,mBAA0DA,SAA1D,CAAqEC,SAArE,mBAAqEA,SAArE,CAAgFC,UAAhF,mBAAgFA,UAAhF,CAEA,mBASI,KAAK9K,KATT,CACEzB,YADF,gBACEA,YADF,CAEEE,OAFF,gBAEEA,OAFF,CAGEG,eAHF,gBAGEA,eAHF,CAIET,UAJF,gBAIEA,UAJF,CAKEC,kBALF,gBAKEA,kBALF,CAMEE,iBANF,gBAMEA,iBANF,CAOEI,OAPF,gBAOEA,OAPF,CAQEG,gBARF,gBAQEA,gBARF,CAWA,IAAMkM,QAAQ,GACZ,KAAKzJ,IAAL,KAAcrD,cAAc,CAACiI,gBAA7B,IACA,KAAK9C,eADL,IAEA7E,YAAY,CAAC4D,MAAb,KAAwB,CAFxB,KAGChE,UAAU,KAAK,EAAf,IAAqB,CAAC6G,yBAHvB,CADF,CAMA,IAAM8E,KAAK,GAAG,KAAKA,KAAnB,CAEA,IAAMkB,UAAU,GAAGC,QAAQ,CAACnB,KAAK,CAACoB,oBAAP,EAA6B,EAA7B,CAAR,IAA4C,CAA/D,CAEA,IAAMC,iBAAsC,GAAG,EAC7C;AACAV,MAAAA,KAAK,EAAE7L,eAFsC,EAG7CwM,MAAM,EAAEC,IAAI,CAACC,GAAL,CAASN,UAAT,EAAqBnM,gBAArB,CAHqC,EAI7C;AACA0M,MAAAA,IAAI,EAAElI,aAAa,IAAIA,aAAa,CAAClB,MAAd,KAAyB,CAA1C,GAA8C,CAA9C,GAAkD9D,SALX,EAM7C;AACAmN,MAAAA,UAAU,EAAE,KAAKpI,eAAL,GAAuB/E,SAAvB,GAAmC,aAPF,EAA/C,CAUA,IAAMoN,cAAc,GAAG,iBAAGC,mBAAOC,KAAP,CAAa7B,KAAb,CAAH,iBACpB4B,mBAAOE,aAAP,CAAqB9B,KAArB,CADoB,IACU,CAAC,CAACpK,QADZ,MAEpBgM,mBAAOG,YAAP,CAAoB/B,KAApB,CAFoB,IAES,CAAC,CAACrL,OAFX,MAGpBiN,mBAAOxB,KAAP,CAAaJ,KAAb,CAHoB,IAGE,CAAC,CAACI,KAHJ,MAIpBwB,mBAAOvB,OAAP,CAAeL,KAAf,CAJoB,IAII,CAAC,CAACK,OAJN,OAAvB,CAMA,IAAM2B,cAAc,GAAG,iBAAGJ,mBAAOzL,KAAP,CAAa6J,KAAb,CAAH,mBACpB4B,mBAAOK,aAAP,CAAqBjC,KAArB,CADoB,IACU,CAAC,CAACpK,QADZ,OAEpBgM,mBAAOM,YAAP,CAAoBlC,KAApB,CAFoB,IAES,KAAK9H,aAFd,QAAvB,CAKA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKiK,WAAjC,IAAkD,KAAKnH,KAAvD,gBACE,sCAAK,YAAUhG,kBAAkB,CAACC,IAAlC,EAAwC,YAAY,EAAE2L,YAAtD,EAAoE,YAAY,EAAEC,YAAlF,iBACE,wCACE,GAAG,EAAE,KAAK7J,UADZ,EAEE,KAAK,EAAE,EAAE2J,KAAK,EAALA,KAAF,EAFT,EAGE,SAAS,EAAEgB,cAHb,EAIE,WAAW,EAAE,KAAK1I,sBAJpB,EAKE,SAAS,EAAE,KAAKG,oBALlB,iBAOE,6BAAC,gCAAD,IACE,GAAG,EAAE,KAAKrC,aADZ,EAEE,SAAS,EAAE,iBAAG6K,mBAAOQ,UAAP,CAAkBpC,KAAlB,CAAH,mBACR4B,mBAAOS,iBAAP,CAAyBrC,KAAzB,CADQ,IAC0B,KAAK9H,aAD/B,QAFb,EAKE,IAAI,EAAE7D,UALR,EAME,KAAK,EAAE,KAAK2L,KANd,GAPF,EAeG,KAAKrB,iBAAL,EAfH,eAgBE,2CACE,GAAG,EAAE,KAAK/H,QADZ,EAEE,KAAK,EAAEvC,UAFT,EAGE,KAAK,EAAEgN,iBAHT,EAIE,UAAU,EAAE,KAJd,EAKE,QAAQ,EAAEzL,QALZ,EAME,SAAS,EAAEoM,cANb,EAOE,WAAW,EAAEzI,aAAa,CAAClB,MAAd,GAAuB,CAAvB,GAA2B9D,SAA3B,GAAuC+L,WAPtD,EAQE,OAAO,EAAE,KAAKhJ,gBARhB,EASE,MAAM,EAAE,KAAKI,eATf,EAUE,QAAQ,EAAE,KAAK2G,sBAVjB,EAWE,SAAS,EAAE,KAAKtC,aAXlB,EAYE,OAAO,EAAE,KAAK7B,gBAZhB,EAaE,SAAS,EAAEsG,SAbb,GAhBF,EA+BGS,QAAQ,iBACP,6BAAC,8BAAD,IACE,GAAG,EAAE,KAAKnK,kBADZ,EAEE,KAAK,EAAEtC,iBAFT,EAGE,OAAO,EAAEI,OAHX,EAIE,MAAM,EAAEqM,QAJV,EAKE,aAAa,EAAEd,aALjB,EAME,aAAa,EAAEY,SAAS,KAAK,QAAd,GAAyB,KAAK5K,KAA9B,GAAuC,KAAKG,OAN7D,EAOE,cAAc,EAAEiK,cAPlB,EAQE,UAAU,EAAES,UARd,EASE,aAAa,EAAE,KAAKzI,UATtB,EAUE,eAAe,EAAE,KAAK0G,eAVxB,EAWE,SAAS,EAAE6B,SAXb,EAYE,SAAS,EAAEC,SAZb,EAaE,gBAAgB,EAAEN,gBAbpB,EAcE,UAAU,EAAEC,UAdd,GAhCJ,EAiDG,KAAK5B,eAAL,EAjDH,EAkDG,KAAK5G,aAAL,gBAAqB,uCAAM,SAAS,EAAE0J,mBAAOU,aAAP,CAAqBtC,KAArB,CAAjB,IAA+C1L,kBAA/C,CAArB,GAAiG,IAlDpG,CADF,CADF,CADF,CA0DD,C,CAED;AACF;AACA;AACA,K,QACSiO,K,GAAP,iBAAe,CACb,KAAKtL,QAAL,CAAc,EAAEO,IAAI,EAAE,OAAR,EAAd,EACD,C,QA4COoI,uB,GAAR,iCAAgC1J,KAAhC,EAA2D,CACzD,OAAOA,KAAK,CAACvB,OAAN,KAAkBuB,KAAK,CAAC7B,UAAN,KAAqB,EAArB,IAA2B6B,KAAK,CAACzB,YAAN,CAAmB4D,MAAnB,KAA8B,CAA3E,CAAP,CACD,C,QAWOkH,oB,GAAR,gCAA+B,CAC7B,IAAI,KAAKlJ,UAAT,EAAqB,CACnB;AACA;AACA,UAAMvB,eAAe,GAAG0N,UAAU,CAAC,KAAKnM,UAAL,CAAgBoM,YAAhB,GAA+BC,OAA/B,CAAuC,CAAvC,CAAD,CAAlC,CACA,IAAM3N,gBAAgB,GAAGyN,UAAU,CAAC,KAAKnM,UAAL,CAAgBsM,aAAhB,GAAgCD,OAAhC,CAAwC,CAAxC,CAAD,CAAnC,CAEA,KAAKzL,QAAL,CAAc,EAAEO,IAAI,EAAE,uBAAR,EAAiCQ,OAAO,EAAElD,eAA1C,EAAd,EAA2E0G,YAAY,CAACC,IAAxF,EACA,KAAKxE,QAAL,CAAc,EAAEO,IAAI,EAAE,wBAAR,EAAkCQ,OAAO,EAAEjD,gBAA3C,EAAd,EAA6EyG,YAAY,CAACC,IAA1F,EACD,CACF,C,QA4POkB,oB,GAAR,gCAA+B,CAC7B,IAAMnG,KAAK,GAAG,KAAKR,QAAL,GAAgBuD,aAA9B,CACA,IAAI,KAAKrD,KAAL,CAAW7B,UAAX,KAA0B,EAA1B,IAAgCmC,KAAhC,IAAyCA,KAAK,CAAC6B,MAAN,GAAe,CAA5D,EAA+D,CAC7D,KAAKpB,QAAL,CAAc,EAAEO,IAAI,EAAE,mBAAR,EAA6BQ,OAAO,EAAExB,KAAK,CAACoI,KAAN,CAAY,CAAC,CAAb,CAAtC,EAAd,EACD,CACF,C,wEA1TD,eAA8B,CAC5B,IAAMpI,KAAK,GAAG,KAAKN,KAAL,CAAW1B,iBAAzB,CACA,IAAMiC,KAAK,GAAG,KAAKT,QAAL,GAAgBsE,WAAhB,CAA4B,KAAKpE,KAAL,CAAW7B,UAAvC,CAAd,CAEA,IAAImC,KAAK,IAAI,KAAKD,eAAL,CAAqBC,KAArB,EAA4BC,KAA5B,CAAb,EAAiD,CAC/C,OAAO,KAAP,CACD,CAED,IAAM8C,aAAa,GAAG,KAAKvD,QAAL,GAAgBuD,aAAtC,CACA,IAAIA,aAAa,IAAI,KAAKhD,eAAL,CAAqBgD,aAArB,EAAoC9C,KAApC,CAArB,EAAiE,CAC/D,OAAO,KAAP,CACD,CAED,IAAI,KAAKe,IAAL,KAAcrD,cAAc,CAACuK,QAA7B,IAAyC,KAAKxI,KAAL,CAAW7B,UAAX,KAA0B,EAAvE,EAA2E,CACzE,OAAO,IAAP,CACD,CACF,C,wBAED,eAAmB,CACjB,OAAO,KAAK2G,KAAL,CAAWxD,IAAX,GAAkB,KAAKwD,KAAL,CAAWxD,IAA7B,GAAoCrD,cAAc,CAACgG,aAA1D,CACD,C,2BAED,eAAmC,CACjC,OAAO,KAAK/D,eAAL,IAAwB,KAAKA,eAAL,CAAqBwC,UAArB,EAA/B,CACD,C,mCAED,eAA8B,CAC5B,OAAO,KAAKgH,uBAAL,CAA6B,KAAK1J,KAAlC,CAAP,CACD,C,iCAED,eAA4B,CAC1B,OAAO,KAAKA,KAAL,CAAWxB,iBAAX,GAA+B,CAAC,CAAvC,CACD,C,kCAqFD,eAA6B,CAC3B,IAAI,KAAKwD,aAAT,EAAwB,CACtB,OAAO,KAAKE,mBAAZ,CACD,CAED,OAAO,KAAKwK,mBAAZ,CACD,C,uCAED,eAAkC,CAChC,IAAQvO,UAAR,GAAuB,KAAK6B,KAA5B,CAAQ7B,UAAR,CAEA,OAAOA,UAAU,KAAK,EAAtB,CACD,C,uCAED,eAAkC,CAChC,mBAA0C,KAAK6B,KAA/C,CAAQ7B,UAAR,gBAAQA,UAAR,CAAoBK,iBAApB,gBAAoBA,iBAApB,CACA,sBAAyC,KAAKsB,QAAL,EAAzC,CAAQsC,aAAR,mBAAQA,aAAR,CAAuBiB,aAAvB,mBAAuBA,aAAvB,CAEA,IAAI,KAAKrB,aAAT,EAAwB,CACtB,OAAOI,aAAa,CAACiB,aAAa,CAAC7E,iBAAD,CAAd,CAAb,KAAoDL,UAA3D,CACD,CAED,OAAO,KAAP,CACD,C,yBA9WyCwO,eAAMC,a,WAClCC,mB,GAAsB,Y,UAEtB9M,Y,GAAkC,EAC9CsD,aAAa,EAAE,EAD+B,EAE9CC,UAAU,EAAE,CAAC,GAAD,EAAM,GAAN,CAFkC,EAG9CwH,UAAU,EAAE1L,QAHkC,EAI9C0N,WAAW,EAAE1N,QAJiC,EAK9CgD,aAAa,EAAEhD,QAL+B,EAM9CgF,WAAW,EAAE,qBAAClF,IAAD,UAAkBA,IAAlB,EANiC,EAO9C6N,KAAK,EAAE9N,YAPuC,EAQ9CoF,aAAa,EAAE,iCAAM,KAAK,CAAX,EAR+B,EAS9CoG,KAAK,EAAE,GATuC,EAU9C1I,MAAM,EAAEiL,mBAVsC,EAW9CzL,OAAO,EAAEyL,mBAXqC,EAY9CtC,YAAY,EAAEsC,mBAZgC,EAa9CrC,YAAY,EAAEqC,mBAbgC,EAc9CpC,SAAS,EAAE,MAdmC,EAe9CC,SAAS,EAAE,QAfmC,E","sourcesContent":["import React, { ChangeEvent, FocusEvent, FocusEventHandler, KeyboardEvent, MouseEventHandler, ReactNode } from 'react';\nimport isEqual from 'lodash.isequal';\n\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Menu } from '../../internal/Menu';\nimport { Token, TokenProps } from '../Token';\nimport { MenuItemState } from '../MenuItem';\nimport { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { TokenInputLocale, TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport { TokenInputAction, tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T> extends CommonProps {\n selectedItems?: T[];\n onValueChange?: (items: T[]) => void;\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n type?: TokenInputType;\n /**\n * Ширина выпадающего меню может быть указана как 'auto'\n * а также в пикселях, процентах (от ширины инпута)\n * или других конкретных единицах\n *\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto'\n * (по ширине текста)\n */\n menuWidth?: React.CSSProperties['width'];\n menuAlign?: TokenInputMenuAlign;\n\n /**\n * Функция поиска элементов, должна возвращать Promise с массивом элементов.\n * По умолчанию ожидаются строки.\n *\n * Элементы могут быть любого типа. В этом случае необходимо определить\n * свойства `renderItem`, `valueToString`\n */\n getItems?: (query: string) => Promise<T[]>;\n hideMenuIfEmptyInputValue?: boolean;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n renderValue?: (item: T) => React.ReactNode;\n /**\n * Функция должна возвращать строковое представление токена\n * @default item => item\n */\n valueToString?: (item: T) => string;\n /**\n * Функция отображающая сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`.\n */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n /**\n * Общее количество элементов.\n * Необходим для работы `renderTotalCount`\n */\n totalCount?: number;\n renderNotFound?: () => React.ReactNode;\n valueToItem?: (item: string) => T;\n toKey?: (item: T) => string | number | undefined;\n placeholder?: string;\n delimiters?: string[];\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n /**\n * Вызывается при изменении текста в поле ввода,\n */\n onInputValueChange?: (value: string) => void;\n /**\n * Функция отрисовки кнопки добавления в выпадающем списке\n */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n /**\n * Функция для обработки ситуации, когда была введена\n * строка в инпут и был потерян фокус с компонента\n *\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один\n * элемент и результат `valueToString` с этим элементом будет\n * совпадать со значение в текстовом поле, то\n * сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение,\n * неравное `undefined`, с которым будет вызван `onValueChange`.\n * Если возвращаемое значение будет равно `null`,\n * то сработает очистка текущего значения инпута,\n * а в режиме редактирования токен будет удален\n */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n >\n>;\n\nconst defaultToKey = <T extends {}>(item: T): string => item.toString();\nconst identity = <T extends {}>(item: T): T => item;\nconst defaultRenderToken = <T extends {}>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n >\n {item}\n </Token>\n);\n\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n delimiters: [',', ' '],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n };\n\n private getProps = createPropsGetter(TokenInput.defaultProps);\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.updateInputTextWidth();\n document.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n placeholder,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n inputValueHeight,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const lineHeight = parseInt(theme.tokenInputLineHeight, 10) || 0;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: Math.max(lineHeight, inputValueHeight),\n // input растягивается на всю ширину чтобы placeholder не обрезался\n flex: selectedItems && selectedItems.length === 0 ? 1 : undefined,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), {\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), {\n [styles.inputDisabled(theme)]: !!disabled,\n [styles.inputEditing(theme)]: this.isEditingMode,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n >\n <TextWidthHelper\n ref={this.textHelperRef}\n classHelp={cx(styles.helperText(theme), {\n [styles.helperTextEditing(theme)]: this.isEditingMode,\n })}\n text={inputValue}\n theme={this.theme}\n />\n {this.renderTokensStart()}\n <textarea\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={selectedItems.length > 0 ? undefined : placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n />\n {showMenu && (\n <TokenInputMenu\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElement={menuAlign === 'cursor' ? this.input! : this.wrapper!}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? <span className={styles.reservedInput(theme)}>{reservedInputValue}</span> : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (state.inputValue !== '' || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n requestAnimationFrame(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = (event.relatedTarget || document.activeElement) as HTMLElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken =\n target && this.wrapper?.contains(target) && target !== this.wrapper! && target !== this.input!;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n let paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n for (const delimiter of delimiters) {\n paste = paste.split(delimiter).join(delimiters[0]);\n }\n const tokens = paste.split(delimiters[0]);\n const items = tokens\n .map((token) => valueToItem(token))\n .filter((item) => !this.hasValueInItems(selectedItems, item!));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.state.inputValue !== '' || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n if (this.menuRef) {\n this.menuRef.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex);\n }\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n\n switch (true) {\n case isKeyEnter(e):\n if (this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n this.moveFocusToLastToken();\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n requestAnimationFrame(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n if (!this.isEditingMode) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems,\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = activeItemIndex + (isKeyArrowLeft(e) ? -1 : +1);\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = activeItemIndex === selectedItems.length - 1 && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.state.inputValue !== '') {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const selectedItems = this.getProps().selectedItems;\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const editedItem = this.getProps().valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.state.inputValue !== '' && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenEdit(item);\n }\n };\n\n return renderToken(item, {\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n}\n"]}
@@ -45,7 +45,7 @@ export interface TooltipProps extends CommonProps {
45
45
  /**
46
46
  * Значение по умолчанию: `"top left"`.
47
47
  */
48
- pos: PopupPositionsType;
48
+ pos?: PopupPositionsType;
49
49
  /**
50
50
  * Триггер открытия тултипа
51
51
  * ```ts
@@ -60,7 +60,7 @@ export interface TooltipProps extends CommonProps {
60
60
  * | 'manual';
61
61
  * ```
62
62
  */
63
- trigger: TooltipTrigger;
63
+ trigger?: TooltipTrigger;
64
64
  /**
65
65
  * Хэндлер, вызываемый при клике по крестику
66
66
  */
@@ -85,18 +85,18 @@ export interface TooltipProps extends CommonProps {
85
85
  * следующая позиция. Обязательно должен включать
86
86
  * позицию указанную в `pos`
87
87
  */
88
- allowedPositions: PopupPositionsType[];
88
+ allowedPositions?: PopupPositionsType[];
89
89
  /**
90
90
  * Флаг отключения анимации.
91
91
  * @default false
92
92
  */
93
- disableAnimations: boolean;
93
+ disableAnimations?: boolean;
94
94
  /**
95
95
  * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.
96
96
  *
97
97
  * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
98
98
  */
99
- useWrapper: boolean;
99
+ useWrapper?: boolean;
100
100
  }
101
101
  export interface TooltipState {
102
102
  opened: boolean;
@@ -106,20 +106,15 @@ export declare const TooltipDataTids: {
106
106
  readonly root: "Tooltip__root";
107
107
  readonly content: "Tooltip__content";
108
108
  };
109
+ declare type DefaultProps = Required<Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>>;
109
110
  export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
110
111
  static __KONTUR_REACT_UI__: string;
111
112
  private isMobileLayout;
112
113
  static propTypes: {
113
114
  children(props: TooltipProps, propName: keyof TooltipProps, componentName: string): void;
114
115
  };
115
- static defaultProps: {
116
- pos: "top left";
117
- trigger: string;
118
- allowedPositions: ("top left" | "top center" | "top right" | "right top" | "right middle" | "right bottom" | "bottom right" | "bottom center" | "bottom left" | "left bottom" | "left middle" | "left top")[];
119
- disableAnimations: boolean;
120
- useWrapper: boolean;
121
- closeOnChildrenMouseLeave: boolean;
122
- };
116
+ static defaultProps: DefaultProps;
117
+ private getProps;
123
118
  static delay: number;
124
119
  private static triggersWithoutCloseButton;
125
120
  state: TooltipState;
@@ -153,7 +148,7 @@ export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipSt
153
148
  private mobileCloseHandler;
154
149
  private refContent;
155
150
  private getPositions;
156
- private getProps;
151
+ private getPopupAndLayerProps;
157
152
  private open;
158
153
  private close;
159
154
  private clearHoverTimeout;
@@ -166,3 +161,4 @@ export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipSt
166
161
  private handleBlur;
167
162
  private handleCloseButtonClick;
168
163
  }
164
+ export {};
@@ -17,6 +17,7 @@ var _CommonWrapper = require("../../internal/CommonWrapper");
17
17
  var _decorator = require("../ResponsiveLayout/decorator");
18
18
  var _rootNode = require("../../lib/rootNode");
19
19
 
20
+ var _createPropsGetter = require("../../lib/createPropsGetter");
20
21
 
21
22
  var _Tooltip = require("./Tooltip.styles");var _class, _class2, _temp;
22
23
 
@@ -157,6 +158,10 @@ var Positions = [
157
158
 
158
159
 
159
160
 
161
+
162
+
163
+
164
+
160
165
  Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {(0, _inheritsLoose2.default)(Tooltip, _React$PureComponent);function Tooltip() {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.
161
166
 
162
167
 
@@ -184,6 +189,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
184
189
 
185
190
 
186
191
 
192
+ getProps = (0, _createPropsGetter.createPropsGetter)(Tooltip.defaultProps);_this.
187
193
 
188
194
 
189
195
 
@@ -240,7 +246,6 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
240
246
 
241
247
 
242
248
 
243
-
244
249
 
245
250
 
246
251
  renderContent = function () {
@@ -351,12 +356,16 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
351
356
 
352
357
 
353
358
 
359
+
360
+
361
+
354
362
 
355
363
 
356
364
 
357
365
 
358
366
  mobileCloseHandler = function () {
359
- if (_this.props.trigger === 'manual' || _this.props.trigger === 'closed' || _this.props.trigger === 'opened') {
367
+ var trigger = _this.getProps().trigger;
368
+ if (trigger === 'manual' || trigger === 'closed' || trigger === 'opened') {
360
369
  return;
361
370
  }
362
371
 
@@ -463,6 +472,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
463
472
 
464
473
 
465
474
 
475
+
466
476
 
467
477
 
468
478
  open = function () {return _this.setState({ opened: true });};_this.
@@ -477,7 +487,7 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
477
487
 
478
488
 
479
489
  handleMouseEnter = function (event) {
480
- var isHoverAnchor = _this.props.trigger === 'hoverAnchor';
490
+ var isHoverAnchor = _this.getProps().trigger === 'hoverAnchor';
481
491
  if (isHoverAnchor && event.target === _this.contentElement) {
482
492
  return;
483
493
  }
@@ -491,17 +501,17 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
491
501
  if (_this.isMobileLayout) {
492
502
  return;
493
503
  }
494
-
504
+ var trigger = _this.getProps().trigger;
495
505
  if (
496
- _this.props.trigger === 'hover&focus' && _this.state.focused ||
497
- _this.props.trigger === 'hover' && event.relatedTarget === _this.contentElement)
506
+ trigger === 'hover&focus' && _this.state.focused ||
507
+ trigger === 'hover' && event.relatedTarget === _this.contentElement)
498
508
  {
499
509
  return;
500
510
  }
501
511
 
502
512
  _this.clearHoverTimeout();
503
513
 
504
- if (_this.props.trigger === 'hoverAnchor') {
514
+ if (trigger === 'hoverAnchor') {
505
515
  _this.close();
506
516
  } else {
507
517
  _this.hoverTimeout = window.setTimeout(_this.close, Tooltip.delay);
@@ -536,11 +546,12 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
536
546
  };_this.
537
547
 
538
548
  handleBlur = function () {
539
- if (_this.props.trigger === 'hover&focus' && _this.clickedOutside) {
549
+ var trigger = _this.getProps().trigger;
550
+ if (trigger === 'hover&focus' && _this.clickedOutside) {
540
551
  _this.close();
541
552
  }
542
553
 
543
- if (_this.props.trigger === 'focus') {
554
+ if (trigger === 'focus') {
544
555
  _this.close();
545
556
  }
546
557
 
@@ -564,12 +575,12 @@ Tooltip = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_cla
564
575
  }
565
576
 
566
577
  _this.close();
567
- };return _this;}var _proto = Tooltip.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.props.trigger === 'closed' && this.state.opened) {this.close();}var _this$props = this.props,allowedPositions = _this$props.allowedPositions,pos = _this$props.pos;var posChanged = prevProps.pos !== pos;var allowedChanged = !(0, _lodash.default)(prevProps.allowedPositions, allowedPositions);if (posChanged || allowedChanged) {this.positions = null;}};_proto.componentWillUnmount = function componentWillUnmount() {this.clearHoverTimeout();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.tooltipPinOffset, popupMargin: theme.tooltipMargin, popupBorder: theme.tooltipBorder, popupBorderRadius: theme.tooltipBorderRadius, popupPinSize: theme.tooltipPinSize, popupPinOffsetX: theme.tooltipPinOffsetX, popupPinOffsetY: theme.tooltipPinOffsetY }, theme) }, _this2.renderMain());});};_proto.renderCloseButton = function renderCloseButton() {var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.props.trigger) : this.props.closeButton;if (!hasCross || this.isMobileLayout) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: _Tooltip.styles.cross(this.theme), onClick: this.handleCloseButtonClick }, /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null));}; /**
578
+ };return _this;}var _proto = Tooltip.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var _this$getProps = this.getProps(),trigger = _this$getProps.trigger,allowedPositions = _this$getProps.allowedPositions,pos = _this$getProps.pos;if (trigger === 'closed' && this.state.opened) {this.close();}var posChanged = prevProps.pos !== pos;var allowedChanged = !(0, _lodash.default)(prevProps.allowedPositions, allowedPositions);if (posChanged || allowedChanged) {this.positions = null;}};_proto.componentWillUnmount = function componentWillUnmount() {this.clearHoverTimeout();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.tooltipPinOffset, popupMargin: theme.tooltipMargin, popupBorder: theme.tooltipBorder, popupBorderRadius: theme.tooltipBorderRadius, popupPinSize: theme.tooltipPinSize, popupPinOffsetX: theme.tooltipPinOffsetX, popupPinOffsetY: theme.tooltipPinOffsetY }, theme) }, _this2.renderMain());});};_proto.renderCloseButton = function renderCloseButton() {var hasCross = this.props.closeButton === undefined ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger) : this.props.closeButton;if (!hasCross || this.isMobileLayout) {return null;}return /*#__PURE__*/_react.default.createElement("div", { className: _Tooltip.styles.cross(this.theme), onClick: this.handleCloseButtonClick }, /*#__PURE__*/_react.default.createElement(_CrossIcon.CrossIcon, null));}; /**
568
579
  * Программно открывает тултип.
569
580
  * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
570
581
  * @public
571
- */_proto.show = function show() {if (this.state.opened) {return;}if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {(0, _warning.default)(true, "Function 'show' is not supported with trigger specified '" + this.props.trigger + "'");return;}this.open();} /**
582
+ */_proto.show = function show() {if (this.state.opened) {return;}var trigger = this.getProps().trigger;if (trigger === 'opened' || trigger === 'closed') {(0, _warning.default)(true, "Function 'show' is not supported with trigger specified '" + trigger + "'");return;}this.open();} /**
572
583
  * Программно закрывает тултип.
573
584
  * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>
574
585
  * @public
575
- */;_proto.hide = function hide() {if (this.props.trigger === 'opened' || this.props.trigger === 'closed') {(0, _warning.default)(true, "Function 'hide' is not supported with trigger specified '" + this.props.trigger + "'");return;}this.close();};_proto.renderMain = function renderMain() {var props = this.props;var content = this.renderContent();var _this$getProps = this.getProps(),popupProps = _this$getProps.popupProps,_this$getProps$layerP = _this$getProps.layerProps,layerProps = _this$getProps$layerP === void 0 ? { active: false } : _this$getProps$layerP;var anchorElement = props.children || props.anchorElement;var popup = this.renderPopup(anchorElement, popupProps, content);if (this.isMobileLayout) {return popup;}return /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, (0, _extends2.default)({}, layerProps, { getAnchorElement: this.getAnchorElement }), popup);};_proto.renderPopup = function renderPopup(anchorElement, popupProps, content) {return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_Popup.Popup, (0, _extends2.default)({ "data-tid": TooltipDataTids.root, anchorElement: anchorElement, hasPin: true, hasShadow: true, maxWidth: "none", opened: this.state.opened, disableAnimations: this.props.disableAnimations, positions: this.getPositions(), ignoreHover: this.props.trigger === 'hoverAnchor', onOpen: this.props.onOpen, onClose: this.props.onClose, mobileOnCloseRequest: this.mobileCloseHandler, tryPreserveFirstRenderedPosition: true, ref: this.popupRef }, popupProps), content));};_proto.getPositions = function getPositions() {if (!this.positions) {var allowedPositions = this.props.allowedPositions;var index = allowedPositions.indexOf(this.props.pos);if (index === -1) {throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));}this.positions = [].concat(allowedPositions.slice(index), allowedPositions.slice(0, index));}return this.positions;};_proto.getProps = function getProps() {var props = this.props;var useWrapper = !!props.children && props.useWrapper;switch (this.props.trigger) {case 'opened':return { layerProps: { active: true, onClickOutside: this.handleClickOutsideAnchor }, popupProps: { opened: true, useWrapper: useWrapper } };case 'closed':return { popupProps: { opened: false, useWrapper: useWrapper } };case 'hoverAnchor':case 'hover':return { popupProps: { onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, useWrapper: useWrapper } };case 'manual':return { popupProps: { useWrapper: useWrapper } };case 'click':return { layerProps: { active: this.state.opened, onClickOutside: this.handleClickOutsideAnchor }, popupProps: { onClick: this.handleClick, useWrapper: useWrapper } };case 'focus':return { popupProps: { onFocus: this.handleFocus, onBlur: this.handleBlur, useWrapper: useWrapper } };case 'hover&focus':return { layerProps: { active: this.state.opened, onClickOutside: this.handleClickOutsideAnchor }, popupProps: { onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, useWrapper: useWrapper } };default:throw new Error('Unknown trigger specified: ' + props.trigger);}};_proto.clearHoverTimeout = function clearHoverTimeout() {if (this.hoverTimeout) {clearTimeout(this.hoverTimeout);this.hoverTimeout = null;}};_proto.isClickOutsideContent = function isClickOutsideContent(event) {if (this.contentElement && event.target instanceof Element) {return !(0, _listenFocusOutside.containsTargetOrRenderContainer)(event.target)(this.contentElement);}return true;};return Tooltip;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'Tooltip', _class2.propTypes = { children: function children(props, propName, componentName) {var children = props[propName];(0, _warning.default)(children || props.anchorElement, "[" + componentName + "]: you must provide either 'children' or 'anchorElement' prop for " + componentName + " to work properly");(0, _warning.default)(!(Array.isArray(children) && props.useWrapper === false), "[" + componentName + "]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly");} }, _class2.defaultProps = { pos: _Popup.DefaultPosition, trigger: 'hover', allowedPositions: Positions, disableAnimations: _currentEnvironment.isTestEnv, useWrapper: false, closeOnChildrenMouseLeave: false }, _class2.delay = 100, _class2.triggersWithoutCloseButton = ['hover', 'hoverAnchor', 'focus', 'hover&focus'], _temp)) || _class) || _class;exports.Tooltip = Tooltip;
586
+ */;_proto.hide = function hide() {var trigger = this.getProps().trigger;if (trigger === 'opened' || trigger === 'closed') {(0, _warning.default)(true, "Function 'hide' is not supported with trigger specified '" + trigger + "'");return;}this.close();};_proto.renderMain = function renderMain() {var props = this.props;var content = this.renderContent();var _this$getPopupAndLaye = this.getPopupAndLayerProps(),popupProps = _this$getPopupAndLaye.popupProps,_this$getPopupAndLaye2 = _this$getPopupAndLaye.layerProps,layerProps = _this$getPopupAndLaye2 === void 0 ? { active: false } : _this$getPopupAndLaye2;var anchorElement = props.children || props.anchorElement;var popup = this.renderPopup(anchorElement, popupProps, content);if (this.isMobileLayout) {return popup;}return /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, (0, _extends2.default)({}, layerProps, { getAnchorElement: this.getAnchorElement }), popup);};_proto.renderPopup = function renderPopup(anchorElement, popupProps, content) {var _this$getProps2 = this.getProps(),disableAnimations = _this$getProps2.disableAnimations,trigger = _this$getProps2.trigger;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_Popup.Popup, (0, _extends2.default)({ "data-tid": TooltipDataTids.root, anchorElement: anchorElement, hasPin: true, hasShadow: true, maxWidth: "none", opened: this.state.opened, disableAnimations: disableAnimations, positions: this.getPositions(), ignoreHover: trigger === 'hoverAnchor', onOpen: this.props.onOpen, onClose: this.props.onClose, mobileOnCloseRequest: this.mobileCloseHandler, tryPreserveFirstRenderedPosition: true, ref: this.popupRef }, popupProps), content));};_proto.getPositions = function getPositions() {if (!this.positions) {var _this$getProps3 = this.getProps(),allowedPositions = _this$getProps3.allowedPositions,pos = _this$getProps3.pos;var index = allowedPositions.indexOf(pos);if (index === -1) {throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));}this.positions = [].concat(allowedPositions.slice(index), allowedPositions.slice(0, index));}return this.positions;};_proto.getPopupAndLayerProps = function getPopupAndLayerProps() {var props = this.props;var useWrapper = !!props.children && this.getProps().useWrapper;var trigger = this.getProps().trigger;switch (trigger) {case 'opened':return { layerProps: { active: true, onClickOutside: this.handleClickOutsideAnchor }, popupProps: { opened: true, useWrapper: useWrapper } };case 'closed':return { popupProps: { opened: false, useWrapper: useWrapper } };case 'hoverAnchor':case 'hover':return { popupProps: { onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, useWrapper: useWrapper } };case 'manual':return { popupProps: { useWrapper: useWrapper } };case 'click':return { layerProps: { active: this.state.opened, onClickOutside: this.handleClickOutsideAnchor }, popupProps: { onClick: this.handleClick, useWrapper: useWrapper } };case 'focus':return { popupProps: { onFocus: this.handleFocus, onBlur: this.handleBlur, useWrapper: useWrapper } };case 'hover&focus':return { layerProps: { active: this.state.opened, onClickOutside: this.handleClickOutsideAnchor }, popupProps: { onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, useWrapper: useWrapper } };default:throw new Error('Unknown trigger specified: ' + trigger);}};_proto.clearHoverTimeout = function clearHoverTimeout() {if (this.hoverTimeout) {clearTimeout(this.hoverTimeout);this.hoverTimeout = null;}};_proto.isClickOutsideContent = function isClickOutsideContent(event) {if (this.contentElement && event.target instanceof Element) {return !(0, _listenFocusOutside.containsTargetOrRenderContainer)(event.target)(this.contentElement);}return true;};return Tooltip;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'Tooltip', _class2.propTypes = { children: function children(props, propName, componentName) {var children = props[propName];(0, _warning.default)(children || props.anchorElement, "[" + componentName + "]: you must provide either 'children' or 'anchorElement' prop for " + componentName + " to work properly");(0, _warning.default)(!(Array.isArray(children) && props.useWrapper === false), "[" + componentName + "]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly");} }, _class2.defaultProps = { pos: _Popup.DefaultPosition, trigger: 'hover', allowedPositions: Positions, disableAnimations: _currentEnvironment.isTestEnv, useWrapper: false }, _class2.delay = 100, _class2.triggersWithoutCloseButton = ['hover', 'hoverAnchor', 'focus', 'hover&focus'], _temp)) || _class) || _class;exports.Tooltip = Tooltip;