@skbkontur/react-ui 3.9.4 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +57 -0
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
  4. package/cjs/components/Autocomplete/Autocomplete.js +11 -5
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +1 -0
  7. package/cjs/components/Button/Button.js +7 -3
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Center/Center.d.ts +1 -0
  10. package/cjs/components/Center/Center.js +10 -3
  11. package/cjs/components/Center/Center.js.map +1 -1
  12. package/cjs/components/Checkbox/Checkbox.d.ts +3 -2
  13. package/cjs/components/Checkbox/Checkbox.js +10 -4
  14. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  15. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  16. package/cjs/components/ComboBox/ComboBox.js +100 -70
  17. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  18. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +3 -3
  19. package/cjs/components/CurrencyInput/CurrencyInput.js +7 -4
  20. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  21. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  22. package/cjs/components/DateInput/DateInput.js +6 -3
  23. package/cjs/components/DateInput/DateInput.js.map +1 -1
  24. package/cjs/components/DatePicker/DatePicker.d.ts +4 -2
  25. package/cjs/components/DatePicker/DatePicker.js +17 -7
  26. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  27. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  28. package/cjs/components/Dropdown/Dropdown.js +11 -4
  29. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  30. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  31. package/cjs/components/DropdownMenu/DropdownMenu.js +7 -4
  32. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  33. package/cjs/components/FxInput/FxInput.d.ts +1 -0
  34. package/cjs/components/FxInput/FxInput.js +9 -2
  35. package/cjs/components/FxInput/FxInput.js.map +1 -1
  36. package/cjs/components/Gapped/Gapped.d.ts +1 -0
  37. package/cjs/components/Gapped/Gapped.js +8 -5
  38. package/cjs/components/Gapped/Gapped.js.map +1 -1
  39. package/cjs/components/Group/Group.d.ts +1 -0
  40. package/cjs/components/Group/Group.js +10 -7
  41. package/cjs/components/Group/Group.js.map +1 -1
  42. package/cjs/components/Hint/Hint.d.ts +3 -2
  43. package/cjs/components/Hint/Hint.js +7 -4
  44. package/cjs/components/Hint/Hint.js.map +1 -1
  45. package/cjs/components/Input/Input.d.ts +4 -1
  46. package/cjs/components/Input/Input.js +13 -5
  47. package/cjs/components/Input/Input.js.map +1 -1
  48. package/cjs/components/Kebab/Kebab.d.ts +1 -0
  49. package/cjs/components/Kebab/Kebab.js +8 -5
  50. package/cjs/components/Kebab/Kebab.js.map +1 -1
  51. package/cjs/components/Link/Link.d.ts +1 -0
  52. package/cjs/components/Link/Link.js +11 -3
  53. package/cjs/components/Link/Link.js.map +1 -1
  54. package/cjs/components/Loader/Loader.d.ts +1 -0
  55. package/cjs/components/Loader/Loader.js +9 -6
  56. package/cjs/components/Loader/Loader.js.map +1 -1
  57. package/cjs/components/MenuItem/MenuItem.d.ts +1 -0
  58. package/cjs/components/MenuItem/MenuItem.js +13 -7
  59. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  60. package/cjs/components/Modal/Modal.js +1 -1
  61. package/cjs/components/Modal/Modal.js.map +1 -1
  62. package/cjs/components/Modal/ModalBody.d.ts +1 -0
  63. package/cjs/components/Modal/ModalBody.js +9 -6
  64. package/cjs/components/Modal/ModalBody.js.map +1 -1
  65. package/cjs/components/Paging/Paging.d.ts +2 -2
  66. package/cjs/components/Paging/Paging.js +6 -5
  67. package/cjs/components/Paging/Paging.js.map +1 -1
  68. package/cjs/components/PasswordInput/PasswordInput.d.ts +3 -2
  69. package/cjs/components/PasswordInput/PasswordInput.js +13 -6
  70. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  71. package/cjs/components/Radio/Radio.d.ts +5 -10
  72. package/cjs/components/Radio/Radio.js +11 -10
  73. package/cjs/components/Radio/Radio.js.map +1 -1
  74. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -16
  75. package/cjs/components/RadioGroup/RadioGroup.js +16 -19
  76. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  77. package/cjs/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  78. package/cjs/components/RadioGroup/RadioGroupContext.js +21 -0
  79. package/cjs/components/RadioGroup/RadioGroupContext.js.map +1 -0
  80. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  81. package/cjs/components/ScrollContainer/ScrollContainer.js +8 -5
  82. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  83. package/cjs/components/Select/Select.d.ts +1 -0
  84. package/cjs/components/Select/Select.js +6 -4
  85. package/cjs/components/Select/Select.js.map +1 -1
  86. package/cjs/components/SidePage/SidePage.d.ts +1 -0
  87. package/cjs/components/SidePage/SidePage.js +4 -1
  88. package/cjs/components/SidePage/SidePage.js.map +1 -1
  89. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  90. package/cjs/components/SidePage/SidePageBody.js +9 -6
  91. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  92. package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
  93. package/cjs/components/SidePage/SidePageContainer.js +9 -6
  94. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  95. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -2
  96. package/cjs/components/SidePage/SidePageFooter.js +11 -12
  97. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  98. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  99. package/cjs/components/SidePage/SidePageHeader.js +6 -3
  100. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  101. package/cjs/components/Spinner/Spinner.d.ts +1 -0
  102. package/cjs/components/Spinner/Spinner.js +8 -5
  103. package/cjs/components/Spinner/Spinner.js.map +1 -1
  104. package/cjs/components/Sticky/Sticky.d.ts +1 -0
  105. package/cjs/components/Sticky/Sticky.js +8 -5
  106. package/cjs/components/Sticky/Sticky.js.map +1 -1
  107. package/cjs/components/Switcher/Switcher.d.ts +1 -0
  108. package/cjs/components/Switcher/Switcher.js +6 -3
  109. package/cjs/components/Switcher/Switcher.js.map +1 -1
  110. package/cjs/components/Tabs/Indicator.d.ts +1 -0
  111. package/cjs/components/Tabs/Indicator.js +16 -15
  112. package/cjs/components/Tabs/Indicator.js.map +1 -1
  113. package/cjs/components/Tabs/Tab.d.ts +2 -1
  114. package/cjs/components/Tabs/Tab.js +13 -9
  115. package/cjs/components/Tabs/Tab.js.map +1 -1
  116. package/cjs/components/Tabs/Tabs.d.ts +1 -0
  117. package/cjs/components/Tabs/Tabs.js +9 -9
  118. package/cjs/components/Tabs/Tabs.js.map +1 -1
  119. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  120. package/cjs/components/Textarea/Textarea.js +12 -5
  121. package/cjs/components/Textarea/Textarea.js.map +1 -1
  122. package/cjs/components/Toast/Toast.d.ts +3 -0
  123. package/cjs/components/Toast/Toast.js +15 -4
  124. package/cjs/components/Toast/Toast.js.map +1 -1
  125. package/cjs/components/Toast/ToastView.d.ts +1 -0
  126. package/cjs/components/Toast/ToastView.js +8 -5
  127. package/cjs/components/Toast/ToastView.js.map +1 -1
  128. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  129. package/cjs/components/Toggle/Toggle.js +9 -6
  130. package/cjs/components/Toggle/Toggle.js.map +1 -1
  131. package/cjs/components/Token/Token.d.ts +1 -0
  132. package/cjs/components/Token/Token.js +7 -4
  133. package/cjs/components/Token/Token.js.map +1 -1
  134. package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
  135. package/cjs/components/TokenInput/TokenInput.js +11 -8
  136. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  137. package/cjs/components/Tooltip/Tooltip.d.ts +3 -1
  138. package/cjs/components/Tooltip/Tooltip.js +16 -5
  139. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  140. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  141. package/cjs/components/TooltipMenu/TooltipMenu.js +8 -5
  142. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  143. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  144. package/cjs/internal/CommonWrapper/CommonWrapper.js +38 -15
  145. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  146. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +3 -2
  147. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  148. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  149. package/cjs/internal/CustomComboBox/ComboBoxView.js +15 -5
  150. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  151. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  152. package/cjs/internal/CustomComboBox/CustomComboBox.js +8 -5
  153. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  154. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -2
  155. package/cjs/internal/DateSelect/DateSelect.js +3 -3
  156. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  157. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  158. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -13
  159. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  160. package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
  161. package/cjs/internal/FocusTrap/FocusTrap.js +12 -9
  162. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  163. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +12 -4
  164. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  165. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  166. package/cjs/internal/InputLikeText/InputLikeText.js +10 -3
  167. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  168. package/cjs/internal/InternalMenu/InternalMenu.d.ts +2 -3
  169. package/cjs/internal/InternalMenu/InternalMenu.js +16 -22
  170. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  171. package/cjs/internal/MaskedInput/MaskedInput.d.ts +2 -2
  172. package/cjs/internal/MaskedInput/MaskedInput.js +3 -3
  173. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  174. package/cjs/internal/Menu/Menu.d.ts +1 -0
  175. package/cjs/internal/Menu/Menu.js +9 -6
  176. package/cjs/internal/Menu/Menu.js.map +1 -1
  177. package/cjs/internal/Popup/Popup.d.ts +4 -4
  178. package/cjs/internal/Popup/Popup.js +50 -27
  179. package/cjs/internal/Popup/Popup.js.map +1 -1
  180. package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -0
  181. package/cjs/internal/PopupMenu/PopupMenu.js +7 -4
  182. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  183. package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -1
  184. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  185. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  186. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -3
  187. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  188. package/cjs/internal/RenderLayer/RenderLayer.d.ts +3 -1
  189. package/cjs/internal/RenderLayer/RenderLayer.js +13 -7
  190. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  191. package/cjs/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  192. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +20 -19
  193. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  194. package/cjs/internal/ZIndex/ZIndex.d.ts +2 -0
  195. package/cjs/internal/ZIndex/ZIndex.js +45 -34
  196. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  197. package/cjs/internal/icons/16px/index.d.ts +17 -16
  198. package/cjs/internal/icons/16px/index.js +108 -51
  199. package/cjs/internal/icons/16px/index.js.map +1 -1
  200. package/cjs/lib/callChildRef/callChildRef.d.ts +3 -0
  201. package/cjs/lib/callChildRef/callChildRef.js +19 -0
  202. package/cjs/lib/callChildRef/callChildRef.js.map +1 -0
  203. package/cjs/lib/rootNode/getRootNode.d.ts +3 -0
  204. package/cjs/lib/rootNode/getRootNode.js +27 -0
  205. package/cjs/lib/rootNode/getRootNode.js.map +1 -0
  206. package/cjs/lib/rootNode/index.d.ts +2 -0
  207. package/cjs/lib/rootNode/index.js +2 -0
  208. package/cjs/lib/rootNode/index.js.map +1 -0
  209. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  210. package/cjs/lib/rootNode/rootNodeDecorator.js +31 -0
  211. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -0
  212. package/cjs/lib/theming/Emotion.js +1 -0
  213. package/cjs/lib/theming/Emotion.js.map +1 -1
  214. package/cjs/lib/utils.d.ts +3 -0
  215. package/cjs/lib/utils.js +15 -2
  216. package/cjs/lib/utils.js.map +1 -1
  217. package/components/Autocomplete/Autocomplete/Autocomplete.js +19 -16
  218. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  219. package/components/Autocomplete/Autocomplete.d.ts +1 -0
  220. package/components/Button/Button/Button.js +15 -12
  221. package/components/Button/Button/Button.js.map +1 -1
  222. package/components/Button/Button.d.ts +1 -0
  223. package/components/Center/Center/Center.js +14 -9
  224. package/components/Center/Center/Center.js.map +1 -1
  225. package/components/Center/Center.d.ts +1 -0
  226. package/components/Checkbox/Checkbox/Checkbox.js +16 -10
  227. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  228. package/components/Checkbox/Checkbox.d.ts +3 -2
  229. package/components/ComboBox/ComboBox/ComboBox.js +38 -32
  230. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  231. package/components/ComboBox/ComboBox.d.ts +2 -0
  232. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +29 -27
  233. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  234. package/components/CurrencyInput/CurrencyInput.d.ts +3 -3
  235. package/components/DateInput/DateInput/DateInput.js +7 -3
  236. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  237. package/components/DateInput/DateInput.d.ts +1 -0
  238. package/components/DatePicker/DatePicker/DatePicker.js +29 -22
  239. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  240. package/components/DatePicker/DatePicker.d.ts +4 -2
  241. package/components/Dropdown/Dropdown/Dropdown.js +15 -13
  242. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  243. package/components/Dropdown/Dropdown.d.ts +1 -0
  244. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +15 -9
  245. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  246. package/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  247. package/components/FxInput/FxInput/FxInput.js +13 -9
  248. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  249. package/components/FxInput/FxInput.d.ts +1 -0
  250. package/components/Gapped/Gapped/Gapped.js +15 -11
  251. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  252. package/components/Gapped/Gapped.d.ts +1 -0
  253. package/components/Group/Group/Group.js +22 -9
  254. package/components/Group/Group/Group.js.map +1 -1
  255. package/components/Group/Group.d.ts +1 -0
  256. package/components/Hint/Hint/Hint.js +18 -12
  257. package/components/Hint/Hint/Hint.js.map +1 -1
  258. package/components/Hint/Hint.d.ts +3 -2
  259. package/components/Input/Input/Input.js +21 -14
  260. package/components/Input/Input/Input.js.map +1 -1
  261. package/components/Input/Input.d.ts +4 -1
  262. package/components/Kebab/Kebab/Kebab.js +12 -7
  263. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  264. package/components/Kebab/Kebab.d.ts +1 -0
  265. package/components/Link/Link/Link.js +15 -11
  266. package/components/Link/Link/Link.js.map +1 -1
  267. package/components/Link/Link.d.ts +1 -0
  268. package/components/Loader/Loader/Loader.js +16 -11
  269. package/components/Loader/Loader/Loader.js.map +1 -1
  270. package/components/Loader/Loader.d.ts +1 -0
  271. package/components/MenuItem/MenuItem/MenuItem.js +21 -14
  272. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  273. package/components/MenuItem/MenuItem.d.ts +1 -0
  274. package/components/Modal/Modal/Modal.js +1 -1
  275. package/components/Modal/Modal/Modal.js.map +1 -1
  276. package/components/Modal/ModalBody/ModalBody.js +16 -10
  277. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  278. package/components/Modal/ModalBody.d.ts +1 -0
  279. package/components/Paging/Paging/Paging.js +17 -14
  280. package/components/Paging/Paging/Paging.js.map +1 -1
  281. package/components/Paging/Paging.d.ts +2 -2
  282. package/components/PasswordInput/PasswordInput/PasswordInput.js +18 -14
  283. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  284. package/components/PasswordInput/PasswordInput.d.ts +3 -2
  285. package/components/Radio/Radio/Radio.js +17 -19
  286. package/components/Radio/Radio/Radio.js.map +1 -1
  287. package/components/Radio/Radio.d.ts +5 -10
  288. package/components/RadioGroup/RadioGroup/RadioGroup.js +35 -38
  289. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  290. package/components/RadioGroup/RadioGroup.d.ts +2 -16
  291. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js +12 -0
  292. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js.map +1 -0
  293. package/components/RadioGroup/RadioGroupContext/package.json +6 -0
  294. package/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  295. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +13 -8
  296. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  297. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  298. package/components/Select/Select/Select.js +8 -5
  299. package/components/Select/Select/Select.js.map +1 -1
  300. package/components/Select/Select.d.ts +1 -0
  301. package/components/SidePage/SidePage/SidePage.js +6 -3
  302. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  303. package/components/SidePage/SidePage.d.ts +1 -0
  304. package/components/SidePage/SidePageBody/SidePageBody.js +16 -10
  305. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  306. package/components/SidePage/SidePageBody.d.ts +1 -0
  307. package/components/SidePage/SidePageContainer/SidePageContainer.js +16 -9
  308. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  309. package/components/SidePage/SidePageContainer.d.ts +1 -0
  310. package/components/SidePage/SidePageFooter/SidePageFooter.js +22 -19
  311. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  312. package/components/SidePage/SidePageFooter.d.ts +1 -2
  313. package/components/SidePage/SidePageHeader/SidePageHeader.js +15 -10
  314. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  315. package/components/SidePage/SidePageHeader.d.ts +1 -0
  316. package/components/Spinner/Spinner/Spinner.js +8 -3
  317. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  318. package/components/Spinner/Spinner.d.ts +1 -0
  319. package/components/Sticky/Sticky/Sticky.js +13 -8
  320. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  321. package/components/Sticky/Sticky.d.ts +1 -0
  322. package/components/Switcher/Switcher/Switcher.js +11 -6
  323. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  324. package/components/Switcher/Switcher.d.ts +1 -0
  325. package/components/Tabs/Indicator/Indicator.js +16 -14
  326. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  327. package/components/Tabs/Indicator.d.ts +1 -0
  328. package/components/Tabs/Tab/Tab.js +31 -34
  329. package/components/Tabs/Tab/Tab.js.map +1 -1
  330. package/components/Tabs/Tab.d.ts +2 -1
  331. package/components/Tabs/Tabs/Tabs.js +20 -20
  332. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  333. package/components/Tabs/Tabs.d.ts +1 -0
  334. package/components/Textarea/Textarea/Textarea.js +21 -17
  335. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  336. package/components/Textarea/Textarea.d.ts +1 -0
  337. package/components/Toast/Toast/Toast.js +29 -14
  338. package/components/Toast/Toast/Toast.js.map +1 -1
  339. package/components/Toast/Toast.d.ts +3 -0
  340. package/components/Toast/ToastView/ToastView.js +10 -5
  341. package/components/Toast/ToastView/ToastView.js.map +1 -1
  342. package/components/Toast/ToastView.d.ts +1 -0
  343. package/components/Toggle/Toggle/Toggle.js +16 -11
  344. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  345. package/components/Toggle/Toggle.d.ts +1 -0
  346. package/components/Token/Token/Token.js +11 -4
  347. package/components/Token/Token/Token.js.map +1 -1
  348. package/components/Token/Token.d.ts +1 -0
  349. package/components/TokenInput/TokenInput/TokenInput.js +12 -6
  350. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  351. package/components/TokenInput/TokenInput.d.ts +1 -0
  352. package/components/Tooltip/Tooltip/Tooltip.js +24 -15
  353. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  354. package/components/Tooltip/Tooltip.d.ts +3 -1
  355. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +23 -17
  356. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  357. package/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  358. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +37 -10
  359. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  360. package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  361. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +5 -3
  362. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  363. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +23 -13
  364. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  365. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  366. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +12 -4
  367. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  368. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  369. package/internal/DateSelect/DateSelect/DateSelect.js +5 -5
  370. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  371. package/internal/DateSelect/DateSelect.d.ts +2 -2
  372. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +11 -15
  373. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  374. package/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  375. package/internal/FocusTrap/FocusTrap/FocusTrap.js +17 -9
  376. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  377. package/internal/FocusTrap/FocusTrap.d.ts +1 -0
  378. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +13 -7
  379. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  380. package/internal/InputLikeText/InputLikeText/InputLikeText.js +11 -6
  381. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  382. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  383. package/internal/InternalMenu/InternalMenu/InternalMenu.js +24 -25
  384. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  385. package/internal/InternalMenu/InternalMenu.d.ts +2 -3
  386. package/internal/MaskedInput/MaskedInput/MaskedInput.js +7 -7
  387. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  388. package/internal/MaskedInput/MaskedInput.d.ts +2 -2
  389. package/internal/Menu/Menu/Menu.js +11 -8
  390. package/internal/Menu/Menu/Menu.js.map +1 -1
  391. package/internal/Menu/Menu.d.ts +1 -0
  392. package/internal/Popup/Popup/Popup.js +79 -68
  393. package/internal/Popup/Popup/Popup.js.map +1 -1
  394. package/internal/Popup/Popup.d.ts +4 -4
  395. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -7
  396. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  397. package/internal/PopupMenu/PopupMenu.d.ts +1 -0
  398. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  399. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  400. package/internal/RenderContainer/RenderContainer.d.ts +1 -1
  401. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +2 -3
  402. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  403. package/internal/RenderLayer/RenderLayer/RenderLayer.js +20 -18
  404. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  405. package/internal/RenderLayer/RenderLayer.d.ts +3 -1
  406. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +35 -43
  407. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  408. package/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  409. package/internal/ZIndex/ZIndex/ZIndex.js +20 -8
  410. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  411. package/internal/ZIndex/ZIndex.d.ts +2 -0
  412. package/internal/icons/16px/index/index.js +83 -51
  413. package/internal/icons/16px/index/index.js.map +1 -1
  414. package/internal/icons/16px/index.d.ts +17 -16
  415. package/lib/callChildRef/callChildRef/callChildRef.js +14 -0
  416. package/lib/callChildRef/callChildRef/callChildRef.js.map +1 -0
  417. package/lib/callChildRef/callChildRef/package.json +6 -0
  418. package/lib/callChildRef/callChildRef.d.ts +3 -0
  419. package/lib/rootNode/getRootNode/getRootNode.js +25 -0
  420. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -0
  421. package/lib/rootNode/getRootNode/package.json +6 -0
  422. package/lib/rootNode/getRootNode.d.ts +3 -0
  423. package/lib/rootNode/index/index.js +2 -0
  424. package/lib/rootNode/index/index.js.map +1 -0
  425. package/lib/rootNode/index/package.json +6 -0
  426. package/lib/rootNode/index.d.ts +2 -0
  427. package/lib/rootNode/package.json +6 -0
  428. package/lib/rootNode/rootNodeDecorator/package.json +6 -0
  429. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +37 -0
  430. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -0
  431. package/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  432. package/lib/theming/Emotion/Emotion.js +1 -0
  433. package/lib/theming/Emotion/Emotion.js.map +1 -1
  434. package/lib/utils/utils.js +11 -1
  435. package/lib/utils/utils.js.map +1 -1
  436. package/lib/utils.d.ts +3 -0
  437. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["PopupMenu.tsx"],"names":["React","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","InternalMenu","Popup","RenderLayer","CommonWrapper","PopupMenuPositions","isValidPositions","styles","PopupMenuType","Dropdown","Tooltip","PopupMenu","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","renderCaption","props","caption","opened","openMenu","closeMenu","toggleMenu","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","container","width","children","popupMargin","popupHasPin","popupPinOffset","getPositions","disableAnimations","menuWidth","menuMaxHeight","header","footer","positions","Component","__KONTUR_REACT_UI__","defaultProps","Type"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { InternalMenu } from '../InternalMenu';\nimport { Popup, PopupPosition } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { PopupMenuPositions } from './PopupMenuPositions';\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n}\n\nexport interface PopupMenuProps extends CommonProps {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPosition[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations: boolean;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n};\n\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n\n public static defaultProps = {\n positions: PopupMenuPositions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<InternalMenu> = null;\n\n public render() {\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={this.props.popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={this.props.disableAnimations}\n onOpen={this.handleOpen}\n width={this.props.menuWidth || 'auto'}\n >\n <InternalMenu\n hasShadow={false}\n maxHeight={this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n cyclicSelection={false}\n ref={this.refInternalMenu}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </InternalMenu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private refInternalMenu = (element: Nullable<InternalMenu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n });\n\n return (\n <span\n data-tid=\"PopupMenu__caption\"\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {caption}\n </span>\n );\n }\n\n return (\n <span\n data-tid=\"PopupMenu__caption\"\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.props.caption}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions() {\n if (this.props.positions && isValidPositions(this.props.positions)) {\n return this.props.positions;\n }\n\n return PopupMenuPositions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (document) {\n this.savedFocusableElement = document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"]}
1
+ {"version":3,"sources":["PopupMenu.tsx"],"names":["React","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","InternalMenu","Popup","RenderLayer","CommonWrapper","rootNode","PopupMenuPositions","isValidPositions","styles","PopupMenuType","Dropdown","Tooltip","PopupMenu","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","setRootNode","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","renderCaption","props","caption","opened","openMenu","closeMenu","toggleMenu","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","container","width","children","popupMargin","popupHasPin","popupPinOffset","getPositions","disableAnimations","menuWidth","menuMaxHeight","header","footer","positions","Component","__KONTUR_REACT_UI__","defaultProps","Type"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { InternalMenu } from '../InternalMenu';\nimport { Popup, PopupPosition } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { PopupMenuPositions } from './PopupMenuPositions';\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n}\n\nexport interface PopupMenuProps extends CommonProps {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPosition[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations: boolean;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n};\n\n@rootNode\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n\n public static defaultProps = {\n positions: PopupMenuPositions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<InternalMenu> = null;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={this.props.popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={this.props.disableAnimations}\n onOpen={this.handleOpen}\n width={this.props.menuWidth || 'auto'}\n >\n <InternalMenu\n hasShadow={false}\n maxHeight={this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n cyclicSelection={false}\n ref={this.refInternalMenu}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </InternalMenu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private refInternalMenu = (element: Nullable<InternalMenu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n });\n\n return (\n <span\n data-tid=\"PopupMenu__caption\"\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {caption}\n </span>\n );\n }\n\n return (\n <span\n data-tid=\"PopupMenu__caption\"\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.props.caption}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions() {\n if (this.props.positions && isValidPositions(this.props.positions)) {\n return this.props.positions;\n }\n\n return PopupMenuPositions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (document) {\n this.savedFocusableElement = document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"]}
@@ -62,6 +62,7 @@ export declare class PopupMenu extends React.Component<PopupMenuProps, PopupMenu
62
62
  private captionWrapper;
63
63
  private savedFocusableElement;
64
64
  private menu;
65
+ private setRootNode;
65
66
  render(): JSX.Element;
66
67
  open: () => void;
67
68
  close: () => void;
@@ -24,7 +24,7 @@ export var RenderContainer = /*#__PURE__*/function (_React$Component) {
24
24
 
25
25
  var _proto = RenderContainer.prototype;
26
26
 
27
- _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {
27
+ _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
28
28
  if (!this.props.children && nextProps.children) {
29
29
  this.mountContainer();
30
30
  }
@@ -32,6 +32,8 @@ export var RenderContainer = /*#__PURE__*/function (_React$Component) {
32
32
  if (this.props.children && !nextProps.children) {
33
33
  this.unmountContainer();
34
34
  }
35
+
36
+ return true;
35
37
  };
36
38
 
37
39
  _proto.componentWillUnmount = function componentWillUnmount() {
@@ -1 +1 @@
1
- {"version":3,"sources":["RenderContainer.tsx"],"names":["React","canUseDOM","isBrowser","getRandomID","Upgrade","RenderInnerContainer","RenderContainer","props","domContainer","rootId","getRootId","children","mountContainer","UNSAFE_componentWillReceiveProps","nextProps","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","document","createElement","setAttribute","getSpecificityClassName","parentNode","body","appendChild","window","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","Component","__KONTUR_REACT_UI__"],"mappings":"gIAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,SAAT,EAAoBC,SAApB,QAAqC,kBAArC;;AAEA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,OAAT,QAAwB,oBAAxB;;AAEA,SAASC,oBAAT,QAAqC,wBAArC;;;AAGA,WAAaC,eAAb;;;;;;;;AAQE,2BAAYC,KAAZ,EAAyC;AACvC,wCAAMA,KAAN,UADuC,MAJjCC,YAIiC,GAJK,IAIL,OAFxBC,MAEwB,GAFPH,eAAe,CAACI,SAAhB,EAEO;;AAGvC,QAAIR,SAAS,IAAIK,KAAK,CAACI,QAAvB,EAAiC;AAC/B,YAAKC,cAAL;AACD,KALsC;AAMxC,GAdH;;AAgBSC,EAAAA,gCAhBT,GAgBE,0CAAwCC,SAAxC,EAAyF;AACvF,QAAI,CAAC,KAAKP,KAAL,CAAWI,QAAZ,IAAwBG,SAAS,CAACH,QAAtC,EAAgD;AAC9C,WAAKC,cAAL;AACD;AACD,QAAI,KAAKL,KAAL,CAAWI,QAAX,IAAuB,CAACG,SAAS,CAACH,QAAtC,EAAgD;AAC9C,WAAKI,gBAAL;AACD;AACF,GAvBH;;AAyBSC,EAAAA,oBAzBT,GAyBE,gCAA8B;AAC5B,SAAKC,gBAAL;AACD,GA3BH;;AA6BSC,EAAAA,MA7BT,GA6BE,kBAAgB;AACd,wBAAO,oBAAC,oBAAD,eAA0B,KAAKX,KAA/B,IAAsC,YAAY,EAAE,KAAKC,YAAzD,EAAuE,MAAM,EAAE,KAAKC,MAApF,IAAP;AACD,GA/BH;;AAiCUU,EAAAA,eAjCV,GAiCE,2BAA0B;AACxB,QAAIlB,SAAJ,EAAe;AACb,UAAMO,YAAY,GAAGY,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAArB;AACAb,MAAAA,YAAY,CAACc,YAAb,CAA0B,OAA1B,EAAmClB,OAAO,CAACmB,uBAAR,EAAnC;AACAf,MAAAA,YAAY,CAACc,YAAb,CAA0B,4BAA1B,OAA2D,KAAKb,MAAhE;AACA,WAAKD,YAAL,GAAoBA,YAApB;AACD;AACF,GAxCH;;AA0CUI,EAAAA,cA1CV,GA0CE,0BAAyB;AACvB,QAAI,CAAC,KAAKJ,YAAV,EAAwB;AACtB,WAAKW,eAAL;AACD;AACD,QAAI,KAAKX,YAAL,IAAqB,KAAKA,YAAL,CAAkBgB,UAAlB,KAAiCJ,QAAQ,CAACK,IAAnE,EAAyE;AACvEL,MAAAA,QAAQ,CAACK,IAAT,CAAcC,WAAd,CAA0B,KAAKlB,YAA/B;AACA,UAAImB,MAAM,CAACC,YAAX,EAAyB;AACvBD,QAAAA,MAAM,CAACC,YAAP,CAAoBC,kBAApB,CAAuC,KAAKpB,MAA5C,EAAoD,IAApD;AACD;AACF;AACF,GApDH;;AAsDUQ,EAAAA,gBAtDV,GAsDE,4BAA2B;AACzB,QAAI,KAAKT,YAAT,EAAuB;AACrB,WAAKO,gBAAL;AACA,WAAKP,YAAL,GAAoB,IAApB;AACD;AACF,GA3DH;;AA6DUO,EAAAA,gBA7DV,GA6DE,4BAA2B;AACzB,QAAI,KAAKP,YAAL,IAAqB,KAAKA,YAAL,CAAkBgB,UAA3C,EAAuD;AACrD,WAAKhB,YAAL,CAAkBgB,UAAlB,CAA6BM,WAA7B,CAAyC,KAAKtB,YAA9C;;AAEA,UAAImB,MAAM,CAACC,YAAX,EAAyB;AACvBD,QAAAA,MAAM,CAACC,YAAP,CAAoBG,qBAApB,CAA0C,KAAKtB,MAA/C;AACD;AACF;AACF,GArEH,0BAAqCT,KAAK,CAACgC,SAA3C,EAAa1B,e,CACG2B,mB,GAAsB,iB,CADzB3B,e,CAGII,S,GAAY,oBAAMP,WAAW,EAAjB,E","sourcesContent":["import React from 'react';\n\nimport { canUseDOM, isBrowser } from '../../lib/client';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\n\nimport { RenderInnerContainer } from './RenderInnerContainer';\nimport { RenderContainerProps } from './RenderContainerTypes';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n\n private static getRootId = () => getRandomID();\n private domContainer: Nullable<HTMLElement> = null;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n constructor(props: RenderContainerProps) {\n super(props);\n\n if (isBrowser && props.children) {\n this.mountContainer();\n }\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: Readonly<RenderContainerProps>): void {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n }\n\n public render() {\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n if (canUseDOM) {\n const domContainer = document.createElement('div');\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n domContainer.setAttribute('data-rendered-container-id', `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n if (!this.domContainer) {\n this.createContainer();\n }\n if (this.domContainer && this.domContainer.parentNode !== document.body) {\n document.body.appendChild(this.domContainer);\n if (window.ReactTesting) {\n window.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (window.ReactTesting) {\n window.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["RenderContainer.tsx"],"names":["React","canUseDOM","isBrowser","getRandomID","Upgrade","RenderInnerContainer","RenderContainer","props","domContainer","rootId","getRootId","children","mountContainer","shouldComponentUpdate","nextProps","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","document","createElement","setAttribute","getSpecificityClassName","parentNode","body","appendChild","window","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","Component","__KONTUR_REACT_UI__"],"mappings":"gIAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,SAAT,EAAoBC,SAApB,QAAqC,kBAArC;;AAEA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,OAAT,QAAwB,oBAAxB;;AAEA,SAASC,oBAAT,QAAqC,wBAArC;;;AAGA,WAAaC,eAAb;;;;;;;;AAQE,2BAAYC,KAAZ,EAAyC;AACvC,wCAAMA,KAAN,UADuC,MAJjCC,YAIiC,GAJK,IAIL,OAFxBC,MAEwB,GAFPH,eAAe,CAACI,SAAhB,EAEO;;AAGvC,QAAIR,SAAS,IAAIK,KAAK,CAACI,QAAvB,EAAiC;AAC/B,YAAKC,cAAL;AACD,KALsC;AAMxC,GAdH;;AAgBSC,EAAAA,qBAhBT,GAgBE,+BAA6BC,SAA7B,EAA8D;AAC5D,QAAI,CAAC,KAAKP,KAAL,CAAWI,QAAZ,IAAwBG,SAAS,CAACH,QAAtC,EAAgD;AAC9C,WAAKC,cAAL;AACD;AACD,QAAI,KAAKL,KAAL,CAAWI,QAAX,IAAuB,CAACG,SAAS,CAACH,QAAtC,EAAgD;AAC9C,WAAKI,gBAAL;AACD;AACD,WAAO,IAAP;AACD,GAxBH;;AA0BSC,EAAAA,oBA1BT,GA0BE,gCAA8B;AAC5B,SAAKC,gBAAL;AACD,GA5BH;;AA8BSC,EAAAA,MA9BT,GA8BE,kBAAgB;AACd,wBAAO,oBAAC,oBAAD,eAA0B,KAAKX,KAA/B,IAAsC,YAAY,EAAE,KAAKC,YAAzD,EAAuE,MAAM,EAAE,KAAKC,MAApF,IAAP;AACD,GAhCH;;AAkCUU,EAAAA,eAlCV,GAkCE,2BAA0B;AACxB,QAAIlB,SAAJ,EAAe;AACb,UAAMO,YAAY,GAAGY,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAArB;AACAb,MAAAA,YAAY,CAACc,YAAb,CAA0B,OAA1B,EAAmClB,OAAO,CAACmB,uBAAR,EAAnC;AACAf,MAAAA,YAAY,CAACc,YAAb,CAA0B,4BAA1B,OAA2D,KAAKb,MAAhE;AACA,WAAKD,YAAL,GAAoBA,YAApB;AACD;AACF,GAzCH;;AA2CUI,EAAAA,cA3CV,GA2CE,0BAAyB;AACvB,QAAI,CAAC,KAAKJ,YAAV,EAAwB;AACtB,WAAKW,eAAL;AACD;AACD,QAAI,KAAKX,YAAL,IAAqB,KAAKA,YAAL,CAAkBgB,UAAlB,KAAiCJ,QAAQ,CAACK,IAAnE,EAAyE;AACvEL,MAAAA,QAAQ,CAACK,IAAT,CAAcC,WAAd,CAA0B,KAAKlB,YAA/B;AACA,UAAImB,MAAM,CAACC,YAAX,EAAyB;AACvBD,QAAAA,MAAM,CAACC,YAAP,CAAoBC,kBAApB,CAAuC,KAAKpB,MAA5C,EAAoD,IAApD;AACD;AACF;AACF,GArDH;;AAuDUQ,EAAAA,gBAvDV,GAuDE,4BAA2B;AACzB,QAAI,KAAKT,YAAT,EAAuB;AACrB,WAAKO,gBAAL;AACA,WAAKP,YAAL,GAAoB,IAApB;AACD;AACF,GA5DH;;AA8DUO,EAAAA,gBA9DV,GA8DE,4BAA2B;AACzB,QAAI,KAAKP,YAAL,IAAqB,KAAKA,YAAL,CAAkBgB,UAA3C,EAAuD;AACrD,WAAKhB,YAAL,CAAkBgB,UAAlB,CAA6BM,WAA7B,CAAyC,KAAKtB,YAA9C;;AAEA,UAAImB,MAAM,CAACC,YAAX,EAAyB;AACvBD,QAAAA,MAAM,CAACC,YAAP,CAAoBG,qBAApB,CAA0C,KAAKtB,MAA/C;AACD;AACF;AACF,GAtEH,0BAAqCT,KAAK,CAACgC,SAA3C,EAAa1B,e,CACG2B,mB,GAAsB,iB,CADzB3B,e,CAGII,S,GAAY,oBAAMP,WAAW,EAAjB,E","sourcesContent":["import React from 'react';\n\nimport { canUseDOM, isBrowser } from '../../lib/client';\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\n\nimport { RenderInnerContainer } from './RenderInnerContainer';\nimport { RenderContainerProps } from './RenderContainerTypes';\n\nexport class RenderContainer extends React.Component<RenderContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderContainer';\n\n private static getRootId = () => getRandomID();\n private domContainer: Nullable<HTMLElement> = null;\n\n private readonly rootId: string = RenderContainer.getRootId();\n\n constructor(props: RenderContainerProps) {\n super(props);\n\n if (isBrowser && props.children) {\n this.mountContainer();\n }\n }\n\n public shouldComponentUpdate(nextProps: RenderContainerProps) {\n if (!this.props.children && nextProps.children) {\n this.mountContainer();\n }\n if (this.props.children && !nextProps.children) {\n this.unmountContainer();\n }\n return true;\n }\n\n public componentWillUnmount() {\n this.destroyContainer();\n }\n\n public render() {\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n if (canUseDOM) {\n const domContainer = document.createElement('div');\n domContainer.setAttribute('class', Upgrade.getSpecificityClassName());\n domContainer.setAttribute('data-rendered-container-id', `${this.rootId}`);\n this.domContainer = domContainer;\n }\n }\n\n private mountContainer() {\n if (!this.domContainer) {\n this.createContainer();\n }\n if (this.domContainer && this.domContainer.parentNode !== document.body) {\n document.body.appendChild(this.domContainer);\n if (window.ReactTesting) {\n window.ReactTesting.addRenderContainer(this.rootId, this);\n }\n }\n }\n\n private destroyContainer() {\n if (this.domContainer) {\n this.unmountContainer();\n this.domContainer = null;\n }\n }\n\n private unmountContainer() {\n if (this.domContainer && this.domContainer.parentNode) {\n this.domContainer.parentNode.removeChild(this.domContainer);\n\n if (window.ReactTesting) {\n window.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
@@ -6,7 +6,7 @@ export declare class RenderContainer extends React.Component<RenderContainerProp
6
6
  private domContainer;
7
7
  private readonly rootId;
8
8
  constructor(props: RenderContainerProps);
9
- UNSAFE_componentWillReceiveProps(nextProps: Readonly<RenderContainerProps>): void;
9
+ shouldComponentUpdate(nextProps: RenderContainerProps): boolean;
10
10
  componentWillUnmount(): void;
11
11
  render(): JSX.Element;
12
12
  private createContainer;
@@ -1,7 +1,6 @@
1
1
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2
2
  import React from 'react';
3
- import ReactDOM from 'react-dom';
4
- import { CommonWrapper } from "../../CommonWrapper"; // Заглушка нужна для корректной гидрации порталов после SSR,
3
+ import ReactDOM from 'react-dom'; // Заглушка нужна для корректной гидрации порталов после SSR,
5
4
  // которую реакт сам пока не поддерживает.
6
5
  // @see https://github.com/facebook/react/issues/13097
7
6
  // А также для вставки актуального render-container-id на клиенте.
@@ -56,7 +55,7 @@ export var RenderInnerContainer = /*#__PURE__*/function (_React$Component) {
56
55
  key: "portal-ref",
57
56
  rt_rootID: rootId,
58
57
  container: domContainer
59
- }, /*#__PURE__*/React.createElement(CommonWrapper, this.props, children)));
58
+ }, children));
60
59
  }
61
60
 
62
61
  return inner;
@@ -1 +1 @@
1
- {"version":3,"sources":["RenderInnerContainer.tsx"],"names":["React","ReactDOM","CommonWrapper","SSRPlaceholder","Portal","container","rt_rootID","children","createPortal","RenderInnerContainer","render","props","anchor","domContainer","rootId","inner","Component","__KONTUR_REACT_UI__"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,QAAP,MAAqB,WAArB;;;AAGA,SAASC,aAAT,QAA8B,kBAA9B;;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,wBAAM,gCAAQ,WAAQ,iBAAhB,GAAN,EAAvB;;AAEA,OAAO,IAAMC,MAA4C,GAAG,SAA/CA,MAA+C,OAAwC,KAArCC,SAAqC,QAArCA,SAAqC,CAA1BC,SAA0B,QAA1BA,SAA0B,CAAfC,QAAe,QAAfA,QAAe;AAClG;AACA;AACE,wBAAC,KAAD,CAAO,QAAP;AACGF,IAAAA,SAAS,gBAAGJ,QAAQ,CAACO,YAAT,CAAsBD,QAAtB,EAAgCF,SAAhC,CAAH,gBAAgD,oBAAC,cAAD,OAD5D;AAEGA,IAAAA,SAAS,gBAAG,kCAAU,4BAA0BC,SAApC,GAAH,gBAAuD,oBAAC,cAAD,OAFnE,CADF;;;AAMD,CARM;;AAUP,WAAaG,oBAAb;;;AAGSC,EAAAA,MAHT,GAGE,kBAAgB;AACqC,SAAKC,KAD1C,CACNC,MADM,eACNA,MADM,CACEL,QADF,eACEA,QADF,CACYM,YADZ,eACYA,YADZ,CAC0BC,MAD1B,eAC0BA,MAD1B;AAEd,QAAIC,KAAK,GAAGH,MAAZ;;AAEA,QAAIL,QAAJ,EAAc;AACZQ,MAAAA,KAAK;AACH,0BAAC,KAAD,CAAO,QAAP;AACGH,MAAAA,MADH;AAEE,0BAAC,MAAD,IAAQ,GAAG,EAAC,YAAZ,EAAyB,SAAS,EAAEE,MAApC,EAA4C,SAAS,EAAED,YAAvD;AACE,0BAAC,aAAD,EAAmB,KAAKF,KAAxB,EAAgCJ,QAAhC,CADF,CAFF,CADF;;;;AAQD;;AAED,WAAOQ,KAAP;AACD,GAnBH,+BAA0Cf,KAAK,CAACgB,SAAhD,EAAaP,oB,CACGQ,mB,GAAsB,sB","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonWrapper } from '../CommonWrapper';\n\nimport { PortalProps, RenderContainerProps } from './RenderContainerTypes';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal: React.FunctionComponent<PortalProps> = ({ container, rt_rootID, children }) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript data-render-container-id={rt_rootID} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n <CommonWrapper {...this.props}>{children}</CommonWrapper>\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n"]}
1
+ {"version":3,"sources":["RenderInnerContainer.tsx"],"names":["React","ReactDOM","SSRPlaceholder","Portal","container","rt_rootID","children","createPortal","RenderInnerContainer","render","props","anchor","domContainer","rootId","inner","Component","__KONTUR_REACT_UI__"],"mappings":"sEAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,QAAP,MAAqB,WAArB;;;;;;;;;;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,wBAAM,gCAAQ,WAAQ,iBAAhB,GAAN,EAAvB;;AAEA,OAAO,IAAMC,MAA4C,GAAG,SAA/CA,MAA+C,OAAwC,KAArCC,SAAqC,QAArCA,SAAqC,CAA1BC,SAA0B,QAA1BA,SAA0B,CAAfC,QAAe,QAAfA,QAAe;AAClG;AACA;AACE,wBAAC,KAAD,CAAO,QAAP;AACGF,IAAAA,SAAS,gBAAGH,QAAQ,CAACM,YAAT,CAAsBD,QAAtB,EAAgCF,SAAhC,CAAH,gBAAgD,oBAAC,cAAD,OAD5D;AAEGA,IAAAA,SAAS,gBAAG,kCAAU,4BAA0BC,SAApC,GAAH,gBAAuD,oBAAC,cAAD,OAFnE,CADF;;;AAMD,CARM;;AAUP,WAAaG,oBAAb;;;AAGSC,EAAAA,MAHT,GAGE,kBAAgB;AACqC,SAAKC,KAD1C,CACNC,MADM,eACNA,MADM,CACEL,QADF,eACEA,QADF,CACYM,YADZ,eACYA,YADZ,CAC0BC,MAD1B,eAC0BA,MAD1B;AAEd,QAAIC,KAAK,GAAGH,MAAZ;;AAEA,QAAIL,QAAJ,EAAc;AACZQ,MAAAA,KAAK;AACH,0BAAC,KAAD,CAAO,QAAP;AACGH,MAAAA,MADH;AAEE,0BAAC,MAAD,IAAQ,GAAG,EAAC,YAAZ,EAAyB,SAAS,EAAEE,MAApC,EAA4C,SAAS,EAAED,YAAvD;AACGN,MAAAA,QADH,CAFF,CADF;;;;AAQD;;AAED,WAAOQ,KAAP;AACD,GAnBH,+BAA0Cd,KAAK,CAACe,SAAhD,EAAaP,oB,CACGQ,mB,GAAsB,sB","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { PortalProps, RenderContainerProps } from './RenderContainerTypes';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal: React.FunctionComponent<PortalProps> = ({ container, rt_rootID, children }) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript data-render-container-id={rt_rootID} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n {children}\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n"]}
@@ -1,9 +1,14 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
1
3
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
+
5
+ var _class, _class2, _temp;
6
+
2
7
  import React from 'react';
3
- import { findDOMNode } from 'react-dom';
4
8
  import { listen as listenFocusOutside, containsTargetOrRenderContainer } from "../../../lib/listenFocusOutside";
5
9
  import { CommonWrapper } from "../../CommonWrapper";
6
- export var RenderLayer = /*#__PURE__*/function (_React$Component) {
10
+ import { getRootNode, rootNode } from "../../../lib/rootNode";
11
+ export var RenderLayer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
7
12
  _inheritsLoose(RenderLayer, _React$Component);
8
13
 
9
14
  function RenderLayer() {
@@ -15,6 +20,7 @@ export var RenderLayer = /*#__PURE__*/function (_React$Component) {
15
20
 
16
21
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
17
22
  _this.focusOutsideListenerToken = null;
23
+ _this.setRootNode = void 0;
18
24
 
19
25
  _this.handleFocusOutside = function (event) {
20
26
  if (_this.props.onFocusOutside) {
@@ -24,10 +30,9 @@ export var RenderLayer = /*#__PURE__*/function (_React$Component) {
24
30
 
25
31
  _this.handleNativeDocClick = function (event) {
26
32
  var target = event.target || event.srcElement;
33
+ var node = getRootNode(_assertThisInitialized(_this)) || getRootNode(_this.props.getAnchorElement == null ? void 0 : _this.props.getAnchorElement());
27
34
 
28
- var node = _this.getDomNode();
29
-
30
- if (target instanceof Element && containsTargetOrRenderContainer(target)(node)) {
35
+ if (!node || target instanceof Element && containsTargetOrRenderContainer(target)(node)) {
31
36
  return;
32
37
  }
33
38
 
@@ -64,14 +69,18 @@ export var RenderLayer = /*#__PURE__*/function (_React$Component) {
64
69
  };
65
70
 
66
71
  _proto.render = function render() {
67
- return /*#__PURE__*/React.createElement(CommonWrapper, this.props, React.Children.only(this.props.children));
72
+ return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
73
+ rootNodeRef: this.setRootNode
74
+ }, this.props), React.Children.only(this.props.children));
68
75
  };
69
76
 
70
77
  _proto.attachListeners = function attachListeners() {
71
- var _this2 = this;
78
+ var _this$props$getAnchor, _this$props;
72
79
 
80
+ var rootNode = getRootNode(this) || ((_this$props$getAnchor = (_this$props = this.props).getAnchorElement) == null ? void 0 : _this$props$getAnchor.call(_this$props));
81
+ if (!rootNode) return;
73
82
  this.focusOutsideListenerToken = listenFocusOutside(function () {
74
- return [_this2.getDomNode()];
83
+ return [rootNode];
75
84
  }, this.handleFocusOutside);
76
85
  window.addEventListener('blur', this.handleFocusOutside);
77
86
  document.addEventListener('ontouchstart' in document.documentElement ? 'touchstart' : 'mousedown', this.handleNativeDocClick);
@@ -87,14 +96,8 @@ export var RenderLayer = /*#__PURE__*/function (_React$Component) {
87
96
  document.removeEventListener('ontouchstart' in document.documentElement ? 'touchstart' : 'mousedown', this.handleNativeDocClick);
88
97
  };
89
98
 
90
- _proto.getDomNode = function getDomNode() {
91
- return findDOMNode(this);
92
- };
93
-
94
99
  return RenderLayer;
95
- }(React.Component);
96
- RenderLayer.__KONTUR_REACT_UI__ = 'RenderLayer';
97
- RenderLayer.propTypes = {
100
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'RenderLayer', _class2.propTypes = {
98
101
  active: function active(props, propName, componentName) {
99
102
  var active = props.active,
100
103
  onClickOutside = props.onClickOutside,
@@ -104,7 +107,6 @@ RenderLayer.propTypes = {
104
107
  return new Error("[" + componentName + "]: using the component without either 'onClickOutside' or 'onFocusOutside' callback is pointless.");
105
108
  }
106
109
  }
107
- };
108
- RenderLayer.defaultProps = {
110
+ }, _class2.defaultProps = {
109
111
  active: true
110
- };
112
+ }, _temp)) || _class;
@@ -1 +1 @@
1
- {"version":3,"sources":["RenderLayer.tsx"],"names":["React","findDOMNode","listen","listenFocusOutside","containsTargetOrRenderContainer","CommonWrapper","RenderLayer","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getDomNode","Element","onClickOutside","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","detachListeners","componentWillUnmount","render","Children","only","children","window","addEventListener","document","documentElement","remove","removeEventListener","Component","__KONTUR_REACT_UI__","propTypes","propName","componentName","Error","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n}\n\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n\n public static propTypes = {\n active(props: RenderLayerProps, propName: keyof RenderLayerProps, componentName: string) {\n const { active, onClickOutside, onFocusOutside } = props;\n if (active && !(onClickOutside || onFocusOutside)) {\n return new Error(\n `[${componentName}]: using the component without either 'onClickOutside' or 'onFocusOutside' callback is pointless.`,\n );\n }\n },\n };\n\n public static defaultProps = {\n active: true,\n };\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n\n public componentDidMount() {\n if (this.props.active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n if (!prevProps.active && this.props.active) {\n this.attachListeners();\n }\n if (prevProps.active && !this.props.active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.props.active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return <CommonWrapper {...this.props}>{React.Children.only(this.props.children)}</CommonWrapper>;\n }\n\n private attachListeners() {\n this.focusOutsideListenerToken = listenFocusOutside(() => [this.getDomNode()], this.handleFocusOutside);\n window.addEventListener('blur', this.handleFocusOutside);\n document.addEventListener(\n 'ontouchstart' in document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n window.removeEventListener('blur', this.handleFocusOutside);\n document.removeEventListener(\n 'ontouchstart' in document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private getDomNode() {\n return findDOMNode(this) as HTMLElement;\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = this.getDomNode();\n\n if (target instanceof Element && containsTargetOrRenderContainer(target)(node)) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["RenderLayer.tsx"],"names":["React","listen","listenFocusOutside","containsTargetOrRenderContainer","CommonWrapper","getRootNode","rootNode","RenderLayer","focusOutsideListenerToken","setRootNode","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorElement","Element","onClickOutside","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","detachListeners","componentWillUnmount","render","Children","only","children","window","addEventListener","document","documentElement","remove","removeEventListener","Component","__KONTUR_REACT_UI__","propTypes","propName","componentName","Error","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { Nullable } from '../../typings/utility-types';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<HTMLElement>;\n}\n\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n\n public static propTypes = {\n active(props: RenderLayerProps, propName: keyof RenderLayerProps, componentName: string) {\n const { active, onClickOutside, onFocusOutside } = props;\n if (active && !(onClickOutside || onFocusOutside)) {\n return new Error(\n `[${componentName}]: using the component without either 'onClickOutside' or 'onFocusOutside' callback is pointless.`,\n );\n }\n },\n };\n\n public static defaultProps = {\n active: true,\n };\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n if (!prevProps.active && this.props.active) {\n this.attachListeners();\n }\n if (prevProps.active && !this.props.active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.props.active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private attachListeners() {\n const rootNode = getRootNode(this) || this.props.getAnchorElement?.();\n if (!rootNode) return;\n this.focusOutsideListenerToken = listenFocusOutside(() => [rootNode], this.handleFocusOutside);\n window.addEventListener('blur', this.handleFocusOutside);\n document.addEventListener(\n 'ontouchstart' in document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n window.removeEventListener('blur', this.handleFocusOutside);\n document.removeEventListener(\n 'ontouchstart' in document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = getRootNode(this) || getRootNode(this.props.getAnchorElement?.());\n\n if (!node || (target instanceof Element && containsTargetOrRenderContainer(target)(node))) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"]}
@@ -1,10 +1,12 @@
1
1
  import React from 'react';
2
2
  import { CommonProps } from '../CommonWrapper';
3
+ import { Nullable } from '../../typings/utility-types';
3
4
  export interface RenderLayerProps extends CommonProps {
4
5
  children: JSX.Element;
5
6
  onClickOutside?: (e: Event) => void;
6
7
  onFocusOutside?: (e: Event) => void;
7
8
  active?: boolean;
9
+ getAnchorElement?: () => Nullable<HTMLElement>;
8
10
  }
9
11
  export declare class RenderLayer extends React.Component<RenderLayerProps> {
10
12
  static __KONTUR_REACT_UI__: string;
@@ -15,13 +17,13 @@ export declare class RenderLayer extends React.Component<RenderLayerProps> {
15
17
  active: boolean;
16
18
  };
17
19
  private focusOutsideListenerToken;
20
+ private setRootNode;
18
21
  componentDidMount(): void;
19
22
  componentDidUpdate(prevProps: RenderLayerProps): void;
20
23
  componentWillUnmount(): void;
21
24
  render(): JSX.Element;
22
25
  private attachListeners;
23
26
  private detachListeners;
24
- private getDomNode;
25
27
  private handleFocusOutside;
26
28
  private handleNativeDocClick;
27
29
  }
@@ -17,14 +17,10 @@ var ALL_VARIABLES = Object.keys(defaultVariables);
17
17
  export var ThemeShowcase = /*#__PURE__*/function (_React$Component) {
18
18
  _inheritsLoose(ThemeShowcase, _React$Component);
19
19
 
20
- function ThemeShowcase() {
20
+ function ThemeShowcase(props) {
21
21
  var _this;
22
22
 
23
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
24
- args[_key] = arguments[_key];
25
- }
26
-
27
- _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
23
+ _this = _React$Component.call(this, props) || this;
28
24
  _this.state = {};
29
25
  _this.isUnmounting = false;
30
26
  _this.variablesDiff = [];
@@ -59,27 +55,23 @@ export var ThemeShowcase = /*#__PURE__*/function (_React$Component) {
59
55
  }
60
56
  };
61
57
 
62
- return _this;
63
- }
64
-
65
- var _proto = ThemeShowcase.prototype;
66
-
67
- _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {
68
- var _this2 = this;
69
-
70
- if (this.props.isDebugMode) {
58
+ if (props.isDebugMode) {
71
59
  ALL_VARIABLES.forEach(function (variable) {
72
60
  var found = ALL_USED_VARIABLES.includes(variable);
73
61
 
74
62
  if (!found) {
75
- _this2.variablesDiff.push(variable);
63
+ _this.variablesDiff.push(variable);
76
64
  }
77
65
  });
78
66
  }
79
- };
67
+
68
+ return _this;
69
+ }
70
+
71
+ var _proto = ThemeShowcase.prototype;
80
72
 
81
73
  _proto.render = function render() {
82
- var _this3 = this;
74
+ var _this2 = this;
83
75
 
84
76
  if (!IS_PROXY_SUPPORTED) {
85
77
  return /*#__PURE__*/React.createElement("div", null, "\u0422\u0430\u0431\u043B\u0438\u0446\u0430 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u0442\u043E\u043B\u044C\u043A\u043E \u0432", ' ', /*#__PURE__*/React.createElement(Link, {
@@ -118,7 +110,7 @@ export var ThemeShowcase = /*#__PURE__*/function (_React$Component) {
118
110
  name: componentName,
119
111
  description: descriptionsToRender[componentName],
120
112
  isDebugMode: isDebugMode,
121
- onVariableSelect: _this3.handleVariableChange
113
+ onVariableSelect: _this2.handleVariableChange
122
114
  });
123
115
  })), /*#__PURE__*/React.createElement(ShowUnusedVariables, {
124
116
  diff: this.variablesDiff
@@ -160,7 +152,7 @@ var ComponentShowcase = /*#__PURE__*/function (_React$Component2) {
160
152
  var _proto2 = ComponentShowcase.prototype;
161
153
 
162
154
  _proto2.render = function render() {
163
- var _this4 = this;
155
+ var _this3 = this;
164
156
 
165
157
  var _this$props = this.props,
166
158
  name = _this$props.name,
@@ -176,7 +168,7 @@ var ComponentShowcase = /*#__PURE__*/function (_React$Component2) {
176
168
 
177
169
  return /*#__PURE__*/React.createElement("h2", {
178
170
  className: cx((_cx = {}, _cx[styles.heading()] = true, _cx[styles.headingSticky()] = isSticky, _cx))
179
- }, _this4.props.name);
171
+ }, _this3.props.name);
180
172
  }), /*#__PURE__*/React.createElement("table", {
181
173
  className: styles.table()
182
174
  }, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", {
@@ -223,7 +215,7 @@ var ComponentShowcaseRow = /*#__PURE__*/function (_React$Component3) {
223
215
  var _proto3 = ComponentShowcaseRow.prototype;
224
216
 
225
217
  _proto3.render = function render() {
226
- var _this5 = this;
218
+ var _this4 = this;
227
219
 
228
220
  var _this$props2 = this.props,
229
221
  el = _this$props2.element,
@@ -258,7 +250,7 @@ var ComponentShowcaseRow = /*#__PURE__*/function (_React$Component3) {
258
250
  }, /*#__PURE__*/React.createElement(VariableName, {
259
251
  variableName: varName,
260
252
  dependencies: dependencies,
261
- onVariableSelect: _this5.props.onVariableSelect
253
+ onVariableSelect: _this4.props.onVariableSelect
262
254
  })), /*#__PURE__*/React.createElement("td", {
263
255
  className: styles.cell()
264
256
  }, /*#__PURE__*/React.createElement(VariableValue, {
@@ -278,18 +270,18 @@ var VariableName = /*#__PURE__*/function (_React$Component4) {
278
270
  _inheritsLoose(VariableName, _React$Component4);
279
271
 
280
272
  function VariableName() {
281
- var _this6;
273
+ var _this5;
282
274
 
283
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
284
- args[_key2] = arguments[_key2];
275
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
276
+ args[_key] = arguments[_key];
285
277
  }
286
278
 
287
- _this6 = _React$Component4.call.apply(_React$Component4, [this].concat(args)) || this;
279
+ _this5 = _React$Component4.call.apply(_React$Component4, [this].concat(args)) || this;
288
280
 
289
- _this6.handleVariableSelect = function () {
290
- var _this6$props = _this6.props,
291
- variableName = _this6$props.variableName,
292
- onVariableSelect = _this6$props.onVariableSelect;
281
+ _this5.handleVariableSelect = function () {
282
+ var _this5$props = _this5.props,
283
+ variableName = _this5$props.variableName,
284
+ onVariableSelect = _this5$props.onVariableSelect;
293
285
 
294
286
  if (onVariableSelect) {
295
287
  onVariableSelect({
@@ -299,7 +291,7 @@ var VariableName = /*#__PURE__*/function (_React$Component4) {
299
291
  }
300
292
  };
301
293
 
302
- return _this6;
294
+ return _this5;
303
295
  }
304
296
 
305
297
  var _proto4 = VariableName.prototype;
@@ -331,16 +323,16 @@ var DependencyName = /*#__PURE__*/function (_React$Component5) {
331
323
  _inheritsLoose(DependencyName, _React$Component5);
332
324
 
333
325
  function DependencyName() {
334
- var _this7;
326
+ var _this6;
335
327
 
336
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
337
- args[_key3] = arguments[_key3];
328
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
329
+ args[_key2] = arguments[_key2];
338
330
  }
339
331
 
340
- _this7 = _React$Component5.call.apply(_React$Component5, [this].concat(args)) || this;
332
+ _this6 = _React$Component5.call.apply(_React$Component5, [this].concat(args)) || this;
341
333
 
342
- _this7.getValues = function () {
343
- var dependencyName = _this7.props.dependencyName;
334
+ _this6.getValues = function () {
335
+ var dependencyName = _this6.props.dependencyName;
344
336
  var dependencyDefault = defaultVariables[dependencyName];
345
337
  var dependencyFlat = flatVariables[dependencyName];
346
338
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Default value: ", /*#__PURE__*/React.createElement(VariableValue, {
@@ -350,10 +342,10 @@ var DependencyName = /*#__PURE__*/function (_React$Component5) {
350
342
  })));
351
343
  };
352
344
 
353
- _this7.handleDependencySelect = function () {
354
- var _this7$props = _this7.props,
355
- dependencyName = _this7$props.dependencyName,
356
- onDependencySelect = _this7$props.onDependencySelect;
345
+ _this6.handleDependencySelect = function () {
346
+ var _this6$props = _this6.props,
347
+ dependencyName = _this6$props.dependencyName,
348
+ onDependencySelect = _this6$props.onDependencySelect;
357
349
 
358
350
  if (onDependencySelect) {
359
351
  onDependencySelect({
@@ -363,7 +355,7 @@ var DependencyName = /*#__PURE__*/function (_React$Component5) {
363
355
  }
364
356
  };
365
357
 
366
- return _this7;
358
+ return _this6;
367
359
  }
368
360
 
369
361
  var _proto5 = DependencyName.prototype;